How to Moderate
Overview
As a moderator, you guide the game from setup to finish. You create sessions, manage players, advance rounds, resolve events, and determine the outcome. This guide covers every tool available to you.
Accessing the Dashboard
The moderator dashboard is at /moderator. You need moderator or admin permissions for at least one scenario to access it.
The dashboard has two views:
- Session List (
/moderator) — all sessions you moderate, with status, round, and player count. - Session Management (
/moderator/sessions/[id]/manage) — detailed controls for a specific session.
Creating a Session
- From the session list, click Create Session.
- Choose a scenario — only scenarios you have permission for are available.
- Set a session name — anything that helps players identify the game.
- Optionally set a password — players will need it to join via code.
- Click Create.
A unique 6-character join code is generated automatically. Share this with players or use the invitation system.
Player Management
Inviting Players
On the Players tab:
- Type a player's handle in the invite search field.
- Select from the autocomplete suggestions.
- Click Send Invitation.
The player will see the invitation on their dashboard and can accept or decline.
Managing Join Requests
When players request to join via code:
- Join requests appear in the Join Requests section.
- Click Approve or Decline for each request.
Assigning Characters
During the setup phase (before the game starts):
- Go to the Players tab.
- Each joined player has a character assignment dropdown.
- Select a character from the dropdown.
- Already-assigned characters won't appear in other players' dropdowns.
Removing Players
To remove a player from the session, use the remove action on their player card. This is available during both setup and active phases.
Bot Characters
If you have fewer players than characters, you can convert unassigned characters into bots:
- Go to the Players tab.
- Find the Unassigned Characters section.
- Click Add as Bot next to any unassigned character.
- To remove a bot, click Remove Bot.
Bots can auto-vote and have their tasks managed by the moderator.
Game Control
Starting the Game
Once all players are assigned characters:
- Go to the Game Control tab.
- Click Start Game.
- Confirm — this locks player assignments and begins round one.
After starting, no new character assignments can be made.
Advancing Rounds
- On the Game Control tab, you'll see the current round.
- Click Advance Round to move to the next round.
- Confirm the advancement.
When you advance a round, new clues and events may become available to players.
Auto-Voting for Bots
Before advancing a round with open ballots, click Auto-Vote for Bots to automatically cast votes for all bot characters. Votes are biased toward each bot's win conditions.
Completing the Session
When the game is over:
- Click Complete Session on the Game Control tab.
- Confirm completion.
After completing, you can still evaluate win conditions and endings.
Events & Ballots
Viewing Events
Go to the Events tab to see all game events organized by round. Each event may have a ballot attached if it requires a player vote.
Setting Event Outcomes
- Find the event you want to resolve.
- Select the desired outcome.
- The outcome is recorded and players can see the result.
You can override outcomes at any time if needed.
Viewing Votes
Expand an event to see the vote distribution:
- How many votes each outcome received.
- Which specific characters voted for which outcome.
- Whether votes are locked or unlocked.
Managing Votes
- Lock individual votes — prevent a player from changing their vote.
- Unlock individual votes — allow changes again.
- Lock all votes for an event at once.
Tiebreakers
If a ballot results in a tie, the scenario's designated tiebreaker outcome is used automatically. You can also manually select an outcome to override the tiebreaker.
Messaging Players
Sending Messages
On the Messages tab:
- Select a target character from the dropdown.
- Write your message.
- Click Send.
Broadcasting
Toggle the Broadcast option to send a message to all characters at once instead of a single character.
Message History
All sent messages appear in the history with:
- The target character (or "Broadcast" for all).
- The message content.
- Timestamp.
- Read status — see which characters have read the message.
Task Progress
The Task Progress tab lets you monitor how players are doing with their clue-based tasks.
Viewing Progress
- Filter by Current, Previous, or All rounds.
- See an overall completion percentage.
- Expand each character to see their individual task status.
Closing Tasks
For previous rounds, you can close incomplete tasks:
- Expand a character's tasks for a past round.
- Click Close Round to mark remaining tasks as closed.
This is useful when players didn't complete all tasks in a previous round and you want to move on.
Bot Tasks
Bot characters may have response tasks that require moderator attention. The Bot Tasks tab shows these organized by character and round.
Completing Bot Tasks
- Find the pending task.
- Optionally add moderator notes.
- Click Complete Task.
Bulk Completion
Click Complete All to mark all pending bot tasks as done at once.
Game Outcomes
After completing the session, use the Game Outcomes tab to determine the results.
Evaluating Win Conditions
- Click Evaluate Win Conditions.
- The system checks each character's win conditions against the final event outcomes.
- Results show whether each character won or lost.
- Expand any character to see which conditions were met or missed.
You can re-evaluate at any time if outcomes change.
Evaluating the Ending
- Click Evaluate Game Ending.
- The system determines which ending was triggered based on the final game state.
- The ending narrative is displayed.
Both evaluations are visible to players in their Endings tab.
Real-time Updates
The moderator dashboard receives real-time updates via server-sent events (SSE). You'll see live updates for:
- Players joining or leaving the session.
- Votes being cast or changed.
- Tasks being completed.
- Events being resolved.
If updates seem stale, refresh the page.