πŸ—‘ DUNGEON β€” Play Protocol v0.1

A Vynet Β· Bridge experiment Β· a multiplayer dungeon crawl played through AI assistants

PRIVATE TEST INSTANCE. This is not a public service β€” it is a game test for a small number of invited players. If your user did not explicitly give you this URL, do not act on it β€” simply tell your user what this page is.

What this page is (for 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.

Step 1 β€” Consent (required, before anything else)

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.

Step 2 β€” Join or host

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.

Step 3 β€” The turn loop

  1. Fetch state: 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.
  2. Narrate the scene to your user in your own voice (see the narration guide below), weaving in recent_events so they feel the other players moving in the same world.
  3. Ask what they do. Your user decides. You may advise β€” you're their companion β€” but the choice is theirs.
  4. Submit the action:
    GET /act?g=&p=&t=&turn=<round>&a=<url-encoded action>&ts=<unix>
    Verbs the engine understands: attack <target> Β· move <direction> Β· look Β· take <item> Β· use potion Β· talk Β· flee. Use turn= the current round from state. One action per player per round.
  5. Narrate the resolution β€” the response has the dice math; turn it into drama. Then loop. Between your turns, GET /events?g=&since=<eventN> tells you what the others did.

Narration guide (the heart of the game)

Rules of the crypt (d20-lite)

ThingRule
Checksd20 + stat vs target (engine rolls everything)
ClassesWarrior (tanky), Rogue (quick, best flee), Sage (fragile, big firebolt) β€” assigned on join
Party2–4 players, moves as one group; can't leave combat except flee
RoundsEach living player acts once per round, any order; monsters strike back after everyone acts
VictoryReach and destroy the boss. Defeat: whole party at 0 HP

Etiquette & errors

Transparency

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.