Zero-K - GoogleFrog
Shield generators are a mainstay of sci-fi across mediums, and RTS is no exception. Games tend to use shields as an extra type of hitpoints, one that tends to have some advantage or is at least easier to replenish. They also make for great eye candy. So it is weird that Total Annihilation lacks shields, and understandable that almost every game it spawned includes them. Even TA modders got in on the action, although reportedly the shields were quite laggy as they reused the nuke interception system. Zero-K uses shields both in close quarters combat and as defence against long ranged artillery.

Very long-time players, or just those with some knowledge of BAR, may be wondering why Zero-K shields are hard shells, when instead they could be bouncing projectiles all over the place. This is a weirdly specific question to everyone else, but it makes sense in light of the history of Spring, the underlying engine. The default shields were repulsion shields, and while they are unlikely to make a comeback, their removal was a great test-bed for a slew of principles that came to define Zero-K design.



Shield support was added to Spring in 2005 by SJ, back when the engine was the experimental playground, as Lua scripting was yet to be added. Not to be outdone by the future wackiness of Complete Annihilation, these shields repelled projectiles, with the Zero-K hard-shell version only being added later. Repulsion shields were taken up by the TA-derived mods, primarily as a defence against late-game Big Bertha spam, and 20 years later this is still their role in BAR. But Complete Annihilation, and later Zero-K, was very much about pushing mechanics as far as they can go, and damage mitigation opens up too many possibilities to be left to languish in a corner of the game. Besides, the narrow late-game linchpin role was superbly filled by nuke and antinuke, so we set out to integrate shields into the rest of the game. We succeeded, but had to drop repulsion as a result.

Repulsion shields were fun, and it was sad to lose them, but ultimately they were unworkable. To start with, blocking plasma cannons while allowing everything else through felt too arbitrary. Consider Glaive and Bandit: both are light raiders, but one shoots plasma while the other has a laser blaster. This caused plasma repulsion to theoretically counter Glaive and not Bandit, but this was fine in prior games since raiders were obsolete by the time shields showed up. We could have designed around this counter relationship, and the missile defence lasers in C&C: Generals are an example of this, but doing so imposes a lot of design constraints. By this point we had plenty of constraints, and a diverse set of weapons designed with them in mind, so adding a hard counter would have destroyed much of what we had built. The result is that our new shields had to interact with all types of weapon.



The engine supports repulsion for non-plasma weapons, but the behaviour is inconsistent. Lasers bounce right off while rockets and missiles are turned away using their usual turn radius. Homing missiles even resume homing after they leave a shield, which looks a bit ridiculous and can make shields a liability. But the more general issue is that of cost: repulsion shields push projectiles away over time, which drains shield charge for as long as the projectile is within the shield. This is cool in that it lets an overwhelmed shield fail gradually, but it plays havoc with any attempt to balance drain rates. The speed of the projectile matters quite a bit, as does the angle at which it hits the shield, since glancing blows take less force to deflect. Particularly fast projectiles, such as riot cannons or tactical missiles, can penetrate quite deep into the shield before being significantly deflected. The charge drain of lasers was sensible, since they are reflected instantaneously, but attackers could still line up shots to drain charge from multiple shields at once.

Perhaps these issues were solvable and, with enough tweaking, we could find a way to balance the cost of repelling all types of projectile. But the nail in the coffin for repulsion is that it offers units far too many ways to be stupid. It is undeniably cool to see shots flying around, but they mostly fly back at the army that shot them. One solution might be to have units aim slightly upwards, so the shots return over their heads, but this has two issues. Firstly, it is not a foolproof default, since the best way to drain a shield is often to shoot directly at it, so whether to risk friendly fire becomes an extra strategic decision. Secondly, we have gone to great lengths to avoid having units shoot into the sky, and allowing it opens up a whole new can of worms.



In the end, the fun physics had to be put aside, and shields became hard shells that block enemy projectiles. The projectiles are blocked by detonating them mid-air, and doing so costs shield charge equal to the damage of the projectile. If a shield has insufficient charge at the moment of impact, then the projectile is allowed through. Shields regenerate charge over time, and share charge around to try to equalise nearby shields. This is a fairly simple system, but there is enough to it to dial in some satisfying interactions.

One important technicality is that projectiles explode on shields, and this can even damage units behind the shield. It has to be this way since blocking the area-of-effect (AoE) damage of explosions damage would be a nightmare, both computationally and intuitively. A shield that blocked explosion damage would also have to block damage from shots that hit the ground just outside the shield, otherwise units would be incentivised to fire at the ground rather than into the shield, which would look silly. But damage should not be blocked for free, which implies that nearby explosions should consume shield charge. How much charge? Well, explosion damage is reduced by distance, but there is the potential for shields to be stacked behind each other, so shields would have to be able to protect each other. This is further complicated by the fact that units can straddle shield boundaries, making it unclear what is being protected. So rather than block area of effect damage, we embrace the fact that AoE is effective against shields, especially smaller personal shields.



Another notable part of the shield mechanics is that the interception threshold is per-projectile. So a shield at 599 charge lets through a 600 damage projectile, but would block half the damage of two shots that deal 300 damage each. Bursty units are balanced around this fact, with an extreme example being the 3000 damage Lance that deals damage in chunks of 150 over the course of a second. Phantom, with a single 1500-damage bullet, is generally better against shields for this reason. We have even used burst to buff units against shields, such as when the double-barrel shot of the Firewalker was split into ten projectiles, each with reduced AoE and more total direct damage. The interaction of burst damage and shields is one of the better kinds of emergent behaviour: one that players could reasonably puzzle out intuitively, rather than requiring the kind of deep dive that would be required to figure out how to optimally drain a repulsion shield.

The most unusual feature of Zero-K shields is something called shield link, which causes clusters of shields to gradually equalise their charge. It was most likely added to deal with the problem of wasted regeneration, since shields only regenerate when not fully charged. Minimising mid-combat regeneration is important when fighting shields, which can be achieved via focus fire. However, mobile shield generators can negate focus fire by dancing around so that each shield gets a turn at the front. This is a case of skipping the unit AI arms race by implementing the final result, so charge from high-charge shields flows to nearby shields of lower charge, leaving more space for regeneration.

Shield link turned out to be a buff to burst damage because it caused clumps of shields to lose charge together, rather than individually. The best demonstration of this is the way tacnukes counter shields. A tacnuke deals 3500 damage, while large shields have 3600 charge, so without shield link you would need to spend one tacnuke per shield to drain a cluster enough to start penetrating it. With shield link, a single tacnuke can disable any reasonably sized cluster. All you need to do is fire the first tacnuke, wait a few seconds, then fire the followup. Charge rushes into the newly depleted shield after the first tacnuke hits, so by the time the second volley arrives there are no shields capable of stopping a tacnuke.



Shields would rather not be exploitable by tacnukes, but as we saw 25 posts ago, shield link is not optional. The downside of shield link gives shields space to be powerful in small numbers without becoming that much more powerful when spammed. This is the sweet spot we aim for across Zero-K as it encourages people to use a mix of tools, and it is especially important for mechanics that can slow down the game by preventing damage. The goal is to see a bit of shielding in many battles, rather than a lot in a few. This goes all the way back to the decision to make mobile shields and cloakers available to all factories by being available as a morph from their static versions.

On the technical side, shield link has been through two iterations. It was originally a deterministic algorithm that would have each shield poll its neighbours and move closer to the average, adjusting each neighbour by the same amount. This had performance issues and edge cases, so was replaced by a random sampling approach. Now shield link works by having each shield select a random neighbour to exchange charge with, 15 times a second. This is fast enough for random variations to average out, and it is much simpler than the previous approach.



The last issue for today concerns status effects. Weapons should generally interact with shields, and thematically it would be weird for a lightning bolt to ignore shields or to be harmlessly dissipated. But letting shields take EMP, disarm or slow damage as if they were fully independent units would be too complicated. So to keep things simple, status effects deal damage to shield charge, just like ordinary damage, with caveats. The damage numbers of status effects are quite a bit higher than those of ordinary damage, since status effect damage has to hit health thresholds to take effect. Their raw damage would completely annihilate shields, so status effects only deal a third of their damage to shields. This is one of the rare instances of damage multipliers in Zero-K, and it is still enough damage to make lightning and slow damage some of the most effective ways to drain a shield.

Shields eventually ended up in a good spot, after being nerfed over the years, and are now a powerful-but-optional tool. They play a lesser role in cross-map artillery battles than they used to, but this is mostly due to terraform offering alternate ways to hunker down and the advent of the shield-overwhelming Odin bomber. Shields are stable, although throughout this post I have tried, and failed, to convince myself to revisit repulsion shields. Perhaps that is what modding is for, and there is surely an entirely new game to be made about bouncing projectiles around. As a final note, the Funnelweb shield does not behave like other shields, but details will have to wait for another post.

This is the last Cold Take of 2025. We are taking a break over December and expect to return in January.

Index of Cold Takes

Nuclear Gladiators 3000 - Turbo Napalm
The previous patch fixed a roulette bug but unintentionally added a new bug as a side effect.
This patch will fix it.

Sorry for the inconvenience and thank you very much for your patience.
We hope you can keep enjoying the game!
The First Library Playtest - domready

Initial Wildlife and New Resources


This small but important update introduces the foundational implementation for wildlife and expands the available crafting materials.

⚙️ New Features & Content

🦌 Animals & Resources

  • \[NEW] Base-Implementation for Animals (Deer). The first wildlife creatures are now roaming the world!

  • \[NEW] New Resource: Deer Leather. Hunt deer to gather this new resource and utilize it for future crafting recipes.

Bandit the game - ☜ LEGION ☞

Hello everyone
Past last 3 years, i spent every my free time to move my game to newest version of engine. Why?
Old one had some problems with corrupting save files. It also lacked some features. But it doesn't matter.
I'd like to present to you an improved version of my game. It's still not finished, and I'd like the game to have many more quests and buildings to build, so you can build an even better city.

I fixed many bugs and added new features. Unfortunately, I didn't write down everything I changed, and over the years I've forgotten a bit, so you'll have some surprises.

Old saves are not compatible, loading old saves can cause crashes

Here is the list of changes:

  • Many new icons for items.

  • Objects will light up when you look at them, not when you are next to them.

  • The game only pauses when bringing up the main menu, in the remaining windows (e.g. backpack) the game will still not be paused.

  • The increased speed effect is no longer interrupted by actions, but loading the game interrupts the effect.

  • Equipped items no longer take up backpack slots, hotbar also had some change.

  • Quick drop/sell/add buttons.

  • Added button to hide the hot bar in the backpack.

  • You no longer take damage if you cover yourself with a shield during a heavy enemy attack.

  • unarmed combat removed.

  • New NPC highlight system, you can check name for every npc.

  • Enemy armor is now displayed next to enemy names.

  • Achievements (steam achievements in nearest future).

  • Character and npc shadows fixed.

  • The farm and sawmill have working NPCs.

  • Snapping the building/elements to the ground.

  • In build menu building now display how much you have resources.

  • Added the merchant's sign above the heads of the merchants.

  • The construction sites is marked on the map

  • Graveyards must be unlocked before you can respawn there. Simply approach them until red energy appears.

  • Better AI for NPCs, e.g. they will now react if the player pulls enemies towards them

  • New weather system and sky

  • Improved swimming system - the invisible wall near the former camp has been removed

  • Added continue button in the main menu and animation of sliding menus

  • Higher resolution of interface window textures

  • Added a scroll with a spell that teleport to the base

  • Added book with blueprints points

  • Death has no consequences, you are respawn with full health, but you lose the extra bonuses from food

  • The first 20 levels give 5 hp each

  • New system instead of hunger and thirst - temporary bonuses to health/mana/stamina from eating

  • Sort button fixed

  • Map corrected for all resolutions

  • After completing the quest from the cartographer, you will no longer get a physical map, instead you just unlock a new area of ​​the map

  • improved stability, performance and loading time

Ninja Blast - Armando Rodrigues

Recently i found that most of people are getting stuck on Ninja Blast and can't progress the story. A similar problem was happening on Alive Hunter, i fixed the problem on Alive Hunter, but i cannot do a patch for Ninja Blast because i've lost the game files.

Instead of doing a patch i'm now working on a new version, 2026 version of Ninja Blast.

I'll take this oportunity to enchance even more the game, improving the combat, scenes and adding some new exciting content.

Thanks for all the support. The new version of Ninja Blast is coming soon.

Feed the Reactor - Adam Travers
WHAT'S NEW IN THE DEMO?

  • Improved the Fuel boost Pump. When active it now also increases total Material by 30%.

  • Energy is now generated when fuel is damaged, not only when it is destroyed. this should make for smoother and more responsive energy output

  • Increased the fuel-per-second calculation time to stop the bar jumping around so much.

  • BUG: Fixed the descriptions on Rad buff, enrich buff and heater buff upgrades to have enough decimal places to show the next upgrade amount.

  • BUG: Fixed wishlist button going to discord page.

Thank you to everyone for playing! And special thanks to all those who sent in feedback and let me know about bugs! It is massively appreciated.

Cheers! Adam

Archmage Rises - LordYabo

I’m working on the new resource interaction, so I can fix it, so the quests will be completable again, so I can get the Events update out. I took out the “Hex view” in doing the Events update but that kinda broke the game, and now I need to put in the replacement sooner than i expected.

The solution is to create interaction ‘tiles’ for stuff you can do in a map location.

I’m not trying to solve it for everything, but I do need a solution that scales for all the game interactions, not just resources.

Trouble is, I don’t have a team anymore, so I don’t have anyone to talk to in the middle of the day with questions like “A or B?” Posting to Steam once a week and waiting several days for responses is too slow for the kind of micro-design decisions I’m speaking of.

I decided to do an experiment: I created a new channel on the Archmage Rises Discord server called real-time-dev-blog where I just started posting my questions, conundrums, and challenges as I work on the feature. I didn’t know if anyone would read it or respond.

But respond they did! I was able to dialogue in real time with fans just like you and collectively we got somewhere pretty good with how the resources will work.

I’m going to continue using the channel as I work each day on the feature.

Normally I do a lot of writing, but today I’ll just let the screenshots of the feature evolution do the talking:

This is where I started from before engaging the channel

Other possible interactions

Used this as a thought template for the design

Experiment with “simple” and “complex more data” types

I was just about done, but decided to take another stab at the global layout.

The channel liked this better so I continued with it.

I’m happy with where we landed for the “Resource Tile” so i started figuring out how interacting with it might look.

Tooltip vs embedding the info

A simpler organic version

I’m satisfied I’ve explored this enough, it works.

I had to figure out the kind of data that will populate these resource producers

This is as far as I got it this week. It’s in unity now in the various prefab pieces, hooked up, now I just have to get the game data displaying.

Game Design seems like the fun part of Game Development. And it is, but it is also a lot of groping in the dark looking for solutions. I’ve worked with experienced full time designers and a common trait to all of them is feeling like their ‘work product’ is low compared to all the time and sweat they poured into it. Designers generally make documents with pictures, but are afraid everyone looking at it is secretly wondering “really, it took you 3 days to come up with this?”

Real solutions look ‘obvious’ after the fact, its an iterative work process to build up to a conclusion.

Special thanks to Dagy, Odynn, KafkaExMachina, CrisisSDK, Monster Tamer Bloba for dialoguing in the channel with me!

Nov 15
Red Crucible Assault Playtest - MHG_Dev

Adjustments to Steam advanced api

Ocean killzone

Other minor fixes

Opioid visions 88 - Angstorine

Hello everyone!

We'd like to inform you that development on Opioid Visions 88 has been temporarily suspended, but not canceled. We're slated to resume in 2026.

This is due to disagreements within the studio and dissatisfaction with the game's graphics.

The graphics issue is already being addressed, but it will take quite a bit of time to prepare everything for the next levels and the Level 1 update.

This year, several more patches will be released for the demo version, fixing many critical bugs, and the game will be localized into:

Russian, German, and French.

We'd also like to inform you that at the beginning of 2026, we'll be announcing a second game. It will be developed by the same team as Ov88, well, almost...

Unfortunately, our lead tester, who also serves as our community manager, was called up for a year of military service. We wish him the best of luck!

Expect news in 2026!

Angstorine (Developer)

Nov 15
Port Authority - NFold
Gameplay
  • Ship movement direction is now automatically inferred when drawing the route, based on mouse movement and click position on the ship. It is no longer necessary to exactly select the desired direction. The old system remains available in settings.

  • Improved the visibility of very short routes.

  • Available ship thruster directions can now be seen in the ship info menu (right-click).

Visuals
  • All ships now emit smoke from their funnels while in operation, adding a visual cue for engine activity.

Bug fixes
  • Fixed a bug that would prevent ships from sinking properly.

  • Speed cycling does now work correctly when the game is paused.

  • Engine sound does now working correctly in loaded games.

  • Music does now always play correctly.

...