Me he estado divirtiendo mucho jugando Battlefield, y estoy impresionado por cómo se ve y suena todo. Me preguntaba cómo comienza un motor de juego. ¿En qué punto de escribir el código finalmente hace algo, y qué hizo antes de comenzar a procesar todas las texturas, luz y partículas, perfectamente?
¿Hay algún buen artículo, en línea o ejemplos que alguien haya visto?
game-design
Djave
fuente
fuente
Respuestas:
Si estamos hablando acerca de la muy , y la nota a partir de que muy pocos motores principales del juego son codificados a partir de cero ya, y nota que este es un ejemplo y no necesariamente como funciona siempre. . .
Representación:
Comience por representar un cubo de sombra plana. Agregue efectos de iluminación básicos. Agregue una forma de mover la cámara. Ahora puedes volar alrededor de un cubo aburrido, suspendido en un vacío negro infinito. Hurra.
A continuación, probablemente desee importar un modelo. Por lo menos, tu artista puede crear un modelo de demostración (una tetera es sorprendentemente tradicional), pero puede que tengan un modelo de juego real que te puedan entregar. Una vez más, nos quedamos con el sombreado plano por ahora, por lo que aparecerá como si estuviera hecho. . . bueno, no hay sustancia realista, sino una especie de cruce entre plástico mate y porcelana. Esto , pero sin buena iluminación. Y todavía estamos en el punto donde está completamente inmóvil.
Los siguientes tres pasos principales se pueden hacer en cualquier orden.
Primero, querrás terreno. La mayoría de los juegos modernos dividen el renderizado en "geometría estática" y "actores", donde la geometría estática incluye cosas que no cambian (paredes, suelo, farolas) y los actores incluyen cosas que sí cambian (jugadores, vehículos, farolas destructibles). El concepto básico de representación es el mismo para ambos, hay optimizaciones que puede hacer para la geometría estática que no puede hacer para los actores. Usted necesita un terreno de juego para los ingenieros que realmente ponerse en marcha, por lo que si están esperando por usted, que es hora de improvisar en el renderizado del terreno menos básico.
En segundo lugar, querrás texturizar. Este es un tema enorme y es probable que llegue a un hito, haga algo más crítico y luego vuelva a él repetidamente. Su primer pase puede simplemente agregar texturas al modelo. Su segundo pase puede agregar mejor iluminación y comportamiento de la superficie. Su tercer pase puede agregar sombras (podría completar una respuesta completa hablando de sombras). Dependiendo de qué tipo de juego estés haciendo, esto puede complicarse arbitrariamente. En algún lugar aquí también puedes cambiar tu motor de juego completo a renderizado diferido.
Tercero, querrás animación. Sus animadores (suponiendo que no esté viviendo en 1995) habrán configurado plataformas de animación para sus modelos, que consisten en huesos que se ejecutan a través del modelo e información sobre cómo se mueven los huesos durante ciertas animaciones. Probablemente comenzará con la capacidad de reproducir animaciones a pedido, luego agregará la capacidad de mezclar animaciones.
Una vez hecho todo eso, es hora de trabajar en la compatibilidad. Si está trabajando en un juego AAA, entonces tiene alguna forma de probar su código en muchos tipos diferentes de hardware: tal vez sea interno, tal vez contrate a una empresa de pruebas, lo que sea. Gran parte de su código se romperá en tarjetas gráficas específicas o versiones específicas de controladores, y puede arreglar tantas como pueda.
También es hora de considerar la optimización. El renderizado es un gran problema de gran velocidad, por lo que ahora tiene que descubrir cómo explotar el hardware al nivel más profundo para poder ejecutar lo más rápido posible. Si cree que esto puede entrar en conflicto con la "compatibilidad", ¡tiene razón! ¡Lo hace totalmente! Encontrarás que las mejores optimizaciones simplemente no funcionarán en algunas tarjetas. Tienes la oportunidad de equilibrar todos estos factores.
Alrededor de este punto, sus artistas exigirán nuevas herramientas de texturización o nuevas características de animación, y sus diseñadores de niveles querrán nuevas técnicas de representación del terreno. Regrese a "los siguientes tres pasos principales se pueden hacer en cualquier orden" y repita hasta que termine el juego.
Como se Juega:
Voy a omitir las partes que no son terriblemente visibles desde el punto de vista visual. Primero, tienes que esperar hasta que esté disponible el renderizado del terreno, aunque hay muchas cosas de back-end que puedes hacer hasta entonces.
Una vez que tenga eso, establecerá algunas colisiones básicas. Esto probablemente tomará la forma de volar a una ubicación en el juego y luego presionar un botón que suelta un cubo. El cubo cae y golpea el suelo. Una vez que el cubo aterriza en el suelo de manera consistente, puede comenzar a configurar el movimiento del jugador, para que pueda correr alrededor del mundo de la misma manera que lo hace un jugador.
Una vez que tienes la física básica del movimiento funcionando, estás en uno de esos segmentos de "esto se puede hacer simultáneamente" nuevamente:
El combate necesita ser implementado. Necesita cosas que puedan dispararle a las cosas, y todas esas cosas deben comportarse adecuadamente.
La física necesita ser implementada. Tienes colisiones funcionando, pero las colisiones son solo un pequeño segmento de la física. Cuando alguien baja un jeep de un tanque, todo debe comportarse más o menos según lo previsto.
La mecánica del juego necesita ser implementada. ¿Cómo sabes cuándo has ganado o perdido? ¿Con qué frecuencia se generan las cosas y qué controla eso? Si los comunistas conquistan un punto de generación, ¿por qué sigue generando vehículos anarquistas? Esa clase de cosas.
Todo esto puede tomar, nuevamente, un tiempo arbitrario, en función de la cantidad de cosas que tus diseñadores quieren que hagas. También pasarás un montón de tiempo rastreando errores ("oye, mira lo que sucede cuando manejo un tanque en el ala de este avión de combate"). Tenga en cuenta que una buena parte de esto sucederá con un mundo sin texturas, o con modelos corriendo en la posición del aparejo de personajes , o con tanques que son solo cajas grandes con la palabra "TANQUE" pintada torpemente.
Interfaz de usuario:
La interfaz de usuario puede comenzar antes de que entre el código de representación principal, ya que la interfaz de usuario y la representación del mundo del juego tienden a utilizar rutas de código totalmente diferentes. En lugar de comenzar con un cubo, comenzará con un cuadro, luego agregará texturas al cuadro y luego agregará texto al cuadro.
En este punto, pasas la vida tratando de obtener el tiempo suficiente para escribir widgets de uso general, mientras sigues dedicando suficiente tiempo a la interfaz de usuario para que los diseñadores y desarrolladores de la mecánica del juego puedan probar el juego en una vaga apariencia de realismo. En algún momento, los artistas de la interfaz de usuario tendrán una sensación consistente de la interfaz de usuario, y luego comenzarán a trabajar en los elementos de la interfaz de usuario finalizados, mientras prueban esos elementos de la interfaz de usuario en los jugadores reales para asegurarse de que sean comprensibles y utilizables.
Puedo hablar más sobre esto según sea necesario, pero se convertirá en una mega respuesta si lo hago, así que por ahora, no lo haré :)
fuente
If the Communists conquer a spawn point, why does it keep spawning Anarchist vehicles?
¿Estás trabajando en un juego sobre la Guerra Civil española?