termcade

THE TERMINAL ARCADE / OPEN FOR PLAY

One more
game.

THREE CLASSICS
ONE COMMAND
ASTEROID PLAYER 01 / TERMINAL CAPTURE
 ASTEROID                                                       HIGH 1380
╭────────────────────────────────────────────────────────────────────────╮
│                                     ▗▚                                 │
│                                     ▌ ▌                                │
│                                    ▟▀▀▟▖                               │
│                                                                        │
│                                                                        │
│                                                                        │
│               ▗▄▄▄                                                     │
│              ▄▞▘  ▀▀▌                                                  │
│            ▄▀       ▐                   ▗▄▖                            │
│           ▐          ▌               ▄▀▀▘ ▝▖                           │
│           ▚         ▞    ▗▄▄▖       ▞     ▗▘                           │
│            ▀▄      ▐  ▗▞▀▘  ▝▀▀▄    ▝▚▄▖ ▄▀                ▄▄▄▄        │
│              ▀▄▄▄▀▀▘ ▞▘        ▐       ▝▀                ▗▀    ▀▌      │
│                      ▌          ▌                        ▝▖    ▄▘      │
│                      ▀▚▄▖      ▄▘                         ▀▄▄▄▞        │
│        ▄▖               ▝▀▚▖ ▄▀                                        │
│     ▄▞▀ ▝▚▖                ▝▀                                          │
│   ▄▀      ▝▀▄▖                                                         │
│  ▞           ▐▘                                                        │
│  ▝▚         ▗▞                      ▗▖                                 │
╰────────────────────────────────────────────────────────────────────────╯
     SCORE 000020   WAVE 1   ▲ ▲ ▲   ←/→ turn · ↑ thrust · space fire

Asteroid, Tetris and Brickough, rendered in Unicode pixels. A small arcade for the terminal you already have.

go run github.com/aviorstudio/termcade@latest TRUECOLOR TERMINAL / 80×24 OR LARGER / PLAY OFFLINE

IN THE STARTER PACK

Pick your
next high score.

  • 01

    ASTEROID

    Asteroids-style rock shooter. An inertial ship on a wrapping field, and big rocks that split into faster small ones.

    BUNDLED / PLAY OFFLINE
  • 02

    TETRIS

    Falling-block stacker with Super Rotation System kicks, a 7-bag randomizer, ghost piece, lock delay, and gravity that tightens by level.

    BUNDLED / PLAY OFFLINE
  • 03

    BRICKOUGH

    Breakout-style brick breaker: steer the ball with paddle english, clear the wall, survive the speed-up.

    BUNDLED / PLAY OFFLINE

TERMCADE_PIXELS

One ship. Four ways to cut up a cell.

Every setting draws the same game into the same terminal cells; only the sharpness, and what the font has to know how to draw, change. Below is Asteroid's ship at the start of a wave, captured four times over and blown up — the same five columns of cells every time, a different number of pixels inside them. In the arcade p cycles the style and keeps it, and TERMCADE_PIXELS overrides the saved choice for a single run.

  ▗  
 ▗▘▚ 
 ▟▄▞▖
▝▘ ▝▀
quad 2×2 per cell

Unicode 1.0 block elements. Renders anywhere, and the default.

  🬦  
 🬞🬄🬣 
 🬔🬭🬁🬓
🬉🬂 🬂🬍
sextant 2×3 per cell

Sharpest, near-square pixels. Needs Unicode 13, or you get tofu.

  ▄  
 ▄▀▄ 
▄ ▄▀▄
▀  ▀▀
half 1×2 per cell

The original look, for fonts that struggle with the rest.

  -  
 ::: 
.:_:,
-" "-
ascii 3×3 per cell

A density ramp and line characters. No block glyphs at all.

The front door

Find a game. Make it yours.

The arcade opens on Marketplace. Use Ctrl+N to open the sidebar and switch to Library. Browse without signing in; Add saves a game to your account, while Play downloads and installs it. Your installed games stay in Library even when you are signed out.

The live registry is api.termca.de. Package bytes pass through it and are checked against the sha256 recorded when the release was published before either the terminal or web app runs them. TERMCADE_REGISTRY selects a local registry for development.

Library capture from an earlier release. Current releases open on Marketplace.

termcade open the arcade on Marketplace; Ctrl+N opens the sidebar
termcade add author/slug add a marketplace game to your account and this machine
termcade list what is in your arcade
termcade remove author/slug take one off, and off your synced library
termcade signup create an account — or termcade login, termcade logout
termcade dev new you/mygame scaffold a game that is already playable
termcade dev build package a game directory into a .tcade
termcade dev install build/game.tcade install a local package while developing

termcade dev

The arcade you play with is the dev kit.

termcade dev new you/mygame scaffolds a game that already runs, termcade dev build turns the directory into a .tcade, and termcade dev install puts the local build on your own menu. A game is a Go package implementing one interface — and because the boundary is a frozen wasm ABI rather than a Go one, Go is a convenience and not a requirement.

Ticks
Update() runs exactly 60 times a second, stepped off the measured clock rather than drifting
Input
four directions, two action buttons and start — with real releases where the terminal sends them
Drawing
a canvas in square logical units; the game never sees the pixel grid it lands on
HUD
labelled fields and a hint. The shell owns every pixel of the styling
Dependencies
the sdk module, which depends on nothing outside the standard library
Boundary
wasm ABI v1, frozen. A host refuses a guest whose version it does not speak

THREE GAMES IN THE BOX. THE REST IS YOURS.

The arcade you play with
is the dev kit.

Get the binary ↗ Make your own game ↗

Sandboxed WebAssembly games. A fixed 60-tick update loop. Four directions, two action buttons and start.