Inspiration
Game nights with friends are fun, but someone has to be the Game Master, and nobody keeps anything from the night. We wanted a voice-style Game Master that runs the table and leaves you a comic.
What it does
RPG Night turns a cooperative game night into an illustrated story to keep. Players type, pick a choice, or use optional browser voice while a conversational Game Master guides them through an English or Spanish adventure. Risky moves trigger a d20 check rolled by the server. A read-only shared screen ("the TV") follows the same public story, and at the end the party exports its night as an illustrated PNG/SVG comic or prints it as a PDF.
How we built it
- The browser simulates the intended Alexa+ experience. It is not a published Echo skill.
- A conversational host (Ollama locally; Claude via the Anthropic API in the demo video) discovers and calls eight tools on a real MCP server over Streamable HTTP, using the official MCP TypeScript SDK.
- The game engine validates actions and owns the choices, inventory, consequences and d20 rolls. The LLM interprets conversation, and the engine enforces the rules.
- Sessions persist across reloads and restarts. The atmospheric art is original procedural SVG.
- A classic deterministic mode runs without any LLM.
How to test it
Requires Node.js 22.12+ and npm.
git clone https://github.com/IAnMove/rpg-night.git
cd rpg-night
npm ci
ollama pull qwen3:4b-instruct-2507-q4_K_M
npm run dev # http://localhost:3000
- Open http://localhost:3000, select EN, enter "Ada, Bo" and choose the conversational Game Master.
- Ask what adventures are available, then: "We choose The Bell Beneath Elderglen. Start it for Ada and Bo."
- Play in natural language or with the buttons. When a check is pending, say "Roll the dice".
- Open the shared screen, reach an ending and export the comic.
- Reload to check restoration.
No AWS account is needed. Text play is enough.
Built with
TypeScript, Node.js, Express, Zod, Model Context Protocol TypeScript SDK, Ollama (Qwen3 4B / Llama 3.2 3B), Anthropic Claude API, Vite, Playwright, Web Speech API, SVG.
Tool feedback
- Official MCP TypeScript SDK: real Streamable HTTP client/server, tool discovery and eight runtime tools. Retries and recovery still need application logic.
- Ollama + local models: good intent interpretation, but small models can pick the wrong tool, so validation and explicit choices are needed.
- Anthropic Claude API: swapped in behind the same tool-calling interface and picked the right tools; needs an API key and a thin adapter.
- Alexa+ docs and FAQ: pointed to the documented simulation route; partner-only tooling access is easy to miss.
- Browser Web Speech APIs: optional recognition and narration; support varies by browser.
Challenges
Keeping a small LLM from breaking the rules: the engine, not the model, owns state and dice.
What's next
A real Alexa+ integration, AI-generated scene images, and more authored adventures.
Log in or sign up for Devpost to join the conversation.