Inspiration
Debate RPG was inspired by the idea that learning debate should feel less like memorizing rules and more like going on an adventure. Many people struggle with argumentation because feedback is intimidating, abstract, or delayed. We wanted to turn that process into something playful: a pixel RPG where every battle helps players practice clearer reasoning, stronger rebuttals, better evidence use, and more effective communication.
What it does
Debate RPG is a Pokémon-style pixel roguelike where players explore an overworld, encounter AI opponents, and win battles by making persuasive arguments. Instead of attacking with swords or spells, players use debate skills like logic, evidence, framing, rebuttal, and emotional appeal.
The game helps players build argumentative skills by giving immediate feedback after each round. A judge evaluates how strong each argument was, then translates that into RPG-style damage, momentum, and battle outcomes. This makes communication practice interactive, low-pressure, and fun.
At the start, players select an avatar type that represents a debate approach:
- Logos: logic, evidence, facts, and cause-and-effect reasoning
- Pathos: emotion, storytelling, stakes, and audience connection
- Ethos: credibility, authority, trust, and expertise
- Chaos: disruption, reframing, and flipping assumptions
- Socratic: questioning, probing, and exposing weak claims
- Rhetoric: style, framing, delivery, and memorable wording
These avatar types are not just cosmetic. They connect directly to the battle system through type advantages, similar to elemental matchups in RPGs. For example, Logos is strong against Pathos, Pathos is strong against Ethos, Ethos is strong against Chaos, Chaos is strong against Logos and Rhetoric, Socratic is strong against Rhetoric and Pathos, and Rhetoric is strong against Logos. This teaches players that different debate strategies work better in different situations.
During battles, players type their own argument, choose rhetorical skills, and watch the judge score each round. Stronger arguments deal more damage, while weaker arguments may fail to affect the opponent. Skills like Logical Thrust, Emotional Appeal, Authority Cite, Socratic Probe, Reframe Attack, and Rhetorical Flourish each have their own debate type, MP cost, and damage multiplier.
The game also includes RPG systems like HP, MP, levels, attack and defense stats, momentum, party members, gacha-style persona pulls, enemy captures, training, and gambit-style behavior rules for AI teammates. Players can capture defeated debate opponents, add them to their party, train them, and customize how they argue in future encounters.
How we built it
We built the frontend with Vite, React, Phaser 3, and Tailwind to create the pixel RPG overworld and battle interface. The backend uses Python FastAPI to run encounters, debate logic, judging, training, memory, and party systems.
The game uses local-first AI models through Ollama, with support for models like Gemma and Qwen. We also built systems for:
AI debate opponents
Player-written arguments
Round-by-round judging
RPG-style damage and HP
Capturing defeated AI agents
Party management
Gambit-style behavior rules
Training and evolution through debate history
Memory/RAG so agents can learn from past battles
Challenges we ran into
One major challenge was making debate feel like a game without losing the educational value. We had to convert abstract debate quality into concrete RPG mechanics like damage, momentum, skills, and victory conditions.
We also ran into common AI engineering issues: local model latency, inconsistent judge outputs, empty or low-quality model responses, and coordinating multiple AI agents in one battle. On the technical side, we had to handle real-time WebSocket battle streams, Redis encounter state, Postgres persistence, and frontend/backend integration across several systems.
Another challenge was clarity. Debate feedback can easily become too academic or too vague, so we worked on making the judge’s feedback understandable and actionable for players.
Accomplishments that we're proud of
We are proud that Debate RPG turns communication practice into a complete interactive game loop. Players can explore, encounter opponents, argue, receive feedback, win battles, capture agents, and improve their team.
We are especially proud of connecting debate skills to RPG mechanics in a way that feels natural. A strong rebuttal is not just “correct”; it lands like a powerful move. Weak evidence does not just lose points; it affects the battle. This makes learning argumentation more memorable and engaging.
What we learned
We learned that educational tools work best when feedback is immediate, specific, and tied to action. Debate becomes easier to practice when players can experiment, fail safely, and see exactly why an argument worked or did not work.
We also learned that building with local AI requires careful fallback systems, timeouts, and simple UX patterns. The game needs to stay responsive even when models are slow or inconsistent.
What's next for Debate RPG
Next, we want to improve the coaching layer so players get clearer suggestions after each debate round. We also want to add richer debate topics, stronger judge models, better skill progression, more enemy types, and more visible growth over time.
Long term, Debate RPG could become a full learning platform where players practice debate, public speaking, critical thinking, and persuasive writing through a fun pixel RPG adventure.
Built With
- asyncpg
- bash-frontend:-react-19
- cerebras
- docker
- docker-compose
- dspy
- fastapi
- fastapi-rest-endpoints
- gemini
- gemma-3
- gepa/grpo-style-training-paths
- groq
- httpx
- hybrid-rag-over-postgres/redis
- node-22-container
- ollama
- openai
- openapi
- openrouter
- phaser-for-the-overworld/game-layer
- playwright
- pnpm-workspaces
- postgresql-16-with-pgvector-and-pg-trgm
- pydantic
- pytest
- pytest-asyncio
- python
- python-3.12
- qwen
- react-router
- react-testing-library
- redis-8
- ruff
- sql
- sqlmodel/sqlalchemy
- tailwind-css-4
- tanstack-react-query
- tone.js
- typescript
- uvicorn
- vite-6
- vitest
- websocket-debate-streaming
- zustand
Log in or sign up for Devpost to join the conversation.