In this miscellaneous summary update I've added a bunch of small features and fixed some random bugs.
Visuals
I worked on various small visual changes to polish up some of the areas of the game that were lacking. At least more lacking than others.
World effects
One new effect "type" that I hadn't implemented yet was global world effects, which are not tied to a particular object, but rather occur randomly somewhere in the world. Technically, these would occur within the player's viewport with some probability.
Since the trees don't have animations (and it would take a LOT of work to add those), then I added a falling leaves random particle effect:

This triggers randomly with a matching color, but more often in autumn as the trees lose their leaves.
Another obvious world effect is the ground raindrop splashes during rain, which were really missing before. Normally, people don't remark on small animations and effects missing, but raindrops is the one thing that people actually noted as missing. So I (finally) added those:

(These don't at all sync up with the falling rain, which doesn't actually "land" at any point. But I don't think this is needed, nor that it would look good with pixel graphics like this. But it does bother me a little bit...)
Fish
I also adjust the in-world fish visuals, which I never liked. I mean, what are these floating green bricks?

There is of course only so much I can do with 5 pixels. But hopefully they now look more like actual submerged fish when more subtly blended with the water color:

Of course, part of their lifelessness is lack of any animation. I think that's why other animals still look decent even if they are like 12 pixels each with hardly any features. So I added tail-wag swimming animation and some particle effects:
Water animation
I decided to finally redo and re-add water animation. This one was one of those "how hard can this be?" mini-features that I could probably write an entire blog post about.
Some time ago I did have animated water. It wasn't very well made, but it was usable. It used 2 overlapping sprites that faded between each other so they looked like flowing waves. It had an ugly shimmering effect due to cross-fading. It also didn't really fit with discrete pixel animation style.
Ultimately, I had to remove this whole implementation, because I was animating individual tiles and it was extremely performance costly. Since then the water has been a static sprite. It's not completely terrible, but it sure looks very dead.
The new version works with a global animation timer. It's not very flexible (I cannot easily change, offset or expand animation logic that applies globally), but it does allow for repeating continuously-changing animations without performance impact. Something that water waves are well-suited for. Basically, I just have 2 parameters and everything else is "fixed":

Water is generally one of the most difficult things to animate. Repeating textures are the bane of texture artists and animators. And humans are annoyingly good at spotting patterns. Since there is nothing in the water to break texture wrapping symmetry, then any repeating or out of place patterns are immediately and sharply apparent. And I am not exaggerating with an example that literally 1 pixel with a 5% lighter wave crest color becomes so out of place that the entire animation is ruined. So the sprite adjustments become so tiny that I can't even see the difference until I actually preview it in-game.
Unfortunately, a GIF can't really show this properly due to encoding as it smudges everything. But it looks something like this now:

It is deliberately subtle because I don't want there to be sharp edges or pronounced colors. Considering a third of the screen can be covered in water tiles, I need this to be subtle enough to not stand out. I am not perfectly happy with this, but I never will be and I'm gonna need a lot more effort to improve it further. Experimenting with something more complex will either take too long or look worse than if I hadn't done it at all. One has to consider that even for this version I went from 4 single-layer water tile variations to 8-per layered animated tiles, so any changes are exponentially more time-consuming:

Of course, the vast majority of such small additions don't exist by themselves, but rather in the larger context. So it really comes together when it all gets combined, for instance, rain + raindrops + waves + fish + splashes:

I do think water animation is one of those things that is basically mandatory for a game like this.
Butterflies
I am yet to add any wild animal habitats outside forests, so the rest of the map is pretty empty at the moment. To make it feel more alive, I added a butterfly "animal". These spawn around flowers and fly around:

I think this adds quite a lot to the visuals, even if it's again just 6 pixels. I think the difficulty of such features and choices is not actually implementing it, but thinking of various alternatives and deciding which suits the game best, while considering how much time it would actually take.
Worker animations
I have a bunch of worker actions that use the generic "operating" animation. Mostly, because I haven't had the time to improve them. And while it is way better than a static frame, it's still a little bit disappointing for the player to build a new unlocked work station and discover it's just a copy of another one with some pixels changed. Of course, this is very self-critical and I'm exaggerating. But I also really believe that these small differences are actually a major part of the game feeling "alive". Plus, I added sound effects to some of these, which emphasizes the presentation. Here's a couple examples:
UI
I added building (de)construction builder slot indicators (similar to work slots) so it's more clear when and if a building has a builder incoming or working. This should make it more obvious when the builder is not available or pending.

Another QOL feature is being able to cycle through all existing buildings from the build menu. Shift-clicking the button will now pan the camera to the next building (group) of that type:

I also added some broad categories to item report window so it's a bit easier to find certain items:
Sounds
I also added a bunch of new sound effects to various places, mainly animal sounds and worker action sounds. Obviously, I can't really "show" any of the sounds here. I guess I'll briefly talk about the basic sound design process, since I never really mentioned this before.
One can think of "full-stack" sound design in 4 steps or stages:
1) First of all, I have to figure out and choose what sound effect is needed when and where. While other steps are concerned with "how?", this step needs to answer "why?", which is arguably a more difficult task. Basically, I'm answering - would this actually make the game better?
2) Then I actually have to find the sound. I don't really have the time or knowledge to create my own folly sounds (and definitely not actually travel to locations to gather sounds). So I am stuck with free sound libraries and collections (and although paid libraries exist, the number of sounds I need wouldn't make this viable). The difficulty here is to actually find the sounds I might want. There are certainly popular sound effects used in many games, like monsters and tools and nature. But the more niche and specific sounds I need, the more difficult it is to find any, especially of a good quality. For example, exotic or wild animals. I had no idea how much trouble I would have trying to find and select, for example, a "fox sound". And furthermore, I cannot just pick 1 sound - I need at some 3-4 variations so that they don't repeat. This further complicates things because sounds from different recordings can sound too different, so I also have to match and fit them.
3) More often than not, especially for specialty sounds, they will be just long recordings of something or full of noise or with long silences. This means I have to adjust and clip these and extract the usable parts. Mostly, this is just messing about in an audio editor.
4) Finally, I have to get the sounds into the game. At this point, I already have existing sounds in all the different locations that I am normally adding new sounds. Mainly worker animation sounds cues or animal action sound triggers, etc. The only real tweaking I do is choose the volume levels, since most sounds from various libraries don't necessarily match, nor do I want all sounds at the same level in-game.
I should also mention that sounds aren't mandatory for the game. Everything has visual and UI feedback first. So if someone is hearing-impaired, there are no sounds of consequence that they might miss.
Full changelog
Changes
Add (de)construction builder slot display to building inspection
New game window will now remember new world options
New world options won't enable tutorial by default once completed
Camera will now not permit panning outside world bounds
Shift-clicking a building construction button will cycle through and pan the camera to existing buildings
Add worker sounds effects for Fisherman's Hut (cast, reel), Observer (scribble), Scholar and Scribe (writing), Well (crank), Hunter's Lodge (shooting bow, skinning), Butcher and Fishmonger (gutting)
Well now has operation steps to match worker animation and Water collection
Adjust several related animations, effects and sprites (e.g. Well, Scribe, Scholar, Hunter's Lodge, Butcher, Fishmonger, Beehive)
Add Wolf, Fox, Deer, Boar and Bee animal sound effects
Sound effect volume and range now scales with zoom level (e.g. louder when zoomed-in or further when zoomed-out)
Add random wind-blown leaves particle effect to deciduous Trees
Clicking any of the profession HUD top elements will open the profession distribution window, clicking food label will open item report window
Item report window now has a group selection to filter items by their main category
Add new Butterfly wild critter Animal that spawns and hangs around Flowers
Update Fish in-water sprites and add swim animations
Add ground raindrop particle effect when the Weather is Rain
Some small Micropedia tweaks
Update socials links
Add toggle to Profession Distribution window to ignore carrier delivery distance limit for construction materials; enabled by default
Shop workers can now distribute items to up to 12 Residences at a time
Tooltips for building construction will now include an infoline describing its operation
Minor text tweaks in various places
Construction workers/builders will now self-deliver construction material items
Storage building (e.g. Large Warehouse) and Import Station building workers will now also deliver items to building construction sites
+/- keys can now be used for (discrete) zooming
Minor building item tooltip wording change
Fixes
Workers won't use delivered items in auxiliaries if the resulting produced items are disabled (e.g. Brewery won't use available Honey if Mead is disabled)
Fix off-screen units positioned slightly imprecisely when rendered again
Fix Game Animal tooltip infolines not showing Carcass for Meat production and nor merging with Hide infoline
Fix units without animation changes not updating sprite to facing direction during movement (e.g. Fish)
Error when selecting items in Item Report window
Fix HUD food overview tooltip error
Constructing single-item storage buildings not showing storage selection
Copy-building mixed storage would not copy its storage selection
In-world building icons using wrong range when selecting non-center tile of a multitile building
Max carrier delivery distance value not being restored on loading a save
Villagers, especially with carts, won't get slowed down when "cutting corners" while running along roads in lanes
Fix Stoneworking tooltip mentioning "Quarry" instead of "Stonecutter"
Villagers will try to avoid walking through multi-tile building parts and better avoid walking between buildings
Some minor mistakes in various text entries
With carrier deliveries disabled or out of range, building workers would only self-deliver their own building's outputs and not collect nearby items for their inputs
Tasks, especially building tasks, in some cases would take a very long time to get assigned due to several previous optimization "combining" cooldown timers
Unit path-finding within the same tile (e.g. builders) would not correctly update their animation
Building item stack not correctly displayed while a unit is carrying one of the items from that stack
Fix items with multiple proportional delivery targets not being delivered with reduced delivery range when no destinations are available for the next target for item proportion logic
Brewery getting unlocked with just Beekeeping and no Brewing
Fix Large Storage building workers dropping 2 or 3 fetched items in the incorrect location (causing future retrievals of these items from the wrong location)
Brewing not unlocking Brewery after a recent fix
Tasks not being assigned when very few tasks exist (<10), especially at the start of the game
Rare crash during entity update
Items that have target proportion ratios would not get stored (e.g. Coal)
Disable internal frame time "buffering", which causes the game run too fast at higher FPS (90+) and doesn't properly limit minimum logical frame time due to the game engine specifics
Balancing
Individual Food Reserves base item duration in Residences is reduced from 160 to 120 sec
Multiplier for multiple Reserve Food items is increased from 15% to 30% per additional item
The multiplier is capped at 75% total reduction
Shop workers will now optimize their delivery routes (with 4+ items, usually saving more than half the distance)
Livestock animals waiting at a building (i.e. Pigs at Butcher) will now wander further away if there are no Butcher's Pens
Optimizations
Slightly further optimize internal entity caching and lookup
Villagers/animals won't run as many movement calculations every frame
Entity updates are now distributed more evenly
Entity updates have less individual overhead
Some more expensive entity updates now run rarer
Idle entities consume less processing
Less frequent task assignment attempts and a retry grace period for long-waiting tasks
Reduce redundant unit rendering processing on unit's changes
Units outside viewport view will run much fewer movement calculation
[ 2025-05-12 12:09:35 CET ] [ Original post ]