¿Cómo Ashish Kedia hizo el juego Galaxian en 2 días?

Mi amigo y yo tuvimos que demostrar habilidades OpenGL a través de un mini proyecto para nuestro curso de Gráficos por computadora. Han pasado dos años y no puedo recordar exactamente todo lo que fue necesario para hacer ese juego:

  1. Primero comenzamos con algo pequeño y aprendimos a dibujar polígonos y círculos básicos en OpenGL. Ya estábamos un poco familiarizados con OpenGL debido al trabajo de laboratorio.
  2. Rápidamente dibujamos algunos objetos básicos: barco, rocas, balas, etc. del juego. Utilizamos polígonos básicos para todas las formas sin ningún diseño sofisticado para simplificar las cosas.
  3. Comenzamos en paralelo con la escritura de código para dibujar estos objetos en la pantalla.
  4. Luego comenzamos a marcar todos los movimientos básicos en el juego. Esto implicó mucho aprendizaje. Nos cuesta descubrir cómo funciona la frecuencia de actualización, cómo evitar el parpadeo y cómo manejar los eventos. Aprender funciones de transformación basadas en Matrix tampoco fue fácil para nosotros.
  5. Una vez que se marcaron los movimientos básicos, introduje la aleatoriedad en los movimientos mientras mi amigo trabajaba con la escritura de códigos para el cálculo de puntajes, estados del juego, etc., la mayoría de los cuales no eran de OpenGL. Lo llamamos un día después de 12-13 horas de trabajo.
  6. Al día siguiente, comenzamos a hacer funciones básicas para escribir texto en pantalla usando OpenGL. Una vez hecho esto, hicimos los créditos finales y una pantalla de bienvenida en paralelo. Esto fue sencillo y directo, todo alineado centralmente.
  7. El siguiente paso (la parte más dolorosa) fue trabajar con E / S. Recuerdo que tuvimos problemas para cambiar los estados del juego con cada golpe de teclado. Usamos muchos trucos sucios. Creamos un controlador de interrupción central para todos los golpes de tecla y movimientos del mouse. Esto tomó mucho tiempo.
  8. La última parte del juego fue mejorar un poco la apariencia cambiando los colores e introduciendo efectos de iluminación aleatorios. Intentamos hacer objetos del juego en 3D pero se nos acabó el tiempo.
  9. También organizamos el código en múltiples archivos y garantizamos la legibilidad. También encontramos algunas pérdidas de memoria y lo arreglamos.

Cada vez que miro los códigos que escribí para este juego, me siento patético conmigo mismo. Me doy cuenta de que era un novato e hice todo mal. Literalmente chupé. Ahora soy un programador mucho mejor y creo que si volviera a codificar todo de nuevo, lo haría mucho más rápido y de una manera mucho más limpia.