Project 43 / Physical

TURF Arcade Cabinet

The match ends. The world keeps going.

Concept artwork for TURF Arcade Cabinet
Studio concept artworkArcade / Distributed computing / Games
Project stageExploration
Available to exploreEngineering study
Creative directionAPX Build

The idea

Connect a responsive local arcade match to a persistent territory game without losing or duplicating results. V1 is one two-player control panel, an existing display/computer and one authoritative world service. A network of always-on Raspberry Pi nodes is unnecessary until there is a measured availability or capacity need.

The match ends. The world keeps going.

The connection

Immediate local arcade play meets persistent strategic consequences. The connection only works when a finished match changes the shared world reliably, once.

How it could work

01Local match
02Validated result
03Persistent territory

Keep frame-by-frame play local. Send a signed or authenticated match record to the world service when the match finishes, using a unique match ID. The service validates and applies each result once. Retrying the same result must not award territory twice. Offline play needs a visible pending state and a defined reconciliation policy.

Separate local game code, cabinet input mapping and world rules. Do not make multiple machines independently authoritative over the same territory. Begin with one service and reliable persistence; replication comes after backup and restore work. A Pi is a possible service host subject to measured load, not proof that the complete game will meet a frame-rate target.

What would prove it

Run 20 short matches with two players, deliberately disconnect the network around match completion and submit duplicate records. Restart the world service during processing. Measure input-to-visible-response latency with high-frame-rate video and compare the panel against a normal controller on the same hardware.

Proposed gate: each valid match affects the world exactly once; pending matches survive a cabinet restart; rejected results are visible; the game stays playable during a network outage. For a 60 fps target, inspect frame-time distribution and target at least 95% of frames within 16.7 ms on the selected hardware, documenting any missed target.

The path to a complete build

  1. Demonstrate one fun local match with the existing game build.
  2. Integrate the encoder and label every control and harness connection.
  3. Add the durable result queue and idempotent world endpoint.
  4. Run outage/restart/duplicate tests and restore the world database from backup.
  5. Build the cabinet only after playtesting confirms controls, viewing position and maintenance access.
Open the engineering notebook

Components, interfaces and calculations

Use a two-player panel, documented USB encoder, existing computer/display, speakers and a serviceable harness. Test the chosen encoder's actual firmware and mode; keyboard and gamepad mappings can behave differently. A full cabinet adds cooling, physical stability, access panels and appropriate electrical installation.

A match record contains match ID, rules version, players, start/end time, outcome and validation data. A local durable queue tracks pending, accepted and rejected records. Record why a result was rejected and expose a recoverable state to the operator. Server persistence must survive a restart before confirming acceptance.

Scope and development questions

Allow 6–10 integration sessions once a playable game exists; game development is separate. Cost controls, host, display and cabinet independently. Confirm ownership/status of the existing TURF code before selecting an engine or rewriting it. A playable vertical slice plus trustworthy persistence is the release gate for the hardware concept.

Reference basis

This case study develops the project concept into a proposed build route. Numeric gates are design targets; completed hardware tests are not claimed.

From the notebook to the world

See a connection?
Let’s make it happen.