KapiRPG: Progetto Estivo tra Nostalgia e AI
Estate 2024. Caldo. Ferie. Tempo libero.
Invece di stare in spiaggia, ho fatto quello che fa qualsiasi IT nerd che si rispetti: ho codato un progetto nostalgico.
Nasce KapiRPG: un gioco di ruolo testuale che mixa MUD anni ‘90 e AI moderna.
L’origine: nostalgia MUD
Chi ha vissuto internet fine anni ‘90 ricorda i MUD (Multi-User Dungeon):
- Giochi testuali multiplayer
- Mondi da esplorare con comandi:
north,attack goblin,take sword - Fantasia, avventura, community
- Zero grafica, 100% immaginazione
Ho passato centinaia di ore su MUD italiani. Mondi fantastici descritti solo con parole. Combattimenti epici in ASCII art.
Volevo ricreare quella magia.
L’idea: MUD + AI = KapiRPG
Cosa succederebbe se un MUD tradizionale incontrasse una AI moderna?
Invece di:
- Stanze predefinite con descrizioni statiche
- NPC con dialoghi scriptati
- Quest lineari e prevedibili
Avremmo:
- Mondi generati dinamicamente dall’AI
- NPC con personalità emergente che rispondono in modo naturale
- Quest uniche ogni volta che giochi
- Narrazione adattiva alle scelte del giocatore
Un MUD che non giochi due volte nello stesso modo.
Stack tecnico
Core
- Python 3.11: Linguaggio principale
- Ollama: LLM locale (Llama 3, Mistral)
- SQLite: Persistenza game state
- Rich: Output terminale colorato e formattato
Architettura
KapiRPG/
├── engine/ # Game engine core
│ ├── world.py # World generation
│ ├── npc.py # NPC AI behavior
│ ├── combat.py # Combat system
│ └── quest.py # Quest generator
├── ai/ # AI integration
│ ├── ollama.py # Ollama API wrapper
│ ├── prompts.py # Prompt engineering
│ └── context.py # Context management
├── ui/ # User interface
│ ├── terminal.py # CLI interface
│ └── commands.py # Command parser
└── data/ # Game data
├── db/ # SQLite databases
└── saves/ # Save filesModulare. Testabile. Espandibile.
Features principali
1. World Generation
Il mondo non è pre-costruito. È generato dall’AI al volo:
> north
Procedi verso nord attraverso una fitta foresta di querce.
Il sentiero si fa stretto e tortuoso. Senti rumori tra gli alberi.
Davanti a te si apre una radura con un'antica fontana di pietra.
L'acqua è cristallina ma immobile, come se il tempo si fosse fermato.
[Puoi andare: north, east, west]
[Vedi: fontana antica, sentiero nel bosco, tracce sul terreno]Ogni descrizione è unica. L’AI crea dettagli coerenti con il contesto.
2. NPC Intelligenti
Gli NPC non hanno dialoghi scriptati. Hanno personalità:
> talk to merchant
[Mercante Grimwald]
"Ah, un avventuriero! Benvenuto nella mia umile bottega.
Cosa cerchi? Armi? Pozioni? O forse... informazioni?"
> ask about the fountain
[Mercante Grimwald]
"La fontana? Ah, quella è antica quanto il bosco stesso.
Si dice che chi beve la sua acqua veda la verità... ma a quale prezzo?
Io non ci andrei, se fossi in te. Ma tu sei giovane e coraggioso.
O forse solo incosciente." *ride sarcasticamente*L’NPC ricorda conversazioni precedenti. Reagisce alle tue azioni. Ha memoria e personalità coerente.
3. Combat System
Combattimento a turni con elementi casuali e strategia:
> attack goblin
Attacchi il Goblin Predone con la tua spada arrugginita!
[Goblin HP: 100 → 75]
Colpo riuscito! (-25 HP)
[Turno del nemico]
Il Goblin Predone contrattacca con il suo pugnale!
[Your HP: 100 → 90]
Vieni colpito! (-10 HP)
[Azioni: attack, defend, use item, flee]
>L’AI genera descrizioni narrative del combattimento, rendendo ogni scontro unico.
4. Quest Dinamiche
Le quest sono generate in base a:
- Livello personaggio
- Posizione nel mondo
- Scelte precedenti
- NPC incontrati
[Nuova Quest: La Verità della Fontana]
Il Mercante Grimwald ti ha parlato della fontana antica.
Qualcosa nella sua voce tradisce paura... o forse rimpianto?
Obiettivi:
- Scopri la storia della fontana
- Decidi se bere l'acqua
- Affronta le conseguenze della tua scelta
Ricompensa: ???Ogni quest ha multiple soluzioni. Le conseguenze sono emergenti, non predefinite.
5. Persistent World
Il mondo evolve anche quando non giochi:
- NPC si muovono, commerciano, interagiscono
- Eventi casuali modificano locations
- Scelte pregresse influenzano il mondo
Torna dopo una settimana: il mondo è cambiato.
Challenges tecniche
1. Gestione Context Window
LLM hanno limiti di context. Soluzione:
- Summarization progressiva: eventi vecchi vengono riassunti
- Memory tiering: memoria a breve/medio/lungo termine
- Selective context: solo info rilevanti passate al LLM
2. Response Time
Ollama locale è veloce, ma non istantaneo. Soluzione:
- Streaming output: response appare man mano
- Caching: risposte comuni cached
- Parallel generation: genera descrizioni future in background
3. Coerenza Narrativa
L’AI può contraddirsi. Soluzione:
- World state tracking: DB con fatti immutabili
- Consistency prompts: prompt che rafforzano coerenza
- Validation layer: check logico prima di output
4. Bilanciamento Gameplay
AI può generare quest impossibili o banali. Soluzione:
- Difficulty adjustment: parametri dinamici basati su performance
- Safety rails: limiti su reward, challenge level
- Playtesting data: feedback loop per migliorare generation
Cosa ho imparato
1. Prompt Engineering è una skill
Creare prompt che generano output coerenti e interessanti è arte e scienza:
- Template strutturati
- Few-shot examples
- Constraint specification
- Tone guidance
Non è solo “scrivi una storia”. È molto più complesso.
2. LLM locali sono viable
Ollama con Llama 3 8B è impressionante:
- Veloce su hardware consumer
- Qualità output alta
- Zero costi API
- Privacy completa
Non serve GPT-4 per tutto.
3. Nostalgia + Modern Tech = Magic
Combinare il fascino dei MUD con capacità moderne crea esperienza unica:
- Semplicità testuale
- Profondità narrativa AI-generated
- Nostalgia + innovazione
Il vecchio può rinascere con strumenti nuovi.
Stato progetto
KapiRPG è playable alpha:
- Core mechanics: ✓
- AI integration: ✓
- Basic UI: ✓
- Save/Load: ✓
Work in progress:
- Multiplayer (MUD vero)
- Web interface
- Mobile companion app
- Content generation tools per modders
Provalo
Repo: github.com/stanzinofree/kapirpg
Quick start
# Clone repo
git clone https://github.com/stanzinofree/kapirpg
cd kapirpg
# Install dependencies
pip install -r requirements.txt
# Install Ollama e pull model
ollama pull llama3
# Run game
python main.pyRequirements
- Python 3.11+
- Ollama installed
- 8GB RAM (per model)
- Immaginazione e senso dell’avventura
Filosofia capibara
KapiRPG è sviluppato in modalità capibara:
- No rush: Sviluppo quando ho tempo e voglia
- No over-engineering: Codice semplice e manutenibile
- No hype-chasing: Tecnologie che conosco e funzionano
- Fun first: Se non mi diverto a svilupparlo, non ha senso
È un progetto per passione, non per profitto.
Futuro
Idee per il futuro (se/quando avrò tempo):
- Campaign mode: Storie lunghe e articolate
- Modding support: Community-created content
- Voice integration: Comandi vocali e narrazione audio
- VR mode: Perché no? Text + immersive environment
Ma senza pressione. Quando capita, capita.
Conclusione
KapiRPG è:
- Un esperimento con AI locale
- Un tributo ai MUD che amavo
- Un progetto estivo che mi ha fatto divertire
- Una demo di cosa si può fare con tool moderni
Non cambierà il mondo. Non diventerà virale.
Ma mi ha fatto passare un’estate fantastica a codare qualcosa che mi appassiona.
E questo è sufficiente.
Avventuriero, il mondo di KapiRPG ti aspetta. Sei pronto?
🦫🎲⚔️
