By Rob, hero developer at Three Crown Interactive · 3 October 2026
This isn't our flashiest update. No new hero, no new level. Today was about something I find just as important: making what's already in the game feel finished.
When I played The Last Bastion recently, it felt empty. The heroes fought in silence, and most spells made no sound at all. The talent tree worked, but by my standards it still looked like a concept. And if your connection dropped in co-op, your evening with friends was over. Each of these is a small thing on its own. Together they decide whether a game feels alive or half finished, and I've played too many games that stayed half finished.
In short
- Eight hero voices with 80 lines, spoken in English with English and Dutch subtitles. In combat only the ultimates speak; the other lines are for moments like the start of a level, a fallen teammate or a shield at the last second.
- 48 new sound effects, picked from 159 generated takes. Until today the Elementalist's spells made no sound at all.
- Two spells that still looked like a prototype when I playtested, Arctic Storm and Nature's Protection, got new visuals based on my own concept sheets.
- A redesigned talent tree, built around your hero instead of rows of icons, and passive paths for the Sword and the Maul.
- Co-op: if your game crashes or your connection drops, your seat is kept until the end of the run and you can rejoin. New players can join a game in progress.
- A choice between DirectX 11, DirectX 12 and Vulkan in the graphics settings.
The heroes find their voice
I want players to be pulled into this world, and for that the heroes have to feel like characters, not just a set of abilities. So they talk now.
All voices were made with ElevenLabs. The Maul came first, with eleven lines I generated myself. For the Sword, the Fire mage and Lunis, our Shadow necromancer, I wrote the lines myself, and I designed the Fire and Shadow voices with ElevenLabs' Voice Design. For the other four elements (Ice, Nature, Lightning and Holy), Claude drafted the lines; I went through them, asked for changes and chose the voices. That makes eight voices and 80 lines. Every line is levelled to the same loudness, so a quiet mage doesn't disappear next to a shouting soldier.
The Elementalist speaks as the element you start your run with. Start with Fire and you get the Fire mage; start with Shadow and you get Lunis.
What I like most is that every voice is truly its own. Each hero has a character, and the lines are written for that character. Listen to how they open a level:
- The Sword: "A whole army at our gates? Good. I was starting to get restless."
- The Maul: "As long as I can lift this hammer, you won't face them alone. Let them come!"
- The Fire mage: "Let them gather. The more they bring... the brighter they'll burn."
- The Frost mage: "Breathe slowly. By the time they reach the walls... they will be moving very slowly indeed."
- The Storm mage: "Oh, look at them all! Take your positions, everyone. This is going to be loud."
- Lunis: "My servants shall join you shortly. They were resting. I found their lack of commitment unacceptable."
Less is more: only the ultimates speak
My first version had a line for every ability. That turned out to be too much: the Sword shouted on every Strike and the mage commented on every Fireball. So now only the ultimates speak: World Ender, Endless Assault, Phoenix, Undead Army, Arctic Storm, Gaia, Stormcaller and Heaven's Gate. When you hear a voice in the middle of a fight, something big just happened.
The other recordings aren't thrown away. They stay in the game files, so if a hero ever needs more to say, it's one switch away.
Moments, not chatter
Besides the ultimates, the heroes react to moments:
- When you pick a hero or an element, it introduces itself.
- When the first wave starts, one of the heroes in the game opens the level.
- When the wall is breached, when a teammate falls, or when a teammate takes out a big group at once.
- When the Nature druid throws a bark shield on a hero below 30% health (or on itself), the druid calls it out.
- Lunis counts his own deaths. After a revive he's "Lunis the Second", then "Lunis the Third"... and after that he gives up: "Lunis the... Ah, never mind! I die too much!"
That one comes from home: Lunis dying is a long-running joke between me and a few friends from our D&D sessions. Now he dies in our game too.
From our voice promo film, recorded in the game with the game's own voice triggers and subtitles.
Who is speaking?
With up to four heroes in a game, you need to know who's talking. Every subtitle now shows the hero's face in that hero's colour, with the name of the player underneath. The settings also have a new Audio tab with sliders for master, music, ambience, effects and voice, and a switch for subtitles. Honestly, that's basic stuff, but it's good to have.
In-game screenshot. Left: the speaker's face and the player's name. Above the line: the hero's name and element.
In co-op the host decides which hero speaks and sends that to everyone as a tiny message, so all players hear the same line at the same moment. Our automated co-op tests check exactly that, over LAN and over the internet, with the speaking hero both on the host and on a client.
Spells you can hear
The game was very quiet. The Sword and the Maul had placeholder sounds generated by code, and the Elementalist's spells and seven combinations made no sound at all. A spell should feel like it has impact, and sound is half of that.
I generated 159 takes with ElevenLabs' sound effects and picked the best one per sound. 48 made it into the game: the Sword's whooshes, slices and impacts, the Maul's crack and the rumble of World Ender, sounds for all six elements and their combinations, the staff, Blink, and footsteps that change with the ground: dirt, stone or plate armour.
Some sounds needed timing work. The Flame Burst take only bursts 1.9 seconds in, so the game starts it while you charge, and the burst lands exactly when you release. The Meteor's sound is timed to its impact, not to the cast.
Heaven's Gate, from our elements promo film. The Holy priest's line: "Heavens, open your gate! Let the light judge them!"
What I haven't done yet is listen to the full mix in a real fight, with music, towers and four players. That's next.
Two spells that still looked like a prototype
When I playtested, two things stood out: the Ice mage's Arctic Storm and the druid's Nature's Protection. They worked, but they looked like a prototype. That's exactly the half-finished feeling I want to get rid of, so for both I made a concept sheet of how they should look, phase by phase.
Arctic Storm. The old storm was a glowing grid of cracks on the ground with straight streaks for snow, and two cyan rings while the mage charged it. It looked more like a sci-fi floor than a blizzard.
The old storm, from our elements promo film of 3 October.
My concept sheet splits the spell into four phases, and the new storm follows them:
- Gather (3 seconds): frost spreads from the mage's feet, wind ribbons spiral around the mage, snow is drawn in and six ice crystals circle the staff.
- Release: a front of frost runs out to the edge of the storm, 15 metres away.
- The storm (30 seconds): a snow-covered floor with ice patches and drifting snow that turns with the storm, a wall of blizzard at the edge, a swirling cloud deck and wind ribbons. When an enemy freezes inside the storm, the Frozen Cataclysm now throws ice spikes out of the ground.
- Dissipate: the storm thins out and the frost melts away.
The new storm, from our test that casts it for real among twelve walking enemies.
Only the look changed: area, duration, damage and freezing are exactly the same. In a co-op test with three players over LAN, every player saw the gather, the storm and the ice spikes.
Nature's Protection. When a hero drops below 30% health, the druid gives that hero a shield. I designed a Living Bark Shield for it: four plates of bark with vines and leaves that grow out of the ground around the hero who is saved. I made the 3D model with Meshy, an AI tool that turns an image into a model. That model was far too heavy for a game: 4.1 million triangles. We brought it down to about 12,300, with the colours and details baked over from the original.
That step taught us something. Simply reducing Meshy's rough bark folded the surface into spikes and black slivers. Rebuilding the surface at 1 cm detail first, and only then reducing it, kept the plates, vines and leaves intact.
Trigger, grow, protect and break (top left to bottom right), from our test.
The shield now tells its own little story: a green ring, plates that spiral up in half a second, a gentle sway while it protects, splinters that break off with every hit while the vines lose their glow, and at the end the plates burst outward when the shield is used up, or tip over and wither when its time runs out. If you're the one being protected, the open side always faces your camera, so it never blocks your view. The druid already said "Old bark... it bends, but it never breaks." Now you can see it.
I haven't played the new versions in a real match yet. We also still have to measure the cost of several storms in a wave of 300 enemies and see the shield in a two-player session, and the shield doesn't have its own sound yet.
A talent tree that no longer looks like a concept
The old tree did its job, but by my standards it looked far too much like a concept: rows of square icons and a separate tab for the general talents. I started from a reference image and asked for a clickable mockup first, so I could choose between layouts before anything was built.
The tree at the end of September.
The new tree for the same class. Screenshot from our layout test at 1920 × 1080.
Your class sits at the top, with its general talents around it like a crown. Below it are your first three abilities with their upgrades around them, and the ultimate at the bottom. The lines between abilities fill up with every level you buy, and the next ability opens when the previous one reaches level 3. That gate is a trial value; we'll see how it plays.
The layout was tested at five screen sizes, from 1280 × 720 to ultrawide, with a check that no node, label or button overlaps another. Those tests also caught a bug before anyone saw it: every ability you clicked counted as the ultimate. The tree is much better and prettier now. I hope it's also more intuitive, but only players can tell me that.
Numbers that tell you why
Every ability now shows which stat it scales with, for example 8 (200% of attack damage / Agility). That came from my own doubt: I thought the Sword's Strike didn't get stronger with Agility. It did. 20 Agility took Strike from 8.3 to 9.5 damage, about 15% more. But one point adds only 0.06, so the number on screen only changes about every 17 points. Now you can see why.
The Sword and the Maul also got passive paths, like the elements already had:
- Sword: Swift Pursuit (move faster, and twice as much for 2 seconds after a kill), Second Wind (stamina back for kills right after an ability hit) and Duelist (more damage against bosses and large enemies).
- Maul: Wrecking Ball (more damage when enemies crash into each other), Unshakable (less damage taken while an ability runs) and Building Pressure (a stronger Empowered hit).
The raven brings everything (for now)
During a run you buy relics at a merchant's stall. Gear and upgrades already came by raven: you stand still for five seconds and it's delivered. Now every relic can come that way. I don't want the game to turn into a walking simulator, but I don't want it to be too easy either. This is the version for now; I'll fine-tune it when the right idea comes.
Co-op: getting back to the fun
This is the one I care about most. If someone is having a great evening with their friends, a crash or a dropped connection shouldn't be the end of it.
- Your seat is kept. If your connection drops, your place in the game is kept until the end of the run. The game keeps trying to reconnect for three minutes, also on LAN.
- Rejoin after a crash. If your game crashed, the multiplayer menu shows Rejoin [host]'s game. You come back as the same hero with the same choices, and your hero kept earning gold while you were away.
- Join a game in progress. The LAN list now shows whether a game is still in the lobby or already playing, at which wave, and whether a seat is kept for someone. A new player catches up to the team's level and starts with gold based on what the team has earned so far. Kills from before you joined don't count towards your talent tree.
- When the host drops. The game pauses and the host sees who it's waiting for, with a three-minute countdown. If nobody comes back, the host can continue alone or end the game. The other players go back to the menu after three minutes, and can still rejoin from there.
From our interface test, with sample games.
The host waits for a player who dropped. Interface test picture.
Along the way we ran into a nasty problem. On Windows, after a player's game was killed, our LAN host stopped hearing anyone: for 90 seconds nobody could get back in, not even a new player. As far as we can tell, it's a bug in the networking library we use (Unity Transport 6.6.0): every "port unreachable" message from the crashed PC takes a receive buffer that's never given back. The host now refreshes its connection when that happens. Without that fix, rejoining wouldn't have worked at all.
All of this runs in an automated test that starts a host, a player and a late joiner, then kills one player's game and restarts it. It passes over LAN and over the internet. What we haven't tested yet is a real network cable pulled between two PCs, or a full game with four players.
DirectX 11, 12 or Vulkan?
Always looking for more performance, we compared the three graphics APIs on our test PC (AMD Ryzen 7 7700, Radeon RX 7800 XT). Our game is limited by the processor, not the graphics card, so the differences are small:
- In the battle tests DirectX 11 is as fast or faster: 118 FPS against 109 and 113 for the other two with a full horde. It was also the only one without a single frame over 26 ms.
- On Ravensklif, the level with the most to draw, DirectX 12 and Vulkan were 4 to 7% faster.
- DirectX 12 had rare hitches of 33 to 50 ms, Vulkan of 37 to 100 ms, probably while preparing shaders.
DirectX 11 stays the default. In Settings > Graphics you can now pick another one, and the game restarts itself with your choice.
How we tested
- I playtested the game myself; that's where Arctic Storm and Nature's Protection stood out.
- 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 and from our release benchmark.
- Co-op was tested with a host and players on one PC, over LAN and over the internet, with the hero on the host and on a client.
- Not tested yet: the new Arctic Storm and bark shield in a real match, a careful listen to the sound mix with music, towers and four players, two separate PCs with a real network failure, and other graphics cards. A full playtest evening with friends is the next step.
What's next
The Hunter is still silent, voice and bow included. The Maul's first lines still show a description in the subtitles instead of the exact words; that gets fixed. And then the most important test: playing it with friends and hearing whether it all feels as alive as I hope.
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. That leaves me more time for concepts, writing lines, choosing sounds, trying ideas and tuning. The decisions are mine, like cutting the voices back to the ultimates, and every number in this post comes from a measured run.
Earlier: 300 enemies, part 2: a benchmark you can trust. On the heroes: Heroes, part 3: the Sword and the Maul