Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build a tower defense: enemies pathing along lanes, wave spawning, towers that auto-target and fire, an economy, and lives. Use for a tower-defense/wave-defense game, or balancing waves and economy.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 78% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 63% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 6% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 46% | 0% |
A playbook for tower defense — enemy pathing, wave spawning, tower targeting, and the economy that ties them together. This is a compositional skill: it orchestrates pathing, AI, and UI into a TD loop. It does not re-teach pathfinding; it defines the systems and the balance levers (DPS vs. HP vs. income) that decide whether a TD is tense or trivial.
waves of enemies following a path, spends earned currency to expand/upgrade, and loses if too many enemies leak through.
When _not_ to use: the player directly controls a shooter → fps-shooter. Free-form base building with needs → survival-crafting. For the pathfinding algorithm itself, use game-ai.
Prepare (place/upgrade towers with current gold) → start the wave → enemies path toward the goal while towers auto-fire → earn gold from kills → survive the wave → repeat against a harder one. The tension is a planning puzzle: is my current DPS enough for what's coming, and can I afford the answer?
| Knob | Effect | Notes | | ------------------------- | ----------------------- | ---------------------------------------- | | Enemy HP growth/wave | upgrade pressure | Geometric ~1.1–1.2× (refs). | | Income vs. HP curves | difficulty | Player should _almost_ afford each wave. | | Tower DPS / range / cost | tower identity | Cheap+wide vs. expensive+tall. | | Targeting priority | optimal placement | Changes play more than raw stats. | | Enemy variety | counters one-build wins | Fast / armored / flying / swarm / boss. | | Leak penalty | stakes | Cost lives _and_ lost bounty. | | Upgrade vs. build economy | strategy depth | Diminishing upgrade returns. | | Wave pacing | tension curve | Spike → breather → spike, not monotonic. |
python# Pseudocode. A wave is data: a list of (enemy_type, count, spacing). Spawn over time. wave = [ ("grunt", 10, 0.5), ("runner", 5, 0.3), ("tank", 2, 1.0) ] def run_wave(wave): for enemy_type, count, spacing in wave: for _ in range(count): spawn_enemy(enemy_type, at=path[0]) # enter at the path start wait(spacing) # seconds between spawns (use a timer/coroutine) # wave clears when all spawned enemies are dead or have leaked
python# Pseudocode. "First" (furthest along path) is the standard default for stopping leaks. def acquire_target(tower, enemies, mode="first"): in_range = [e for e in enemies if distance(tower.pos, e.pos) <= tower.range] if not in_range: return None if mode == "first": return max(in_range, key=lambda e: e.progress) # furthest along path (stop leaks) if mode == "last": return min(in_range, key=lambda e: e.progress) # least progress (guard the entrance) if mode == "closest": return min(in_range, key=lambda e: distance(tower.pos, e.pos)) if mode == "strongest":return max(in_range, key=lambda e: e.hp) # burn down tanks first if mode == "weakest": return min(in_range, key=lambda e: e.hp) # secure kills / last-hit bounty return in_range[0]
python# Pseudocode. One tower's damage to one enemy crossing its range. tower_dps = tower.damage * tower.fire_rate time_in_range = tower.range_coverage_length / enemy.speed damage_dealt = tower_dps * time_in_range # Lane holds if summed damage_dealt from covering towers >= enemy.hp (per enemy). See refs.
Tune the HP curve against the income curve (refs).
(armored vs. rapid-fire, flying vs. ground-only) and diminishing upgrade returns.
that sever the path; recompute paths when towers change (refs).
dt → speed varies with frame rate. Scale steering by dt.game-ai for A\/flow-field/steering; for fixed lanes, simple waypoint following.godot-2d-movement (or engine equivalent) to move along the path; unity-navmesh for nav-based pathing.godot-tilemap / unity-tilemap-2d for the grid/lanes; level-design for map layouts.godot-resources / unity-scriptableobjects to define towers, enemies, and waves as assets.game-ui-ux for HUD layout, scaling, and the build menu; godot-ui-control for the concrete widgets (lives, gold, wave preview).audio-design for fire/hit/leak sound cues.math, enemy scaling, and wave pacing, read references/balancing.md.
Other measured skills in the registry, with their headline benchmark lift.