Eldoria

Eight party games,
and the TV is the table.

Open one on the big screen. Everybody else joins from their own phone with the four letters showing on it — no app to install, no account to make, nothing to pass around the room.

Two to eight players · Any browser · Nothing to install

The TV
Turf on the TV: an eight-by-eight grid painted in five players' colours, above a scoreboard showing Eddard leading on 16 banked points.
Your phone
The same game on a phone: three shape cards to choose from, the grid below, and Turn and Lock it in buttons.

Starting one takes about a minute

1

Open a game on the TV

Any browser on the big screen — a laptop plugged in, a smart TV, a tablet propped against the fruit bowl. Four letters go up.

2

Everyone types the code

Phones join at the same address and pick a name. That is the entire sign-in, and a seat lasts the evening even if the browser closes.

3

First one in is the host

One phone gets the buttons that move the room on. Everyone else only ever sees the one thing it's their turn to do.

The games

Eight of them, all in the same room under the same code. Finish one and the room votes on the next without anybody getting up.

The party ballot on the TV: a card per game with a vote count on each, Turf leading with two votes.
Start here

Party mode

One lobby, one vote — the room picks what to play, over and over.

Everybody joins once. Each phone takes a ballot, the winner goes up on the TV, and the room lands in it. When that game ends you vote again — same people, same code, no rejoining.

Wordsmiths on the TV, showing which clues survived and which were struck out for matching.

Wordsmiths

Everyone gives a one-word clue — just don't match anyone else.

One player looks away while everybody else writes a clue for the same secret word. Any two clues that match each other get struck out before the guesser ever sees them, so the obvious help is the help that never arrives.

👥 3–8How to play
Wavelength on the TV: a spectrum dial revealing how close the team landed to the hidden target.

Wavelength

One clue, one spectrum — dial in where your psychic is pointing.

The psychic sees a hidden target somewhere between two extremes and gets one clue to describe it. Everybody else argues the dial into place. Land within five and it's the full four points.

👥 3–8How to play
Hot Streak on the TV: a player's row of cards mid-turn with the bank and bust totals alongside.

Hot Streak

One card too many and your streak goes up in smoke.

Push your luck. Take another card and the pile is worth more; take one you've already got and the whole lot burns. Bank early and watch somebody else go further. First to 200 wins.

👥 2–8How to play
Play Nine on the TV: every player's eight-card grid, some face up and some still face down.

Play Nine

Golf with cards — match your columns and shoot for the lowest score.

Eight cards each, most of them face down. Swap what you draw into your grid, match a column to cancel it out, and try to go out before anyone gets a look at the mess you're holding.

👥 2–8How to play
Letter Rip on the TV: everyone's words revealed, with duplicates struck through and bonuses marked.

Letter Rip

Letters hit the screen — write the word nobody else thought of.

A block of letters goes up and everybody writes at once against the clock. Use them as a run, in order, for the big score — which is exactly the word the other seven are reaching for, and duplicates score nothing.

👥 2–8How to play
Turf on the TV mid-round: the grid part-painted while everyone lines a shape up in secret.

Turf

Paint the grid — but a square two of you grab turns to mud.

Three shapes on the table, everyone secretly picks one, and all the paint lands at once. You can paint anywhere, over anyone — and every third round the board is counted and banked, so ground only pays for as long as you hold it.

👥 2–8How to play
Hunt on the TV: two hiders' clues side by side with a countdown, and the Reds and Blues team scores below.

Hunt

Hide in the house — then write the clue only your team can read.

Everyone picks one of 164 hiding places in a 16-room house and writes two clues about it. Your clues go up on the TV where the other team reads them too, and points only land if your side finds you and theirs doesn't.

👥 4–8How to play
Kalookie on the TV: the discarded card up for auction with a countdown and sealed bids coming in.

Kalookie

Contract rummy — and every card you throw away goes under the hammer.

Four rounds, a contract to lay down in each. Every discard goes to a sealed-bid auction: the player whose turn it is gets first refusal for nothing, and if they pass, the rest of the table bids for it.

👥 2–8How to play

What every game gets

None of this is written eight times. It belongs to the room, so a game only has to bring its rules and its screens.

🎟️

No app, no accounts

Four letters on the TV is the whole sign-in. Lose the tab and you take your seat back off the roster.

⚡

Every screen at once

A move lands on the TV and on eight phones together. A phone that went into a pocket catches itself back up when it comes out.

🗣️

The TV can talk

An optional spoken host reads the room what just happened, over lounge music composed on the spot so it never loops.

🙋

Nobody is stuck waiting

Waiting players get an emoji bar to heckle with, and the host can always move the room past whoever put their phone down face-first.

🔁

It doesn't repeat itself

Secret words, spectrums and letter blocks remember what this room has had, what this TV has had, and what everyone else got tonight.

📖

Rules you can point at

Every game has a written guide with worked examples and screenshots of both screens, for the person who arrived halfway through.

How a ninth game gets built

Eldoria is a platform before it is a games collection. The room, the join code, the roster, who's hosting and the real-time push to every screen belong to the platform. A game brings a rules object and a folder of views, and gets the rest for free.

# app/games/game_registry.rb — the catalog. One entry is the
# only platform file a new game touches.
"quiz" => Entry.new(
  key: "quiz",
  name: "Quiz Night",
  tagline: "Ten questions, and no conferring.",
  min_players: 2, max_players: 8,
  engine_class_name: "Quiz::Engine"
)
# app/games/quiz/engine.rb — the rules. The platform calls
# exactly these six; everything else is yours.
module Quiz
  class Engine
    include Narratable     # the TV's spoken host
    include TracedEngine   # timing on every move

    def self.phases = %w[asking scoring]

    def initialize(session) = @session = session

    def max_players                 = 8
    def start!                      = ...
    def advance!                    = ...
    def handle_move(player, params) = :ok
    def idle_player?(player)        = ...
    def reset!                      = ...
  end
end

Add app/views/games/quiz/board/_asking.html.erb and its phone counterpart, and the game is on the home screen and on the party ballot.

Already built, for every game

  • The room, its four-letter code, and the join screen
  • The roster, seats, and who is hosting
  • Pushing every change to a TV and eight phones
  • Catching up a screen that missed one
  • The spoken host, the music, the sound effects
  • The waiting-player reactions bar
  • The star rating the room leaves at the end
  • Per-play telemetry for arguing about the design later
Rails 8.1Ruby 4.0HotwireTurbo Streams Solid QueueSolid CacheSolid CableSQLite importmap — no Node buildPropshaftKamal

Put it on the TV.

Nothing to download, nobody to sign up, and a code on the screen your friends can read from the sofa.

Start a party