By Rob, hero developer at Three Crown Interactive · 12 October 2026
Our last devlog was about giving the heroes a voice. This one covers the week after it, from 4 to 12 October, and it grew a lot bigger than I expected: more than a hundred check-ins on my side alone. Looking back, almost all of it came from one question. Does playing together actually pay off? If four people are in a game, every hero should have a job, you should see what your teammates do to the enemy, and when you fall, someone should be able to come and get you.
In short
- Nine team combos: when one player sets up an enemy and another finishes it, the hit counts double. The seven element combos became real ultimates, with a five-minute cooldown and new effects.
- The Shaman's Siege: a new co-op level with an Orc Shaman boss, rebuilt after my own sketch as a Helm's Deep-style valley, with caves, a battering ram and a boss you can pin down.
- Every role its own job. Only Fire (and the Maul) deal full area damage to every enemy; the other mages control and share their damage. The Sword hunts single targets, and the Maul became a tank with a Shoulder Charge.
- The Soldier's talent trees became webs, one for the Sword and one for the Maul, and the Sword got a Dash.
- The Elementalist is faster: a quicker walk, Blink with two charges, a staff bolt that does something different per element, and spells that react to a second key press. Fire now earns its mana back from embers.
- You can see every hit and every status on the enemy, and the hero HUD is much calmer.
- Heroes you create and save yourself, controller support for the Steam Machine, and new graphics settings.
- Today: a fallen hero can be helped up by a teammate, a new end screen hands out 51 awards, and 225 pictures in the game got a new painted look. Achievements are being built as I write this.
Playing together has to pay off
In a co-op game it's easy to end up with four people each playing their own game side by side. I wanted the opposite. As I put it when I asked for this: the idea is that playing together really pays off. And when it happens, it has to be really clear.
So we added team combos. The first two came from my own concept sheets:
- Shatter: a Soldier hits a frozen enemy and it shatters, with cold splinters flying into six enemies around it.
- Soulfire: fire hits a cursed enemy, it burns green, and when it dies its souls leap to three other cursed enemies.
A combo deals +100% of the hit when a teammate (or a tower) set up the status, +50% when you did it yourself, and half of that on a boss. A big SHATTER! or SOULFIRE! with TEAM COMBO ×2 tells everyone what just happened. Three days later seven more followed, from a table I drew up, each with its own look: Blessed Tide, Winterguard, Gravebloom, Stormroot, Steam Veil, Cinder Bloom and Judgment Relay. Winterguard, for example: a skeleton raised from a frozen enemy wears ice armour and takes 50% less damage.
Soulfire in our hero test arena: the souls of a burning orc jump to the cursed enemies around it.
The Elementalist also has element combos, big spells for when you combine two elements. They felt like just another spell. I wanted them to feel like end game: when you cast one, everyone around you should turn and look. So all seven (Steam Eruption, Frozen Tempest, Eclipse, Living Sanctuary, Meteor, Firestorm and Solar Cataclysm) are now ultimates: a five-minute cooldown, 60 mana, full damage on everything in their area, three upgrade paths each and completely new effects. You find them in your second element's talent tree, and in a run you unlock one from a fixed tile on the level-up reel. In our balance model a cast reaches 50 to 80 enemies of a late wave and deals three to six times their health. The first version cost 100 mana, more than a level-25 mage even has, so that came down to 60.
Solar Cataclysm, one of the new combo ultimates, in the test arena at night.
The Shaman's Siege: our first level built around teamwork
I wanted a level you simply can't win on your own: a bastion at the end of a valley, an Orc Shaman, and the feeling that a gigantic horde of orcs is coming for you. It's marked COOP LEVEL with "2+ players needed" in the map browser, although you can still try it alone.
The Shaman doesn't fight like a normal enemy. From wave 5 he marks heroes and drops volleys of fireballs in overlapping circles, always with one gap 5 to 10 metres away that you have to run or Blink to. Players have to learn to dodge. From wave 10 a Fire Wave of burning strips follows, and in wave 15 he walks onto the field himself with reinforcements, hits every hero with a Rage Pulse every minute and grows angrier over time. Before his first big attacks the battle pauses for 4.6 seconds while his camera, his roar and a caption introduce what's coming. I wanted everyone to be safe during that moment.
My own playtest of the first version was a reality check. I took two hits and barely noticed, and I beat him alone with the Shadow mage because my skeletons made it far too easy. So he got burning ground, a Flame Burst for heroes who bunch up, and in the last wave his orcs hunt the nearest hero instead of the Wall.
Then I sketched the level again, more like Helm's Deep. It's now one broad valley between rock walls about 8 metres high. The horde pours out of two pitch-black caves, so it doesn't look like they come out of nowhere. A 51-metre Wall with eight tower places closes the valley, with the keep on its own rock behind it. Tim had already built battering rams, so the siege borrows them, with an escort. Elite hunter packs with glowing red eyes come after the heroes, and their blows have a short, readable wind-up of 0.35 seconds.
The rebuilt Shaman's Siege: the 51-metre Wall, the inner wall and the keep on its rock.
Two rules matter most to me. First: never one-shot a hero. The Shaman hits 10% harder for every extra hero, but no single hit of his can take more than 45% of a hero's maximum health. Second: you can hold him. Whoever stands next to him, a hero or a summon, pins him in place: he stops walking and fights. Between attacks he visibly tires, with his staff lowered, his orb dimmed and a heavy breath, and that's your window. A tank, a slow or a few skeletons can keep him away from the castle, so everyone has to find their own way to keep him busy.
Wave 15: the Shaman's Rage Pulse hits every hero, wherever you stand. A frame from our promo film.
To be clear about where this stands: the Shaman still uses the Orc Warlord's body with a staff, so he's placeholder art, and his numbers are first drafts. We also measured which heroes can hold the waves alone. A test bot played every hero in the real game, and Ice, Shadow and Holy held almost perfectly, while our balance model ranks Nature and Fire first. That's exactly why we measure both ways. Those runs were done before the area damage change below, which cut Ice's damage against groups hard.
Every role its own job
With four heroes in a game, they shouldn't all be doing the same thing. My rule this week: whoever is bad at AoE must be good at single target, and the other way round. And in AoE, Fire has to win.
- Area damage by role. Every element used to hit every enemy in its area for full damage, so the control mages cleared crowds as well as Fire did. Now Fire (and the Maul) deal full damage to every enemy in an area. Ice, Nature, Shadow and Holy deal full damage to up to three enemies and share it beyond that, and Lightning shares one hit over everything it chains through. A lone enemy always takes the full hit, and control, heals and shields are unchanged. In return, Spirit now makes the control mages' areas and holds bigger and longer, and Nature's Healing Tree repairs buildings. In the model, against a group of eight late in the game, Ice went from 164% to 96% of what the waves need, Holy from 140% to 84%, and Fire stayed at 132%.
- The Sword hunts single targets. Skyfall now aims a circle on the ground: you jump, the camera stays behind you, and the enemy with the most health inside the circle takes the plunge, harder the closer it is to the centre. Endless Assault's rounds share their damage, so it's great on one elite and weak in a crowd.
- Summons on a boss. Plant bites and skeleton hits on a boss now do a third of their damage. Nature and Shadow keep their strength against crowds, and a boss needs the team.
- The Maul became a tank. Both Soldiers now start with 25 armour and 20% resistance. The Maul's F is now a Shoulder Charge that barrels 9 metres forward and throws small enemies aside, and an ability straight after a charge gets 50% bigger areas. His areas grow with Endurance, and World Ender hits a boss 50% harder.
- Holy shares its judgement. Final Judgment still hits everything, but splits one budget of 1300% Spell Damage. A boss alone still takes all of it.
One mistake worth telling: my first Skyfall rework made the Sword better at area damage, the opposite of what I wanted (from 390 to 426 damage per second in a group). Skyfall had become quicker, so the stamina it saved went into Endless Assault, which had become almost free in a group. Sharing those rounds fixed it: the Sword now does about the same damage to a group as to a single enemy.
Talent webs for the Soldier
The Sword's talent tree was a few rows of icons. I wanted the hero in the middle, paths going out in all directions with small stat nodes in between, and more steps before you reach the big abilities. It's now a web of 124 nodes. You buy your way out from the hub, every node needs a line to one you already own, and filler nodes sit between the abilities. Blade Rush and Skyfall are four points from the hub, the ultimate Endless Assault ten. You can zoom and pan. The Sword also got a Dash on F: 7 metres through enemies in 0.18 seconds, with two charges.
A day later the Maul got his own web around Breaker Swing. Every Soldier web now has armour and resistance nodes, and the Shoulder Charge has three upgrades. Talent points also get more expensive as you go: a complete hero now takes about 57,000 kills, so a hero grows with you over a long time.
Part of the Sword's talent web. The wheel continues off-screen.
The Elementalist: faster, with more to do
I was looking for a way to make the Elementalist more dynamic, faster and more fun to play. This week brought:
- A quicker walk (4 metres a second instead of 2.8) and Blink with two charges of 15 seconds each, reaching 25 metres. Earlier in the week I'd doubled Blink to 50 metres; two charges at half the distance felt better.
- A staff bolt that matters. It does something different per element. Fire's bolt bursts and builds Blaze stacks, Shadow's stores soul energy, Ice chills until the enemy freezes, and Nature plants seeds that sprout biting plants. Ice, Nature, Lightning and Holy staffs charge up: a full charge makes your next spell 25% stronger, and that spell glows from below in the element's colour. Click exactly when the crystal flashes white and you fire a "perfect" bolt for 1.5× damage.
- Second presses. Press Flame Wall again to ignite all your walls at once, ride the Lightning Spear's line to where it landed, or pull Entangle's rooted enemies together.
- Fire works for its mana. Enemies that die burning leave embers on the ground. Aim near them and press the right mouse button, and they fly into your staff as mana. In return Fire's spells cost 1.5× more, so pulling embers is part of the rotation. I wanted it to be skill-based, and I wanted the others to see it: everyone sees the fiery streak into the staff. Blaze stacks also make Fire's spells bigger, and the spell that uses them spends them.
Seeing what happens
I asked for one simple thing: everything must be visible when an effect is on. When you hit an enemy now, its model flashes in the colour of your hit, it flinches, and the hit throws off particles that match your attack: blood and a slice, embers, ice chips, leaves, sparks. Every status shows on the enemy itself: frost in three levels, vines, a curse with little skulls circling it, drops falling off a wet enemy, a sprout on a seeded one. To judge them all, we lined up 22 orcs in the test arena, one status each, and I went through them one by one. Frost got snowflakes, the curse became more transparent, and wet enemies now drip.
The status row in our test arena: one orc per status, so I could judge each effect.
This one cost us at first. The first version roughly doubled the cost of a big fight: with a horde of 300, the effects took 12 to 14.5% of the frames, because every enemy got a second copy of its model for the overlay. The fix uses one extra layer on the existing model, and enemies off screen don't flash. Now the same horde costs 5.9%. An idea I had already approved, letting the overlay linger for a second after the flash, was dropped after measuring: it only cost frames. Elsewhere we gained: moving more enemy work off the main thread and drawing all health bars as one mesh gave our battle benchmark 13.5 to 17% more frames per second.
Two more things help you see what you're doing:
- Abilities follow your aim up and down. A Strike up a gentle ramp used to stop after 0.7 metres; now it covers 5.3. The Lightning Spear and Ice Shards used to fly level and sail over enemies below a wall; now they follow your aim.
- A calmer HUD. The hero's screen used to be full of panels. The new Clean HUD shows slim health and stamina meters only when they're not full, a red edge pulses below 35% health, and holding Alt shows everything. The old HUD stays available as Classic.
The same moment at low health: Classic on the left, Clean on the right.
Your own heroes
From the main menu you now create your own heroes: pick a class, a weapon or a primary element, and a name. Each hero keeps its own talent tree and progress, up to eight heroes. A Soldier's weapon is fixed (another weapon means another hero), and an Elementalist picks one second element after unlocking the first element's ultimate. In the co-op lobby you choose which of your heroes you bring, and the others can see it.
The first time you start the game, you make a hero. The Hunter is still to come.
The honest part: one of our automated tests wiped my own saved Fire hero, because the test's new hero took the same id. We restored it from a snapshot, and a new hero now skips every id that's already in use.
A controller for the Steam Machine
I'd like the game to run on a Steam Machine, so it got controller support. Hold LB for a radial ability wheel and flick the right stick to cast, with a light aim assist, and a virtual cursor for the menus and the Builder's view. Settings has a new Controls tab where you can remap the controller. Settings also got Graphics and Audio tabs, with display mode, resolution, anti-aliasing and frame limits up to 240 FPS or unlimited.
The controller settings. Note the top right corner.
That note in the corner is the honest status: I had no controller connected, so every check so far used a virtual gamepad. A real controller and a real Steam Machine are still to come.
Today: falling, getting up, and a reward at the end
Today's work is the clearest example of the week's theme.
A fallen hero. A hero at 0 health now falls where it stands. A clock in the middle of the screen counts down your respawn: 6 seconds, plus half a second every wave, at most 20. A teammate can come over and hold E for 3 seconds to get you up sooner, with 40% health. The enemies don't stop meanwhile, and every hit sets the help back. In our tests over LAN and over the internet, a teammate had the other player back up in 3.1 to 3.4 seconds. The sounds for falling and getting up are placeholders for now.
Down, but not out. A test picture of the new respawn clock.
The end screen with awards. A run used to end with a dry scoreboard. Now you see VICTORY or DEFEAT, what you defeated together with a portrait of each enemy kind, and a card for every player with one large and one small award. I wrote the first 38, and today I asked whether we had awards for players who do nothing. Twelve more followed, which makes 51: from OUCH. and Floor Inspector to Coffee Break (a minute without touching anything) and Clingy (sticking within 5 metres of a teammate). Hover over an award to see exactly what it was for. In the main menu, Codex > Awards keeps track of how often you've earned each one and your best result. In co-op the host draws the awards, and every PC shows the same result.
The new end screen, with made-up test numbers and our own names.
225 new pictures. Until now, most icons in the game had been drawn by scripts during development: honest placeholder work, but it showed. Today all 225 of them (ability and talent icons, relics, the Sword and Maul kits, the lobby role icons, the hero portraits and the main menu) were replaced by painted versions in one consistent style. The award emblems and enemy portraits were made the same way. To be clear about how: they were made with an AI image generator (OpenAI's, in the Codex app), in one style that I picked, and I chose and approved them. I didn't paint them by hand.
Old (top) and new (bottom), for nine of the 225.
The main menu with its new look.
And right now: achievements. Awards are for one run; achievements are for good. Beat the Warlord, the Shaman, the Ash Dragon and the Oath Regent on every difficulty, hold Ravensklif, finish the campaign's acts, win with four players, grow your heroes, plus a few hidden ones. I chose four tiers, from Easy to Nightmare, and in co-op everyone in the team earns a boss. They'll live on the Progress page in the main menu, with a banner the moment you earn one. This is being built as I write, so nothing is final yet.
How I work
I write very little code myself. I play, I write down what bothers me, and I work through it with an AI coding assistant (Claude) that builds and tests it. On Sunday my notes from playing turned into four rounds of fixes, and each round was in the game the same day. Some of what helps me judge:
- A hero test arena: a boss that stands still with endless health, groups of 5, 8, 15 and 30 enemies, and a damage meter. We checked that meter against all 72 places in the game that deal damage, and over LAN the client's count matches the host's.
- A balance model: a script that reads the values from the game's code and simulates the heroes against the waves. It's an estimate, not a measurement, and it doesn't know everything yet: enemies don't hit back in it, so armour isn't in it, and neither are the talent webs. But it warned me more than once, for example that a 4.5-metre Breaker Swing would make the Maul too strong early on. I chose 4 metres.
- Every change on its own branch, which only goes into the game once its tests pass.
And mistakes, because they happen:
- Several talents lowered enemy armour, but our enemies don't have armour yet. They did nothing. Now they raise damage taken or poison instead.
- One test had quietly stopped halfway since 4 October, so three Shadow checks hadn't run for four days.
- Nature's apples never appeared for the host or in solo play: the line that showed them had ended up inside a code comment.
Meanwhile in the team
This game is made by three people, and the other two had a big week too. Tim gave the towers ten levels with a choice of form at level 4, added the Rune Forge and runes, turned the Builder into a walking dwarf runesmith with his own hammer, introduced four enemy ranks you can tell apart by eye colour, and kept reworking Ravensklif (our first co-op siege level). Arjan built a prologue, Act 0: the Fall of the Great Wall (read his post), rebuilt Acts I to III from the campaign storyboard with cinematics in the engine, recorded placeholder voices for the story, and made the campaign playable in co-op.
How we tested
- Every change has its own automated tests in Unity, in the Editor and in Play Mode. The numbers in this post come from those runs, from our battle benchmark, and from the balance model where I say so.
- Co-op changes were tested with a host and players on one PC over LAN, the bigger ones also over the internet, with the hero on the host and on a client.
- On Sunday we played two co-op rounds over LAN with three players: Act 0 and the Shaman's Siege, then Ravensklif. A lot of the second half of this post came out of that day.
- Not tested yet: most of this week's changes in a long, real match; four players at once; a real controller; the new awards and the revive with the team on separate PCs; and a careful listen to the new placeholder sounds.
What's next
Finishing the achievements and their icons. The next batch of pictures, with the twelve new award emblems and a Blink icon. A playtest with the team of everything above, because many of these numbers are first tries. And one co-op rule for all our maps that I'd like to agree with Tim and Arjan: in co-op, enemies get more health instead of more numbers. Our model says that keeps a team about 1.15 to 1.3 times as strong as its members alone, on every map.
About me
I've been gaming for almost 35 years, and in daily life I work in coding and automation at enterprise level. Making a game with my friends is a dream I've had for a long time. I know what feels good and what I'd want to play myself, so I'm not easily satisfied. Heroes have to feel truly different, and a game has to feel finished, not half done.
With the help of AI, I can now actually build those ideas. I work with an AI coding assistant (Claude) that writes and tests a large part of the code, and this week an AI image generator made the game's new pictures. That leaves me more time for concepts, trying ideas, playtesting and tuning. The decisions are mine, like the 45% rule for the Shaman or the 4-metre Breaker Swing, and every number in this post comes from a test run or our model.
Earlier: The heroes find their voice. On the heroes: Heroes, part 3: the Sword and the Maul