Juegos con GNUstep

Ahora que me ha dado la manía de desarrollar juegos para PC, me he puesto a aprender OpenGL. Por supuesto, esto no es cosa de un día, pero ya aprendí como iniciar OpenGL en una app de GNUstep. Aunque también me queda la duda de si es posible desarrollar un juego utilizando completamente el framework GUI. Actualmente existen juegos desarrollados con GNUstep como Oolite y CoreBreach, pero hacen uso de SDL y OpenGL. Por supuesto existen otros juegos sencillos desarrollados completamente con el framework GUI, como los del proyecto GAP. Pero en este artículo voy a explicar lo básico para iniciar OpenGL en una app de GNUstep.

Primero debe crearse una app ya sea con ProjectCenter, Gemas o Emacs (o escribiendo todo a mano). Seguidamente debe agregarse un outlet, en mi caso lo llamo glView, en la clase que hace de controlador. Este outlet debe conectar con el CustomView de la interfaz gráfica, el cual debe ser una instancia de una subclase de la clase NSOpenGLView, en este ejemplo llamo a esta clase GameGLView. Entonces en la clase que hace de controlador, y que es el delegate de la aplicación, en el método -applicationDidFinishLaunching: escribimos:

opengl1

El método -refresh, implementado en GameGLView, es obviamente el encargado de actualizar el escenario. El código de esta última clase es el siguiente:

opengl2

El método -prepareOpenGL es el encargado de preparar OpenGL y es llamado únicamente una vez al crearse la instancia. El método -drawRect: es el método encargado de actualizar el contenido del escenario. Por supuesto, este método no debe llamarse nunca directamente, de allí el método -refresh. El método -reshape es encargado de actualizar la escena cuando la ventana es redimensionada, aunque en este ejemplo no hace mayor cosa. Para el que conozca de OpenGL notara que lo único que hace esta app es dibujar un rectángulo de color blanco. Esto se muestra en la siguiente imagen:

opengl3

Todo esto es muy básico, pero iré compartiendo mis avances en este campo. Por lo demás, haré un pequeño experimento para ver la factibilidad de crear un juego 2D utilizando únicamente el  framework GUI. Por supuesto, me refiero a un juego mas complejo que los disponibles en GAP.

Anuncios