# OMA-TANK A first-person wireframe tank combat game for Omarchy Linux, inspired by classic 1980 arcade vector tank games. Built with Love2D — pure Lua, software-rendered 3D line graphics, no polygons, no textures. Vertex models are traced directly from the publicly-archived 1980 arcade ROM (vertex table at `$388e`, draw-command table at `$2472`, both documented by the 6502 disassembly preservation project), so silhouettes, proportions, and draw orders match the cabinet. ## Install ```bash curl -sL https://git.no-signal.uk/nosignal/oma-tank/raw/branch/master/install.sh | bash ``` ## Uninstall ```bash oma-tank-uninstall ``` ## Controls Two control schemes, switchable on the title screen with `TAB`. ### Modern simplified (default) | Input | Action | |-------|--------| | **Up / W** | Drive forward | | **Down / S** | Reverse | | **Left / A** | Rotate left | | **Right / D** | Rotate right | | **Space** | Fire | ### Classic dual-track | Input | Action | |-------|--------| | **W / S** | Left track forward / back | | **I / K** | Right track forward / back | | **Space** | Fire | Both tracks forward = drive straight. Opposing = pivot in place. A single track alone gives a 1.5× speed bonus. ### Gamepad | Input | Action | |-------|--------| | **Left stick Y** | Left track | | **Right stick Y** | Right track | | **A / right trigger** | Fire | | **Start** | Start game | | **Y** (title) | Toggle control mode | ## Gameplay - First-person view from inside a tank on an open plain, studded with indestructible cubes, pyramids, and slabs - Only one hostile is on the field at a time — destroy it and another spawns after a short beat - The saucer is a separate bonus target: doesn't attack, doesn't show on radar, flies at barrel height - One hit kills you — the screen cracks and your tank explodes into tumbling debris - You start with **3 tanks**. Bonus tank at **15,000**, another at **100,000**, every **100,000** thereafter - One shot on the playfield at a time: fire again the moment your shell dies ### Enemies | Target | Points | |---|---| | Slow tank | 1,000 | | Guided missile | 2,000 | | Super tank | 3,000 | | Saucer (UFO) | 5,000 | ### Difficulty progression - Below **10,000 pts** — slow tanks only - **10,000+** — guided missiles enter the rotation (1-in-3 chance per spawn) - After **6 missiles have launched** — super tanks replace slow tanks - From **2,000 pts** — saucer starts drifting across the field at random 0–17 s intervals ### Evasion penalty Avoid a tank for 48–64 seconds without killing it and the game silently replaces it with a missile — you can't hide behind cover forever. ### Shooting over cover Low slabs (`halfPrism`) can be shot over. Tall blocks and pyramids cannot. Use low slabs to close distance while blocked from enemy fire, then pop out to shoot. ## HUD - **Top-left:** lives, and status text — `ENEMY IN RANGE`, `ENEMY TO LEFT / RIGHT / REAR`, or `MOTION BLOCKED BY OBJECT` - **Top-centre:** circular radar with sweep and fading blips. Shows only the active tank/missile — not the saucer, not obstacles - **Top-right:** score and high score (9-digit arcade format) - **Screen centre:** two-bracket reticle. Curls flip from vertical to diagonal when an enemy is lined up; the whole reticle blinks while your shell is in flight (fire again the moment it stops) ## Omarchy Integration - **Theme colours** auto-detected from your active Omarchy Ghostty theme - **System font** detected from your Waybar config - **Full-screen** via SUPER+F (Hyprland compositor) ## Requirements - Love2D (`sudo pacman -S love`) - Omarchy Linux (or any Arch-based distro) ## Acknowledgements Inspired by the 1980 Atari arcade cabinet. Model geometry extracted from the publicly-archived ROM via the [6502 disassembly preservation project](https://6502disassembly.com/va-battlezone/). No arcade assets, logos, or trademarked names are reproduced. ## License MIT