110 lines
3.9 KiB
Markdown
110 lines
3.9 KiB
Markdown
# 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
|