Adding Item Effects for My Building Game | Chains – Devlog #4


Hey everyone, welcome back to Devlog #4 for Chains — a Settlers-style rhythm-building game I’m making in Godot.

Last time I added multi-ingredient production. For example, the Worm Cooker now needs water and a live worm to produce cooked worms.

I also introduced the idea that produced goods grant effects for our monster society — mushrooms increase the carrier cap, cooked worms make carriers faster, and so on. I hadn’t implemented those effects yet; that’s today’s focus.

Effects, actually in effect

To make effects work, I’m adding new fields to my Goods resource. Alongside the existing data (like an ID, a texture, etc.), each good now stores what type of effect it has, the maximum magnitude of that effect and which building the effect is affecting.

For now I’m planning three effect types:

  1. Increase the build limit, 
  2. increase the maximum of current goods and 
  3. unlocking new buildings

For now I’m starting with the first: build limit. Let’s look at the mushroom. It will affect Carriers (or rather Quarter Carriers which will be added later) and raise their build limit by 10. 


With that working, I’m moving on to a mechanic that influences how strong an effect is when the good is delivered.

Decay

To encourage players to optimise the rhythm of each chain, every good now has freshness and decay (see picture above). If a good arrives at The Center at full freshness, you get the full effect. With each measure, freshness decays by a set amount, so the final effect is reduced accordingly. This makes faster Carriers (e. g. Eight Carriers) more valuable and adds strategy: which goods should be prioritised to arrive on time?

Each good gets a decay per measure value. On delivery, freshness is reduced per measure and then the effect scales with the remaining freshness. For example, the mushroom loses 20 freshness per measure.

To make this fair, I’m adding free measures — a small grace period before decay starts. It’s set per good: mushrooms might get 1 free measure, while cooked worms could have a bit more because they’re cooked. For visual feedback, I map freshness to the sprite’s color so you can read decay at a glance.

To finish the logic, goods despawn when they’re fully rotten. Each good has a rot threshold; if freshness falls below that, it fades out and disappears.

Adding eighth-note carriers

Back to the Worm Cooker. Its role is to unlock Eighth-Note Carriers. First I create the new carrier type and give it a slightly different color so it’s easy to tell apart.


In the Resource, I set everything up: ID, name_key (for localisation), note_value, sounds, sprite, and importantly the build_limit. Then I hook the new building into the HUD and add the increase build limit effect to cooked worms.

To see if it works, I connect the Worm Cooker to a Water Collector and a Worm Catcher. We can build enough quarter-note carriers for this without mushrooms. 

The eighth-note carriers unlock. I use them to set up a mushroom chain. It’s noticeably faster and gives us more flexibility in our rhythms. Let’s try mushrooms a bit farther away. It isn’t at full effectiveness yet, but it’s fast enough to deliver before the mushroom fully decays.

Only with fast Eight Note Carriers is it possible to transport far away goods fast enough.

Wrap-up

That’s it for this week. I’m happy with the progress — we now have solid foundations we can extend: a new carrier type, a better connected HUD and working effects.

There’s still plenty to improve. For example:

  • What happens if the cap drops and we have more carriers than allowed?
  • How can we make it easier to keep an overview with lots of carriers moving?

If you have suggestions, I’d love to hear your feedback. Thanks for reading, and see you next time. <3

Leave a comment

Log in with itch.io to leave a comment.