Recursos para ayudar a estudiar el motor Quake 3 [cerrado]


14

¿Existen buenos recursos (manuales, tutoriales, etc.) para comenzar a estudiar el código del motor Quake 3 más allá del código mismo?

Estoy muy interesado en saber cómo está estructurado para fines educativos y tal vez hacer algunas modificaciones.

Respuestas:


13

Por lo tanto, debe comenzar mirando el artículo de Wikipedia sobre id Tech 3 . Eso se puede aumentar con el resumen de la charla GDC de Brian Hook y algunas cosas antiguas en el blog de Element 61 . Además de eso, tendrás que rastrear un montón de tutoriales de mods antiguos que puedas encontrar para intentar reconstruir lo que está sucediendo.

Sugeriría comenzar desde el lanzamiento original de la fuente de id, en lugar de ioquake3 o what-have-you, para ver realmente el contexto de lo que está sucediendo (cómo se maneja y dirige la entrada dentro del motor, qué tipo de evento subyacente estructura utilizada, etc.).

Algunos puntos clave que me ayudaron cuando estaba trabajando con él:

  • Siempre hay un servidor; También puede haber lógica de cliente sobre el manejo de un marco.
  • La entrada se dirige primero a una consola, si está interesado, luego a la GUI, luego al juego en sí.
  • El motor en sí está separado (¡duro!) De la lógica del juego, utilizando funciones de trampa. Mire (si la memoria sirve) el cgame y renderice proyectos para encontrar el código real del motor.
  • La lógica del juego se puede escribir completamente para ejecutarse en la máquina virtual Quake 3. Cuando modifiques y uses dlls nativos, tendrás que ejecutar el juego como quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0para permitir que el motor ejecute código nativo en lugar de código VM.
  • La interfaz de usuario para el sistema de menús es una pila extraña, malvada y retorcida de estructuras y devoluciones de llamadas. Es utilizable una vez que lo resuelves, pero eso puede llevar algo de prueba y error. Recuerda, es una pila.
  • Si está escribiendo código en .dlls nativos, siéntase libre de asignar memoria, escribir en C ++ o cualquier otra cosa que flote en su barco. También puede usar el STL: no hay ninguna razón para seguir rígidamente los modismos C, excepto donde se conecta directamente con el motor.

Algunas cosas interesantes que he hecho con un compañero de trabajo:

  • Interfaz de línea de comandos simple para llamar a comandos de shell desde la consola y volcar los flujos stdout / stderr de vuelta a la consola (la consola Quake).
  • Interfaz con una base de datos SQL para extraer y mostrar registros.
  • Ventana flexible y kit de herramientas de widgets para hacer pantallas flexibles en el hud del cliente (usando gráficos de barras, cuadros de texto, cuadros de imagen, menús contextuales, ventanas redimensionables, etc.).
  • Cohetes lentos. :)

Personalmente, descubrí que el motor era una gran combinación de cosas realmente inteligentes hechas de maneras realmente tontas, cosas realmente tontas hechas de maneras realmente inteligentes y cosas realmente inteligentes hechas de maneras realmente inteligentes. Es un gran ejemplo de cómo tener modularidad y un buen diseño estructurado en un proyecto C de mediana escala.

Por último, no te sientas mal si tardas un poco en asimilar. Me llevó tal vez un mes realmente saber dónde encontrar lo que estaba buscando en el motor; Si todo lo demás falla, comience en el inicio de la aplicación y simplemente haga un túnel hacia abajo en las funciones, dejando comentarios para usted como señales. Mi monitor terminó cubierto de notas adhesivas rosadas con nombres de funciones, números de línea y descripciones breves de lo que hicieron.



1

Absolutamente.

http://en.wikipedia.org/wiki/Quake_engine es una buena descripción general de lo que existe, pero puede entrar en los detalles de su arquitectura rápidamente a través de sus citas.

También puedo sugerir un par de libros sobre la arquitectura del motor de juego que pueden estar más en línea con lo que estás buscando. Si bien no son específicos de Quake, entran en detalles del diseño del motor y se ejecutan en paralelo a muchos aspectos de los motores Quake:

  • Arquitectura de motor de juego 3D - 978-0122290640
  • Programación del motor de juego 3D - 978-1592003518

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.