OpenTyrian

OpenTyrian icon

open-tyrian runs the classic vertical shooter OpenTyrian on an RCWeb display. Pair a phone with the open-tyrian-c controller by scanning the QR code, or open /open-tyrian-c/?r=<room> with the same room ID.

About the game

OpenTyrian is an open-source port of Tyrian, the arcade-style shooter set in the year 20,031. You play as fighter pilot Trent Hawkins, flying missions against MicroSol while upgrading weapons, shields, generators, and sidekicks between stages.

The complete game runs locally on the display through WebAssembly. The phone sends input intent only; it does not run the game or receive gameplay data.

Pairing and controller ownership

  • The display shows a QR code for the matching open-tyrian-c room.
  • The first connected phone owns the single-player controls. A later phone waits until the owner leaves or stops announcing its presence for seven seconds.
  • A controller stores a random identity in local storage, so refreshing the phone can reclaim its active session.
  • The display releases all held keys when the controller disconnects, times out, or asks to release its inputs.

Controls

  • Touch the large flight surface to move in any direction. Distance from its centre controls speed, and diagonal input blends both axes independently.
  • OpenTyrian fires the main weapon and sidekicks automatically during play.
  • Use the controller's dedicated Up and Down buttons for single-step menu navigation, then tap Select to confirm.
  • Tap Menu to open or close game menus.
  • Reset game reloads the authoritative display session.

A keyboard connected to the display can also use the arrow keys, Space, Enter, Ctrl, Alt, and Escape.

RCWeb messaging

The controller targets only the open-tyrian viewer app with rc.sendFunctionCall. Every controller message includes the current RCWeb client ID and its stored controller identity. The viewer validates both values, translates accepted actions into keyboard events for OpenTyrian, and sends readiness and ownership state directly back to that controller.

The controller announces its presence every two seconds. Analogue movement is throttled in transit and converted to proportional keyboard pulses on the display. Dedicated menu directions and Select are fixed-duration taps. Blur, page hiding, reconnect, and timeout paths all release held inputs rather than leaving the ship moving.

Upstream software and data

The WebAssembly runtime is derived from the GPL-licensed pelya/opentyrian-kaios browser port. Replaceable app.js and app.wasm runtime code lives with the app source under src/main/apps/app/open-tyrian; only the fixed packaged game-data archive is stored under src/main/immutable/app/open-tyrian. OpenTyrian requires the Tyrian 2.1 data files, which the upstream project distributes as freeware. See UPSTREAM.md and COPYING-GPL-2.0.txt for source, checksums, and license details.

DocumentationServer TelemetryServer StatsServer HTTP LogServer WebSocket Log