Inspiration

The idea for Pingquest was born out of a real moment: I was chatting in a WhatsApp group chat with friends one day, and we randomly started roleplaying. We were cracking jokes, improvising ridiculous encounters, and pretending to cast spells. It was hilarious and spontaneous, but it quickly ran into the classic group-chat bottlenecks—nobody knew who had what stats, there was no impartial referee to resolve actions, and by the next morning, the entire story was buried under memes.

Traditional tabletop RPGs (like D&D) are incredible, but they demand 4-hour uninterrupted sessions, thick rulebooks, and an exhausted human Dungeon Master. Standalone AI text games, on the other hand, force players into isolated single-player chatbots.

We asked: Why isn't there an easily accessible app where friends can jump in, mess around, and turn casual roleplaying into a real, continuous LitRPG adventure?

We built Pingquest to make casual roleplaying effortless—accessible from any browser or phone as a PWA, and driven by an autonomous, impartial AI Game Master ("The Guide") with fractional stat progression, mathematical DC checks, and living world memory.


What it does

Pingquest is a real-time multiplayer Progressive Web App (PWA) that blends group chat convenience with deep RPG mechanics:

  • 🧙‍♂️ The Guide (Autonomous AI DM): Governs the adventure using strict RPG principles ("The world happens to you"). Rather than acting as a passive chatbot, The Guide is an impartial arbiter evaluating party actions, calculating circumstantial difficulty, and generating consequential story outcomes.
  • 📈 10-Stat Micro-Progression
  • 🎯 6-Tier Consequence DC Engine
  • 🎙️ The War Room & Party Consensus: Friends deliberate party strategy in real-time via voice or text. An AI Scribe transcribes the banter, synthesizes conflicting ideas into a unified party proposal, and runs a pure democracy ready-check before triggering DM evaluation.
  • Async Action Pooling & AFK Stances: When playing asynchronously, turn timers collect player inputs. If a party member is away, their customizable AFK Stance (Defensive Guard, Support, Aggressive) automatically executes their turn so the game never stalls.
  • 📜 Living Story Canvas: A dynamic world ledger that maintains persistent memory across turns—tracking NPC injuries and relationships, item decay, landmark discoveries, and open quest clues.

How we built it

  • Frontend & Client: Built with React 19, TypeScript, Vite, and Tailwind CSS, packaged as an installable Progressive Web App (PWA) for mobile and desktop.
  • Agentic AI Pipeline: Powered by @google/genai utilizing Gemini 3.7 Flash across specialized multi-agent roles:
    1. Consensus Extractor: Parses unstructured voice/text debate into structured party action proposals.
    2. Narrative Story Engine: Operates under rigorous LitRPG system prompts to return structured JSON payloads with consequence analysis, story prose, and micro-stat increments.
    3. World State Scribe: Continuously updates the Living Canvas memory ledger.
  • Real-Time Multiplayer & State: Firebase Authentication and Cloud Firestore real-time snapshot listeners for multi-device party synchronization.
  • Audio & Voice Processing: Web Speech API integration for in-browser, zero-friction voice deliberation in the party War Room.

Challenges we ran into

  1. Balancing Structured Game State with Immersive Prose: LLMs often ignore rigid numerical systems in favor of open storytelling, or output dry JSON lacking atmospheric flavor. We solved this by separating deterministic mathematical calculations ($\overline{\text{Stat}}$ checks, DC targets) from generative prose using structured schema outputs.
  2. The "AFK Friend" Group Chat Problem: Asynchronous multiplayer games often stall when one player goes offline. Designing the Action Pool + AFK Stances system ensured active players could continue their quest seamlessly while respecting the absentee player's chosen tactical stance.
  3. Synthesizing Casual Banter into Tactical Strategy: In the War Room, friends joke around, interrupt each other, and propose conflicting tactics. Prompting the Consensus Agent to extract underlying intent and synthesize unified, actionable proposals required extensive prompt tuning and schema validation.

Accomplishments that we're proud of

  • Zero-Barrier Roleplaying: Turning spontaneous gaming ideas into a full campaign in seconds without anyone needing to spend hours prepping as a Dungeon Master.
  • Nuanced Consequence Matrix: Breaking out of simple binary pass/fail loops created dramatic and hilarious moments where "failing forward" led to unexpected discoveries.
  • Tactile Micro-Progression: Seeing stats tick upward by $+0.015$ after picking a stubborn lock makes every single decision feel meaningful and mechanically grounded.

What we learned

  • Agentic Systems as Impartial Arbiters: Agentic AI excels when paired with objective mathematical models and stateful memory. Blending deterministic TypeScript logic for rules resolution with Gemini for creative narration produces a consistently fair yet surprising Game Master.
  • Context Budgeting for Living Worlds: Keeping a dynamic, long-running RPG responsive requires curated memory ledgers (the Living Story Canvas) rather than feeding raw unbounded chat history back into the model.

What's next for Pingquest

  • Discord Bot Connectors: Bringing the Pingquest engine directly into group chats and Discord servers via serverless webhooks.
  • Autonomous AI Rival Parties: Introducing autonomous AI adventuring parties that roam the same world canvas, competing for dungeon bounties and reacting to the player party's choices.
  • Cross-Campaign Character Vault: Allowing players to export their micro-progressed characters into new campaigns and community-generated dungeon modules.

Built With

  • ai-agents
  • cloud-firestore
  • firebase
  • firebase-auth
  • game-engine
  • gemini
  • gemini-flash
  • google-gemini
  • litrpg
  • multi-agent
  • multiplayer
  • pwa
  • react
  • rpg
  • speech-to-text
  • tailwindcss
  • typescript
  • vite
  • web-speech-api
Share this project:

Updates