Queremos conversar un poco sobre Unreal Engine y específicamente sobre una inquietud que es recurrente para quienes se están iniciando con este motor, ¿qué debo utilizar para el desarrollo de un juego en Unreal Engine? ¿Blueprints o  C + +?.

Qué es Unreal Engine?

Unreal Engine es el principal motor para el desarrollo de videojuegos usado por compañías AAA pero también tiene una cuota importante en el desarrollo Indie y AA. Aparte de la espectacularidad en los resultados que se pueden obtener usando este fabuloso motor, posee una particularidad y es el uso de Blueprints, que son técnicamente nodos para programación visual.

Otros motores bastante populares como Unity, también están trabajando para integrar de modo nativo esta funcionalidad aunque desde hace un tiempo existen complementos para Unity como Playmaker que en su momento el estudio creador del fantástico Hollow Knight usó para programar su juego. 

Debemos acotar que, el uso de la programación visual no te exime de no saber programar todo lo contrario, debes enfocarte mayormente en la lógica de programación, ya que la sintaxis se serviría a través de los nodos pero en todo momento debes saber lo que estás haciendo. 

Pero, qué es la programación visual?

La programación visual, es código principalmente en C++ (indistinto del motor) abstraído en bloques o nodos, que muchas veces tienen rutinas ya preparadas para agilizar los procesos. Como toda abstracción tiene un grado de encapsulación, por ende, toda encapsulación tiene un precio en el rendimiento, pero es matizable. 

Entonces, cuál es la finalidad de los Blueprints?

En Unreal Engine, los Blueprints están creados para agilizar la comunicación entre los programadores y los artistas, es decir, los artistas pueden hacer uso de estos nodos para conectar rutinas creadas con código sin necesidad de leer una sola línea. Un artista no debería crear lógica compleja simplemente con los blueprints, desde nuestro punto de vista, no es ese el objetivo, sólo debe preocuparse por añadir los elementos de arte y hacer uso de los nodos con una abstracción muy simplificada. 

Esto quiere decir que un juego no puede hacerse completamente con blueprints? No, un juego puede hacerse simplemente usando Blueprints y un programador puede programar sólo usando Blueprints, y hasta un Artista en solitario puede aprender a programar usando Blueprints y puede completar su juego.

Pero como todo hay matices, un juego creado sólo con Blueprints, tiene un impacto en el rendimiento a una escala mayor que un juego desarrollado con código, pero debemos hacer varias acotaciones.

El rendimiento en un videojuego depende de varios factores, desde la calidad de polígonos en los diseños 3D, el uso de las luces, el tamaño de las texturas, la optimización del nivel, entre muchos otros y se necesitarían varias publicaciones para tratarlos en profundidad.

Un punto importante es la calidad del código, los nodos en los Blueprints son rutinas optimizadas que pueden tener mejor rendimiento que una rutina propia mal escrita en C++, por ello, los programadores de C++ deben seguir las pautas de las buenas prácticas para el desarrollo en Unreal Engine.

Pero en comparativa, si tomamos el código fuente de un juego escrito totalmente con Blueprints y migramos la lógica a código, este juego en teoría tendría un mejor rendimiento. 

Adicionalmente, un criterio que no debemos omitir es la versatilidad al momento de crear el proyecto, la sinergia entre el equipo, y esto lo consigue de muy buena forma UE con los Blueprints ya que es el puente.

Cuál es nuestra recomendación?

Debemos comprender que no sería recomendable para un proyecto de gran envergadura crearlo sólo con blueprints por las razones ya planteadas, ni pretender realizar absolutamente todo con código ya que la productividad en un equipo es crucial para cumplir con las metas, es por ello, que desde nuestra experiencia, creemos que, si debemos colocar un porcentaje de uso entre Blueprints y C++; seria un 40% (Blueprints) y un 60% (C++) aproximadamente.

¿Cuándo usar Blueprints?

Es muy recomendable usarlo, en prototipos de proyectos o de alguna funcionalidad y luego de aprobarse, se puede migrar parte de éste a código.

Cuando usar C++?

Es muy recomendable escribir todos los procesos que sean costosos para el rendimiento, que requieran bucles o alguna lógica extensa. 

Para concluir, esto permitiría tener lo mejor de ambos mundos y considerar que los Blueprints deben sólo usarse para procesos ya encapsulados, esto para no convertir el proyecto en un espagueti de nodos.   

Sólo una nota final, el C++ usado en Unreal Engine, suele ser un poco diferente al estándar, por supuesto; esto no es un problema, pero para aquellos que usamos C++ desde hace un tiempo, debemos aprender un poco este C++ de Unreal Engine, que sin exagerar podemos llamar UC++ ya que, tiene particularidades y debemos aprender su lógica de Macros y que seguramente le dedicaremos una publicación. 

Gracias por leernos, hasta una próxima entrega.