W.O.P.R. // REAL-WOPR PROJECT

Three ways in: add a game to the catalog, correct a claim about 1983, or put your own machine in the phone book. Everything you touch lives in the public real-wopr-programs pack; you do not need the rest of the engine.

THE GAME CATALOG

The canonical catalog, in order, with current status. LIST GAMES recites every row EXCEPT tic-tac-toe: the film's scrolling list does not include it — David types it directly in the finale — so the slot is catalogued but never recited:

IDTitleStatus
falkens-mazeFalken's Mazeimplemented
blackjackBlack Jackimplemented
gin-rummyGin Rummyimplemented
heartsHeartsimplemented
bridgeBridgeplaceholder
checkersCheckersimplemented
chessChessplaceholder
pokerPokerimplemented
fighter-combatFighter Combatplaceholder
guerillaGuerilla Engagementplaceholder
desert-warfareDesert Warfareplaceholder
air-to-groundAir-to-Ground Actionsplaceholder
theater-tacticalTheaterwide Tactical Warfareplaceholder
theater-biotoxicTheaterwide Biotoxic and Chemical Warfareplaceholder
tictactoeTic-Tac-Toe (unlisted — never recited, always startable)implemented (reference) — 2 interpretations
gtwGlobal Thermonuclear Warreference spec

tictactoe is the catalog's first slot with a second reconstruction: beside the official core minimax sits heuristic by daniel, the rule-based player of the era — beatable by a fork, on purpose. LIST TIC-TAC-TOE at the terminal lists both; starting the title bare always runs core.

See the contributing guide to claim a placeholder.

CLAIM A GAME

The games — along with the Lisp Joshua and the dial-in systems — are open source in the public real-wopr-programs pack, each a self-contained program in a language of its era. That is where you add or change one; the hosting exchange imports it. You do not need the engine.

Only tic-tac-toe and Global Thermonuclear War appear in the film; every other entry in the catalog is a placeholder waiting for your interpretation.

  1. Claim a placeholder (or propose a new game) by opening an issue on real-wopr-programs with its catalog id.
  2. Add a self-contained Fortran program at games/<id>/main.f90 in the pack that speaks the WOPR/1 wire format — one request frame in, one response frame out. Copy an existing game as the template.
  3. Add its harness/ beside it: a manifest.json, a build.sh, and a tests/ directory of golden fixtures. In the manifest set status: implemented, an abbrev (the short tag shown in the prompt while your game holds the terminal, e.g. TTT), and "self_resolving": true if your engine resolves every non-human seat inside the human's MOVE. You do not declare which inputs are moves: the host attaches the terminal to your game and every line comes to you, so a new game routes with no engine change.
  4. Golden fixtures are the test suite — request/response pairs that must reproduce byte-for-byte. No parsing logic needed; the protocol does the rest.
  5. Follow the period-authenticity rules: period-plausible Fortran, deterministic given state+input, and a stated memory budget.

Because the host attaches the terminal to your game rather than inspecting what gets typed, a game is a self-contained, self-describing program: your contribution needs no changes to the engine — not the bridge, comms, surfaces, or database. The engine never has to learn your game's input grammar, because it never has to recognise it. See the pack's CONTRIBUTING.md and PACK.md for the full contract.

CORRECT A CLAIM

The feasibility analysis is meant to be argued with. If you lived through this era and a claim is wrong or imprecise:

  1. Open an issue titled feasibility: <module> quoting the Claim and Confidence lines.
  2. Provide your correction with a period source where possible (manual, spec sheet, first-hand experience, contemporaneous benchmark).
  3. We update the module's Claim / What was achievable / What we approximate / Confidence block and credit the contributor in the doc.

Especially wanted: real 300-baud latencies and error rates, period Fortran compiler constraints, time-sharing session-state practices, IMS-vs-relational in defense circa 1982, and the true capabilities of NORAD/SAC display systems. Each module lists its open questions.

RUN AN EXCHANGE

Every number in the phone book is a machine someone runs. Run the pack's stack on your own machine and the hub at wopr.realwopr.ai lists your number in a world's roster for as long as it is online. Hang up, and the slot opens for the next operator.

SLOTS: DIALING HUB…

DESIGN YOUR EXCHANGE

The period Lisp Joshua runs on your machine and costs nothing. The LLM flavor calls an API with your own key, so the usage is billed to you, the operator — the node host's guardrails cap it.

HOST SETUP

The .env lines (logon banner and operator roster) stay on your machine and are never sent to the hub. Run the make host command from a clone of real-wopr-programs; the hub assigns your world and slot when it connects, and the phone book updates within a minute.

A PERMANENT LISTING

The phone book lists a number only while its machine is online. To keep yours printed while it is off, ask for a permanent listing; each one is approved by hand.