Motores Gráficos y como son programados


Bienvenidos a nuestro blog, en él vamos a explicar que son los motores gráficos, algunos ejemplos de los que se usan en algunos videojuegos y como los programaron.

 

Empecemos por una breve descripción de los motores gráficos:

 

Un motor gráfico es un software usado por aplicaciones y programas para dibujar gráficos en la pantalla de nuestro ordenador, smartphone o tablet.

 

Algunos ejemplos de motores gráficos en videojuegos serian:

(Haced click en el nombre de los motores si queréis saber más sobre ese motor)

-REDengine 4: Cyberpunk 2077

 

 

-Fox Engine: Metal gear solid 5.

 

 

 

-RAGE: GTA 5 y Red Dead Redemption.

 

-UNREAL Engine 4:  Ghost of tsushima

 

-UNITY: Cuphead

 

 

 

Antes que nada antes de intentar crear un motor gráfico, es necesario tener en cuenta ciertos factores tales como el tipo de juegos que se van a querer programar así como los conocimientos técnicos del que va a programar el motor.

 

Tomando prestados los pasos mencionados por el creador independiente Harold Serrano, se tienen que tener en cuenta los siguientes 10 pasos para poder crear un motor funcional:

 

Paso 1: aprender álgebra lineal.

Paso 2: aprender C ++ (o cualquier idioma que se desee)

Paso 3: Desarrolle un motor matemático.

Paso 4: Aprender gráficos por computadora.

Paso 5: aprender OpenGL.

Paso 6: aprender patrones de diseño.

Paso 7: Desarrollar un motor de renderizado.

Paso 8: Repasar las leyes del movimiento de Newton.

Paso 9: Aprender algoritmos de geometría computacional.

Paso 10: Desarrollar un motor de física.

 

Ahora  bien, una vez dicho lo que se necesita para poder crear un motor gráfico funcional, ahora explicaremos de qué se compone.

Un motor de juego consta de tres motores más pequeños:

  • Motor matemático

  • Motor de renderizado

  • Motor de física

La interacción entre estos motores permite que un personaje realice los distintos tipos de acciones necesarias. También permite que una escena del juego produzca sombras o el propio escenario.

 

El motor matemático

El motor matemático maneja todas las operaciones de álgebra lineal y operaciones geométricas.

Para empezar, debe centrarse en implementar solo vectores y operaciones matriciales. Vectores y

matrices permiten que un personaje se traslade y gire, respectivamente.

Math Engine.jpeg

El motor matemático debe contener estas operaciones vectoriales:

  • Suma y resta de vectores: permite que un personaje se mueva

  • Producto escalar: determina cuánto influye un vector en otro.

  • Producto cruzado: permite la creación de un tercer vector

El motor matemático también debe contener estas operaciones matriciales:

  • Transformación

  • Transponer

  • Invertir

  • Identidad

La operación de transformación permite que un personaje gire.

Es posible que desee incluir las operaciones cuaternión y doble cuaternión en el motor matemático. Los cuaterniones rotan las entidades del juego pero usan menos espacio y son más rápidos que las matrices. Los cuaterniones duales ofrecen la belleza de la traducción y la rotación en una sola entidad matemática

 

El motor de renderizado

Para representar un píxel en una pantalla, debe comunicarse con la GPU. Para hacerlo, necesita un medio. Este medio se llama OpenGL. OpenGL es una API (poner  q es una api en el pie de pag) y su objetivo principal es enviar datos desde la CPU a la GPU.

El motor renderizará diferentes tipos de objetos. Representará modelos 3D, imágenes, texto, sprites, etc. Por lo tanto, es una buena idea configurar un administrador de renderizado, el cual se encargará de todas las operaciones de OpenGL.

 

El administrador de renderizado extrae información de renderizado de cada objeto. Esta información luego se pasa a la GPU a través de búferes OpenGL. Una vez en la GPU, OpenGL Shaders procesa la información de renderizado.

 

Normalmente, cada objeto del juego contiene la siguiente información de renderizado:

  • Posición del vértice

  • Coordenadas UV

  • Normales

  • Texturas

La GPU usa la posición del vértice para ensamblar la geometría del objeto. Utiliza los datos normales para las operaciones de iluminación. Y utiliza las coordenadas UV y la textura para aplicar imágenes al objeto.

 

Escenografía

Un juego tendrá muchos personajes. Para realizar un seguimiento de todas las entidades del juego, debe configurar un Administrador de entidades. Entity Manager realiza un seguimiento de todas las entidades que están activas en un juego.

Scenegraph .jpeg

El administrador de la entidad almacena cada entidad del juego en un contenedor. El mejor contenedor para usar es un gráfico de escenas. Los gráficos de escena son árboles genéricos y proporcionan una forma rápida de atravesar las entidades del juego. Es posible que desee utilizar contenedores de vectores C ++ en su lugar. El problema es que son demasiado lentos para atravesarlos. Por lo tanto es mejor usar gráficos de escena en su lugar.

 

El bucle del motor

Se configura un bucle maestro en el motor para representar y actualizar continuamente el espacio de coordenadas de cada entidad. Algunos desarrolladores lo llaman Game Loop.

El administrador de la entidad proporciona las entidades del juego al Game Loop. El bucle del motor luego procesa cada entidad llamando al motor de procesamiento. También actualiza el espacio de coordenadas de cada entidad llamando al motor matemático.

La función Actualizar establece la transformación espacial de cada entidad. Los vectores y matrices trasladan y rotan la entidad.

 

El motor de físicas

La parte interesante de un motor de juego es el motor de física. Pero este también es el más complicado. El motor de física determina la posición y la velocidad de una entidad. Lo hace integrando las fuerzas externas que actúan sobre la entidad.

Juego engine-physics.jpeg

La fuerza externa más común que actúa sobre una entidad es la gravedad. Al integrar la fuerza de la gravedad obtenemos la velocidad y la posición de la entidad. Esta información luego se usa para proporcionar la ilusión de que la entidad está cayendo. En pocas palabras, la responsabilidad del motor de disicas es integrar la ecuación de movimiento.

Los algoritmos más comunes que se utilizan para integrar la ecuación de movimiento son:

  • Método Euler

  • Método Verlet

  • Método Runge-Kutta

El método Euler es sencillo de implementar, pero es el menos exacto. El método Runge-Kutta es un poco más complicado, pero también el más preciso.

Motor REDengine 4

Hoy, viernes 23/4, vamos a dar un descanso a esta entrada y para variar un poco más, acabo de subir una nueva entrada en la que hablo sobre el motor REDengine 4, hablando sobre su historia y sus versiones anteriores, de cómo funciona y por quién fue creado, y, en que juegos es usado este motor. Si queréis saber más sobre este motor gráfico, haced click aquí y os llevará a esa entrada del blog.

Motor Fox Engine

Hoy, viernes 30/4, acabo de subir una nueva entrada en la que hablo sobre otro motor, el motor Fox Engine, hablando sobre su historia y sus versiones anteriores, de cómo funciona y por quién fue creado, y, en que juegos es usado este motor. Si queréis saber más sobre este motor gráfico, haced click aquí y os llevará a esa entrada del blog.


Comentarios

Publicar un comentario

Entradas populares de este blog

Motor Fox Engine: creación, historia, funcionalidad y juegos que lo usan

Motor REDengine 4: creación, historia, funcionalidad y juegos que lo usan