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
Share this project:

Updates