
Durante mucho tiempo quise hacer una lista de habilidades y herramientas que, en mi opinión, deberían incluirse en el "conjunto de caballeros" de cualquier programador en 
Unreal Engine 4 . Justo el otro día, en un 
chat UE4, vi esto:
> planos, desarrollo de animación, arte tecnológico, ai, multijugador, extensiones de editor. lo primero que me vino a la mente
> Lo que viene a la mente: planos, animaciones, IA, editor de materiales, widgets, pizarra, extensiones de editor, complementos ue4, física, iluminación, renderizado, c ++
+ Cuánto tiempo trabajó con el motor y el país, eso es todo :)
En tales formulaciones, todo lo dicho es solo una colección de palabras. Por lo tanto, me reuní y redacté un 
cuestionario para aquellos que desean ser programadores de UE4, y que pueden evaluar su nivel para aquellos que ya se consideran un programador avanzado para UE4.
No uses palabras comunes
Todos los términos enumerados en las citas son todo un complejo de habilidades, principios y tecnologías. Expresándolos en una palabra, de ninguna manera transmites qué es exactamente lo que se debe aplicar y qué tan "profundo" se necesita estudiarlo.
Revisaré las categorías principales y le haré preguntas para que sepa la respuesta y diga: "Entiendo esto".
Conceptos básicos de la arquitectura del motor.
- ¿Cuáles son las diferencias entre las AActorUObjectyAActor? ¿Cuál es la diferencia fundamental ? ¿Es posible forzar aUObjecta realizar las mismas funciones? ¿Por quéAGameStateyAPlayerStateector? Una pregunta similar sobreAGameModeyAHUD.
- ¿En qué se diferencia UGameInstancedeUGameInstance? ¿Para qué se usan ambos? ¿Por qué se necesitaAPlayerControllery por qué es un ector?
- ¿ UPROPERTYqué se utilizaUPROPERTY? ¿Puedo reemplazarlo con SharedRef ? ¿Cómo resolver la dependencia circular en los ectores (el padre tiene un puntero al niño, el niño al padre)? ¿Cuándo se eliminaráUObject? ¿Cómo proteger una entidad de ser eliminada por Garbage Collector ? ¿Cómo eliminar a un actor ?
- ¿Qué es un CDO ? ¿Cómo puedo romper la cadena de clases Reference'ov entre sí y por qué?
- ¿Cuál es el orden de inicialización de las principales entidades del motor (al menos a nivel de controlador / pavna / estado)? ¿Cuál es el orden de generación de AActor?
- Componente en componente: ¿bueno o malo?
- ¿Qué es un objeto WorldContextObject? ¿Es posible llevarlo aUObjecty, de ser así, desde dónde?
- ¿Cuál es la diferencia fundamental entre Slate y UMG ?
Planos
- ¿Cómo difieren las macros de las funciones?
- ¿Usando qué conduce exactamente a la formación de Referenc entre clases? Activos? ¿Cómo evitar esto?
- ¿Qué es la nativización roma y para qué sirve? ¿Cuáles son las desventajas de la nativización incluida?
Red
- ¿Dónde almacenar los datos de juego del usuario (por ejemplo, inventario o puntos) durante una sesión de juego? ¿ APlayerControlleresAPlayerControllerlugar correcto?
- ¿Cómo se PlayerStatelosPlayerStatea los clientes? ¿Cuál es el ciclo de vida dePlayerControlleryPlayerStatecuando se vuelve a conectar un jugador?
- ¿Cómo distinguir la replicación de datos por rol? ¿Qué son los roles de red ? ¿Por quién y por qué reglas son nombrados?
- ¿En qué clases puedo llamar a RPCy por qué? ¿Es posible extender esta característica a otra clase / entidad? ¿Cuál es la sobrecarga de una llamada RPC?
- ¿Cómo se replican los componentes de ector? ¿Cómo entender que el ector fue replicado "completamente"? ¿Qué sucede si desea replicar, digamos, 3 MB de datos en un ector: cómo se comportará este ector? juego en general?
- ¿Cómo se replican las matrices? ¿Y cómo se replican las propiedades adjuntas (un campo replicado es una estructura)?
- ¿Qué restricciones de red existen? ( ¡Figuras! ) ¿Cómo perfilar la carga en la red? ¿Qué métodos de optimización de red se utilizan? ¿ ForceNetUpdatequé sirveForceNetUpdate?
Física y algoritmos básicos.
- ¿Cómo funciona la amortiguación? ¿Qué es subpasar ? ¿Para qué se usa? ¿Cómo se sincroniza la física en una red?
- ¿Qué es un cuaternión y qué problemas resuelve su aplicación ?
- ¿Qué son los canales de características y las trazas? ¿Es posible configurar diferentes comportamientos dentro del mismo activo de física? Si no, ¿por qué y cómo solucionar esto?
- ¿Qué tan caro es el rastreo? ¿De qué depende?
Corrientes
- ¿Cuáles son los hilos principales en UE4? ¿Qué tareas se realizan en paralelo y cuáles no? ¿Cómo se organizan los grupos de ticks?
- ¿Qué acciones se pueden realizar en flujos paralelos propios? (¿O qué acciones definitivamente no se pueden realizar?) ¿Cómo sincronizar los resultados con el hilo principal?
Código
No mencioné muchos aspectos del trabajo con UE4, pero sugerí preguntas sobre temas clave que, en mi opinión, son 
básicos cuando se trabaja con el motor .
Es normal que un joven no sepa mucho sobre el motor, sino que tenga la cabeza luminosa y entienda algunos detalles. Al menos el programador "promedio" simplemente está obligado a conocer las respuestas (o al menos tener su propia opinión razonada) a las preguntas del bloque sobre arquitectura. Especialmente en los temas que se 
describen en la primera página de la documentación en Gameplay Framework .
Si la comunidad tiene interés, se puede compilar un cuestionario similar sobre animación, depuración, sombreadores y materiales, iluminación, empaque del proyecto, creación de IA, trabajo con Pawn'ami y otros. Escribir :) Siempre estoy solo 
para una discusión activa.