Gentlemen's set of programmer UE4, part 1
I have long wanted to make a list of skills and tools that, in my opinion, should be included in the “gentleman's kit” of any programmer under the Unreal Engine 4 . Just the other day, in a chat on UE4, I met this:
> blueprints, animation dev, tech art, ai, multiplayer, editor extensions. the first thing that came to mind
> What comes to mind: blueprints, animations, AI, material editor, widgets, slate, editor extensions, ue4 plugins, physics, lighting, rendering, c ++
+ How long did it work (a) with the engine and the country, everything :)
In such formulations, all that is said is just a collection of words. Therefore, I gathered and compiled a questionnaire for those who want to be a UE4 programmer, and who allows to evaluate their level to those who already consider themselves to be an advanced programmer under UE4.
Do not use common words
All the terms listed in the quotations are a whole range of skills, principles and technologies. By expressing them in one word, you are in no way conveying what needs to be applied and how “deeply” this is required to be studied.
I will go through the main categories, asking questions that are worth knowing the answer, to say: "I understand this."
Fundamentals of architecture engine
- What are the differences between classes
UObject
andAActor
? What is the fundamental difference? Is it possible to getUObject
the same functions? WhyAGameState
andAPlayerState
is Hector? A similar question aboutAGameMode
andAHUD
. - What
AGameMode
is different fromUGameInstance
? What are they both used for? Why do you needAPlayerController
it and why is it actor? - What is it used for
UPROPERTY
? Is it possible to replace it with SharedRef 's? How to solve Circular Dependency for ektorov (the parent has a pointer to the child, the child - to the parent)? When will it be deletedUObject
? How to protect the entity from removing the Garbage Collector ? How to remove Actor 'ah? - What is CDO ? How can I break the class chain of references to each other, and why?
- What is the order of initialization of the main entities of the engine (at least at the controller / peacock / state level)? What is the order of spawn
AActor
'ah? - Is the component in the component good or bad?
- What is it
WorldContextObject
? Is it possible to take it inUObject
'e, and if so, from where? - What is the fundamental difference between Slate and UMG ?
Blueprints
- What is the difference between macros and functions?
- Using what exactly leads to the formation of Referenc'ov between classes? Asseset? How to avoid it?
- What is the nativization of blueprints and what is the use of it? What are the disadvantages of the included nativization?
Network
- Where to store user gameplay data (for example, inventory or number of points) during a game session? Is this the
APlayerController
right place? - How are you
PlayerState
replicated to clients? What is the life cycle ofPlayerController
a andPlayerState
s when reconnecting the player? - How to differentiate data replication by roles? What are network roles ? Who and by what rules they are appointed?
- Which classes can I call
RPC
and why? Is it possible to extend this opportunity to another class / entity? What are the overhead costs for an RPC call? - How are ector components replicated? How to understand that the ector was replicated "entirely"? What happens if you need to replicate, say, 3 MB of data in an ector: how will this ector behave? the game as a whole?
- How are arrays replicated? And how are the nested properties replicated (the replicated field is a structure)?
- What are the network limitations? ( Figures! ) How to profile the load on the network? What network optimization methods are used? What is it for
ForceNetUpdate
?
Physics and basic algorithms
- How does damping work? What is substepping ? What is it used for? How does physics synchronize over the network?
- What is quaternion and what problems solves their application ?
- What are object channels and traces? Is it possible to configure different behavior within a single physics asset? If not, why and how to get around this?
- How expensive is tracing operation? What does it depend on?
Streams
- What are the main streams in UE4? What tasks are performed in parallel, and which are not? How are tick groups arranged?
- What actions can be performed in own parallel threads? (Or what actions can not be performed exactly?) How to synchronize the results with the main thread?
Coda
I did not touch on many aspects of working with UE4, but I suggested questions on key topics that are, in my opinion, the main ones when working with the engine .
For a junior, it is normal not to know much in the engine, but to have a bright head and to understand a couple of particulars. At least the “average” programmer is simply obliged to know the answers (or at least have his own reasoned opinion) to the questions from the block about the architecture. Especially on the topics that are described on the very first page of the Gameplay Framework documentation .
If the community has an interest, a similar questionnaire can be compiled for animation, debugging, shaders and materials, lighting, project packaging, creating AI, working with pawn and others. Write :) I'm always just for active discussion.