¿Cómo se relacionan los motores como Unreal con OpenGL o DirectX?

8

Soy completamente nuevo en gráficos por computadora, y aún más, en el desarrollo de juegos. Estoy buscando información para aprender lo básico, rápidamente. Tengo una pregunta en mi cabeza; ¿Cómo se relacionan los motores como Crytek Engine o Unreal Engine con OpenGL o DirectX?

Estoy muy interesado en la física del juego, pero no puedo entender cómo se unen la física, los gráficos y el motor; Hay huecos que no puedo llenar.

BRabbit27
fuente
Aquí hay parte de la respuesta, pero solo trae otras preguntas. scientificninja.com/blog/write-games-not-engines
BRabbit27
¿Dónde entra la física? Es como si debería escribir un algoritmo de física, por ejemplo, un algoritmo de colisión y luego hacer que algunos círculos creados en OpenGL se comporten de acuerdo con mi algoritmo de física.
BRabbit27

Respuestas:

10

TL; DR: un motor es solo una colección de componentes reutilizables.

Muro de texto: los juegos almacenan una representación del mundo, por ejemplo, tendrías una entidad como una casa, que tiene una malla que define cómo se ve su geometría y una posición.

Ahora, probablemente tenga más de una entidad. Digamos que tenemos un personaje controlado por el jugador y algunas cajas. Cuando el jugador quiere moverse, mueves al personaje y compruebas si choca con alguna casilla. Ahí es donde entra en juego la física. Dependiendo de cómo se modele la física, el personaje puede simplemente caminar a través de las cajas, detenerse frente a las cajas o empujar las cajas.

Eso sí, esto solo cambia el estado interno del mundo del juego.

Luego, después de calcular el movimiento y la física, representaría un marco, por ejemplo, dibujará el estado actual del mundo en la pantalla.

OpenGL y DirectX son API de gráficos, solo se usan para representar cosas (por ejemplo, el personaje) en la pantalla.

Entonces, básicamente le estás diciendo a OpenGL / DirectX 'Quiero dibujar el personaje en la posición 1 y un cuadro en la posición 2, y ...'.

Por supuesto, esto es una simplificación excesiva.

De todos modos, dado que no queremos seguir ese procedimiento paso a paso todo el tiempo, ponemos esas cosas en funciones y clases. Por lo tanto, podríamos tener una clase física que contenga todas las funciones necesarias para la simulación física, o una clase gráfica que interactúe con la API gráfica y dibuje nuestras entidades. Et voila, tenemos un motor.

Exilyth
fuente
Hay un acento perdido "Et voilà" jaja bromeando. Muchas gracias Creo que estaba pensando bien pero no estaba seguro, así que decidí preguntar. ¡Muchas gracias!
BRabbit27
2
DirectX no es API de gráficos, pero Direct2D y Direct3D sí lo son.
@JaakkoLipsanen sí, ahora veo, DirectX es un marco completo para el desarrollo de juegos (3d, audio, video, etc.) y Direct3D es solo el módulo de gráficos.
BRabbit27