Bastion Works
The towers, turrets and targeting kit for Zero. Install turretsKit and build a tower defense, a base defense or a sentry-gun game. Each turret is one part, set up with two names: def, which turret it is, and targeting, how it picks targets. Change either one mid-fight and the turret changes on the spot.
Walk the gallery
You spawn facing a curved lane. A steady stream of practice dummies, each with a health bar, walks past one of each of the twelve turrets. The turrets stand in two staggered rows, so every label reads from where you stand: the turret's name, its tier (Mk I to III) and its targeting mode.
- The workshop turret stands right in front of you, with four yellow pads: TYPE, TIER, TARGETING and STYLE. Step on a pad, or press E / tap while standing on it, and watch the turret change.
- The blue pad beside you swaps every turret between sci-fi, medieval fantasy and cartoon toy.
- The kill feed names the turret that scored each kill.
- Every label reads on your screen, whatever its shape. When the screen changes shape the gallery works out the whole layout for that screen and shows it in one go, with no shuffling: a few seconds on a desktop, up to about 20 s on a phone held sideways. On a phone held upright the view widens and the labels stack one word per line; held sideways or on a desktop they sit in rows, with the title beside the kill feed, and on a short sideways screen the kill feed keeps to 2 rows. Checked on the released build at 390×844, 844×390 and 1280×720 in every look (17 runs, as the host): no label overlapped or touched another label, the kill feed or the edge of the screen, and every gallery line was at least 10 px tall. The pad signs show each change as soon as you press.
Play the tower defense level
Bastion Works has a second scene, towerDefense: a small, complete tower defense game made only from published kits. Enemies walk a winding road in five waves; walk up to a stone pad and press E to build a tower with gold, upgrade it, change its targeting or sell it; kills pay gold, and so does the start of every wave after the first (60, 80, 100 and 120); the keep at the end of the road has 20 lives. Clear the last wave and you win; lose the keep and the round is lost. Either way a fresh round follows, with no towers, a whole keep and 250 gold. The build menu covers the screen while it is open (menusKit draws every menu full-screen). It uses turretsKit with spawnerKit, Second Wind and MatchFlow, plus economyKit (gold), menusKit (the build menu), interactKit (the pads) and barsKit (health bars).
Two guides come with the kit
- How to make a tower defense game builds that level step by step from an empty world: six installs, two files, press Play. It was followed word for word in a brand-new world, through to the victory screen.
- Add turrets and towers to your game explains what turretsKit is, how it fits with the kits it brings, and what to do first.
Both ship inside the turretsKit package and arrive with every install; open them from the installed package. They and the tower defense scene don't come up in ZeroMind's library search yet (an open engine issue, in the README).
What's in the kit
- 12 turrets, all data. Machine gun, cannon, mortar (lobs over walls, splash), laser (continuous beam), tesla (chain lightning), frost (slows), poison cloud (damage over time), homing missile, sniper (long range, big hits), flamethrower (sets targets burning), support beacon (boosts the turrets around it) and wall (blocks and soaks damage). Tweak one, or add your own, with a
.datafile. - 5 targeting modes: first (furthest along the path), last, nearest, strongest and weakest. Add your own.
- Tags on everything: every turret type, look and targeting mode is listed with its tags, and each list filters by one:
TK.types("splash"),TK.styles("fantasy"),TK.modes("health"). - Real turret feel: left/right and up/down limits with turn speeds, so anything outside the arc is never picked. Sweep, track and hold behaviour comes from Watchful Minds aiKit, and turrets lead moving targets.
- 3 tiers per turret that change the model and every number: fire rate, range, damage and each turret's special (tesla chains, frost slow, splash…). Every tier has a cost, an economy hook takes the payment, and selling pays back a sell value.
TK.inforeads every number back. - 3 looks in one call: sci-fi, medieval fantasy, cartoon toy.
- Stays smooth in big fights. projectileKit reuses every bullet, shell, missile, beam and puff, with no garbage per frame. The shot budget is picked automatically: desktop app 1,500 shots in the air, browser 1,000, phones and small screens 600. Hits are batched into Second Wind. In a web browser the gallery ran at about 18 fps on average (23 median) on 2026-10-31.
- Multiplayer, checked with two players: one machine picks each turret's target and deals its damage, so a hit lands once. Other players see the same targets, health and kill counts after a sync delay (about 0.1 s on one machine, 1.5 to 3 s from another connection, about 2 s from a browser). On 2026-10-31 a second player joined the host's browser game: all 13 turrets turned and fired on their screen, their machine dealt no damage, and every one of 117 hits lowered a dummy's health by exactly its own amount, never twice. A player joining a world with many turrets can get a lower frame rate than the host (an open engine issue, in the README). Slows and walls work on enemies another player's machine moves.
- Labels on any screen: each player's screen lays turret labels out to suit it (
TK.setLabelLayout: wide, or stacked for phones held upright;TK.setLabelPlacementto place one label on this screen only, whoever owns the turret), and they stay readable in every look. - 43 tests: targeting, tags, upgrades, selling, turn limits, swapping, label layouts and placement, multiplayer, the kits an install brings, kill credit, projectile reuse and the per-platform budget.
Built on Second Wind (health and damage), Wavecaller spawnerKit (enemy waves on a path), Gaugeworks barsKit (health bars) and Watchful Minds aiKit (the turret brain). The world's reuse-review.md rates each of them: how well it fitted, what was reused and what was added on top. Bastion Works also publishes projectileKit, the pooled projectile layer, as its own package. spawnerKit's own little zapper turret lives alongside without clashing.
Get it
turretsKit 2.1.3 is one install, one id, and nothing else to install:
- turretsKit
fc8b64ab-27cc-4d1a-9746-a0f55ac9e442
It brings projectileKit and, each from its own world, Second Wind, Wavecaller spawnerKit and Watchful Minds aiKit, and your own scripts use them by their own names: require("spawnerKit.api"), require("SecondWind.api"), require("aiKit.fsm") (TK.kits still works as a shortcut). The README's quick start (three turrets shooting a stream of enemies) runs as written in a world where turretsKit is the only install. The README lists every dependency with the world it comes from, its version and how it arrives, every field and number, and the known limits with their open public GitHub issues.
New in 2.1.3: the README says exactly what an install brings of Match Flow (not its api module; use its component) and names the open issues behind that and behind the guides' missing search records. New in 2.1.2: the tower defense level starts a new round properly after a win or a loss, pressing Play again no longer pays bounties and wave gold twice, and the guide states wave pay exactly. New in 2.1.1: the two guides, the tower defense level, a quick start whose tesla coil fires, and checks on today's engine. Coming from 1.0.0? The Turret's type field is now def (it was turret).
Comments · 0
Open discussion, no rating attached. Ask questions, swap notes, follow threads.