lunes, 13 de marzo de 2017

Unity 5 vs Unreal Engine 4. Migramos a Unreal.

Ya está. Sin rodeos. Como cuando te quitas una tirita. No hay dolor!

Y no, no nos hemos vuelto locos... aunque cualquiera lo podría pensar teniendo en cuenta que no disponemos de mucho tiempo para desarrollar el juego, menos aún si nos ponemos a probar cosas por en medio :D.

Pero nos picó la curiosidad, y a diferencia de con Torii, el único motor que nos hacía tilín y era gratuito fue Unity. Así que cuando salió Unreal Engine para todos los públicos, aunque lo probamos por encima, ya habíamos empezado con el otro y decidimos seguir con él por ser simplemente con el que empezamos y aprendimos.

Como prácticamente no hemos tocado Unity todavía para el nuevo proyecto, ya que casi todo ha sido modelado 3D y diseño, nos hemos decidido a darle una oportunidad a Unreal para ver si realmente valía la pena cambiar de motor o, por el contrario, quedarse con el actual.

Finalmente, y después de muchas pruebas y muchos problemas que nos hemos encontrado (por nuestra poca experiencia con el motor), los hemos podido solucionar y creemos que las ventajas que nos ofrece frente a los inconvenientes son suficientemente interesantes como para dar el paso.

La versión que utilizaremos será la 4.15, la última disponible a día de hoy y la que ofrece más posibilidades.

Llevamos pocos días con este motor, pero a continuación vamos a listar las cosas buenas y malas que hemos encontrado durante estas pruebas. Todo esto siempre bajo nuestro criterio y teniendo en cuenta que el único otro motor que hemos probado ha sido Unity y solo para una pequeña demo jugable de un simple escenario, pero trasteamos lo suficiente con él para poder valorar posibilidades.

Para empezar, las cosas buenas:
  • Es gratis. Si no fuera gratis, ni nos hubiéramos planteado probarlo, porque como sabréis, nuestra dedicación es mínima (ratos libres) y tampoco nos podemos permitir comprar la licencia de un motor así. Cabe decir que es un poco trampa la palabra "gratis". Porque una vez haces un juego y obtienes beneficios, a partir de los $3000 ganados, los señores de Unreal se llevan una comisión del 5%. Que oye!, tampoco está tan mal :D.
  • Es un motor robusto. Durante estos días de pruebas, no ha crasheado ni una vez. Algo que en parte debería ser normal, pero en cambio con Unity nos pasó varias veces y es molesto (algunas veces salia la típica ventanita de critical error sin saber porqué, o cuando entrabas te decía que el layout no se había podido cargar y te ponía el que viene por defecto).
  • Sistema de iluminación. Aunque en las últimas versiones Unity ha mejorado el sistema de iluminación y ha introducido la iluminación global (GI o Global Illumination), no nos terminaba de convencer como nos estaba quedando. Y lo peor, esa sensación de no saber qué hacer para mejorar el resultado. En cambio Unreal por defecto lleva una iluminación más realista y más acorde a lo que estamos buscando. Seguramente con Unity al final se puede dejar algo parecido, pero es un trabajo añadido si lo comparamos con Unreal donde te lo da prácticamente hecho.
Escena renderizada con Unreal Engine 4.
  • Los Blueprints. Con la versión 4 de Unreal también sacaron la novedad de la programación con blueprints, la cuál es otra manera de programar prácticamente cualquier funcionalidad que pueda tener tu juego pero sin picar código. Todo se hace de manera visual con nodos y conexiones entre ellos. Está claro que para realizar algoritmos complejos o funcionalidades dónde se requiera mucha optimización hacerlo en C++ siempre será mejor. Pero para funcionalidades básicas, los blueprints són muy útiles.
Programación básica de un coche con blueprints.
  • El Editor. Hasta donde hemos probado, el editor de Unreal parece más completo que el de Unity. Tiene muchas pequeñas utilidades que muchas veces echas en falta y no sabes porque no vienen por defecto con el motor. Por ejemplo, poder colocar objetos en el escenario y que automáticamente se alineen a un grid predefinido es algo muy útil cuando, por ejemplo en nuestro caso, tienes que crear unas carreteras en formato de cuadrícula. Y así con otros muchos pequeños detalles donde se nota que Unreal está algo más trabajado que Unity. Decimos lo mismo que antes, seguro que con Unity al final puedes hacer lo mismo, ya sea programando un script o consiguiéndolo por Internet, pero cuantos más añadidos útiles tenga un motor por defecto, mejor.
Editor de Unreal Engine 4.
  • Los Wheeled Vehicles. Sí, aunque parezca mentira, y luego ya veréis porqué, el sistema de vehículos de Unreal está mucho mejor hecho que en Unity, dónde en éste último, prácticamente lo tienes que programar todo para hacer un vehículo con unas físicas decentes (viene con unos wheel colliders, pero són algo justos para nuestro gusto). En cambio Unreal viene con un componente específico para crear vehículos, el cuál viene con muchos parámetros por defecto, como por ejemplo, la tracción de las ruedas (delante, detrás o en las cuatro), marchas manuales o automáticas, configuración de ruedas y fricción dependiendo de la superficie por dónde rueda, torque del motor, freno de mano, suspensiones, diferencial, etc.
Creación de los colliders para un coche.

Pero eh!, no todo es bueno. Ahora, las cosas más reguleras:
  • El lenguaje de programación C++. Esto es algo personal, pero una vez probada la programación en C# de Unity, lo preferimos antes que el C++. Aunque este último es algo más rápido para algoritmos que necesiten mucho procesamiento, pero menos amigable.
  • El rendimiento del Editor. En este caso, el editor de Unreal pide mas recursos gráficos que el de Unity. Tanto en el ordenador de sobremesa como en el portátil, hemos notado que los ventiladores soplan más con el Unreal que con Unity, por lo que es algo a tener en cuenta, pero tampoco nada preocupante. Además del espacio ocupado en disco, que aunque no sea algo muy importante en los ordenadores de hoy en día con lo poco que cuesta el almacenamiento, estamos hablando de 3 veces más de espacio; 15GB por los 5GB que pide Unity.
  • Hacer funcionalidades fuera de lo común. Aunque no es algo que hayamos experimentado nosotros mismos, o al menos hasta el momento, hemos leído algunas opiniones en foros dónde comentan que Unreal está muy bien si quieres hacer funcionalidades típicas que te puedas encontrar en un juego, pero si te quieres salir de aquí el desarrollo de estas funcionalidades en C++ es muy tedioso.
  • Desarrollo en 2D y móviles. En este caso, y por lo leído en varios artículos, Unity es mejor motor para realizar juegos en 2D y juegos móviles que requieran poca carga gráfica. En cambio Unreal es ideal para juegos que tengan que lucir muy bien gráficamente.
  • Los Wheeled Vehicles. Sí, otra vez los volvemos a nombrar. Igual que antes hemos comentado las cosas buenas que tienen, ahora vamos a comentar las malas. Y es que durante estos días de pruebas nos hemos encontrado muchos (y cuando decimos muchos, son muchos... pero muchos... pero muchos, muchos... basta!) problemas para encontrar el proceso correcto de creación y funcionamiento de un simple vehículo. Al final hemos podido encontrar un proceso correcto para crearlos, pero aún así, no estamos del todo satisfechos, porque hay una parte, concretamente la del rig del coche, que aún no sabemos qué hacer para que funcione correctamente y tenemos que usar un rig que nos facilitaron muy amablemente para poder tirar adelante con este tema. En una próxima entrada entraremos con mucho más detalle sobre este tema y publicaremos un tutorial de como crear un coche modelado en Blender e importado a Unreal en su versión 4.15.
Y hasta aquí los pros y contras que hemos ido encontrando estos días. Seguro que mientras vayan transcurriendo los días iremos encontrando más cosas buenas y más cosas malas, pero de momento esto es lo que hay, que no es poco :-).

Si alguien lee esto (hola?... eco... eco... eco...) y está con Unity y le pica la curiosidad para probar Unreal, le recomendamos primero que no se quede sólo con la opinión de esta entrada, sinó que lea más críticas que pueda encontrar por Internet. Por ejemplo, recomendamos este artículo donde detalla bien los pros y contras de cada motor gráfico.

También recomendamos este artículo de la propia documentación de Unreal dónde explica las similitudes entre Unreal y Unity. Muy útil.

Esperamos que este artículo os haya resultado interesante, y recordad que en próximas entradas detallaremos mucho más el tema de los Wheeled Vehicles y empezaremos a mostrar el progreso del juego en este nuevo (para nosotros) motor.

ACTUALIZACIÓN: Unas semanas más tarde hicimos una nueva entrada dedicada a la migración a Unreal Engine, comentando más impresiones. Podéis seguir con la lectura en el siguiente artículo.

4 comentarios:

  1. Bien, Gracias por el link. voy a empollar esto...
    Un Saludo.

    ResponderEliminar
    Respuestas
    1. Recuerda en no quedarte solo con la opinión de esta guía. Lo mejor es comparar varias y sacar una conclusión personal.

      En próximas semanas sacaremos una nueva entrada dedicada a los Blueprints, ya que nos están gustando bastante (aunque también tienen cosas malas) y nos gustaría dedicarle una entrada detallada.

      Estad atentos! ;)

      Eliminar