CPU: Critical Path Tower Defense

Tower defense where each tower runs a logic graph you program yourself.

I've been dreaming about making this game that mixes an accessible programming-lite concept with tower defense for years and years, and I've finally been building it as a solo developer these last two years. A game recently came out on steam called Net.Attack() that is a similar concept but for bullet hell instead of tower defense, which was inspiring to see that there is interest in that kind of game. I hope you enjoy it! You can see my game's website here: https://criticalpathtd.com/

Browser demo notes:

  • The browser play mode above is a demo only, limited to 5 waves in Roguelike or 5 minutes in Creative
  • The browser play mode requires hardware acceleration enabled to get decent FPS (150+ for me), otherwise you'll get like 5 FPS and it isn't really playable
  • The browser play mode has really lame attack graphics, because WebGL cannot render my custom VFX graph graphics that are used in the downloadable builds
    • Please don't judge the downloadable game by the web attack graphics! I promise the downloadable version is better!
  • The browser play mode does not support signing in to Unity accounts (I haven't been able to debug why yet, it just errors heh)
  • The browser play mode technically works on mobile (in landscape), but you can only move your camera angle (2 finger drag) and jump the camera to towers via the Tower Summary panel "Jump To" buttons (no manual camera flying controls like in the downloadable builds)
    • I generally get 50+ FPS on my Google Pixel 7 Pro

Summary

Every tower has a node editor inside it where you wire up nodes with different targeting, damage, status effects, branching, etc. into a graph, and that graph is the tower's program. The longest time path through the graph (the Critical Path) sets the cycle time: how often the tower's program completes and runs again from the start.

Shorten the path and the graph completes and runs again sooner. Push extra work onto a parallel branch and you can do more per cycle without lengthening the bottleneck. Earn Epic nodes that let you loop over towers/enemies or branch concurrently to pack in more damage, all to defend your CPU core from the incoming swarms of enemies!

Game modes

Roguelike: Earn Bits and Bytes from killing enemies and surviving waves, with tower build phases between each wave. Bits buy towers and Common/Uncommon nodes while Bytes are scarcer and buy Rare nodes. Every fifth wave is a boss which drops a pick-1-of-3 reward and is a primary route to Epic nodes (looping, concurrent branching, percent damage, etc.), alongside tower level up milestone loot. Tower cost scales with how many towers you already own, so every build phase you have to decide: place more towers or expand existing towers' attack logic with deeper graphs? This mode is the intended play experience!

Creative: No economy/resources and all non-Epic nodes are available for free. Survive a continuous difficulty ramp and loot Epic nodes from tower level up milestones (levels 5, 10, 15, and 20). The leaderboards for this mode are kind of silly, but they track best time and kills (all-time and monthly). More for experimenting with graphs than for actual game play.

In both modes the enemies get stronger (and faster) over time/across waves, so you'll need to build more towers, program stronger attack logic, and unlock buffs/loot to keep up and protect your CPU core!

Tower classes

Four classes, chosen at placement and visible on the tower as a color tint. Modifiers apply at execution time, so the same graph behaves differently depending on the tower's class/modifiers.

  • Standard: No modifiers.
  • Sniper: +50% range, +25% damage, +15% node time. Longer range and harder hitting, but slower, attack chains.
  • Scrambler: +50% status duration, -20% damage. Best for dishing out status effects, like poison and slow.
  • Overclocker: -20% node time, -10% damage, -10% status duration. Best for deeper graphs that cycle fast, but a little weaker.

Towers earn XP from damage/healing they deal, capped at level 20. Regular level-ups stack multiplicative buffs (Overclock, Focus, Turbocharge, Amplify, Reinforce, Overflow) for things like damage, range, node processing speed, status effect duration, etc. Every fifth level is a milestone that drops a pick-1-of-3 node into the tower's restricted inventory. Roguelike mode ramps the rarity floor each milestone while Creative is all-Epic from level 5 (just to keep Creative kind of feeling like a game at least, instead of all out Epic node chaos).

Nodes

Nodes are available across three categories.

  • Logistic: Split (Sequential, Concurrent), For All Enemies, For All Towers. Nested loops pay `time^depth` so deeper concurrency has a price.
  • Attack: Target Random / Farthest / Strongest / Weakest, AoE Damage All, powerful Epic Exploits (`max(flat, %HP)`), Short Circuit/Static Shock (damage current), risky Nuclear Meltdown (big damage with a big recovery period).
  • Status and Heal: Poison and Slow (random-target and runner-target variants), Healing (towers and your CPU core).

When an attack node hits, the hit target becomes the runner for downstream nodes, so a chain like AttackRandom -> ApplyPoison attacks a random enemy in range of the tower and then applies poison to that enemy, while something like AttackRandom -> AttackRandom would first attack a random enemy in range of the tower and then chain an attack onto a random enemy in range of that first hit enemy.

Other notable things

  • You load in with an Anonymous Unity identity, and even if you don't create/sign in to a Unity account you can edit your display name
    • If you ever nuke your local files, that identity would be lost and next play you'd have a new user for the leaderboards
    • So I recommend creating or signing in to a Unity account, so you have persistent leaderboard results!
  • Procedural maps so every play is slightly different!
  • Speed controls: pause / 0.5x / 1x / 2x / 3x / 10x. Space to toggle between paused and pre-paused speed.
    • Only impacts your real world play time; all actions/movement/graphs in game scale together.
    • The 0.5x and 10x options are on-screen click only, the others map to space/1/2/3.
  • You can expand the Tower Summary panel to easily view all towers' name/DPS/level, with a "Jump To" camera button and a shortcut button to view their available level up choices. Even if you have auto-select enabled for a tower's level up choices, that only applies to buff levels and you still have to manually choose the node loot at a milestone level.
  • While in a node editor, you can use the left/right arrow keys or buttons at the bottom-center to quickly step through your towers' graph editors (in creation order, same as the Summary Panel order.
  • The leaderboards are mode-aware, with all-time and monthly buckets for the two different tracked stats.
  • Terminal-style thematic main menu (`cd`, `ls`, `./exec`), because if I'm making a game about programming I might as well commit to it. 
    • Terminal history items are clickable like buttons so it still works as a click menu, but if you're feeling techy you can use the command line to navigate. 
    • Also features a little gameplay diorama on the side to keep the menu interesting, inspired by the menu of one of my all time favorite games: Factorio!
  • The map cubes, enemy models, tower models, and sound effects are assets I purchased on the Unity asset store. One day if there is money I'd like to commission custom models with the game's own vibe to them, but today I do not have that to invest, nor do I have the artistic skills to make good models myself (I'm a software engineer, and I can handle some game design but definitely not art).
    • The attack graphics, however, are a Unity VFX shader effect I spent a painstaking 12+ hours in a single session making from scratch! If you find yourself to the WebGL browser build, it uses a super simple attack graphic because the browser can't render the nice VFX graph effects like the Linux/Windows/macOS builds have.
    • All user interfaces (the good and the bad) are also me from scratch. I'm particularly proud of the main menu terminal interface described above, the rest still need work!
  • On my laptop the game generally runs at 300+ FPS, so make sure you enable vsync or a framerate limit on the main menu settings if you want to restrict it for battery life purposes!
    • Fun fact: back in like version v3.x.y in 2025, my original graph/node execution system in the game was so bad that the game peaked at like 40 FPS and with lots of towers got down to <5 FPS! I had to completely refactor it with a smarter design, from scratch, to get into the 300+/400+ FPS (when set to unlimited FPS).

Status

Creative and Roguelike are both fully playable today. Campaign and asymmetric PvP (one player wiring enemy stats/logic/spawning) are on the roadmap, in that order, with no promised date. The game is getting fairly polished but still in active development, so please provide feedback on difficulty balancing, quality of life ideas, and any other suggestions!

This is definitely an early access (but fully playable) release, and a final release in the future would probably be on Steam. I'll periodically update with latest builds here. I hope you'll consider supporting my project with this affordable, in-progress price!

Initially published version on Itch here: 0.6.2 15cca08 2026-05-03

Version release change log (on Itch)

  • TBD!
  • 0.6.2 15cca08: May 3rd, 2026
    • Playable Roguelike and Creative modes
    • Unity account support with leaderboards
    • A fun main menu

Purchase

Buy Now$3.99 USD or more

In order to download this game you must purchase it at or above the minimum price of $3.99 USD. You will get access to the following files:

Critical Path TD for Linux 50 MB
Critical Path TD for Windows 51 MB
Critical Path TD for macOS 58 MB

Development log

Leave a comment

Log in with itch.io to leave a comment.