A 2.5D tower defense game for Steam (Windows, Steam Deck, macOS) that mixes Line Tower Wars mazing and creep sends with async battles against other players' saved builds.
- Spec: docs/PRD.md
- Contributor guide and conventions: CLAUDE.md
The newest build of main is always on the
Latest build release, with
zips for Windows, Linux and macOS. CI replaces it after every merge.
- macOS: once signing is set up (docs/macos-signing.md), the app is
signed and notarized and opens normally. Until then macOS blocks it as unverified: open
System Settings > Privacy & Security, scroll down and click Open Anyway, or run
xattr -dr com.apple.quarantine "/path/to/the.app". - Windows: the build is unsigned, so SmartScreen may warn on first launch. Click More info > Run anyway.
- Install Godot 4.7.2 and Git LFS (
git lfs install). - Open
project.godotin Godot and press Play. - Run the tests from the gdUnit4 panel in the editor, or see the commands in
CLAUDE.md.
| Action | Keyboard / mouse | Controller |
|---|---|---|
| Move the build cursor | Arrows / WASD / mouse | D-pad / left stick |
| Place the chosen tower | Space / left click | A |
| Sell the tower under the cursor | X / right click | X |
| Upgrade the tower under the cursor | U, or click an upgrade in the panel | B, then pick a branch with A when there are two |
| Previous / next tower type | Q / E | LB / RB |
| Switch between maze and side panel | Tab | Y |
| Ready for battle | Enter | Start |
| Open the pause menu (pauses battles) | Esc / P | Back |
| Change battle speed (×1, ×2, ×4) | F | Right stick click |
All of these are Godot input actions (Project Settings → Input Map), so they can be rebound.