Remake (parcial) de Fruity Frank... paso a paso
Este es otro proyecto que iré dejando accesible por si a alguien más le interesara seguirlo...
Va a ser un "remake" de un juego de los 80. Sólo será un remake parcial, no pretendo reconstruir el juego original por completo, sino:
- Crear un juego sencillo paso a paso, de forma que pueda seguirlo cualquier persona que apenas tenga unas nociones básicas de programación.
- Usar herramientas estándar, como el lenguaje C++ y la biblioteca SDL, de forma que el juego se pueda hacer funcionar tanto en Windows como en Linux o en otros sistemas operativos.
- Que todos los fuentes queden disponibles en algún servidor de proyectos, como Google Code, de forma que quien esté interesado pueda seguir su evolución.
El juego escogido debería tener estas características:
- Unos gráficos sencillos, que permitan que nos podamos centrar en la lógica de juego más que en la parte visual.
- Un personaje que el usuario deba controlar.
- Tener "premios" que conseguir y "obstáculos" que esquivar.
- Enemigos que se muevan de forma independiente.
- Distintas pantallas que recorrer.
- Una tabla con las mejores puntuaciones.
- Una pantalla de presentación.
- ...
Además, es deseable que se trate de un juego que esté disponible para alguna consola u ordenador doméstico, de modo que se puean capturar pantallas, para no perder tiempo en crear gráficos nuevos. También es preferible que sea un juego para el que ya no exista copyright, para que se puedan publicar esas capturas de pantallas. Por eso, en vez de elegir uno de los muchos juegos disponibles para máquinas recreativas, he optado por un juego poco conocido, que se desarrolló en el año 1984 para la gama de ordenadores Amstrad CPC, el Fruity Frank:
Aun así, los pasos que daré se podrán aplicar a otros muchos juegos, tanto nuevos como "remakes" de clásicos.
Si alguien quiere probar el juego original, lo puede descargar (junto con emuladores del Amstrad CPC) en:
www.amstrad.es/juegosamstrad/decargajuegos/fruityfrank.php
Los pasos previstos (el orden puede variar) son:
- Ocultar los detalles de SDL, creando ciertas funciones alternativas en español, y mostrar una primera imagen (la pantalla de fondo inicial de nuestro juego).
- Mostrar el personaje sobre esa imagen.
- Mover el personaje por encima del fondo, al pulsar las flechas del teclado.
- Hacer que el personaje no se pueda salir de los límites de la pantalla.
- Añadir un primer enemigo.
- Añadir transparencia a los personajes, así como una velocidad de juego más estable.
- Usar un "mapa" para dibujar el fondo.
- Comprobar colisiones usando el mapa, y así poder recoger "premios".
- Añadir "obstáculos" que no se puedan cruzar, usando el mapa.
- Hacer que el personaje "cambie de forma ".
- Incluir varios enemigos distintos.
- Una pantalla de presentación.
- Pasar a un lenguaje más moderno: migrar a C#.
- Que el movimiento del personaje sea "animado".
- Comprobar colisiones por coordenadas, para chocar con los enemigos.
- "Redistribuir" el fuente para hacerlo más modular.
- Tener varias vidas, que se pierdan al chocar con un enemigo. Poder volver a empezar la partida.
- Distintos niveles (fases) de juego que haya que ir superando.
- Que nuestro personaje pueda "disparar".
- Rediseñar usando "clases" (1 - Estructura básica).
- Rediseñar usando "clases" (2 - Escribir textos, marcador, varios niveles, colisiones).
- Rediseñar usando "clases" (3 - Personajes animados).
- Un movimiento del personaje más suave.
- Enemigos más inteligentes.
- Un disparo "más real".
- Tabla de mejores puntuaciones.
- Obstáculos móviles: las manzanas.
- Otro enemigo: la fresa.
- Dificultad creciente.
Todo eso, muy pronto aquí mismo... ;-)