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.
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.
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.
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
Muy interesante. Esperando la siguiente publicación
ResponderEliminarY la siguiente ¿cuándo?
ResponderEliminarEsta actualizado
Eliminar