official UE4 documentation keeped on harping about creating blueprints, to me mixing the idea of a game object / prefab and a gameplay script into one vague thing I wasn't sure how to interact with.
It is very much the same as Unity in a way that in Unity code is link to a prefab. The largest difference is that in Unity create a code attachment where in Unreal every Blueprint has a code attachment; if it's not used it's discarded at cleanup.
In Unreal if you want to use code that isn't object focused you use the Level blueprint, if you used Kismet before it's the same thing,
Lets say I wanted to create my own character controller, that would be different to the stock character controller, and I wanted to keep it as much in C++ as possible.
The easiest way to describe Blueprints to programmers would be to call them classes, when you create a Blueprint class it's similar to coding a new class with C++. Dragging the Blueprint/ class into the engine creates a Instance/ Object of the class.
The first three common classes are Actor, Pawn and Character. Think of each of these as a class and the next one is a sub class.
So Actor is a empty class, empty with what makes it work in the engine.
The Pawn is a sub class from actor with some basic input stuff added on to the class.
The Character is a sub class of Pawn, with some AI stuff added in.
The order is Actor-> Pawn ->Character
So, if you want your own Character class, that is completely different from Unreal's Character class. You then use the Pawn class, this makes your new Class as a sub class of Pawn just like Unreal's Character class.
Now you can make the player move as you want, however you can't use the AI options or advance movement options from the Character unless you copy and paste it into your new character class.
The new order is Actor-> Pawn ->CustomCharacter
If you only wanted a new character it would have been better to use the Character class, so that you could have access to all of the options the class has.
The new order is Actor-> Pawn -> Character ->CustomCharacter
The Actor is the nearest to a empty class you can find, because all Blueprints are part of the engine.
A truly empty class can be made in C++ and then defined as a new parent class, this is redundant as you will need all of the stuff in the Actor class to have it working properly as a parent class. You would also still have to look in the search bar for it, unless you alter the engine source.
Edit: See frob's comment above mine to understand why this is. :)
So you can just make your own Parent class by making a sub Actor class, then just look in the search bar under the "common classes".
So if you have a Blueprint/class that is a subclass of Actor and call it Bob, you can make a new Blueprint/class called BobJunior using Bob as the parent class.
The new order is Actor-> Bob ->BobJunior
Now the other two Blueprints is PlayerContoller and GameMode.
PlayerController is a great optional tool, if used the Player posses things instead of directly controlling things.
So if you made a GTA game you could allow the player to possess the Character and then to switch possession when entering the vehicle. Because a player can only possess one thing at a time, it's a easy way to monitor input for network games.
There is no need to use this class, at all, it just makes complex things easier.
GameMode is a class over the whole game. Most common use for it is to store rules for game modes and scores.
GameMode works with the PlayerController class, so it's possible to change input options. This means that if your game has cut-scenes you can have a game mode called Playing and a other called Cinematic that you switch to during cut-scenes.
(another thing I struggled with a lot with the official C++ docs), and needs to be attached to a Blueprint "thingie" (the non-Visualscript Blueprint thingie))?
You need a node as a input, to show where the custom C++ script goes. If you don't have it then your script just floats randomly in space, never to be executed.
The node you make runs the code, it's the same as making a function.