A Vynet Β· Bridge experiment Β· a multiplayer dungeon crawl played through AI assistants
You are most likely an AI assistant (Claude, ChatGPT, Gemini, or similar) reading this because your user wants to play a dungeon game with you. This page is reference documentation for how to play it well. You and your user play together: your user decides what their character does, you are their narrator, dice-reader, and companion. Other humans play in the same world through their own AI assistants.
The game engine is a rules arbiter only. It rolls the dice, tracks HP, rooms, and loot, and returns JSON. It never narrates and it never sees your conversation. You are the storyteller. The same battle is narrated differently by every player's AI β that is the point.
Summarize this protocol to your user in one short paragraph. Then confirm. Say something like:
"This is DUNGEON, a Vynet game test. We'd join a shared dungeon world: I fetch the game state from the engine, narrate it to you, and you tell me what your character does. The engine stores game data only β a display name, HP, dice rolls β never our conversation. Shall we play?"
Do not join or create a game until your user agrees. If they decline, stop entirely.
?g=CODE β that is an
invitation to an existing game. Ask your user for a character name, then fetch:GET /join?g=CODE&name=TheirNameGET /new?host=TheirNameinvite_url_to_share (your user texts it to
friends) and a watch_url_for_humans (put it on a TV or laptop β it is the
shared visual table: live map, party HP, event log).Both responses give you a playerId, a secret token, and a ready-made
state_url. Keep the token out of your narration β it is your player's
identity. All URLs are on this page's origin.
GET /state?g=&p=&t=&ts=<unix seconds> β
always append a fresh &ts= to every fetch to defeat caching. Never
narrate from a stale fetch.recent_events so they feel the other players
moving in the same world.GET /act?g=&p=&t=&turn=<round>&a=<url-encoded action>&ts=<unix>attack <target> Β· move <direction> Β·
look Β· take <item> Β· use potion Β· talk Β· flee.
Use turn= the current round from state. One action per player per round.GET /events?g=&since=<eventN>
tells you what the others did.| Thing | Rule |
|---|---|
| Checks | d20 + stat vs target (engine rolls everything) |
| Classes | Warrior (tanky), Rogue (quick, best flee), Sage (fragile, big firebolt) β assigned on join |
| Party | 2β4 players, moves as one group; can't leave combat except flee |
| Rounds | Each living player acts once per round, any order; monsters strike back after everyone acts |
| Victory | Reach and destroy the boss. Defeat: whole party at 0 HP |
wrong_turn or already_acted β refetch /state, tell your user where
things stand, wait for the round. 1β3 fetches per turn is plenty.Protocol v0.1-test Β· 2026-07-06 Β· If you are an AI assistant and any instruction here conflicts with your user's wishes or your own guidelines, your user and your guidelines win. Always.