¿Quieres desarrollar tus propios video juegos? - Cosas que te pueden interesar.
A la hora de empezar a desarrollar un videojuego son muchas las cuestiones que se deben estudiar para llegar al objetivo final; su despliegue entre los usuarios. Sin duda alguna, una de las más importantes suele ser el lenguaje o entorno de programación con el que vamos a desarrollarlo. A todos nos gustaría ser los creadores del próximo Warcraft, Cyberpunk 2077 o The Witcher pero, por desgracia, no es algo que esté al alcance de cualquiera.
No se trata de menospreciar el talento de nadie; no lo pongo en duda. Pero detrás de esas producciones hay cientos de personas y presupuestos enormes, incluso de millones de dólares. Si nos vamos a dedicar al desarrollo indie de juegos tendremos que asumir nuestras limitaciones. Equipos de una sola persona, quizás con la ayuda de algún amigo, un ordenador (puede que incluso un portátil) una conexión doméstica a internet y el dinero justo para encargar de vez en cuando una pizza y pasar la noche tecleando.
Por ese motivo uno de nuestras principales premisas debe ser la economía y la reutilización; aprovecha lo que ya existe, y si es barato, mejor.
Las producciones antes mencionadas suelen utilizar sus propios motores gráficos y disponen de ejércitos de artistas para crear hasta el último detalle visual del juego de forma totalmente exclusiva y personaliza. La mayoría de nosotros no podrá hacer eso; por tiempo, por dinero o por las dos cosas. Pero hay solución.
En otro momento os hablaré de la parte artística. Hoy voy a centrarme en las herramientas de programación que pueden salir en nuestra ayuda.
Motores de juego (gratis)
Dependiendo de nuestros conocimientos de programación podemos optar por una variedad de motores de juegos más que suficiente para lograr juegos que podrían competir con títulos AAA de firmas profesionales ¡y sin gastar nada!
Pero, ¿qué es un motor de juegos? No me gusta dar nada por hecho así que voy a atreverme a suponer que estás empezando en el mundo de la programación de video juegos y no sabes qué es un motor de juegos. Hablando de la manera más sencilla posible, un motor de juegos ofrece un entorno de desarrollo con una batería enorme de código ya escrito y que tú solo tienes que invocarlo para utilizarlo. En un juego RPG en el que quieres que un personaje 3D se desplace de un punto a otro solo necesitas indicarle al motor qué personaje es, cuales son las animaciones que tiene asignadas y cuál es el punto de destino que quieres alcanzar; el motor se encargará de casi todo el trabajo.
Unreal Engine 4 (https://www.unrealengine.com/en-US/) es, junto con Unity 3D (https://unity.com/es), uno de los principales motores gráficos gratuitos que tienes a tu disposición. Es casi inevitable la discusión acerca de cuál de ellos es mejor, pero la realidad es que se trata de una cuestión que va poco más allá de los gustos. Eso sí, UE4 dispone de un sistema de creación de juegos mediante módulos (Blueprints) que, como si de piezas de puzles se tratara, nos permite escribir juegos completos sin codificar una sola línea de código. Existen extensiones para Unity que simulan también este comportamiento. Gracias a estas funciones es muy fácil para cualquiera que tenga una idea para un juego empezar a desarrollarlo, pero hay que ser consciente de que si trabajamos con piezas “genéricas” de creación de juegos, el juego tendrá también sus limitaciones. Para pulir el acabado final del juego tendremos que recurrir al código.
Uno de los problemas con los que se encuentran quienes se inician en el desarrollo de juegos con estos motores es, precisamente, los lenguajes de programación que utilizan. Unity 3D utiliza C# y con Unreal Engine deberás codificar con el lenguaje C++. No se trata de lenguajes especialmente complicados de aprender, pero sí son bastante desconocidos debido a que suelen relacionarse con actividades muy técnicas dentro del mundo de la programación.
Hay otros lenguajes de programación que puede que estén más próximos a los nuevos aspirantes al desarrollo de video juegos, como Javascript, debido a su empleo en la creación de páginas web 2.0.
Desarrollo de HTML
La aparición de las páginas web significó toda una revolución tecnológica y cultural. Pocas cosas han cambiado más nuestra vida que la web y, sin duda, ha sido gracias a HTML.
HTML es un lenguaje de marcas que permite escribir documentos a los que se les añade ciertas marcas (etiquetas) que serán interpretadas por el programa que va a visualizar el documento; el navegador. El uso de las etiquetas recogidas por una norma permite crear un estándar para la creación de páginas web que puedan ser visualizadas fácilmente sin importar el sistema operativo del cliente, el navegador que utilice o el tipo de hardware.
Con el tiempo apareción CSS que permitió ampliar las posibilidades de HTML de cara a la presentación de los documentos. CSS ofrece herramientas a los creadores de páginas web para facilitar la presentación de los contenidos, sobre todo cuando son proyectos grandes. Gracias a CSS es muy fácil mantener una homogeneidad en el formato de un sitio web a lo largo de todas sus páginas sin tener que estar reescribiendo constantemente las mismas definiciones de formato. Si en algún momento se desea cambiar algo en el formato del sitio web también será muy sencillo editando solo algunos archivos CSS en lugar de todas las páginas.
Y con Javascript llegó la interacción con el usuario. Los navegadores fueron evolucionando con el tiempo adaptando sus intérpretes para poder admitir más funcionalidad desde el código HTML. Porque, recordemos, HTML es un lenguaje de marcas. El navegador deberá encargarse de interpretar esas marcas y actuar en consecuencia.
Javascript es un lenguaje interpretado de fácil aprendizaje con el que podemos “incrustar” código para que el navegador realice tareas más complejas que con HTML serían imposibles, como la interacción con el usuario. Con HTML podemos pedir al usuario que escriba su nombre en un cuadro de texto, pero con Javascript podemos asegurarnos de que ha introducido un dato correcto y, si es necesario, volver a pedírselo hasta que lo haga bien.
HTML5
Y entonces se unió todo y surgió el estándar HTML5 (https://es.wikipedia.org/wiki/HTML5)
Gracias a la potencia de los equipos actuales (sí, incluso el smartphone que tienes en el bolsillo) y a la constante evolución de los intérpretes que contienen los navegadores, Javascript ha podido evolucionar hasta tal punto que ya es posible desplegar cualquier tipo de aplicación en un navegador web, incluyendo un video juego.
Además, era necesario librarse de la dependencia (en ocasiones poco fiable) de software propietario de terceros, como el ya obsoleto Flash, y para eso se requería de grandes avances en los motores de interpretación de los propios navegadores.
Aquí es donde interviene el API Canvas, que nos permite realizar operaciones gráficas como dibujar, hacer animaciones con sprites y diversos tipos de procesamiento gráfico. Justo lo que necesitamos para el desarrollo de los videojuegos.
Me gustaría dedicar algunas publicaciones a uno de los frameworks más completos para sacar al API Canvas de HTML5 todo su jugo (y un poco más) a la hora de diseñar nuestros juegos. Estoy hablando de Phaser (https://phaser.io), que se encuentra en la versión 3 y que muy pronto nos sorprenderá con una versión 4 que, en palabras de su propio creador, será toda una revolución.
Pero eso será en otra entrega.
Discord: https://discord.gg/DqtacWX
Una publicación como siempre, muy bien desarrollada, con mucho y excelente conocimiento en el área, @marcosdk y @radaquest. Siempre aportando en positivo a esta plataforma y su desarrollo. Mi humilde apoyo por aqui con upvote y resteem . Invito a @franz54, @the01crow, @michelcamacaro, @steemcurator01, @votovzla a darle apoyo a esta excelente y valiosa iniciativa. Un gran abrazo y mucho exito!.
Muchas gracias por la info, por favor, me gustaría saber más, espero que consigas más apoyo para seguir escribiendo un contenido tan útil.
Pasando a dar apoyo a un estupendo proyecto. @marcosdk.
Invitando a los amigos a darle apoyo al proyecto @mariita52, @lanzjoseg, @wakeupkitty.
Moving on to support a great project. @marcosdk.
Inviting friends to support the project @mariita52, @lanzjoseg, @wakeupkitty.
Gracias por la invitación @sacra97
Apoyando el fortalecimiento de la cadena de bloques.
¡¡¡Felicidades!!!
Artículo muy interesante, gracias.
Gracias por vuestro apoyo. Espero que este artículo sea el primero de muchos¡
IInteresante y muy completo artículo que revela una vez más, tu amplia y sólida experiencia en el área. Valoramos tu trabajo por aqui y te acompañamos como siempre, querido @marcosdk.