← back to Games Agentabrams

README.md

35 lines

# games.agentabrams.com — Agent Abrams Arcade

Static games hub: left panel lists every game (file-browser style, `*.aa` names),
right panel runs the selected game in an iframe. Zero dependencies, zero build step.

Live: https://games.agentabrams.com (Kamatera, `/var/www/games.agentabrams.com`, nginx static)

## Adding a game

1. Drop a self-contained game at `games/<id>/index.html` (must run standalone in an iframe).
2. Add an entry to `games.json`:

```json
{ "id": "<id>", "file": "<Name>.aa", "title": "...", "desc": "...", "path": "games/<id>/", "added": "YYYY-MM-DD" }
```

3. Deploy: `rsync -az --delete --exclude .git --exclude tests ./ root@45.61.58.125:/var/www/games.agentabrams.com/`

The hub auto-selects the last-played game (localStorage) and supports `#<id>` deep links.

## Games

| File | What | Source |
|---|---|---|
| `AbramsCube.aa` | 3D Rubik's cube, pure CSS 3D — orbit, zoom, scramble, undo, timer, solved detection | synced from `~/Projects/rubik-cube-3d` |
| `AtmosSkyfire.aa` | Three.js arcade flyer — bank through the sky, fire missiles, dodge/shoot birds | vendored locally |
| `AbramsBlocks.aa` | Full Tetris — SRS rotation + wall kicks, 7-bag, ghost, hold, next-queue, levels, line-clear scoring, Web Audio, touch | pure Canvas 2D, zero-dep |
| `FlappyClone.aa` / `FlappySky.aa` / `FlappyFlight.aa` | Flappy-Bird-style flyers — flap through pipes/gates, medals, persistent best | pure Canvas 2D, zero-dep |

## Tests

```sh
node tests/e2e.mjs   # headless: manifest render, iframe game playable, deep links
```