Hice un juego y se los comparto - WOM
La historia de este juego tiene más de 30 años, es algo que quería hacer hace mucho, mucho tiempo, cuando apenas sabía programar en BASIC.
El problema que tenía en esa época pre-internet es que no tenía forma de entender ni aprender mucho más de lo que sabía, no tenía acceso a documentación, libros, preguntas ni respuestas. Lo dejé en el archivo de "deseos", algún día lo iba a hacer.
El otro día, justo que Anthropic había lanzado Fable 5 y lo liberaba para sus usuarios por unos días dije ¿Y si lo hago? Aquí la pequeña historia, el juego y la descarga, desde ya, que es libre y gratuito.
Nota: durante el finde el gobierno de EEUU quitó el acceso a Fable 5, en vez de conquistar el mundo yo sólo estaba haciendo un juego retro 😁
Historia de fracasos
Aclaro, nunca programé un juego "funcional", siempre fueron experimentos y en Quick BASIC, hace mucho tiempo cuando empecé a programar. Mis primeras armas las hice cuando tenía unos 8-9 años en una TRS-80 CoCo de 8 bits y apenas 32Kb de RAM, ahí aprendí las estructuras básicas, creé un par de pseudo aventuras gráficas y no más.
Cuando pasé a PC seguí con BASIC, pero esta vez con unos amigos y usando el runtime de GWBASIC logramos crear algunas cosas más importantes, música y gráficos, pero nunca una historia completa, algo realmente jugable.

Cuando pasamos a QBASIC tuvimos acceso a más funciones, mejores formas de programar, pudimos dejar de lado las líneas numeradas y crear subfunciones de una forma mucho más cómoda. Sumamos a esto librerías para poder usar mouse y poco a poco gráficos en color, cuando tuve mi primer VGA ya había creado una versión blanco y negro de un juego de estrategia militar más o menos decente, pero insuficiente.
Con el monitor color me animé a crear uno nuevo, le puse "WOM" de nombre, creé el editor de mapas, el sistema de carga en RAM de todos los tiles y el renderizado en RAM que era bien rápido... y ahí encontré el problema: QBASIC se llevaba toda la memoria RAM, entre eso y que MS DOS me limitaba a 640Kb, estaba frito. Tuve que abandonar el desarrollo, había llegado a mover tropas en el mapa y todo, se veía así:

Claude Fable 5
La semana pasada Anthropic anunció Fable 5, así que me animé a promptear este juego, la elección fue simple, Python (facil de entender, arreglar y compartir), unos tiles armados con AI barata y una serie de reglas claras para el juego.
Combinando la idea del Sun Tzu Ancient Art of War de 1984 con juegos un poco más modernos, mitad turnos, mapa autogenerado (no tengo la voluntad de mi infancia, jeje), y una AI que entienda cómo moverse (cuando era chico no conocía a Dijkstra, jaja) empecé a trabajar la idea.
Lo bueno de usar el modelo más moderno y poderoso para algo tan simple y estúpido es que en dos días tuve un juego completo, menúes, opciones, configuración de video, de audio, super completo.
Como suelo hacer en estos casos la idea era también liberar el código, no soy receloso cuando se trata de código creado con AI, de hecho, lo abro para que nos sirva a todos para aprender, el modelo fue entrenado con código libre (y robado) así que hasta creo que hay una obligación moral en esto de publicarlo 😁.
El juego
El juego es de estrategia militar (como tantos otros) en el cual el único diferencial que quería era que uno funcionase como un general indicando los caminos, algo más parecido a un RTS, pero aun así con turnos.
La idea es que le des órdenes a las tropas, le des al ENTER y todo se mueva delante tuyo, si decidiste mal, ya es tarde, si elegiste bien, éxito.

Fuertes (otorgan tropas y banderas), pueblos (comida para las tropas) y cuatro clases (caballero, soldado a pie, arquero, partisano) para no complicarme mucho.
El terreno es otro clásico de estos juegos primitivos, pradera, montaña, bosque, agua, puentes, no es excelente el auto-generador, pero anda! y le fui dando más coherencia en vez de que fuese un aleatorio total.

Los ejércitos se pueden dividir y fusionar, en los castillos se generan más tropas y hay que crear ejércitos para usarlas (o pasar con uno por encima), y la AI pelea bastante por ellos.
El juego tiene tres niveles de dificultad, cuatro tamaños de mapa, le puse un zoom con scroll y panning para que sea más "moderno", unas pocas animaciones para la batalla y los cadáveres 😋

Uno marca la ruta de una tropa al detalle, doble click y ya la define, y así de cada una, no tiene muchas cosas más, lo último fue una regla para que la AI no se "escapara" cuando está flanqueada, porque era capaz de irse por cualquier lado y volver las partidas "perdidas" en interminables 🤪 HDP, se escapaba la maldita.

Un detalle: tiene una splash screen extremadamente mentirosa (intencional) y música Power Metal sonando al palo para que te hierva la sangre 😅 con la tecla M se abre el reproductor de MP3, se puede sacar, cambiar el volumen o pasar de tema, también poner los propios, fue un detalle que me sugirieron y no dudé en agregar.

Código fuente y descarga
El código fuente ya lo tengo en Github, está hecho 100% en Python así que es fácil de entender y seguir el código, hay bastantes comentarios como para identificar qué hace cada cosa y por qué.
Desde ya que queda mucho por delante, tengo ganas de hacerlo multiplayer y de agregarle zoom a la batalla que sería como un segundo juego dentro del juego (para darle más uso a las distintas clases y escenarios), algo que tenía el Art of War que disparó mi idea.
Para aquellos que quieran jugarlo sin más hay ejecutable sin instalador, se descomprime el zip, se ejecuta el .exe y Windows seguramente te gritará que es un programa inseguro (hay que saltear la pantalla de advertencia), también hay ejecutable para Linux y MacOS.
Si no quieren ir por el lado "inseguro" de un ejecutable, clonan el repo y ejecutan
.venv\Scripts\python.exe main.py
y listo, es lo mismo que está en el paquetón, las descargas están aquí, tomen la última versión, no hace falta una carpeta en especial, la tiran donde quieren, eso sí, los juegos guardados los deja ahí dentro, así que si borran todo se va todo.
¿Sugerencias? ¿Ideas? ¿Bugs? Me los dejan en los comentarios o en Github que yo poco a poco lo iré mejorando.
Otros posts que podrían llegar a gustarte...
