El uso de motores de videojuegos, tanto 2D como 3D, se ha popularizado enormemente en los últimos años. Queremos analizar en este post los pros y contras de usar un motor de terceros para crear tu videojuego, ya que es un debate todavía vivo y que, a pesar del éxito apabullante de algunos editores de videojuegos, sigue generando polémica y discusiones. Un informe de Developer Economics del tercer trimestre de 2014 afirma que un 29% de los desarrolladores de juegos no utiliza un motor de juegos proporcionado por un tercero.
El coste de un motor de juegos
Aparentemente tener que pagar por usar un software de terceros se puede ver como un coste extra que puede ser fácilmente eludible si creamos el juego desde cero. Sin embargo hay que valorar bien el coste que supone crear muchas funcionalidades y servicios que vienen de serie en un motor de juegos. Las horas de desarrollo dedicadas al propio motor pueden representar un coste muy alto y encarecer enormemente un proyecto (al margen de lo que se dedique al marketing del videojuego).
En este sentido hay que añadir que la mayoría de los motores de videojuegos han bajado drásticamente el precio de sus licencias en los últimos años. Si se comparan los costes de desarrollo de un motor propio con los costes que puede suponer una licencia, en la gran mayoría de los casos sale más rentable usar un motor de juegos.
A esto último se puede añadir una consideración. Algunos motores de juegos, como Unreal o WiMi5, ofrecen un modelo de licencia gratuita al que se añade una comisión de los ingresos generados por el juego. Es decir, el desarrollador puede usar el motor gratis pero paga una parte de los ingresos que genera el juego a la empresa que le ha proporcionado el motor de juegos.
Este modelo está muy bien para desarrolladores Indie o estudiantes que quieran tener a su alcance un motor de juegos muy potente a coste cero. Ahora bien, si los ingresos son muy altos quizás el desarrollador del videojuego se pueda plantear crear su propio motor a pesar del coste extra que ese desarrollo le suponga.
Facilidad de uso, curva de aprendizaje y productividad
Una de las ventajas que ofrecen los motores de videojuegos es su facilidad de uso. La idea es que estas herramientas permitan crear juegos mediante un entorno de trabajo en el que se ofrecen una serie de funcionalidades que facilitan la creación de juegos, tanto en la parte de programación como en la parte gráfica. Además el objetivo de las personas que diseñan estas herramientas es hacer que sean fáciles y ágiles de usar, que sean intuitivas y con una curva de aprendizaje lo más baja posible. En algunas herramientas esto se consigue y en otras no.
La idea es que sea más fácil aprender a crear juegos con uno de estos motores si lo comparamos, por ejemplo, con aprender a crear juegos programando en C++, que es un lenguaje con una curva de aprendizaje alta. Esto en alguna medida también está relacionado con la productividad. Con los motores de juego es posible aumentar la productividad en el desarrollo de un videojuego.
Hay que tener en cuenta que hay ciertos conceptos que hay que tener asimilados tanto si se usa un motor de juegos como si se acomete un desarrollo propio. Conceptos relativos al desarrollo de videojuegos como el game-loop, interacciones, renders, los rankings, el uso de los recursos, etc. han de estar asimilados en cualquier caso. En esta web hay un listado interesante de los conceptos generales a tener en cuenta por desarrolladores no expertos en videojuegos.
Creación rápida de prototipos y Visual Scripting
Una de las ventajas que ofrecen los motores de videojuegos y que está relacionada con el punto anterior es la posibilidad de realizar prototipos de juegos de forma rápida. Esto puede ser muy útil para probar ideas o conceptos de juego que pueden ser llevados a la práctica de una forma muy sencilla y rápida por alguien experto en el uso de uno de estos motores. Esto facilita validar ideas nuevas, mecánicas de juego experimentales, que pueden ser probadas por jugadores en prototipos tempranos, ofreciendo un aprendizaje muy valioso para el desarrollo de nuevos proyectos.
Hacer esto sin usar un motor de juegos es más complicado y lento. Exige más tiempo de desarrollo y en ocasiones se puede perder la frescura de plasmar una idea nueva, no consolidada, en un prototipo jugable. Por ejemplo en muchas game jams los desarrolladores prueban nuevas ideas y en muchas ocasiones usan motores ya existentes, debido principalmente al limitado tiempo disponible en este tipo de evento.
Una de las facilidades que ofrecen algunos motores de juegos, como Unreal con su Blueprint, o WiMi5 con su visual scripting, es la posibilidad de crear el código de tu juego de forma visual. Esto facilita el acceso al desarrollo de videojuegos a muchas personas no programadoras que hasta ahora tenían una fuerte barrera de entrada para poder crear sus propios juegos.
Las limitaciones de un motor de juegos
Usar una herramienta de un tercero siempre puede ser motivo de conflicto con los intereses particulares que pueda tener un desarrollador de juegos. Los motores ofrecen muchas funciones, flexibilidad, potencia, y facilitan la creación en numerosos aspectos. Pero siempre existe algún aspecto que no se ofrece o bien no se ajusta a la forma en la que el creador de videojuegos quiere trabajar.
Muchas de estas limitaciones tienen que ver con que desarrollar un juego en nativo suele estar relacionado con un alto poder de control sobre lo que se programa. El que está acostumbrado a controlar hasta el último bit suele ver con recelo las limitaciones técnicas que ofrecen los motores de juegos. Evidentemente es muy difícil hacer lo mismo con una herramienta que trabaja a un nivel de abstracción alto que directamente con un lenguaje de desarrollo como por ejemplo C sobre tu propio motor.
Hay incluso cierto debate en algunos foros sobre si para ser un desarrollador de videojuegos ‘de verdad’ hay que pasar de usar motores y hacer todo desde cero. En este sentido habría que definir cuál es el nivel ‘suelo’ para un desarrollador ‘de verdad’. ¿Es suficiente con DirectX o OpenGL, por ejemplo? ¿Tiene que construirse también un sistema operativo un desarrollador ‘de verdad´?
Por último señalar que normalmente las empresas que desarrollan motores de videojuegos suelen escuchar las demandas de los desarrolladores de juegos así como las limitaciones con las que se encuentran. A medida que estos motores van evolucionando se suelen cubrir muchas de estas demandas y se da solución a algunas de las limitaciones existentes.
Soporte, Comunidad y Asset Stores
El soporte y la Comunidad es otro aspecto que afecta a la hora de decidirse a usar o no un motor de juegos. Es cierto que existen comunidades muy potentes alrededor de algunas herramientas pero también es verdad que existen muchos recursos alrededor de lenguajes de programación que pueden ser usados para crear juegos. Los desarrolladores de videojuegos están acostumbrados a interactuar entre ellos, a preguntar y responder a cuestiones de desarrollo tanto si se usa un motor como si no. Normalmente son comunidades acostumbradas a compartir el conocimiento.
La gran mayoría de los motores de juegos suelen ofrecer suficiente ayuda y documentación sobre el uso de sus motores. Estos tutoriales suelen encontrarse tanto en formato audiovisual como en forma de texto en las secciones de soporte de las empresas que desarrollan los motores de juegos. En muchos casos también se ofrecen ejemplos de uso, plantillas de proyectos y otros recursos que ayuden a los creadores de videojuegos a manejar su herramienta.
Las tiendas de recursos o assets stores proporcionan todo tipo de recursos para agilizar el desarrollo de juegos. Algunos motores tienen sus propias tiendas de recursos que están optimizados para dicho motor. Así ofrecen por ejemplo herramientas extras o plugins que pueden ser integradas en el motor de juegos y que pueden estar creadas por la empresa que ofrece el motor o por otros desarrolladores. De esta forma los motores se abren a que los propios desarrolladores de juegos generen sus propias herramientas o plugins.
La originalidad
Mucha gente dice que los juegos creados, por ejemplo, con Unity son todos muy similares. La cuestión es que muchos desarrolladores usan siempre las mismas funcionalidades, objetos y componentes por defecto en las herramientas, para solucionar las mismas cuestiones. De esta forma podemos ver muchas similitudes, por ejemplo en las mecánicas de juego creadas con la misma herramienta.
En cualquier caso muchos motores de juegos ofrecen la posibilidad de personalizar estos objetos y componentes predefinidos, y adaptarlos a las necesidades particulares de cada caso. O también se suele ofrecer el acceso al código fuentes de estos objetos para poder transformarlos totalmente. Es decir, al final se trata del esfuerzo e interés que ponga cada desarrollador en ser todo lo original que quiera.
Las plataformas y la fragmentación
Por último comentar una de las características más potentes que suelen ofrecer los motores de creación de juegos. Actualmente, los desarrolladores tratan de ofrecer sus juegos en el mayor número posible de plataformas, como iOS, Android, la Web, SmartTVs, las consolas y en los nuevos dispositivos que van apareciendo. Los motores de juegos suelen ofrecer la posibilidad de exportar tu juego fácilmente a algunas de estas plataformas. Algunos motores cubren prácticamente todas y otros solamente algunas. En el caso de WiMi5 la apuesta es por HTML5 que permite que los juegos se vean en cualquier dispositivo con un navegador moderno, es decir prácticamente todos los que merecen la pena.
Otra cuestión a tener en cuenta es la gran variedad de resoluciones y formatos de pantalla que existen hoy en día en los diferentes dispositivos existentes en el mercado. Resoluciones que van desde por ejemplo 380×460 pixels hasta por ejemplo 1920×1080 pixels o más. Además hay formatos de pantalla 3/4 o 16/9 o cualquier otro ratio, incluyendo la posibilidad de ser vertical u horizontal.
Para lidiar con todas estas combinaciones los equipos de desarrollo de los motores de juego invierten muchas, muchísimas horas. Su objetivo es ofrecer una solución fiable y coherente que permita al jugador disfrutar de un juego al margen del dispositivo y resolución de pantalla que esté usando. La mayoría de los motores de juegos solucionan esta cuestión bastante bien. Para un desarrollador de juegos que quiera pelarse directamente con estas cuestiones se abren varios frentes que tendrá que abordar:
- usar un lenguaje de desarrollo que permita portar fácilmente a otras plataformas. Con lo cual es posible que tenga que desechar usar lenguajes nativos de una plataforma específica. A no ser que quiera desarrollar varias veces para varias plataformas. En cualquier caso tendrá que particularizar en ese desarrollo común el uso de las APIs propias de cada plataforma.
- tener una base de datos actualizada con las características particulares de los diferentes dispositivos donde quiere portar sus juegos e integrar esos datos en su desarrollo.
Tampoco hay que olvidarse de la plataforma de desarrollo. Muchas de las herramientas disponibles son compatibles con algunas de las más extendidas, Windows, Mac y Linux. Sin embargo algunas lo son solo para una de ellas o bien no soportan bien u ofrecen menos funcionalidades en cierto sistema operativo. Hay una clara tendencia a usar la Web como plataforma para usar motores de videojuegos, muchas veces basados en HTML5, como es el caso de WiMi5.