Elección de un Motor de Juego o Framework para el Desarrollo de Juegos HTML

Rate this content
Bookmark

Nunca hemos tenido tantas opciones excelentes para motores de juego y frameworks. Sin embargo, a veces, demasiadas opciones pueden ser paralizantes. En esta charla vamos a discutir los diversos motores de juego y frameworks disponibles para el desarrollo de juegos HTML y esperamos ayudarte a seleccionar el que sea adecuado para ti.

25 min
08 Apr, 2022

Video Summary and Transcription

Bienvenido a la Cumbre de Desarrollo de Juegos Web donde se exploran las opciones de motores de juego para juegos basados en web. Se discuten enfoques de desarrollo nativo y compilado, con motores prefabricados como Unity y motores específicos de HTML5 como opciones. Se destaca el motor Godot como un motor de código abierto con un sólido soporte web. También se mencionan motores de juego tradicionales como Default, GameMaker Studio y Babylon.js, junto con frameworks como PhaserJS y Cocos2DJS. También se cubren bibliotecas de JavaScript para el desarrollo de juegos, opciones de soporte de audio y consideraciones para elegir el motor adecuado.

Available in English

1. Introducción al Desarrollo de Juegos Web

Short description:

Bienvenidos a mi Cumbre de Desarrollo de Juegos Web donde exploraremos las opciones de motores de juego para juegos basados en la web. Hay dos enfoques principales para desarrollar juegos en el navegador: nativo y compilado. El desarrollo nativo es ideal para proyectos enfocados en la web, ya que ofrece una integración estrecha con el navegador. El desarrollo compilado trata la web como otra plataforma, lo que permite objetivos adicionales. Puedes utilizar motores de juego preexistentes como Unity o explorar motores específicos de HTML5. Alternativamente, puedes construir sobre frameworks y bibliotecas existentes. El desarrollo web es modular y ofrece muchas opciones.

Ahora dirijo el canal GameFromScratch y GameFromScratch.com durante la última década, y durante esa década he cubierto literalmente cientos de motores de juego y frameworks. Y nunca hemos tenido tantas opciones. Si quieres desarrollar un juego en estos días, hay tantas opciones comerciales y gratuitas, de código abierto y de código cerrado. Estás realmente mimado de opciones.

Ahora el problema de tener tantas opciones es que hay demasiadas opciones, y eso dificulta cualquier decisión especialmente cuando estás empezando. Así que si estás tratando de averiguar qué tecnología o motor de juego usar para tu próximo juego basado en la web, espero que esta charla te ayude. Hay dos enfoques principales para desarrollar un juego en el navegador. Uno es tomar el enfoque nativo, básicamente desarrollarlo como lo harías con cualquier otra aplicación basada en la web. Hay varios motores y frameworks disponibles que funcionan, estás escribiendo directamente en JavaScript. Esto tiene mucho sentido si tu plataforma principal de publicación es la web. Si tu objetivo principal es la web, y la plataforma más importante es la web, esta es una gran opción. Te brinda una integración estrecha con el navegador mismo. Facilita un poco la experiencia de depuración. La otra opción es básicamente compilada. Esto trata tu navegador web más o menos como si fuera una máquina virtual. Utilizando tecnologías como WebAssembly o ASMJS como relleno, y tecnologías como Emscripten, las cadenas de herramientas para tu motor de juego o framework elegido, se compilan a un código casi en bytes que se ejecuta dentro de tu navegador. Esto generalmente no tiene una integración estrecha con el navegador, al menos no al saltar Pero el enfoque agradable del enfoque compilado es que estás tratando la web básicamente solo como otra plataforma. Así que en lugar de compilar para Windows, Mac y móvil, entre otros, puedes agregar la web como un objetivo adicional. Este es el enfoque que toman muchos motores de juego tradicionales.

Complementario a la decisión de trabajar nativamente en el navegador o compilarlo utilizando una tecnología como WebAssembly y Emscripten, también tienes prácticamente tres decisiones principales diferentes en términos de qué tipo de tecnología de juego deseas utilizar para desarrollar tu juego. En la parte superior, tienes la idea de simplemente utilizar un motor de juego preexistente, el como Unity, Unreal, Godot. Ya los conoces. Básicamente, tratan la web como otra plataforma más. A veces, solo se trata de construir para la web y tu juego está creado. Ahora, además de eso, también tienes algunos motores de juego específicos de HTML5 por ahí. Vamos a cubrir algunos de ellos en este video también. Y luego, finalmente, tienes la opción de construir sobre un framework o una colección de bibliotecas que existen y más o menos crear el tuyo propio. Ahora, tradicionalmente, no recomendaría crear tu propio motor de juego porque hay mucho más trabajo del que te das cuenta, pero cuando se trata de desarrollo web, hay tantas bibliotecas y frameworks como Three.js o Box Physics, etc., en las que puedes construir, que la idea de hacer tu propio motor de juego en realidad no es tan desalentadora como lo sería en muchos otros escenarios. Y una de las cosas sobre el desarrollo web en general y las tecnologías de JavaScript es que tienden a ser muy modulares en su enfoque.

2. Opciones de Motores de Juego Web

Short description:

Y se trata más de encajar piezas de Lego y construir tu propio motor a partir de componentes listos para usar en lugar de comenzar desde cero. Hablemos de los motores de juego tradicionales que tienen exportación web. Unity es el jugador más grande, con la mayor cantidad de desarrolladores, la comunidad más grande y un amplio soporte de plataformas. Es un motor de juego completamente funcional en 3D y 2D con una gran cantidad de materiales de aprendizaje. Unreal Engine ha dejado de dar soporte a la web, pero existen complementos de terceros. Unreal Engine y Unity son los competidores más cercanos para títulos basados en la web. Otra opción es el Godot Engine.

Y se trata más de encajar piezas de Lego y construir tu propio motor a partir de componentes listos para usar en lugar de comenzar desde cero. Así que vamos a ver algunos de esos bloques de construcción con los que también podrías trabajar.

Pero primero, hablemos de los motores de juego tradicionales. Comencemos hablando de algunos de los motores de juego tradicionales que tienen alguna forma de exportación web. Creo que ahora, en una época en la que los complementos del navegador ya no existen, básicamente estás buscando un backend de Emscripten que se compila a WebAssembly de alguna forma para todas estas cosas que estábamos a punto de mencionar. Y estas son excelentes opciones, especialmente si ya estás desarrollando un juego y solo quieres agregar la web como otra plataforma.

Y vamos a comenzar con el ejemplo más obvio. No voy a cubrir todas las opciones de motores de juego que se compilan para la web porque hay tantos de ellos. Vamos a hablar de los jugadores más importantes en este espacio. Y el jugador más importante es Unity. Unity tiene la mayor cantidad de desarrolladores. Tiene la comunidad más grande. Probablemente tenga el soporte de plataforma más amplio. Es un motor de juego completamente funcional en 3D y 2D. Tu lenguaje de programación principal será C#. Pero hay varias opciones de scripting visual, incluidas dos que son oficialmente compatibles con Unity. Tiene la mayor cantidad de materiales de aprendizaje disponibles. Y francamente, si no estás enfocándote en la web en primer lugar y no sabes cuál elegir, Unity es probablemente la opción más fácil que puedes hacer, simplemente porque la comunidad es la mejor que hay. La comunidad de Unity es enorme. Eso significa que hay una gran cantidad de materiales de capacitación, tutoriales y personas con las que puedes hablar si necesitas ayuda, entre otras cosas. Así que Unity es una excelente opción, especialmente si la web no es tu plataforma principal. Si solo quieres agregar otra plataforma a la lista, si estás desarrollando para escritorio, móvil y web, Unity podría ser una buena elección.

Otra opción que solía existir era Unreal Engine. Ahora Unreal Engine ha dejado de dar soporte a la web. Hay complementos de terceros que brindan esta funcionalidad, pero no creo que recomendaría Unreal Engine a menos que ya estuvieras trabajando en un proyecto de Unreal Engine, porque Unreal no se ha expandido mucho en el espacio web. Hay formas de hacerlo y hay terceros trabajando en retomar el soporte que Epic Games abandonó. Pero debes saber que Unreal Engine y Unity son probablemente los competidores directos más cercanos que puedes encontrar cuando se trata de desarrollar títulos basados en la web. No realmente. Unreal Engine está muy rezagado en ese sentido. En cuanto al motor, si estás buscando algo más gratuito y específicamente de código abierto, otra opción para ti es Godot Engine.

3. Godot Engine y Soporte Web

Short description:

Unreal y Unity tienen tarifas de licencia, mientras que Godot es completamente de código abierto con una comunidad sólida. Godot está mejorando tanto en el espacio 2D como en el 3D, con próximos lanzamientos que prometen mejores gráficos. Godot también admite la compilación de WebAssembly y tiene un soporte web bien probado.

Ahora tanto Unreal como Unity tienen tarifas de licencia o tarifas por asiento asociadas a ellos. Unity no es de código abierto en absoluto, mientras que Unreal Engine está disponible como código fuente. Godot es un motor de juego completamente de código abierto con licencia MIT en 2D 3D. Ahora, no tiene el alcance de Unreal o Unity. Probablemente no tiene la fidelidad gráfica en 3D de ninguno de ellos. No tiene los enormes recursos detrás de esos motores. Pero lo que sí tiene es una comunidad masiva detrás y mucho potencial. Así que Godot en el espacio 2D ha sido muy sólido. Mejorando con cada lanzamiento. Godot en el lado 3D definitivamente está mejorando. Y esperamos que en este año calendario, tal vez a principios del próximo año, veamos el motor Godot 4 con gráficos 3D mucho mejores también. El enfoque de Godot es utilizar la compilación de WebAssembly también. De hecho, puedes compilar Godot, el editor y las herramientas para que se ejecuten en el navegador. Por lo tanto, el soporte web de Godot está muy bien probado, probado en batalla y es una gran oportunidad allí.

4. Traditional Game Engines: Default

Short description:

Hoy vamos a hablar de dos opciones de motores de juego 2D en este espacio, los motores de juego tradicionales. El primero es el motor de juego Default. Ahora es completamente gratuito de usar y el código está completamente disponible. Default es un excelente motor de juego con un enfoque único. Utiliza el lenguaje de programación Lua y un sistema basado en mensajes. Se compila a WebAssembly y ofrece un buen rendimiento.

Hoy vamos a hablar de dos opciones de motores de juego 2D en este espacio, los motores de juego tradicionales. El primero es el motor de juego Default. Ahora este motor es de King, los creadores de prácticamente todos los juegos móviles que probablemente hayas jugado en el pasado. En última instancia, la mayoría del código se hizo de código abierto. Ahora es completamente gratuito de usar y el código está completamente disponible, aunque no está bajo una licencia estándar de OSI, por lo que no puedo llamarlo de código abierto en sí. Default es un excelente motor de juego. He sido un gran fanático de él durante mucho tiempo. Tienen su propio enfoque único para las cosas. El lenguaje de programación Lua es tu principal forma de comunicación y utiliza un sistema basado en mensajes para mantener las cosas desacopladas. Recomiendo encarecidamente probar Default. Es un enfoque diferente. Puede que no le guste a todo el mundo, pero a mí me gusta mucho la forma en que funciona. Ahora, en última instancia, se compila a WebAssembly también, por lo que no crea código legible por humanos en el navegador, pero también puedes crear versiones de escritorio y móviles, y el rendimiento es bastante bueno.

5. Web Game Engine Options (Cont.)

Short description:

GameMaker Studio es un motor de juego 2D que ha estado presente durante más de 20 años. Recientemente fue adquirido por Opera y tiene como objetivo diferentes plataformas. PlayCanvas es un motor de juego 3D basado en navegador con un editor de mundo 3D completamente funcional. Es comercial pero ofrece componentes de código abierto. Babylon.js es un motor de juego 3D de código abierto y un framework ampliamente respaldado por Microsoft. Cocos Creator es un motor de juego 3D gratuito construido sobre un framework de código abierto.

Ahora la otra opción es GameMaker Studio. GameMaker Studio ha estado presente durante más de 20 años. Tradicionalmente, es un motor de juego 2D. Recientemente fue adquirido por Opera, el creador del navegador, por lo que imagino que van a poner más énfasis en el lado de HTML. GameMaker también tiene como objetivo diferentes plataformas.

Nuevamente, Default y GameMaker se centran principalmente en el espacio 2D. GameMaker utiliza su propio lenguaje de programación llamado GameMaker Script, así como un sistema de arrastrar y soltar para la lógica de programación. También tiene su propio enfoque. Es un entorno muy completo. Tiene todas las herramientas que necesitas en un solo lugar. Sin embargo, es un proyecto comercial, pero han creado una versión de evaluación completamente funcional y de libre acceso. Finalmente. Me alegra ver que finalmente hay una versión más accesible de GameMaker disponible. Si quieres probar GameMaker, también es una opción para el desarrollo de juegos basados en la web y, dado que ahora es propiedad de Opera, espero ver más enfoque en la web en el futuro.

Ahora pasemos a los motores de juego donde la web es la plataforma de desarrollo principal. Si estás buscando el equivalente de Unity pero en el espacio web, definitivamente es PlayCanvas. PlayCanvas es completamente basado en navegador. Puedes editar directamente dentro de PlayCanvas y cuenta con un editor de mundo 3D completamente funcional, soporte completo para importar modelos 3D, soporte de animación y todo lo que esperarías. Así que si quieres crear un juego 3D con la web como tu plataforma principal, es difícil equivocarse con PlayCanvas. Ahora PlayCanvas es comercial. Algunas partes, como la biblioteca de interfaz de usuario PC UI, son de código abierto, pero en general es un software de suscripción. Si estás buscando algo que sea completamente de código abierto pero con un poco menos de herramientas, entonces Babylon.js es una opción. Babylon.js ha sido ampliamente respaldado por Microsoft. Es un motor de juego 3D de código abierto y un framework. No tiene un entorno de edición similar a Unity, pero en cambio es completamente de código abierto. Así que si estás buscando hacer juegos 3D con la web como tu plataforma principal, definitivamente debes considerar PlayCanvas y Babylon.js. Otra opción en términos de motores de juego similares a Unity pero con la web como plataforma principal es Cocos Creator. Cocos Creator en sí no es de código abierto, pero es gratuito de usar y está construido sobre un framework de código abierto. Proporciona una funcionalidad similar a Unity, aunque con menos características. Importación de modelos 3D, soporte de animación, capa de interfaz de usuario, etc. Es muy popular en China, pero también tiene documentación y una comunidad en inglés, aunque la comunidad asiática es mucho más grande en torno a Cocos Creator.

6. Game Engine and Framework Options

Short description:

No confundas Cocos Creator con Cocos 2D. En cuanto a 2D, tenemos algunas opciones. Construct 3 y G develop son herramientas de programación visual que generan proyectos basados en la web. Stencil es un lenguaje de programación visual para entornos 2D. Pasando a los frameworks, PhaserJS, MelonJS y Cocos2DJS son opciones principales para construir juegos. Cocos2D ofrece una funcionalidad extensa, PhaserJS es un framework 2D basado en HTML5 y MelonJS es una alternativa más pequeña. En el espacio 3D, 3JS es el framework predominante.

Volveremos a eso en un momento cuando empecemos a hablar de 2D.

En cuanto a 2D, tenemos algunas opciones. En el lado del motor de juego, muchas de las herramientas de desarrollo basadas en HTML5 son en realidad visuales, donde utilizas un lenguaje de programación visual y genera código JavaScript por ti. Las dos más destacadas que se me ocurren son Construct 3, que es un software de suscripción donde utilizas una configuración visual para crear tus juegos, pero también puedes ampliarlos usando el lenguaje JavaScript, y el código abierto G develop, que también utiliza un estilo de programación tipo hoja de cálculo y puedes ampliarlo usando el lenguaje JavaScript. Ambos generan un proyecto basado en la web al final. Ambos proporcionan muchas de las herramientas 2D que necesitarías para crear un juego. Ambos son motores principalmente solo 2D, aunque ambos también tienen soporte 3D incipiente, pero definitivamente no se deben considerar para el desarrollo 3D en este momento. Pero para 2D, especialmente si estás buscando un enfoque un poco más visual, ambos son buenas opciones. Otra opción en esa área es Stencil. Ahora, este es un lenguaje de programación visual. En realidad, utiliza hacks, pero también se puede compilar para plataformas basadas en la web. Así que si quieres trabajar visualmente en un entorno 2D, Stencil es otra opción que debes considerar. Tiene una especie de licencia híbrida extraña, gratuita pero no gratuita, que debes tener en cuenta.

Así que eso es todo para la mayoría de los principales motores de juego de los que quiero hablar. Pero luego entramos en el mundo de los frameworks. Básicamente, esto es como los motores de juego, pero más modulares, más basados en código, un poco menos de las cosas generales para mantenerlos unidos. Tal vez te falte un editor de niveles o algo por el estilo. Pero aquí tienes varias opciones diferentes. Y puedes usarlos para construir tu propio motor de juego, o puedes construir tu juego completamente usando uno de estos frameworks. Algunos de los frameworks más importantes son PhaserJS, MelonJS y Cocos2DJS. Ahora, Cocos2D comenzó como, creo que era Python, hace mucho tiempo, pero se ha portado a casi todas las plataformas que puedas imaginar, incluida una plataforma basada en la web. Esto es en lo que se basa Cocos Creator y proporciona toda la funcionalidad que realmente puedes imaginar para crear un juego. No es la herramienta en sí. PhaserJS es probablemente mi favorito, personalmente, un framework 2D basado en código HTML5. Proporciona, ya sabes, todo lo que necesitarías para hojas de sprites, atlas, reproducir sonido, cargar niveles, etc. Y luego tienes MelonJS, que es algo similar pero un poco más pequeño en general que PhaserJS. Así que si quieres construir un juego 2D, cualquiera de estos frameworks es una excelente opción sólida. Ahora, en el lado 3D, tienes un framework muy predominante, y se llama 3JS. Ahora, 3JS proporciona una tonelada de funcionalidad.

7. JavaScript Libraries and Level Design Tools

Short description:

3JS proporciona una capa de abstracción de WebGL y admite la carga de modelos 3D, la gestión de gráficos de escena y la carga de objetos. A-Frame es un marco de realidad virtual construido sobre 3JS. Otras bibliotecas basadas en JavaScript para el desarrollo de juegos incluyen Box2D, MatterJS, PlankJS, AmmoJS y OIMO. PixyJS es una biblioteca de representación que abstrae la capa de representación para un dibujo 2D rápido. Puedes construir tu propio motor utilizando estas bibliotecas o utilizar marcos como Phaser, Melon y Cocos2D. Tiled y LDTK son herramientas recomendadas para el diseño de niveles 2D para crear mapas y configurar objetos de juego.

Una capa de abstracción de WebGL, soporte para carga de modelos 3D, gestión de gráficos de escena, carga de objetos, etc. Básicamente, todo lo que necesitas para crear tu propio motor, excepto quizás las herramientas, está disponible en 3JS.

De hecho, hay otras herramientas como A-Frame, que es un marco de realidad virtual que utiliza una marca HTML para crear mundos 3D. En realidad, está construido sobre 3JS. Encontrarás que muchos motores de juegos están construidos sobre o utilizan 3JS. Es definitivamente un componente poderoso para construir tus propios títulos 3D.

Puedes construir tu juego directamente en 3JS si lo deseas o puedes construir tu conjunto de herramientas sobre él. Pero también hay otras bibliotecas basadas en JavaScript que son interesantes para los desarrolladores de juegos. En el ámbito de la física, tienes una versión de Box2D, que es probablemente el motor de física 2D más popular. Pero también existen MatterJS y PlankJS. No tengo experiencia con ninguno de ellos, pero ambos son frameworks de juegos 2D que se ejecutan directamente en el navegador.

Además, en el ámbito 3D, tenemos AmmoJS, que es una versión de física 3D basada en Bullet para realizar simulaciones físicas. Luego tenemos OIMO, no tengo idea de cómo se pronuncia. Tampoco tengo mucha experiencia con esa biblioteca, así que no voy a extenderme más allá de informarte. Esas son tus opciones en cuanto a física.

Además, también tenemos una excelente biblioteca de representación de la que debes estar al tanto. Muchas de estas, incluyendo Phaser y creo que Melon y posiblemente Cocos2D, se basan en ella, y se llama PixyJS. Básicamente, PixyJS abstrae la capa de representación. Entonces, si necesitas hacer dibujos 2D lo más rápido posible, esto hace que no necesites saber sobre WebGL o si estás utilizando algún otro método de representación de respaldo, PixyJS se encarga de todo eso por ti y mucho más. En muchos aspectos, es para 2D lo que 3JS es para 3D.

Entonces, si quieres crear tu propio motor, lo bueno es que tienes todas estas bibliotecas diferentes que puedes combinar como bloques de LEGO virtuales, unirlos y crear tu propio motor, o puedes, si tu juego no necesita necesariamente un motor y no vas a reutilizar el código, y es lo suficientemente simple en su naturaleza, simplemente construirlo sobre uno de estos frameworks y seguir adelante, por lo que al final no necesitas un motor en absoluto.

Si vas a seguir el enfoque de crear tu propio motor, o estás utilizando una biblioteca o framework que no proporciona todas las herramientas que podrías obtener de un motor de juegos más completo, probablemente aún necesitarás alguna herramienta de diseño de niveles 2D. En este espacio, tengo dos recomendaciones principales. La más antigua que ha existido durante mucho tiempo es el proyecto de código abierto Tiled. Tiled es capaz de crear no solo mapas 2D, sino también mapas con proyección isométrica y hexagonal. Y luego tenemos otra en este espacio que es mucho más joven, que es LDTK, o el Toolkit de Diseño de Niveles. Ambas son excelentes herramientas para componer visualmente tu mundo, así como para poblarlo, configurar barreras y objetos de juego, etc. Entonces, si vas a seguir el enfoque casero, tampoco necesitas crear estas herramientas desde cero. Puedes utilizar herramientas como LDTK y Tiled y básicamente crear tu propio motor de juegos personalizado utilizando estos recursos.

8. Soporte de Audio en el Desarrollo de Juegos

Short description:

Si necesitas agregar audio a tu propio framework o motor de juegos, hay un par de opciones disponibles. Dos opciones a considerar son Sound.js y Howler.js. Ambos son proyectos de código abierto que ocultan las complejidades de lidiar con el audio y proporcionan alternativas para el soporte de audio del navegador. Hay muchas otras bibliotecas disponibles para el soporte de audio, y puedes aprovechar estos proyectos de código abierto para crear tu propio motor con menos esfuerzo.

Otra área que debes considerar es el soporte de audio, especialmente si estás creando tu propio motor. Si utilizas algo como Phaser, ya tiene soporte de audio incorporado y probablemente esté construido sobre algunas de las bibliotecas de las que vamos a hablar ahora, pero si necesitas agregar audio a tu propio framework o motor de juegos, hay un par de opciones disponibles. Y en su mayoría están construidas sobre el audio web con alternativas para el soporte de audio del navegador. Y se encargan de esas complejidades por ti. Dos de las que probablemente debas conocer son Sound.js y Howler.js. Ambas son excelentes para ocultar las complejidades de lidiar con el audio y evitar algunas de las peculiaridades de los navegadores que de otro modo podrías enfrentar. Ambos son proyectos de código abierto, pero no son los únicos y esta no es una lista exhaustiva. Hay muchas otras bibliotecas disponibles. Solo quiero que sepas que si quieres crear tu propio motor o framework, hay todas estas piezas disponibles, la mayoría de ellas de código abierto, de las que puedes aprovechar para crear tu propio motor con una fracción del trabajo que tradicionalmente se requeriría en estos espacios si no construyeras sobre el trabajo de otros.

9. Choosing the Right Game Engine

Short description:

Elegir el motor adecuado es cuestión de satisfacer tus necesidades. Hay más opciones disponibles y encontrar soporte se vuelve más difícil para motores más oscuros. Hacer preguntas sobre 2D o 3D, presupuesto y acceso de código abierto puede ayudar a reducir las opciones. Considera la plataforma principal y los compromisos de rendimiento de las tecnologías web. Crear tu propio motor es una opción, especialmente en el mundo web. 3JS proporciona la mayoría de las funcionalidades 3D y hay bibliotecas de audio disponibles.

A partir de este punto, tienes una buena base de las opciones disponibles, desde los motores de juegos tradicionales que pueden apuntar a la web, hasta motores más enfocados en la web, lenguajes de programación visual y más que podrías usar para crear tu juego, y la cantidad de frameworks que podrías usar para crear el tuyo propio.

Elegir el motor adecuado es simplemente cuestión de satisfacer tus necesidades de la mejor manera posible. También debes saber que esta lista no es exhaustiva. Hay muchas más opciones disponibles. Solo para que lo sepas, a medida que se vuelve un poco más oscuro, la idea de encontrar soporte para ese motor también se vuelve más difícil. Si quieres contratar a alguien o intentar encontrar una solución a un problema que te tiene desconcertado, cuanto más grande sea el motor, más grande será la comunidad y más probabilidades habrá de encontrar ese problema o persona.

Además de elegir el motor adecuado, probablemente puedas hacer una serie de preguntas para reducir las opciones y encontrar el que mejor funcione para ti. Ahora, la más fácil con la que podemos empezar es ¿mi juego es 2D o 3D? Solo con responder esa pregunta, si estás creando un juego 3D, ya hemos eliminado aproximadamente la mitad de los motores de la lista, por ejemplo. Ahora, la siguiente pregunta realmente fácil es ¿tengo dinero? Si no tienes dinero disponible, es posible que las tarifas de licencia, las tarifas por asiento de algo como Unity, no te resulten muy atractivas. Ten en cuenta que Unity cuesta una cantidad X por asiento si ganas más de $100,000 al año en USD. Así que si estás tratando de mantenerlo lo más económico posible, es posible que desees alejarte de los motores más comerciales en este espacio. Ahora, si no te importa el dinero, eso amplía mucho las opciones.

Del mismo modo, ¿el acceso al código fuente es importante para ti? ¿Necesitas que sea completamente de código abierto, como el motor de juego Godot, principalmente de código abierto como el motor por defecto, o con código fuente disponible como el Unreal Engine? Si todo esto es importante para ti, si el acceso al código fuente es realmente importante para ti, entonces nuevamente puedes eliminar aproximadamente la mitad de los motores de la lista. Tomar decisiones siempre se reduce a clasificar las cosas y al proceso de eliminación.

También ten en cuenta que una de las decisiones importantes será ¿cuál es mi plataforma principal? Si estás desarrollando principalmente para la web, tiene mucho sentido utilizar tecnología web en primer lugar. Sin embargo, ten en cuenta que cuando implementas tecnologías web, debes envolverlas en una capa adicional como Electron. Si haces esto, no obtendrás el mismo rendimiento que obtendrías si fueras nativo. Por ejemplo, si desarrollas un juego en Unreal o Unity para escritorio, probablemente superará en rendimiento a una aplicación 3D basada en web que se ejecute en algo como Electron. Es simplemente la naturaleza de la bestia. Así que si necesitas obtener el máximo rendimiento, probablemente la web en primer lugar no sea para ti a menos que tu plataforma sea específicamente la web. Ninguna de las anteriores también es una opción. Y aquí es donde comienzas a considerar la idea de crear el tuyo propio. En el mundo de escritorio, básicamente nunca recomendaría a alguien que escriba su propio motor de juegos a menos que sea una especie de experiencia de aprendizaje. Por lo general, pasarás más tiempo escribiendo el motor, escribiendo las herramientas que ejecutando tu juego. A menudo, por un orden de magnitud. Sin embargo, en el mundo web es un poco diferente. Aquí tienes varios proyectos, hombros de gigantes, en los que podrías basarte. Si estás trabajando en el espacio 3D, 3JS proporciona más del 80% de la funcionalidad que necesitarás. Si necesitas bibliotecas de audio, las hay disponibles.

10. Choosing Game Engines and Frameworks

Short description:

Si necesitas bibliotecas físicas, están disponibles. En el lado 2D, hay motores de renderizado y física como Phaser y Cocos. Unity es una opción principal para un amplio soporte de plataformas. Para desarrolladores conscientes del presupuesto u orientados al código abierto, se recomienda Godot. El motor Default es único y adecuado para juegos 2D. Las opciones de programación visual incluyen GDevelop, Construct 3 y Stencil.

Si necesitas bibliotecas físicas, están disponibles. Es principalmente cuestión de reunir todas estas cosas. Y luego, en el lado 2D, hay varios motores de renderizado y física que ya hemos visto, así como frameworks que cubren el 90 por ciento de lo que tu juego 2D requerirá. Cosas como Phaser o Cocos. Puedes construir sobre ellos y simplemente desarrollar tu lógica de juego o tu propio motor de juego derivado encima. Crear el tuyo propio siempre es una opción.

Te he dado varias sugerencias en una amplia variedad de categorías. Ahora voy a darte probablemente lo que sería mi sugerencia en cada una. Lo que yo personalmente elegiría. Puedes tomar esto con mucha precaución, y bajo una variedad de diferentes escenarios. La prioridad número uno para mí fue las plataformas. Quería que mi juego se ejecutara en tantas plataformas como fuera posible. Así que si estás interesado en tener un objetivo móvil, tal vez VR, web, lo que sea, es difícil superar a Unity. Si quieres tener el soporte más amplio posible, el motor de juego Unity es como el IBM. Nadie nunca fue despedido por elegir IBM. Nadie nunca fue despedido por elegir Unity, especialmente para este tipo de juegos.

Sin embargo, si tienes un presupuesto más limitado o si estás más alineado con un enfoque de código abierto, entonces tienes el motor de juego Godot. El motor de juego Godot no tiene el dinero de investigación y desarrollo detrás de él, ni la enorme cantidad de empleados detrás de él que verías con algo como Unity o Unreal Engine. Por otro lado, es completamente de código abierto y tiene una comunidad muy activa y comprometida, y está creciendo a un ritmo impresionante. También están poniendo mucho énfasis en el soporte web. Así que si mi alineación fuera no quiero gastar dinero o prefiero el código abierto o ambas cosas, probablemente elegiría el motor de juego Godot.

Ahora, si estuviera escribiendo un juego 2D, lo mismo, probablemente elegiría el motor Default. Default no será para todos, especialmente si no soportas el lenguaje Lua, pero recomiendo encarecidamente que si estás considerando crear un juego 2D, eches un vistazo a Default. Nuevamente, no será para todos. Son el motor de juego más único de la lista de hoy. Tienen un enfoque muy poco convencional y eso me gusta. Me gusta la forma en que se organiza el código, me gustan las herramientas de nivel que obtienes con él. Es simplemente un enfoque muy diferente. Así que si estás interesado en algo un poco diferente, 2D y principalmente de código abierto, echa un vistazo a Default. Ahora, si te interesa más la programación visual y no quieres meterte en la codificación en absoluto, ahí es donde opciones como GDevelop, Construct 3 y Stencil son buenas opciones.

11. Game Engine Recommendations

Short description:

GDevelop es la opción más económica, mientras que Construct 3 es el más maduro. Ambos son motores principalmente 2D. Para juegos web solo en 3D, se recomiendan Babylon y PlayCanvas, siendo PlayCanvas más enfocado en la construcción de niveles y herramientas, y BabylonJS una opción rentable. Para juegos 2D con un desarrollo más centrado en el código o la integración de herramientas externas, están disponibles frameworks como Phaser. Si quieres construir tu propio motor, considera usar el framework JavaScript 3JS para el desarrollo de juegos en 3D.

GDevelop es la opción más económica de esas opciones, mientras que Construct 3 es probablemente el más maduro de esas opciones. Todos son principalmente 2D. Sé que Construct, por ejemplo, tiene un comienzo de soporte 3D en este momento, pero ni siquiera consideraría ninguno de ellos para el desarrollo de juegos en 3D.

Y por supuesto, si estuviera enfocado en la web como mi objetivo principal, si estuviera creando un juego solo web en 3D, usaría Babylon o PlayCanvas. No sé cuál elegiría. Si me importara más la construcción de niveles y las herramientas, probablemente elegiría PlayCanvas. Si quisiera ahorrar dinero o si estuviera trabajando un poco más a nivel de código, probablemente elegiría BabylonJS. Creo que pronto habrá una gran actualización para BabylonJS. Será interesante ver qué sucede allí.

Y por supuesto, si estuviera considerando crear un juego 2D, un poco más centrado en el código o si quisiera integrar herramientas externas, hay frameworks como Phaser. Y por supuesto, si vas a construir el tuyo propio, te recomiendo encarecidamente que eches un vistazo al framework JavaScript 3JS para el desarrollo de juegos en 3D.

Damas y caballeros, esto marca el final de la charla. Espero haberles ayudado un poco si están buscando y tratando de decidir qué motor elegir para crear su próximo juego. Si también están interesados en aprender más sobre motores de juegos y herramientas, etc., les recomiendo que visiten Game From Scratch. Espero que encuentren algo interesante allí también. Así que, espero que hayan disfrutado de esta charla y nos hablaremos más adelante. Adiós.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Building Fun Experiments with WebXR & Babylon.js
Top Content
During this session, we’ll see a couple of demos of what you can do using WebXR, with Babylon.js. From VR audio experiments, to casual gaming in VR on an arcade machine up to more serious usage to create new ways of collaboration using either AR or VR, you should have a pretty good understanding of what you can do today.
Check the article as well to see the full content including code samples: article. 
React Summit 2023React Summit 2023
32 min
How Not to Build a Video Game
In this talk we'll delve into the art of creating something meaningful and fulfilling. Through the lens of my own journey of rediscovering my passion for coding and building a video game from the ground up with JavaScript and React, we will explore the trade-offs between easy solutions and fast performance. You will gain valuable insights into rapid prototyping, test infrastructure, and a range of CSS tricks that can be applied to both game development and your day-to-day work.

Workshops on related topic

JSNation 2023JSNation 2023
116 min
Make a Game With PlayCanvas in 2 Hours
Featured WorkshopFree
In this workshop, we’ll build a game using the PlayCanvas WebGL engine from start to finish. From development to publishing, we’ll cover the most crucial features such as scripting, UI creation and much more.
Table of the content:- Introduction- Intro to PlayCanvas- What we will be building- Adding a character model and animation- Making the character move with scripts- 'Fake' running- Adding obstacles- Detecting collisions- Adding a score counter- Game over and restarting- Wrap up!- Questions
Workshop levelFamiliarity with game engines and game development aspects is recommended, but not required.
JS GameDev Summit 2022JS GameDev Summit 2022
121 min
PlayCanvas End-to-End : the quick version
Top Content
WorkshopFree
In this workshop, we’ll build a complete game using the PlayCanvas engine while learning the best practices for project management. From development to publishing, we’ll cover the most crucial features such as asset management, scripting, audio, debugging, and much more.
JS GameDev Summit 2022JS GameDev Summit 2022
86 min
Introduction to WebXR with Babylon.js
Workshop
In this workshop, we'll introduce you to the core concepts of building Mixed Reality experiences with WebXR and Balon.js.
You'll learn the following:- How to add 3D mesh objects and buttons to a scene- How to use procedural textures- How to add actions to objects- How to take advantage of the default Cross Reality (XR) experience- How to add physics to a scene
For the first project in this workshop, you'll create an interactive Mixed Reality experience that'll display basketball player stats to fans and coaches. For the second project in this workshop, you'll create a voice activated WebXR app using Balon.js and Azure Speech-to-Text. You'll then deploy the web app using Static Website Hosting provided Azure Blob Storage.