Para definir comportamientos de cualquier objeto que intervenga en una aplicación creada con Unreal Engine es necesario usar algún lenguaje de programación, principalmente Blueprint (lenguaje visual integrado en el entorno de desarrollo) o C++, que es el lenguaje nativo del entorno.
Las lecciones a tratar en este tema son:
- Orientación a objetos
- Ejecución (en general)
- Programación visual
- Conversión de objetos
- Acceso a propiedades
- Construcción de objetos
- Registro de componentes
- Gestión de la entrada
- Control de la ejecución
- Uso de macros
- Funciones
- Interfaz de usuario
- Cálculo matemático
- Temporización
- Simulación física
- Gestión de niveles
- Programación de la jugabilidad
- Gestión de la persistencia
- Multijugador y programación en red
- Percepción automática
- Movimiento automático
- Navegación automática
- Decisión automática
- Evaluación y coordinación automática
Según la propia terminología de Unreal Engine, aquí se habla de las APIs (interfaces de programación de aplicaciones) de los sistemas que ofrece este entorno (ej. el sistema de Materiales y los métodos que permiten cambiarlos dinámicamente).
Según vamos enseñando BPs se podría enseñar C++… y además, lecciones extra que podrían considerarse son Manejo de Vehículos, Gestión del Sistema de Habilidades de Jugabilidad (Gameplay Ability System), Procesamiento de Analíticas, Uso del sistema de reproducción (Replay System), registro visual (Visual Logger), programación con lambdas de C++ y mucho más que podríamos descargar de la tienda, etc.
Alternativas
Aunque desde Unreal Engine 4, Epic Games dejó de lado aquel «UnrealScript» que se usaba como lenguaje de guionizado en versiones anteriores de su entorno de desarrollo, hoy día han surgido alternativas para los que no quieren programar ni en C++ ni en el lenguaje visual Blueprints.
El más oficial es Verse, un lenguaje de guionizado bastante sencillo y limitado, creado por Epic Games, pero suficientemente potente como para ampliar las capacidades del modo creativo de Fortnite, en lo que se ha venido a llamar Unreal Editor for Fortnite.
Angelscript, por otra parte, es una modificación de Unreal Engine que incluye una extensión con un intérprete de este nuevo lenguaje, similar al C++ del motor pero algo simplificado. Supuestamente permite hacer juegos sin C++ ni Blueprints, porque tiene mejor rendimiento que los Blueprints y hasta es posible transformarlo a C++ para evitar la carga de la ejecución del propio intérprete de Angelscript. El flujo de trabajo es más cómodo que Unity: hay autocompletado y una depuración muy buena desde Visual Studio Code (aunque los errores de compilación no sean muy informativos), y al guardar los cambios en un script, automáticamente lo recarga todo, sin necesidad de reiniciar el editor de Unreal Engine nunca, ni aunque estemos ejecutando el juego en el editor. Aunque no tiene lambdas, para crear IA es bastante útil porque facilita mucho hacer nodos de árboles de comportamiento. Parece ser de código libre y hay estudios grandes que lo están utilizando (It Takes Two es el juego de los promotores de este lenguaje, Hazelight, y contiene más de 5000 ficheros con más de 700.000 líneas de código Angelscript).
Más información
Algunas otras referencias interesantes para consultar:
- Conde, J.: Aprender C++ con Unreal Engine 4 (Lista de reproducción). Jesús Conde. YouTube (2020)
- Conde, J.: Crear Juego con UE4 y C++ (Lista de reproducción). Jesús Conde. YouTube (2020)
- Conde, J.: Unreal Engine 4 con C++ (Lista de reproducción). Jesús Conde. YouTube (2020)
- Elbeno: Another myth, about C++ lambdas. Why is a raven like a writing desk? – Elbeno.com (2015)
- Estándares y convenciones de código oficiales que usan en Epic Games.
- Robledo, D.: Lambdas en Unreal Engine. Daniel Robledo. X (2023)
Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.
Ejecución
Orientación a objetos
Programación visual
Conversión de objetos
Acceso a propiedades
Construcción de objetos
Registro de componentes
Gestión de la entrada
Control de la ejecución
Uso de macros
Funciones
Interfaz de usuario
Cálculo matemático
Temporización
Simulación física
Gestión de niveles
Programación de la jugabilidad
Gestión de la persistencia
Multijugador y programación en red
Percepción automática
Movimiento automático
Navegación automática
Decisión automática
Evaluación y coordinación automática