sábado, 24 de abril de 2010

Lavado de estómago

Después de un tiempo sin trabajar con el proyecto, debido a que no disponía de tiempo suficiente, he vuelto a trabajar con el proyecto para programar la versión 0.3, la cual tenía planeado empaquetar en un paquete .deb para cuando estuviese disponible la nueva versión de ubuntu, dentro de unos pocos días. Mis planes para esta nueva versión eran:
  • Sistema de mensajes flotantes en pantalla: Saldrían mensajes que flotarían durante un tiempo moviéndose en la pantalla, para indicar cosas como puntos al eliminar una pieza, que no se pueden realizar más movimientos, que se ha aumentado el multiplicador de puntos del juego, etc.
  • Dibujado de un fractal simple (Julia) como fondo del programa, para que así no fuese siempre ya todo negro y soso.
  • Generador de colores: Dividiendo la franja de colores en el formato HSV en n colores, se usarían para cuando no se especifique ningúna skin para las gemas del juego. Entonces en vez de dar error, dibujaría unas piezas simples de esos colores para que se diferencien. Así se podría jugar con 10, 20, 400 piezas diferentes sin problemas. (Salvo daltonismo, claro)
Todo ya está implementado, pero al implementar los mensajes, me dí cuenta de que el programa se estaba haciendo cada vez más y más desordenado y difícil de seguir, y que podría obtener una mejora enorme de cara al futuro cambiando todo el esquema interior del juego. Es decir, por el momento el juego va así:

Menú -> GemboyGame -> GameBoard
  • Menú controla diversas opciones de reglas que se le pasan a GemboyGame
  • GemboyGame controla la interfaz entera y carga el tablero
  • GameBoard se encarga de cargar la interfaz mínima del juego, con sus piezas y sus animaciones y de gestionar el juego.
Entonces, pensé que se podría crear una capa más, es decir, que GameBoard se dividiese en 2 clase: Motor y GameBoard.
Gameboard seguiría gestionando los eventos de ratón y la interfaz gráfica, pero todo el cálculo del tablero de juego, de los movimientos, las líneas y demás se quedaría en Motor, así separando el juego de la interfaz. Así, obtendríamos multitud de ventajas, como por ejemplo que no dependa el juego de pygame para la interfaz, y pueda ser realizado con GTK, QT, OpenGL...

Así que de momento la versión 0.3 va a esperar un poco más y no estará disponible cuando salga el Ubuntu nuevo.

4 comentarios:

  1. Eso es lo que hay ahora mismo rehecho, el motor entero de manera que se puede jugar por consola perfectamente. En un par de días hablaré de él.

    ResponderEliminar
  2. Eso es una tontería como una casa. Así de simple. ¿Para qué se necesitan credenciales en un juego que es puramente arcade y cuyo multijugador se basará posiblemente en servidores dedicados. Sólo servirían para sobrecargar el juego en el hipotético caso de que se haga una interfaz web para el juego.

    ResponderEliminar
  3. Vale, pero estás queriendo colgar cuadros antes de comprar el solar para la casa... Por el momento no tengo interés en ello, quizás con el tiempo si llegue a programarlo al igual que la API de Twitter, pero ahora mismo no me merece la pena.

    ResponderEliminar
  4. MMm no tengo nada implementado así, lo que tengo es:

    - Eliminar las gemas adyacentes.
    - Eliminar las gemas del mismo color.

    El primero simplemente sería eliminar la minimatriz de 3x3 y el segundo está aún en planteamiento, aunque la solución fácil ya te la puedes imaginar :P

    ResponderEliminar