
I have long wanted to make a list of skills and tools that, in my opinion, should be included in the “gentleman's set” 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 much time worked (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 complex 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 the
UObject
and AActor
? What is the fundamental difference? Is it possible to force UObject
to perform the same functions? Why are AGameState
and APlayerState
ektorov? A similar question about AGameMode
and AHUD
. - How is
AGameMode
different from UGameInstance
? What are they both used for? Why do APlayerController
need an APlayerController
, and why is it an executive? - What is
UPROPERTY
used UPROPERTY
? Is it possible to replace it with SharedRefs ? How to solve Circular Dependency in ektorov (parent has a pointer to the child, the child - to the parent)? When will UObject
be removed? 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 level of the controller / peaks / steyty)? What is the order spawn
AActor
' AActor
? - Is the component in the component good or bad?
- What is
WorldContext
? Is it possible to take it in UObject
'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 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
APlayerController
right place? - How are
PlayerState
's replicated to clients? What is the life cycle of PlayerController
and PlayerState
when a player is reconnected? - How to differentiate data replication by roles? What are network roles ? Who and by what rules they are appointed?
- What 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 want 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 network limitations exist? ( Figures! ) How to profile the load on the network? What network optimization methods are used? What is
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,
essential 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 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 always just
for active discussion.