Programador de reclutamiento de caballeros UE4, parte 1



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 AActor UObject y AActor ? ¿Cuál es la diferencia fundamental ? ¿Es posible forzar a UObject a realizar las mismas funciones? ¿Por qué AGameState y APlayerState ector? Una pregunta similar sobre AGameMode y AHUD .
  • ¿En qué se diferencia UGameInstance de UGameInstance ? ¿Para qué se usan ambos? ¿Por qué se necesita APlayerController y por qué es un ector?
  • ¿ UPROPERTY qué se utiliza UPROPERTY ? ¿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 a UObject y, 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? ¿ APlayerController es APlayerController lugar correcto?
  • ¿Cómo se PlayerState los PlayerState a los clientes? ¿Cuál es el ciclo de vida de PlayerController y PlayerState cuando 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 RPC y 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? ¿ ForceNetUpdate qué sirve ForceNetUpdate ?

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.

Source: https://habr.com/ru/post/es427319/


All Articles