He estado afinando mis habilidades como programador a través de un divertidísimo curso de Coursera titulado “An Introduction to Interactive Programming in Python” de Coursera, como ejercicio final era la realización del viejo juego titulado “Asteroids”, por cierto mi versión está aquí. El objetivo de este curso era afinar el hacer “buen código” y entender la lógica de la programación orientada a objetos, cosa que luego puedes aplicar a programación web que es donde estoy aplicándola con más seriedad.
También el saber diseñar juegos permite poner en marcha uno de mis proyectos profesionales que es el desarrollo de “juegos serios” con contenido pedagógico para poder utilizar a nivel profesional y en el blog, aún no adelanto nada pero tengo en mente algunas ideas.
Pero como buen aficionado a los juegos de estrategia y progresivos, un arcade me parece una pérdida soberana de tiempo (excepto para quitarse un poco de estress o jugar en multijugador), así que como ventilé rápidamente los mini proyectos del módulo me puse a trastear con código para desarrollar un juego algo más complejo.
La historia detrás del juego
“Cylon Attack” es un homenaje al primer capítulo de la serie Batlle Star Galactica del 2004 titulado “33 minutos”, un capítulo opresivo donde los restos de la flota colonial es atacada por una flota Cylon cada 33 minutos y la única nave de combate “Galactica” ha de proteger el salto hiperespacial de la flota civil mientras combate contra los Cylons y luego escapar ella misma.
He querido recrear en este juego lo que sucede a nivel táctico en ese juego, pero con elementos de desarrollo que no aparecen en la película. En este caso nuestra nave puede ser mejorada después de cada ronda, incrementar su potencia de fuego, su blindaje, los escudos, la cantidad de torretas, aumentar el número de escuadrones. También nos iremos encontrando con flotas enemigas cada vez más poderosas y desarrolladas lo cuál nos pondrá en un aprieto. En especial en las primeras rondas. Para ello también contaremos con escuadrillas de cazas “viper” que podemos utilizar para defendernos.
Lógica del juego
Naves inteligentes: He recreado cierto nivel de inteligencia en las naves enemigas. Las “baseships” enemigas son lentas, y muy parecidas a nuestra propia nave de batalla, se dirigirán hacia nuestra nave de forma inexorable a menos que las destruyamos, buscando el combate directo. Los cazas enemigos, los “raiders” se moverán de forma aleatoria por el campo de batalla disparándonos a nosotros o a nuestros vipers, teniendo un movimiento que permite cierta capacidad de esquiva de nuestros disparos, simulando el movimiento de los cazas en la película.
Cazas a nuestras órdenes: En nuestra nave contamos con hangares de cazas además de nuestras torretas de artillería con la que defendernos. Apretando espacio podremos lanzar los escuadrones al espacio (uno por cada click), al principio solo contaremos con un escuadrón, pero cuando gastemos puntos de desarrollo podremos incrementar el número de estos. Los cazas obedecen 3 órdenes generales. “Free movement” es el estándard con el que salen al combate, se moveran igual que los raiders enemigos maximizando su esquiva y reduciendo la predictibilidad de su trayectoria, lo cuál dificultará ligeramente que sean impactados, “cazar raiders” irán directos a por los cazas enemigos y entablarán combate con ellos. Una buena estrategia puede ser la de esperar a lanzarlos cuando los cazas enemigos estén cerca y así evitar que nuestros vipers se dispersen por el escenario. La siguiente orden es “Volver a base” que puede ser útil si hemos barrido una oleada de cazas y naves enemigas y hemos de esperar los restos del turno a que aparezcan nuevos enemigos. También los cazas si sufren daños suficientes o se quedan sin munición volverán a nuestra nave para ser reparados y recargar (y poder ser lanzados nuevamente al combate).
Controlar la nave de batalla: Evidentemente podemos mover nuestra nave, girarla a través de la flecha izquierda y derecha y encender motores hacia delante. Mantiene cierta inercia, así que nunca estará quieta, y además es una nave de batalla, lo cuál indica que no se moverá muy rápido (de ahí que liberar los cazas será clave pera atacar las escuadrillas de cazas enemigas), pero tiene una gran potencia de fuego, superior al de las naves enemigas si mantenemos un nivel de actualización adecuado. Haciendo click el ratón decidiremos la dirección en la que disparan nuestras torretas y si estamos orientados 90º con nuestro ángulo de disparo nuestras torretas cubrirán un máximo de espacio (con lo cuál tendremos más posibilidad de impactar sobre los cazas enemigos).
Mejoras: Es importante planificar bien las mejoras, incrementar nuestra munición puede ser clave durante las fases tempranas del juego, igual que nuestra armadura, el objetivo es aguantar sobretodo en las primeras fases, no destruir todo lo que hay en la pantalla (aunque es importante librarse de las naves enemigas lo antes posible para no ser atacados), son 59 segundos por turno.
Cómo jugar
Para jugar solo hay que seguir este enlace. Está en versión 1.1.2 y seguramente haya algunos pequeños bugs que requieren que los jugadores lo puedan ver (lo he revisado hasta la saciedad pero nunca se puede sustituir a miles de jugadores reales).
http://www.codeskulptor.org/#user33_vYh21tzhLg_57.py
Y apretar en el icono de “play” de la parte superior izquierda. Juega, coméntame lo que veas que no esté claro y ayúdame a mejorarlo, y sobretodo disfruta. ¿Eres capaz de aguantar 10 oleadas seguidas?.
Hola, de donde sacaste el modulo simplegui?
Ahi lo consegui:
sudo pip install simplegui