← Devlog

I gave the enemy a tower of its own

In a tower-defense, your towers shoot the enemies — that's the whole deal. So I built the one thing the genre never lets you fight back against: an enemy structure that buffs the wave, sitting just off the path, daring you to stop serving and shoot it instead.

June 28, 2026 devloggameplaydesign

In a tower-defense, every second your towers are firing, they’re serving the enemy line. Nothing else ever asks for that fire. You place, you wait, you win. I’d been staring at sweep after sweep of my levels and the diagnosis was always the same word: walkover. Not because the waves were weak — because the player never had to make a hard call about where their damage went.

So I gave the enemy a tower of its own.

A structure you have to choose to shoot

A beacon is a hostile little obelisk that spawns just beside the walkable path — never on it. It doesn’t move and it doesn’t attack you. It does something more annoying: it projects an aura over the lane that buffs the units walking through it. The first one I shipped, the Hype Amplifier, speeds everything in range up by 60% — your careful kill-zone timing falls apart as the crowd suddenly sprints the last stretch. The second, a Sycophancy Node, heals the units in its radius, quietly undoing the work your towers are doing one tick at a time.

A Sycophancy Node — the heal beacon. Same obelisk, but a teal aura instead of orange: it restores the satisfaction your towers just drained, one tick at a time.

The point isn’t the buff. The point is the decision. To kill the beacon you tap it, and every tower in range stops serving the wave and hammers the obelisk instead until it drops. That’s the whole mechanic, and it’s the thing the loop was missing: a target that competes for your towers’ attention. Shoot the beacon and the units it was babysitting leak while your guns are busy. Ignore it and the whole wave is juiced. There’s no free answer — only a trade, and a window to make it in.

It was almost free to build

Here’s the part I love: I wrote barely any new systems for this. The engine already had two things I just pointed at a new target.

First, towers already knew how to damage something that isn’t a customer — the spam-bot cleanse, where a couple of tower types chip away at junk traffic’s health instead of serving it. A beacon is just that: raw damage to a health bar, no “does this answer match the customer” math, because an obelisk has no opinion. That immediately made the slow, hard-hitting artillery towers the natural demolition crew — they melt 3000 health in a few shots, where a cheap fast tower needs a patient twenty seconds.

Second, a friendly aura already existed — the Helicopter Mom enemy heals nearby units as she walks. The beacon’s aura is the same idea nailed to the ground. New mechanic, mostly old parts. The most satisfying features are the ones that fall out of systems you already have.

Then I gave them personalities

With the frame in place — obelisk, health bar, coloured ring — each new flavour was just one more branch in that aura loop. So I kept going.

The Adversarial Cache goes after the match itself. The game underneath is a rock-paper-scissors of satisfaction: a shot only really lands if it’s the right kind of answer for that customer. The Cache makes the units in its purple ring shrug half of it off — your perfect answers suddenly count for half, and a kill-zone that was clearing the lane starts to leak. Same obelisk, same way to kill it.

An Adversarial Cache — the resist beacon. Its purple aura makes every serve land at half value, so units walk out the far side still hungry.

Then I broke my own rule. Every beacon so far buffed the enemy. The Thermal Spike doesn’t touch the units at all — it cooks your towers. Anything serving inside its red ring overheats and throttles itself, so the spot you so carefully covered becomes the one place your guns keep cutting out. The counter is the fun part: park a cooling unit beside it, or kill it from range with a tower that out-reaches the ring so it never feels the heat. It’s the meanest of the four, so it pays the best — a hundred on the drop instead of the usual seventy.

A Thermal Spike — the heat beacon. Every tower inside its red ring overheats and throttles: the patch you covered best is the one that keeps going dark.

Four beacons, one obelisk. Speed, heal, resist, heat — and the only one that read as genuinely new code was the one that turns your own infrastructure against you.

The bot that refused to deal with it

Then the sweep lit up red. Every level with a beacon looked brutal — and I knew the levels weren’t brutal, because I’d just played them. The culprit was my balancing oracle: a headless bot that speed-runs each level four different ways so I can read difficulty without playing 140 levels by hand. It’s brilliant at building and serving. It had no idea beacons existed. So it ate the speed buff forever, watched the wave melt through, and reported the level as nearly unwinnable.

This is a trap I’ve hit before — with the bosses, with heat management. The bot is a perfect judge right up until a level needs judgment it can’t model, and then it lies to you with a straight face. The fix is always the same shape: teach it the move, or stop trusting the number.

Teaching it was almost embarrassing. The “tap to focus-fire” plumbing already existed for the human; the bot just never pressed the button. So every tick, I have it flag any live beacon — and the targeting it shares with the player does the rest. One line, basically. The bot now walks up to a beacon, focus-fires it dead, and goes back to serving, exactly like a person would. Every beacon level snapped back to a clean win in the sweep.

What it actually changed

The win isn’t the obelisk. It’s that the genre’s core verb — your towers shoot the enemies — finally has an exception with a price tag. A beacon turns a passive “did I build enough” wave into an active “do I spend my damage on the source or the symptom, and when.” That’s a real decision, dropped onto levels that used to be a victory lap, built mostly from parts I already had — and the only thing standing between it and the rest of the campaign was remembering to teach the robot to press its own button.