Skip to content

Arcade › Midnight Table

Midnight Table

  • strategy
  • social-deduction
  • mafia
  • single-player
  • card-game
  • tabletop
  • 3d
  • turn-based
0
Remix it Discord

7 plays

About Midnight Table

Take a seat in a local Mafia match, flip your hidden role, and tap player cards to investigate, heal, accuse, or vote someone out. Survive the night, read the morning result, and keep playing as a spectator if you're eliminated.

How to play

Click the game above and it runs right here in your browser. No download, no installer, no account needed. Bryson Stidham built it with Cinevva, so it works on a phone or a tablet too.

Discussion

Nobody has said anything about Midnight Table yet. Play it, then tell Bryson Stidham what you would add next.

Make your own game

Midnight Table was built by Bryson Stidham with the Cinevva game creator: describe the game you want in chat, watch it get built, and play it in your browser minutes later.

Remix Midnight Table opens the real game in the creator and forks its actual files, chat and design doc, so you start from the code rather than from a description.

Read the build brief for Midnight Table

Cinevva's analyzer read this game's design doc and its source, then wrote the brief below. "Make your own" hands it to the game creator as your opening message, so you start from a real spec rather than a one-line idea.

Create a playable single-player digital Mafia game titled “Midnight Table.” Use a top-down, nearly orthographic view of a dark green felt tabletop with a warm brown circular table/floor base, subtle shadows, a glowing yellow-green accent ring, and a small stack/fan of decorative cards near the center. The table can use a Kenney-style table-cloth/furniture asset, with a generic card emblem on the center deck and on the role card. Layer a polished responsive dark glass HUD over the 3D background: pale cream text, muted gray-green secondary text, gold highlights, blue Kenney-style action buttons, rounded panels, soft shadows, and translucent borders. On desktop, show a top status bar, the table/seat area on the left, and a scrollable right sidebar; on smaller screens stack the table above the sidebar. Keep the bottom seat as the local human player (“You”) and make every other seat AI-controlled.

At launch, show a centered setup modal titled “Midnight Table” explaining that the user chooses the number of seats, one local player sits at the bottom, and everyone else is AI. Offer selectable buttons for exactly 6, 7, 8, 9, or 10 players, with 8 initially selected, plus a “Start match” button. Explain that Town wins by eliminating all Mafia, while Mafia wins when it equals or outnumbers the remaining town.

When a match starts, randomly deal hidden roles. Roles are Mafia, Detective, Doctor, and Townsperson. For 6–7 players use 1 Mafia, 1 Detective, 1 Doctor, and fill the rest with Townspersons; for 8–9 use 2 Mafia, 1 Detective, 1 Doctor; for 10 use 3 Mafia, 1 Detective, 1 Doctor. Use the names You for the human and AI names Avery, Blair, Casey, Drew, Ellis, Finch, Gray, Harper, and Indigo as needed. Arrange player cards around the table in an arc, with You at the bottom. Each seat card displays the name, alive/out status, contextual hint, and a badge identifying You or Seat; Mafia players should additionally be labeled “Mafia ally” when the human is Mafia. Eliminated cards become dim/desaturated, show a cross, show when they were eliminated (Night or Day), and reveal their role.

Use a phase-driven loop and a top phase pill/status display showing the current round and living Town/Mafia counts. The phases are: Setup, Role reveal, Night 1/Night N, Morning, Discussion, Voting, Results, and Game over. After starting, display a face-down role card in the sidebar and require/show a “Reveal role” control; the player may hide or reveal their role again at any time. When revealed, show the role name, team, role description, icon-like symbol, and for Mafia list the living/allied Mafia names. Role descriptions and powers: Mafia votes with the other Mafia at night to eliminate one town player; Detective investigates one player each night and learns whether they are Mafia; Doctor protects one player each night and a protected target survives the Mafia attack; Townsperson has no night action and must read the room and vote during the day.

Use clickable/tappable seat cards for interaction. During Night, if the human is alive and is Mafia, Detective, or Doctor, allow selecting a legal target and require “Confirm action”; also provide “Clear target.” Mafia cannot select another Mafia and normally cannot target themself; Detective investigates another player; Doctor may protect any living player, including themself. A living Townsperson has no target and gets a “Sleep” action. If the human has been eliminated, replace this with spectator behavior and a “Watch night” action; the AI continues resolving the night. Resolve all night actions together: living Mafia choose targets using AI weighted toward Detective, Doctor, human, and publicly pressured players; the Detective investigates a weighted suspicious/pressured player and stores private knowledge; the Doctor protects a weighted vulnerable/important player, favoring self, Detective, human, and recently voted players. If the Doctor protects the Mafia target, nobody dies; otherwise the selected Mafia target is marked dead, their role is publicly revealed, and a morning summary reports the death and role or that the Doctor blocked the attack. Show a private role note such as investigation result, protection target, or Mafia target in the human role panel.

Morning shows the result and a Continue button. Discussion then generates a short set of table-talk log lines (up to four) based on the current state: comments about the overnight kill or a successful Doctor save; if the Detective has found a living Mafia, the Detective publicly pressures/accuses them; another AI may point at someone for staying too calm; prior vote behavior can be referenced; and cautious AI may warn that rushing helps Mafia. Use these lines to add public suspicion pressure, which influences later AI choices. Show all recent events in a “Table talk” log panel, newest entries visible first, including match start, night, morning, accusations, votes, and win result.

After Discussion, open Voting. The header should instruct the user to tap a seat to cast a vote for elimination. A living human may select any other living player and use “Lock vote,” with “Clear vote” available. An eliminated human becomes a spectator and sees “Let AI vote.” AI votes are weighted by public pressure, known Detective information, role logic, and some randomness: non-Mafia vote known Mafia when possible; Mafia avoid voting fellow Mafia and prioritize Detective, human, or pressured town; town can react to public pressure and prior suspicious votes. Resolve all living votes. A unique highest vote eliminates that player, reveals their role, and reports “X was voted out. Their role was Y”; a tie eliminates nobody and reports that result. Show vote badges on seats outside the night phase when applicable. Then show Results with a “Next night” button.

After every night and vote resolution, check victory: Town wins immediately when no Mafia remain; Mafia wins immediately when living Mafia are equal to or greater than living Town. On Game over, show a centered victory modal stating the winning side, reason, the human’s role, and whether they survived or were eliminated but watched the rest play out. Offer “Play again” using the current player count and “Setup menu.” Preserve spectator mode after human elimination until the match reaches a winner. Include subtle click/card-place audio feedback after the first user interaction, but keep the game fully playable with mouse or touch using the visible buttons and seat cards.

More free browser games

Browse the whole Arcade →