Desde hace unos días he empezado de nuevo a trastear un poco con Godot Engine, el motor con el cual me voy a dedicar a desarrollar mis propios videojuegos durante el futuro próximo. ¡Y madre mía, cuantas cosas se me han olvidado! Y ya que hablamos del tema, aprovecho para comentaros exactamente que es un Motor de Videojuego (Game Engine).

Motores de Desarrollo

Tal y como ya se ha comentado en otras entradas, al principio del desarrollo de videojuegos, estos se programaban completamente. Cada nuevo juego significaba comenzar con el código desde cero. Dado el nivel de detalle en los recursos y las mecánicas, era una tarea asumible. Pero poco a poco, se fueron creando librerías especializadas para tareas que se repetían en los diferentes proyectos. Estas librerías fueron creciendo, y se especializaban cada vez más. Todo este código repetido conformó lo que se conoce como núcleo del juego.

El desarrollo anterior llevó a que se crearan herramientas especializadas para facilitar el desarrollo, las cuales ya incorporaban todo el núcleo del juego, y el objetivo del programador era ampliarlo con las mecánicas correspondientes a cada proyecto. Esto llevo a pasar a lo que es conocido como una arquitectura orientada a la reutilización. Esta nueva arquitectura se basa en la utilización de distintos módulos, cada uno de los cuales se especializa en un determinado componente y/o funcionalidad. El primer videojuego comercial que utilizaba este sistema de motor de juego fue el famosamente conocido Doom.

Interfaz de Godot Engine.

Este nuevo planteamiento facilitó la tarea de desarrollar un videojuego, y fue haciéndose más y más popular dentro de la industria. Fueron apareciendo diversos núcleos específicos para diferentes géneros de videojuegos. Ello ocasionó que aparecieran los primeros motores comerciales, que permitieron que pequeños estudios pudieran competir con los grandes, lo que a su vez facilitó el auge del desarrollo independiente.

Aunque todavía quedan estudios que utilizan sus propios motores (aquellos que se pueden permitir tener desarrolladores especializados para ello), la norma es servirse de diversos motores comerciales. Estos motores han evolucionado hacia un diseño multi-propósito, de forma que permiten la creación de videojuegos de cualquier género partiendo de la misma base. No obstante, existen motores orientados hacia un único género. Algunos ejemplos de motores comerciales utilizados hoy en día son Unity 3DUnreal EngineCryEngine o Godot Engine.

Módulos del Motor

Hoy en día, un motor de videojuegos está formado por una gran cantidad de módulos, cada vez más especializados. No obstante, existen un grupo de módulos comunes a todos los motores. A continuación se explican los principales de ellos.

Gráfico

La gestión de los componentes gráficos puede ser considerada una de las partes más fundamentales de cualquier videojuego. Por ello todos los motores cuentan con un motor gráfico que se encarga del renderizado de los recursos. Este se encarga de gestionar todas las funcionalidades relacionadas con el renderizado de bajo nivel, lo que permite gestionar desde el motor objetos como cámaras, primitivas, materiales, texturas, etc. Además se encarga de la comunicación con las diversas APIs gráficas, como pueden ser OpenGL o Direct3D.

Entrada/Salida

Este módulo se encarga de gestionar los eventos que se producen mediante la interacción con el usuario. Cuando, por ejemplo, el jugador pulsa una tecla, el juego debe reaccionar a tal acción en consecuencia, de estar así especificado. Además, este módulo gestiona los diversos controles que el usuario puede utilizar, como son el teclado, el ratón o el joystick, entre otros.

Red

Este módulo es el responsable de gestionar las diversas comunicaciones que se realizan durante el juego online. Esto se logra mediante el uso de paquetes de información. Resulta un módulo importante porque una mejor gestión de la información a enviar conseguirá reducir la latencia de las comunicaciones, lo que generará un juego más fluido al reducir las operaciones a realizar.

Físicas

Detectar las colisiones entre los diversos elementos de un videojuego resulta algo fundamental, porque de no ser así los objetos se traspasarían y no ocurriría interacción alguna. Es el motor de físicas el encargado de gestionar las colisiones de los diversos objetos, y para ello realiza las siguientes tareas:

  1. Detección de colisiones
  2. Determinar el punto de colisión.
  3. Responder a la colisión, generando las acciones determinadas.

Además de la gestión de colisiones, también es importante el sistema de físicas, el cual determina el comportamiento en reposo de los diversos elementos, o las fuerzas que se aplican sobre los mismos (por ejemplo, la gravedad, de estar esta simulada en el proyecto).

Sonido

Otro aspecto importante es la gestión del audio. Este módulo permite al motor la reproducción de diversos sonidos según los eventos que realice el usuario, así como gestionar las diversas melodías que se reproducen en cada pantalla de juego.


¿Os preguntáis por qué he elegido Godot Engine como motor de desarrollo? Pues los principales motivos son que se trata de un motor gratuito y de código abierto. Además tiene un modo orientado completamente al 2D de forma nativa, lo que facilita mucho las cosas.

¡Nos leemos!


¿Quieres estar al día de todo lo publicado en el blog?

Para ello puedes suscribirte a mi canal RSS y/o seguirme en mis Redes Sociales.

Etiquetas: ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad