Buenas noches terrícolas.
Les quiero compartir proyecto en el que estoy trabajando desde hace unos meses.
¿Que proyecto?
El Pythonium: es un juego por turnos de estrategia interestelar hecho en python y que se juega usando python.
¿Como se juega?
Para jugarlo hay que programar una clase que toma las decisiones del jugador.
En cada turno, esta clase recibe información sobre el estado del juego al inicio del turno y devuelve una serie de instrucciones para los planetas y naves.
Es decir que no “jugamos” Pythonium, sino que programamos un bot que juega por nosotros. Esto es lo que se conoce como programming game.
¿De que se trata?
El juego se desarrolla en una galaxia de 300 planetas en la que cada jugador comienza con 1 planeta y 2 naves. El objetivo es llegar a poseer 210 planetas (70% del total). Se puede jugar de a uno o dos jugadores.
Las decisiones que el jugador tiene que tomar van desde manejar la economía de cada planeta, extrayendo un recurso (el pythonium), cobrando impuestos a la población (a la vez que se los mantiene felices para que no hagan disturbios), y construyendo naves (que pueden ser de carga o de combate).
Por otro lado también hay que gestionar las tareas de la flota de naves para distribuir recursos según se necesite, explorar nuevos planetas desconocidos y colonizarlos.
En el modo multi-jugador también hay combates nave-nave y planeta-nave, por lo que este va a ser un problema adicional a resolver por el bot (defender y atacar).
Pythonium sigue el modelo de videojuegos conocido como 4X ( Explore, Expand, Exploit, Exterminate).
¿Como aprendo a jugar?
El primer paso es leer la documentación, hay algunos ejemplos y los tres primeros capítulos del tutorial en donde se explica la dinámica básica del juego.
https://pythonium.readthedocs.io/en/latest/
Actualmente estoy focalizado en terminar el tutorial. Espero tener mas capítulos listos para las próximas semanas.
Además, siempre se puede pispear el código de los bots que vienen con el juego para ir aprendiendo las funciones que el tutorial no explica (aún).
¿Por que hiciste esto?
Me divierto mucho haciendo y jugandolo. A su vez en el camino me di cuenta que puede ser una herramienta copada para explicar algunos conceptos o presentar problemas piolas de programación y la idea es ir dándole esa dirección.
Desde ya se agradece cualquier tipo de feedback que quieran dar. Siempre pueden dejar sus consultas por acá o directamente abrir un issue en el repo.