▶ Play it in your browser — about 8MB over the wire, no download, saves to your browser's storage. That is the right answer for almost everyone landing here.
0.9.1 fixes the one bug 0.9.0 shipped with
Every card in the hand showed boxes where its Heat cost should be — in the browser build only. The unit was set in modifier capitals (ᴴᴱᴬᵀ, out of Unicode's Phonetic Extensions block), which are in neither font the game ships. Desktop text servers quietly reach into the operating system's own fonts to fill a gap like that, so it rendered correctly on every machine this was developed on, in every screenshot, and in all 321 tests. A web export has no system fonts to reach into.
The display font now has allow_system_fallback switched off, so the desktop build renders exactly what the browser build renders, and tests/test_glyph_coverage.gd asserts that every non-ASCII character the game displays is in a font it actually packs.
No gameplay, balance or content changes. Full account in CHANGELOG.md.
A run-based deckbuilder where the kill chain is the economy. Every card sits on a rung — ◇ RECON → ▲ ACCESS → ◆ ESCALATE → » MOVE → ■ PERSIST → ▼ EXFIL — and climbing the rungs in order multiplies your eventual payout. The multiplier pays on the cash-out and nothing else, so the whole game is one decision made over and over: climb one more rung, or bank it now.
Everything you do raises Heat. Heat is not a health bar; it is how loudly you are working, it never falls on its own, and when the trace lands the run is over.
Three corporations, twelve systems, sixty cards (seven of them Zero-Days), eight Processes, two threat actors who play at completely different speeds.
Downloads
| file | notes |
|---|---|
ChainOfAttack-0.9.1-linux.zip |
x86_64. Built and played. |
ChainOfAttack-0.9.1-windows.zip |
x86_64. Built but never run — see below. |
ChainOfAttack-0.9.1-windows.zip — built but never run. There is no Windows machine behind this project. It exports cleanly from Godot 4.3 and that is the entire claim being made for it. If you try it, an issue saying whether it launched is genuinely useful. Play in the browser instead if you just want to play: https://brodsbytes.itch.io/chainofattack
Both binaries have the .pck embedded, so each is a single file, and both ship THIRD_PARTY.txt beside them.
What is worth reading here
The build log — 2,500 lines of what was tried, what was measured and what got thrown away, in the order it happened.
A heuristic bot plays thousands of runs to produce every balance number in this project, and the bot was wrong fourteen separate times. Each one is written up with what the wrong number claimed and what believing it cost:
- The bot is the measuring instrument (and it was broken)
- The instrument moved, the content did not — one pass moved every win rate by up to twelve points without changing a single content value.
multiply_nexthad three problems and two of them were invisible — how a damage bonus on the wrong rung shipped a 165-damage one-shot.
Licence — it is a split, and GitHub will call it "Other"
The code is MIT: src/, tools/, tests/ — the combat state machine, the effect resolver, the heuristic bot and the whole measurement rig. Take it, learn from it, build on it, no strings.
The game is not: data/*.json, the in-game writing, the design documents and the name stay all rights reserved. LICENSE-CONTENT.md expressly permits reading, quoting, streaming, private modification and contribution. What it does not permit is shipping the game, or a reskin of it, on a storefront.
The engine, the font and the sound effects carry their own licences: THIRD_PARTY.txt.
Known, and said here rather than discovered
- The Windows build is untested. See above.
- No controller support and no key rebinding.
- The CRT treatment is on by default. F1 turns it off.
- Saves live at
~/.local/share/godot/app_userdata/ChainOfAttack/on Linux and%APPDATA%\Godot\app_userdata\ChainOfAttack\on Windows. If you file a bug,r3sume.savandc0nfig.iniwill resolve most of it.
Build it yourself
Needs Godot 4.3 and nothing else — no plugins, no addons, no package manager.
godot --path . # play it from source
./run_tests.sh # 321 tests, ~1350 assertions, headless
godot --headless --export-release "Web" build/web/index.html