Motor de Videojuegos

Toca hacer una pequeña pausa dentro de la serie de artículos sobre los Roles de la Industria del Desarrollo de Videojuegos, para ampliar un concepto que ha ido apareciendo en las anteriores entradas, y que considero que es necesario entender: el motor de videojuegos.

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 3D, Unreal Engine, CryEngine 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

Visor 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

Diversas opciones sobre 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.


Con esto queda explicado el concepto de motor de videojuegos. He creído conveniente abordarlo ahora, ya que está relacionado con los diversos roles y la forma de interactuar entre ellos. En las próximas entradas continuaremos explicando los roles. Concretamente, presentaremos los relacionados con el audio.

Marcar como favorito enlace permanente.

Un comentario

  1. Buen post. El mundo del desarrollo de los videojuegos todavía está en pañales, seguro seguirá creciendo cada vez más. Los «juegos indies» o de desarrolladores independientes lo tienen más fácil ahora para desarrollar (quizá no tanto para publicitarse debido a la competencia). Hay ya un montón de motores de videojuegos si contamos los más sencillos, o los que comentaste que están más enfocados para un género en concreto, como el RPG Maker. Cualquier persona de a pie que trabaje con artistas hoy puede permitirse desarrollar algo interesante.

    ¡Saludos!

Deja un comentario

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