MicroTown - Rudy (Snowy Ash Games)
This smaller update adds hunting and wild animals that can be hunted for meat.

Wildlife

I added several wild animals -- foxes, boars, wolves and deer.



These wander around, graze and generally hang out in the forests. I think they add some nice livelihood to otherwise extremely static forests.

Hunting

I added a Hunting technology unlocked before the Herding technology. The Smokehouse will now also unlock with the Hunting tech.



I added a new building - Hunter's Lodge. You can adjust its operating range to cover the nearby animal location. You can also toggle which animals get hunted:



The workers will then run out to any wild animals, shoot them and then harvest them for meat. Meat can be taken to smokehouses same as from the butcher.

Smokehouses will now require Firewood:



This makes early high-quality meat food production more balanced.

I also renamed Pork to Meat and Ham to Roast since multiple animals now "drop" meat and it would be slightly confusing. I might eventually differentiate between the different types of meat, but I don't want to add more items to the market and houses at this time. This is also the reason why animals only drop meat for now and not other stuff like leather or pelts or something.

Habitats

Something to consider is where I would spawn the wild animals. As simple as that sounds, it quickly becomes a rabbit hole (har har) of design questions and decisions.

A naive approach would be to just spawn animals randomly in the forests. I would add some rules to not spawn too many or to not spawn "incompatible" animals together or to choose "nicer" less-populated locations to spawn. I can even simulate some rudimentary population growth. The player would just place hunters randomly around forests.

But there is a major usability problem with all of this. How do I explain to the player how many animals there are in any particular place? And whether they are breeding or spawning or anything else? You can may be individually track them, but this is rather silly:



And secondly, if the player was to hunt out all animals, then there is no guarantee that more will ever spawn right there and the production rate would be inconsistent at best. As a player, I can see how I might completely avoid hunting, especially if I didn't know the rules of animal spawning.

I can add further rules that prevent animals from disappearing and spawn animals for hunters. But now I'm 3 layers deep into spawning rules and this just doesn't feel right. It doesn't fit the sort of structured approach to resource management that I want to have.

So I decided that animals will instead spawn in species-specific habitats, which will have an in-world indicator:



You can mouseover the indicator for all the info in the tooltip:



I think this makes it instantly clear that animals are a "resource" in this location and that it can be "harvested". This becomes a clear source of a renewable resource chain. This is something you can plan for from the start of a new game.

There are some rules to the habitats (which are similar to what individual animals would have had without habitats). They will only spawn in forested areas on around grassy tiles. They won't spawn near buildings or roads. They will decay if the forest is cut down or things are built nearby. Animals will only spawn in habitats. These factor contribute to the habitat's "quality score".

The tooltip also explains when things aren't "working", mainly when new animals won't spawn:



Game warden

Going with habitat quality concept further, I also added Conservation tech and a Game Warden's Lodge building. The warden will tend a nearby animal habitat, improve its quality (and thus spawn rate) and prevent it from decaying even under poor conditions. This is reflected in the habitat's tooltip:



This isn't a big or important feature; I just think it's kind of cool and I haven't really seen it done in other games. It's relatively easy for me to add, yet provides an extra level of depth.

Parameters galore

The habitat feature happens to need a lot of parameters and I think it's a good opportunity to provide some technical insight into these:



Since I am dealing with randomness and procedural generation, everything that can go wrong will go wrong. Every time I add a parameter, I am essentially trying to extract order from randomness and prevent things going wrong. (For example, I would not want to spawn a habitat right next to another one. But this is a perfectly valid random result unless I stop it. Hence, I need a parameter that says how many tiles must be between habitats. In other words, I reduce the number of garbage results from randomness.)



I can change these values on the fly as the game runs. I can also restart/regenerate the world quickly while running to preview changes. Most of the time I start with a few parameters that I expect I would need and gradually add more as I find various edge cases and "problems".

For example, here's me debugging the validity of spawning a new habitat in different locations:



Some of these never get modified unless I make drastic changes. These values may as well have been written directly in code, but having them external makes initial testing much faster. Others I would tweak continuously and those parameters determine balance and gameplay. Of those, some are "public" and these are values you see in the game, in tooltips and such.

Of course, it's not like every parameter belongs to an exact "group". It's more like a way of converting design into implementation. I know I want to show some values to the player. I know I will need other constants to determine high-level decision. I know I will need to cover edge cases. Etc.

A final note is that every parameter adds maintenance. To be accurate, each parameter represents underlying code, which adds maintenance. Having parameters displayed like this together gives me a good estimate of complexity. When I see the parameter list growing, I know that I am increasing the feature's complexity and may be that's not always a good thing.

Future plans

As before, I intend to be making smaller more frequent updates. I don't want to do heavy programming or involved design during the Holidays (especially after last patch's backend work), so I will probably work on some graphics and informational stuff. I think the in-game info codex is a likely addition.

Full changelog

Changes

• Add wild Animals - Deer, Boars, Foxes, and Wolves
• Wild animals will spawn in Animal Habitats up to a limit
• Animal Habitats spawn and despawn in the world based on surrounding forest "score"
• New worlds and worlds loaded from older saver will have up to the default number of Animal Habitats spawned
• Animal Habitats show an in-world indicator and the mouseover tooltip provides additional information
• Rename Pork to Meat and Ham to Roast
• Add Hunting technology available for research from the start
• Add Hunter's Lodge building unlocked with Hunting
• Wild animals can be hunted - the worker will approach, shoot and harvest the animal for Meat
• Recently deceased wild animals can be skinned - the worker will harvest the animal for Meat
• Hunter's Lodge can individually toggle which animals are hunted
• Wild animals that die leave corpses instead of despawning immediately; the corpses eventually decay
• Add Game Warden's Lodge who will tend nearby habitats
• Herding now requires Hunting instead of Farming
• Smokehouse and Drying Rack now unlock with Hunting instead of Herding
• Add more particle effects to Drying Rack
• Add Animal and Animal Habitat concepts
• Trees no longer grow during Winter
• Forester and Florist no longer plant during Winter
• Various text and sprite adjustments
• Add a privacy notice and some extra info to save upload window; make toggle for optional Steam ID submission
• Remove the Population count requirement to unlock the Technology Branches
• Add a goal for building Town Hall

Fixes

• Fix wrong Drying Rack meat sprite layer
• Correct Unfired Pottery plural name typo
• Play the correct UI sound for road upgrading via the U shortcut
• Fix a very rare error where a task for livestock animal is assigned right as it is dying
• Fix animal inspection HUD box lingering after animal leaves the selected tile
• Farm, Gardener and Arborist planting and collecting their production entities on unfinished auxiliary buildings and on untilled tiles
• Transit toggle buttons blocking storage selection in storage building inspection HUD panel
• Fix Water Tower being treated like a Tavern and fulfilling Houses tavern resident sentiment
• Fix rare exception/stall bug when a worker switches a harvest task at the same as the target plant decays
• Fix rare exception bug when an animal regains its product at the same time as dying
• Fix Gardener and Arborist occasionally not tilling a tile just after planting in all other tiles

Optimizations

• Buildings to not look for tasks for disabled worker slots
• Remove redundant task condition checks when first deciding on a task
• Add delay between buildings failing to assign potential tasks
• Remove expensive periodic task checks that can instead be aborted later
• Check building tasks according to priority to avoid unnecessary checks
• Faster tile border and indicator re-drawing and minimize the lagspike on swapping/relocating them

Rudy
Snowy Ash Games
MicroTown - Rudy (Snowy Ash Games)
This update adds seasons and seasonal crops to the game.

The game's save format has changed, see the "Save Upgrade" section below. To preserve old saves, you will have to upgrade them.

I thought about titling this update "Winter is coming", but that just describes my update schedule.

Key changes

The game now has seasons. I went with the "standard" temperate ones: spring, summer, autumn and winter.



You can now see the season progression in the HUD and more info in the tooltip:



For plants, seasonality means that crops and produce will now quickly decay in winter:



In fact, all farm crops (wheat, barely, hemp, herbs) have to be planted in spring or they won't have enough time to fully grow and be harvested. Gardens will be able to (re)grow produce some 2-3 times a year.

Crops will also decay naturally over a period of time if not harvested:



This also means that gardeners and farms will not remain permanently idle and just stockpile ready-to-harvest fields. (You can still endlessly sow and not harvest anything, but you will need the workforce to maintain this cycle. And perishable/food items do not yet decay.)

As a consequence of seasonal harvests, the village will see a brief, large influx of harvested items. To support this, I added barns that are specifically for storing such crops:



I also adjusted how much food houses need. Simple foods (carrots, tomatoes, potatoes) will now run out quicker, while complex foods (bread, ham, cheese) will last longer. The values aren't perfectly balanced by any means, but this does move the game in the direction of complex food production chains being useful.

All crops (technically, all farm crops, gardener produce and arborist saplings) will now be planted and grown as three entities per tile (similar to trees):



Gameplay-wise, this means the space can be used more efficiently. Conversely, this means I can increase the plant growth time without sacrificing a lot of area, which I did.

Visually, having 3 crops per tile instead of just 1 means more animations and activity as they are sowed, grow and get harvested individually. The crop sprites are also simpler, more readable and easier to adjust as needed. And this also means I can add more growth stages, thus further increasing the amount of animation per crop.

Since crops are now individual entities, they are shown individually in the building inspection as well:



Crop fields and garden plots are one of my favourite features visually. I updated all the sprites, for example tomatoes and carrots:



For seasons, other plants will also change in various ways. For example, deciduous trees will yellow in autumn and shed leaves in winter:



Seasons do make balancing more difficult both for me and for the players. Basically, anything that fluctuates like seasonal crop yields is hard to balance. Previously, I could safely solve it with "whatever number feels cool", because the game just auto-balanced itself. If you lack something, you just build more production for it. It's still mostly true, but fitting things to seasons where crops actually die in winter means that I have to consider some timing values carefully.

I ended up coming up with and analyzing duration proportions in-depth and coming up with a theoretical model:



There is an interesting gameplay consequence to trying to fit production results into a specific time frame. Normally, the first crops you plant will be ready before the last ones planted even begin to ripen. This ends up with very unequal field growth and just doesn't feel right in-game. To counter this, crops will grow slightly slower or faster based on their stage and the current season (red and green cells in the above image).

In short, I have to tie all the duration values together from crop stages to year length.

This update is not too large content-wise given how long it's been since the last update. And because some of the changes I decided to make are disproportionately tricky to how much they actually add to gameplay. There are still more things I want to add related to seasons, but I decided to publish the update.

I also decided against adding more crops and grown food items, because this would bring the number of foods really high and micro-managing markets and houses demanding each type is too much of a mess. I will come up with a solution to this before I add extra foods (and supplies).

Save system

I rewrote the save system and changed the save format.

There is a lot I can discuss about the save system. This would get very technical very quickly because it's basically 95% about code specifics and how I handle each case. (In short, it's a fancy serializer. I tag my classes and variables with saving attributes and the system automatically saves the entire structure and then recreates it later. For the new system, I changed reflection-based value reading/writing to using automatically pre-generated code. The tricky part why I cannot use a ready-made serialization solution is that my code changes frequently and I need to be able to easily upgrade things through consecutive versions. With hundreds of classes and thousands of variables, the system need to be specialized to my needs.)

Here are the primary benefits:
* Saving and loading is much faster (with a caveat below), which was my primary reason to do this
* Saves can support many small entities better, which means I can have bigger maps with more stuff without exponentially increasing save processing times
* I can store metadata within the save files themselves, not limiting save info to slots and profile data
* I can potentially have an unlimited number of save files with unrestricted file names
* It's very easy to use, has minimal restrictions and barely distracts me from the actual programming, thus speeding up development
* The system is more robust and hopefully won't have to suffer breaking changes any time soon
* Saves have better data markers and extra data that allow me to debug code compatibility much easier
* Faster saving/loading means I can test old save loading/upgrading much faster and thus more often

Basically, there are no real downsides except the initial time required to implement it.

My save loading bottleneck is now the Unity engine itself and having to create/move/toggle all the objects in the scene. There is not much I can do about it and I am already employing all the immediate tricks I know of.

Here's a preview of the new save format:



Okay well, *I* think it was funny.

Save Upgrade

If you want to convert/update/upgrade your old saves (up to 0.5.x) to the new format (starting 0.6.x), you will have to follow these steps:

Open Steam client; right click MicroTown in the Library; Properties...; Select BETAS tab; switch the "select the beta [..]" dropdown to "saveupgrade" branch. Wait for the update and run the game. It will open the UI to convert your saves to the new format. Once that is done, follow the above steps again but switch back to the default "NONE" branch.



I apologize for the convoluted way of doing this. Unfortunately, I am not able to implement this conversion within the game itself, nor can I easily include a second executable in the build (especially for non-Windows). But I still wanted to preserve the save compatibility, (even though the game is in early access and "things may break" is partly expected). I also wanted to personally preserve all the older saves the players have sent in (even if the original issues wouldn't be present after the conversion).

(Note that the last 0.5.x version is also available here as "lastversion" branch and will remain there for the duration of 0.6.x release cycle.)

More updates

I've said before that I want more frequent updates, but this time I spent literal months on the next one. The main reason is that I'm working on both internal backend development and gameplay content additions in parallel. It's not too difficult to estimate the time needed for content updates (and I can always adjust on the fly). However, backend work is a complete lottery whether it will take a day or a month.

My backend is way more complex than a game of this scope would suggest. Often, the internal complexity gets in the way of content creation. But this means less bugs, more stability, better optimization, more consistent long-term changes, etc. I think it's a compromise I would like to see in the games that I play.

The reason for complicating things is that I have always loved games with attention to detail. This is also the design philosophy I am taking. For example, items stocked at buildings or placed in granaries or sold at markets aren't just "combined" into an internal counter. They all still exist as independent entities with all their attached data. For example, I could "poison" a tile next to a smeltery and then track it all the way from growing a crop there to being harvested to being stored and then brought to the market and sold and taken to the house to the villagers who eat it and get sick.

Future plans

I have worked on quite a lot of features, just haven't completed any fully. I am fairly confident that I can release next several updates much quicker. In the nearest future, you can expect more season stuff, weather effects, wildlife and hunting and an in-game information codex. These are most complete features that I can finish before I approach some of the larger planned changes.

Full changelog

Changes

• New save format; old saves (<=0.5.x) are no longer compatible, but can be converted via the separate build on Steam's "saveupgrade" branch
• Crop Fields, Garden Plots and Tree Nurseries and their fields are reset
• All props (like trees and such) are reset
• Added Seasons - Summer, Autumn, Winter, and Spring
• Added Season HUD showing the current season
• Farm, Gardener and Arborist now grow their production as individual plants and not "as a building"
• New world prop objects for all the plants: Carrot, Tomato, Herb, Seedling, Wheat, Barley, Hemp, Potato
• Cultivated plants (crops, vegetables, saplings) are now grown 3 per tile and are planted and harvested individually
• Cultivated plants have more growth stages
• Cultivated plants now decay after some time of not being harvested; they will stay around in their decayed variant for a while
• Farm crops will slow or increase growth based on Season tending to be harvestable in early Autumn
• Farms won't plants crops in Autumn (since there isn't enough time for them to grow)
• Farms and Gardeners won't plant crops in Winter
• Crops and most plants will now quickly decay/rot when Winter arrives
• Garden Plots, Crop Fields and Tree Nurseries now show in HUD what crops are growing there and their growth progress (similar stages are grouped)
• Add Barn building to store intermediate harvested items: Wheat, Barley, Hemp and Herbs
• Trees (i.e. Maple and Spruce) will change leaves/needles as Seasons rotate
• Most plant sprites are adjusted or expanded, some shadows added
• Simple foods ( Carrot, Tomato, Potato) are consumed at a faster rate than complex foods ( Bread, Ham, Cheese)
• Flowers can be harvested by Bees more times
• Shift-picking building for copy building also copies the worker slot status (i.e. the number of workers)
• New less harsh pickaxe, axe and shovel sound effects

Fixes

• Cheese food amount missing from some formulas
• Tavern now serves a random item instead of prioritizing Beer over Mead
• Various particle/effect issues
• Some missing and incorrect task/command description labels
• Building workers will now work at the closest auxiliary as was intended (instead of randomly most of the time)
• "Replant tree" goal to show counter for Trees and not only Maples
• UI/HUD changes would not invalidate a tooltip properly and cause it to "stick"
• Fix road construction button tooltip bad syntax

Optimizations

• Eliminate lagspike when changes occur to tile borders, overlays and/or ghosts due to having to modify all tile game objects
• Much less overhead (such as when creating a world or loading a save) from having dedicated border, overlay and ghost sprite renderers on every tile game object
• Much less overhead from having multiple hex tile-shaping colliders on every tile game object
• Very slightly faster lookup for the current object under mouse, including much faster tile lookup
• Start preloading internal world objects while in main menu to reduce world entry times
• Reduce the number of redundant rendering
• Slightly faster animation processing

Rudy
Snowy Ash Games
MicroTown - Rudy (Snowy Ash Games)
This small update adds a soundtrack to the game.

Key changes

The game now has a proper custom soundtrack made by composer José Ramón "Bibiki" García. There is the main theme and 8 gameplay tracks. This is obviously not a large update, but I'm super-excited about the new music and wanted to add it to the game as soon as possible. Previously, there was a single gameplay track running on a loop. It was a lovely track, but it got old really, really fast. And it was a stock track, so not original work.

I also needed a proper music system to support multiple tracks and proper transition between them. It's mostly just picking a random track with a bunch of rules about not repeating things. There is one interesting consideration though. If you've ever listened to a soundtrack/album on repeat, you know that your brain learns which tracks follow which. Even years later, you can instantly tell which song will follow next. This is something I wanted to avoid, so the music system stores the history of recently played tracks and avoids repeating the same consequitive tracks.

Here's an example of a random track order:



You can see that all tracks appear roughly equally, but the order is different and there is always "spacing" between the same track.

Here's an example of the sort of debugging I may have to create to support a new system, like the music system in this case:


You can see a bunch of things that hint at the internal logic. I could probably make a full write-up about all the decisions and details of the music system, but now I'm just padding this update post :)

Future plans

I am currently working on the season update and this is my planned next update in the near future. It's about 85% complete for the immediate milestones.

The main reason for the update delay is that I had to work on a new save system. I will talk about this properly in the next update post. Unfortunately, new saves won't be compatible with the old save format. However, I intend to release a separate save upgrade release of the game that can perform a one-time conversion of the saves should you wish to do so.

Changelog

Changes

• Added new game soundtrack (menu track and 8 gameplay tracks)
• Gameplay tracks will play randomly, but avoid recent repeats or following the same order
• Music tracks swap with an interval in-between (instead of cross-fading)
• Music toggling now quickly fades out/in the track (instead of instant switch)

Fixes

• Selecting between buildings with different item transit setups would not update the HUD transit selection buttons properly

Rudy
Snowy Ash Games
MicroTown - Rudy (Snowy Ash Games)
This update brings changes and an expanded framework for technologies that will drive the future expansion of progression features. (I know this sounds a bit abstract and wishy-washy and this update is a little bit all over the place.) In short, I added a bunch of technology-related stuff.

Key changes

The big change is the way the knowledge is gained. A new Scholar building will generate research points. However, it won't just "magically" produce points. The worker will have to visit nearby production buildings, observe their operation and return with their findings. This will earn them a knowledge point.



So the player will have to actively "produce" knowledge. And the bigger the settlement, the more the opportunity for knowledge (as it realistically should be) and thus quicker expansion. So while it's perfectly possible to have a village with a minimal number of buildings (and I'm sure I'll add an achievement later), it's not as fast.

To that end, there's an obvious restriction to production buildings that can be observed -- they must have generated enough "observable knowledge" by being actively worked. In other words, you cannot learn from idle buildings. To help visualize this, I added appropriate icons to observable production buildings when selecting a scholar:



Once papermaking is unlocked, the Scholar can use Paper to record Notes about their observations:



These notes are now required by the Scribe to make the Codex books for knowledge:



Previously, these got "magically" written up with knowledge. So if Scholar learns from practice, then Scribe works out the theory, so to speak. The goals will still provide small knowledge boosts, but much less for later techs than before. So the player needs to build Scholars. I feel it's an opportunity to add more depth to technology/discovery mechanics in a way that actually explains where the knowledge comes from. I'll see how it goes and may be add more flavour to these interactions later.

Another big change is that there are now several (future) technology trees:



These are production, civics, economy, and culture. The current techs are all in the production branch for now. I might still rename or change the new ones, depending on what future features make most sense. The new trees are basically empty, but I will be adding and adjusting techs as I add the relevant features.

The tech trees unlock automatically based on the population:



This is primarily so that I don't overwhelm the player with a hundred techs at the start. But this works intuitively too -- the community has to advance far enough to worry about more than just survival. First, civics or population needs; then trading and economic growth; and finally culture and entertainment and such. Kind of like that needs pyramid. At least that's the rough idea, we'll see how it goes.

I also made a dynamic arrow system that can connect everything neatly:



Except, hold up... does Cheesemaking require Linen? 🤔 I didn't realize I would have this problem, so I needed some special cases and tons of extra sprites:



Such a small change making all the difference. In fact, the number of sprites I ended up making is rather ridiculous (and I didn't even make "exotic" combos for things I don't expect):



All in all, I'm pretty happy with how it turned out:



This also made me appreciate the work that must go into making tech trees and such in other games.

The Monument now requires a few more techs, one from each branch:



This will be the direction I will be heading and expanding until it's a sufficiently epic project to become a "world wonder" objective. I am avoiding just adding tons of techs for now, because I want them to feel sufficiently diverse.

I've also been working on various delivery-related backend improvements. One notable addition is that buildings now have "demand" for deliveries. This demand can be thought as priority for buildings that have less items than others. However, distance is still a considerable factor. Previously and when there aren't many items available, only the closest building will get items:



However, once there are more items, the further buildings will also start getting items:



This isn't efficient for immediate processing, but I think it feels more natural and intuitive. So I'm happy to sacrifice some marginal efficiency for more spread-out deliveries.

The settlement's starting layout has changed as well to a more ragtag arrangement (town hall and warehouses are now unlockable):



I did a whole lot of additional UI work, including standardizing many UI elements, adding icons, and various QoL improvements. Here's an icon creation example:



I have also added automated tests for various simple gameplay scenarios. This adds a bit of time to development, but it also saves me a lot of time should I accidentally break something (this has happened quite a few times already):



And of course, the most important update, a cobweb:



As always, I did a good chunk of work on the backend as to not accumulate technical debt and to keep updating on a steady (if not as frequent as I would want) schedule.

Iterations

I don't usually go into detail about iteration and features that don't make it in. But I think it's important to mention the direction I considered but decided against, because it sort of explains what kind of game this is. (And because this update is twice as late due to redoing a bunch of things.)

Firstly, I was going to split techs into tiers/levels:



And these tiers would have to be unlocked. And for that I added a bunch of town milestones or "town stages":



Gameplay-wise, this would stop oneself from rushing technologies before having established a stable settlement, including an adequately-satisfied population. It also would stop the village from advancing with just a tiny population or only satisfying basic hunger needs.

This felt too artificial and not really the sort of "milestones" that a real settlement organically goes through. Or rather, such stage labels normally come as a consequence of organic development and not because the population decided to "advance to the next stage".

So I added "civic branches" that would drive the direction of development that closer represents the sort of governing decisions and planning that might be done:



One would have to choose what direction to take once all requirements are satisfied.



This meant the town stages would gradually "unlock" when enough civic development has taken place:



At this point, I was unhappy with the whole premise. These are features that artificially limit progression. It's a blurry line of what is "artificial", but a menu window telling you to "get X things" for undisclosed reasons likely fits. I think a game can easily become unfun if such restrictions are overdone. At the same time, they can serve as concrete goals. So I wasn't sure what to do at this point.

So I decided to get rid of town stages and just leave the unlocks:



But after playing around with it, it still just didn't feel right. I am having trouble just explaining it succinctly. In fact, none of this felt right and was just taking steps away from in-world gameplay and into menus. Now, I don't consider heavily UI- and menu-based games to be bad design or anything. I am sure this could work in a different game. But I don't think such direction fits MicroTown.

So, in the end, I made the call to scrap most of this and go back to focusing on in-world features and fewer separate menus. At least, nothing that feels too artificial. At this point, I had also planned and designed a whole load of future civic branch features and I am going to implement them as part of technology unlocks instead.

Future plans

I am not completely over some sort of civic development direction. One such path is adding "policies", which would allow the player to shape the high-level development of settlement in different directions (as opposed to tech tree(s), which are basically linear). However, with hindsight of the iterations above, this will not limit the progression, but rather enhance or change it. This would be a pretty large feature (and it will likely not be in the next few updates).

I also want to work on a bigger objective building than the current monument. But this requires me to rewrite the building and construction logic to allow larger building footprints, construction stages/upgrading and multiple builders. This would be a whole update by itself in terms of work. But I feel it is necessary to make buildings feel grander.

Some of the new buildings, like bursar or hospice, hint at the sort of "city service" management direction I plan to work on. This involves a lot of individual moving parts, so I will be adding them gradually one at a time. I have mentioned before that I dislike the current "happiness" system, because it is too broad and too vague. So I will be replacing and expanding it into more logical "sections", like health, education, entertainment, etc. — the sort of stuff you would expect a population to need and care about. This way the player has clear targets, such as "raise health", and ways to accomplish this that vary from specialty features to mixing together with all the other needs and production chains.

I also need to make a "bonus system", broadly speaking. If policies or special buildings add or deduct some sort of bonuses (like work efficiency from happiness at the moment), then I need to show this in a consistent manner and this means having a solid system to begin with.

I will also likely do a couple minor updates with smaller feature sets, because I've been working on random stuff in parallel. For example, I've made some cool weather effects ages ago, but still have not added them. There is no "weather" or "climate" or "seasons" in-game (yet) and having it rain or snow wouldn't change anything practically. So on one hand, making such additions is only for some visual variety and I could add them sooner than later. But on the other hand, I really want there to be gameplay difference (like crop growth or something), so I've been postponing finishing it.

In short, there are a lot of plans and much work to be done. But I do have concrete goals and designs for the steps to reach them.

Price change

I will raise the price of the game from 8$/6.6€ to 10$/8.2€ at some point. I believe the game is in a solid state and offers enough content to warrant a higher price point.

Full changelog

Changes

• Scribes now require Scribe's Desks and Research Notes from Scholars
• Technologies now come in 4 branches - Production Technologies (where most of current techs are), Civics Technologies, Economics Technologies, and Culture Technologies
• Tech branches require a Population threshold to unlock
• Tech costs increase as more techs are unlocked (there are still several cost "tiers")
• Rename "knowledge" when referring to unlocking techs to Technology; keep the term Knowledge as the "currency" for unlocking; adjust tutorial and other texts
• Add additional UI for technology panel, such as branch tabs and tech connection/progression arrows
• Goals still award some Knowledge, but not enough after first few techs
• Add Scholar building that continuously gathers Knowledge from nearby active production buildings
• Separate Papermaking tech (i.e. Paper) from Bookbinding (i.e. Blank Book)
• Add Research Notes production from Paper at Scholars once Papermaking is unlocked (without Paper, they will still gather knowledge, but not produce notes; this can be disabled on a per-building basis)
• Scribes now have auxiliary Scribe's Desks required for operation
• Scribes now require Research Notes in addition to Blank Books to produce Codices
• Scribe's operation now takes significantly more time, but 3 workers can work from the same building
• Library now produces 2 Knowledge per Codex
• Town Hall is now (de)constructible and unlocked by Town Hall. however only one can be built
• A new settlement starts with a Tent (instead of Town Hall) and Stockpiles (instead of Warehouses and Granaries)
• Add a Camp Site starting/default tech to "standardize" what technologies lead to what; Dirt roads now require this tech
• Roads now require Stoneworking and Camp Site technologies (practically, this doesn't change anything, because those are unlocked from start)
• Add Storage tech that Warehouses and Granaries now require; add corresponding goal
• Monument now requires Monuments technology (instead of just Monument Schematics, previously "Monument Construction"), which itself requires Monument Schematics, Monument Design, and Monument Financing from all the tech branches
• Add Architecture tech unlocked by Papermaking and required by Monument Schematics
• Various minor technology changes
• Update tutorial to include building a Scholar
• Deliveries are now prioritized to buildings that have none to fewer items and deprioritized if they have a lot, effectively leading to a wider item distribution rather than nearest/most effective
• Certain buildings, like Scholar and Market Square can now receive items even at long distances
• Add separate sprite for when Crop Field, Garden Plot and Tree Nursery are harvested but not yet collected
• Indirect outputs (currently, Pigs from Ranches) are shown with other "real" output items in building inspection HUD
• Add U shortcut key to upgrade the selected entity (currently, Roads)
• All buildings now require holding Shift to continue building multiple; explain in tutorial
• Add gameplay option to always build multiple by default
• Add various additional concepts with tooltip explanations
• Change various UI sprites and icons; adjust many tooltips, texts and UI elements
• Construction HUD button column now always shows all buttons (practically, village/town building button is now always shown)
• Item report window selected item overview label with the total amount and storage amount versus capacity

Fixes

• Buildings that have auxiliaries producing items as input not working (Potter, Beekeeper, Brickyard, Wool Scourer, Carding Mill, Cheesemonger)
• Villagers not delivering multiple items to Market Square stalls.
• After loading a save, villagers being reported as ready for tasks when they are not yet, then sometimes failing delivery assignments
• Villagers bundling Market Square distribution deliveries that are too far away from each other (practically, different market)
• Villagers bundling deliveries of items on the ground that are too far away
• Construction occasionally halting when both stone road and building sites are pending and a bundled material delivery is scheduled
• Deliveries not being assigned with items remaining waiting and carriers remaining idle potentially forever on busier worlds where generated delivery count exceeded the update capacity
• Fix flag wave animation "direction"
• Fix mistakes in various texts and tooltips
• Construction HUD window becoming laggier after repeated world entering
• Fix tooltip panel text alignment issues
• Fix item report button clickable area overlapping nearby buttons
• Fix villager not holding carried item properly after picking it up for certain actions

Optimizations

• Deliveries are assigned faster on busier worlds
• Displaying texts that contain formatting/links/icons is now much faster and allocates comparatively very little memory

Rudy
Snowy Ash Games
MicroTown - Rudy (Snowy Ash Games)
While I've have been working on the next update, a lot of additional delivery-related stuff crept in. So this patch is to summarize more of the bigger delivery-related changes.

Key changes

Villagers can now deliver up to 3 items at a time. Originally, I didn't want villagers to carry more than one item, because I wanted the screen to be filled with the peeps running around. This is a subjective reason, but then again, so are many of the decisions I make anyway. But in the end I convinced myself that having multiple deliveries per villager is actually perfectly fine.



If there are enough carriers, then most deliveries are currently still for just one item, because carriers run to deliver as soon as possible and don't know how to "trade tasks" or "add items" to their current delivery. In fact, the only reason they would need to carry more is when there's not enough carriers.



The item stack size is now 12 (up from 4). This means way more items can be brought and stored at buildings. The actual difference is mainly noticeable for larger maps and farther deliveries when carrier numbers and distances become the bottleneck.



These two changes shouldn't really affect small villages much, but should have a more major impact on larger villages and more spread-out villages.

Technicalities

So here's my "fun" design problem: pretty much all delivery issues I have or had can be solved by having more carriers. In fact, all my fixes and extra features are 85% mitigation of low carrier numbers with more elaborate ways to balance deliveries. And I am now mitigating the mitigation of these features...

Take this chain of delivery logic as an example:
• Only carriers used to carry items to a building (but this meant workers idled while a compatible item sat nearby)
• Then I made the workers themselves carry a nearby item (but this meant they spent half their time carrying instead of working)
• Then I added weights to prioritize carriers (but this meant single workers would still carry items over a far carrier bottlenecking their own production)
• Then I made worker wait a bit before deciding to carry (but this meant extra-far carrier was chosen even if the worker had nothing to do in multi-worker buildings)
• And then I made worker not prioritize work if they had none or there are others already working
[/olist]

This isn't too bad, but there's the rest of the game to consider. The biggest difficulty is adding all the tasks and commands that a villager could potentially do and then making sure everything is linked up correctly. I have an upwards of 200 commands right now. And more than half deal with deliveries.

Every item in the game is "real" -- it exists from the moment it is crafted until it is consumed. When a villager picks up an item or puts it in storage, it doesn't become a "number in a spreadsheet", it is still the same actual item with an in-world state, location and any history or properties it may have. The UI might not show it:



But all of them are separate internally:



Of course, all of that and other similar decisions were deliberate choices on my part. I knew I was adding complexity and difficulty for myself. But I really want the game to remain true to its simulation nature as much as possible.

Future plans

My future plans are pretty much as they were before. I'm working on the next update and it's most of the way done. It will add some high-level progression milestones and steps to the city as a whole. It will not hugely affect gameplay (yet), but I want to see how it feels and works before committing to further changes. There's also many other small changes that I can publish.

There are still various major and minor changes and improvements I want to make to the deliveries. But I will work on these at a later date, because they aren't critical and I really want to get the next update out soon.

Full changelog

Changes

• Change item stack size (i.e. building inputs and outputs) from 4 to 12
• Villagers (both carriers and workers) can now carry 3 items simultaneously for deliveries to building inputs and storage as well as building and road construction sites (it has to be the same source and target)
• Villagers carrying 2 or 3 items of the same kind will show a 2/3 stack sprite of these items (instead of a Basket)
• Villagers run slower when carrying multiple items
• Workers at buildings will prefer to continue their trade work rather than delivering items (e.g. Well worker will keep pumping Water instead of immediately delivering it)
• Rename "Book" to Blank Book to mitigate usage confusion with Codex

Fixes

• Pottery Wheel getting stuck in last production step thus providing infinite Unfired Pottery
• Fleece Tub potentially being able to skip needed Water for repeat operations
• House sentiment box tooltips not working
• High construction delivery priorities being ignored when there are many construction sites
• Clay Pit and Sand Pit not resetting the digging step, thus allowing quick item gathering
• Sound not playing on game launch if audio options background toggle is disabled
• Error when changing something in UI for inspected entity right as its state changes invalidating that change (e.g. switching construction priority of a building right as it is completed)
• Leaving a world to main menu with a window open and starting a world again would get the button responsible for that window stuck
• Top HUD tasks overview icons and numbers will now report based on tasks/deliveries/items that have been queued/waiting for a little while, thus preventing them from fluctuating wildly (e.g. on larger worlds they could be permanently in the red, while in reality all were being assigned, but with a short delay)
• Carriers would also wait a short while before accepting item deliveries like building workers (mostly just having a small pointless delay, but rarely also making an inefficient delivery choice)
• Building workers will not always prioritize their own task over delivering items if there are already other workers working (thus avoiding a case where a really faraway carrier would be called for something a worker can deliver nearby)
• Farther distances over which an item will be chosen for a delivery grows gradually over time (thus having a short grace period where a closer/nearby delivery could be chosen even if it becomes available after the item)
• Rare error when a supply task with multiple items was aborted
• Selecting a building would become increasingly laggier each time a save was loaded
• Items being dropped or consumed in some cases would momentarily be available and passed to threaded delivery processing causing them to be occasionally pointlessly picked for delivery only to be discarded
• Items would not get delivered when their internal delivery proportion demand values reached extreme thresholds

Optimizations

• Only several alike items from a larger stack (previously storage, but now also inputs/outputs) will report for delivery processing, thus reducing number of entities to check
MicroTown - Rudy (Snowy Ash Games)
This summarizes the changes after the delivery update. There aren't many significant additions, mostly just usability improvements. (I kind of skipped the patch update after the animal update, so I want to post this one at least. And I can't devote all time to tiny features when the main game is waiting, although I try to ration in a good bunch of QoL stuff.)

Key changes

The one big thing is that the game got new commissioned cover art that I'm using for Steam and in-game, and just generally for promotional material.



I added global item distribution, which determines which items--roughly speaking--have priority over others. All items still get their chance, but some get more depending if they have a high weight and if they haven't been delivered recently. I also add nicer bars rather than number that weren't actually representative of an actual "proportion" value.



I started some preliminary work for better explanation when placing buildings about their areas and requirements. Mainly, these are important during the very first tutorial. But they also introduce any new building's "range" and I can add additional notes in the future. The "label" system itself lets me quickly attach a label to any tile/location, so I can show such hints.



I readded the labels for tasks tooltip (because it wasn't really obvious what the icons meant), but in a much nicer way than before:



I spent a lot of time debugging deliveries and fixed a lot of various issues and problems, not to mention tweaking many backend numbers. I would love to make some in-game UIs to show the details of the things that I can only print out (badly) in development debug locations.



I have been thinking back at other games that do logistics and some of the "sacrifices" they have made so that the overall system runs more predictably. I have from the very beginning gone for a very simulated logic, where every person and every item and delivery are "real", that is the actual item is delivered to the actual building by that actual villager, etc.

I also worked on increasing UI sprite readability, especially intractable buttons versus generic panels/boxes. I will likely work on these further, but for now they all have their own consistent custom sprites and I changed them to at least use the right "logical version".



I added some icons for building operation. These are the sort of things I add because, simply put, I like them. I like watching things happen and I like if a game doesn't hide this from me. So I could literally watch a progress bar if I knew it represented something "real" in-game. I started added icons here too and I will eventually add them to many other places.



Technically, I redid the whole backend for how buildings present their progress steps. They were very much literally the same steps the villagers follow logically to complete tasks. I have not added anything different yet, but now I can and I expect to tweak these for the needs of various buildings.

Also trees are now known as maple and spruce and got new sprites:



Future plans

Always a difficult question and a tough commitment. For example, I had to do the delivery update to be able to support future expansion, even though I really want to work on endgame and such. It took a lot of time and I could swear that for every thing I fixed, I broke another two.

So I will likely work on town progression next, which is--roughly speaking--milestones/stages/tiers that you have to reach and unlock. Sort of like hamlet → town → city or some such. I guess it's sort of like the "era" in civilization/empire games. This would pace the gameplay, pace the technology unlocks, and set up a hierarchy of progression (something like goals → techs → milestones → objective(s)). I am still unsure about any details, because I will have to design and try things out first. But I am fairly sure that the focus will be these town growth tiers. They will require some conditions, like a number of unlocked techs or population size and likely future things. Technologies will likely become tiered as well.

While likely not for the next update, my ideal plan is that every town tier (besides being a goal itself) serves to unlock a new mechanic and add some sort of meaningful specialization. I won't speculate too much about this because I really have no idea yet. All I know is that I want an overarching "progression" flavour to the game, if that makes sense.

Eventually, I will also expand the residential side of the town. Again, I don't want to speculate, but a natural town progression would imply villager class/caste progression and corresponding residential needs. If my design and plans work, then I can gradually insert these features additively, because they all build up on the same overall premise.

Full changelog

Changes

• New background and title
• Add label to building work and auxiliary range when placing buildings
• Make construction delivery selection weights higher, especially for priorized ones
• Add small note to Quarry tutorial that Rocks may not be nearby
• Add warning label if placing a building in a location with no compatible tiles for auxiliaries (e.g. Quarry with no Rocks nearby)
• Add max range label when placing buildings with movable operation location (however, there is no outline for now)
• Add extra labels when constructing buildings during first tutorials
• House supply delivery is greatly prioritized over other purposes
• Market Square supply is somewhat prioritized over other purposes
• Construction sites will follow build order even closer
• Add global item distribution tracking and proportions/weights to balance deliveries of different types
• Add a tab to item distribution panel for changing global distribution weights on a per-item type basis
• Item building proportions (and new global proportions) now use a "flattened" value for counting delivery targets - having many more targets will not "consume" all deliveries
• Add "progress bar" indicators instead of a number for weights in item distribution window
• Rework the "delivery" number in the top overview tasks tooltip to include potential deliveries (thus signaling lack of carriers)
• Add labels to the top overview tasks tooltip
• "Tree"s are now known as Maple and Spruce and a generic Tree link explaining trees as a concept when used in descriptions mentioning trees; adjust relevant tooltips
• New sprites for Maple and Spruce
• Rename "Usage" to "Change" in item report window for clarity
• Add toggle to audio options to disable audio when the game (window) is not in focus (in background)
• Add target building/road name to villager task description; replace "delivering" with "bringing" and "transferring" for tradesmen doing their own import and export, and to "taking" and "returning" when taking or returning auxiliary building items
• Add Food and Supply concepts for description texts; update various tooltips
• Operation windows (from bottom left menu) don't block gameplay input anymore and the menu is usable while they are open
• Adjust UI button and "block" sprites to be more consistent, pixelated and readable; differentiate clickable buttons from frames; tweak various UI sprites and elements
• Esc now closes any active window, otherwise cancels input mode (like auxiliary construction, work location selection, etc.), otherwise clears current inspection, otherwise closes open construction tab, otherwise opens pause menu as before
• Add icons to building inspection operation progress bars
• Hide items and buildings in windows (item report and item distribution) until they are unlocked
• Add gameplay option to show not-yet-unlocked features for adjusting

Fixes

• Fix certain scenarios when construction sites would not receive materials
• Coal tooltip no longer talks about Coal Maker
• Item deliveries are no longer "skipped" due to a lack of immediate carriers and round-robin selection favouring items due to their arbitrary order
• Older loaded saves with missing path coordinates will not hang game on busy worlds waiting for paths
• Units won't lose their paths (as quickly) on very busy worlds
• Animals being led will not lag behind the villager if they are walking quicker on roads
• Building workers would not deliver their own output items (only fetch input items)
• Loaded saves would not restore Pigs pending being led
• Fix inconsistencies for top overview icons not changing when there are moderate issues
• Fix location where villagers stand when chopping Trees
• Count Corpse as "production" for item report window stats (technically, all deaths produce a corpse)
• Memory leak due to a cache list keeping hold of removed entities
• Animal harvesting task description saying "delivering"
• An exception when a tooltip is being shown but data changes on the same frame in a way that would show invalid values
• Volume sliders now use logarithmic formula to fit the actual loudness better
• Fix outline for road icons (e.g. construction menu, selection)
• Options run in background check using incorrect tooltip
• Checkbox control not storing its value
• Unit distribution panel wrong text labels


Rudy
Snowy Ash Games
MicroTown - Rudy (Snowy Ash Games)
This mostly-technical update brings a major rewrite of the game's backend delivery decision-making system. There were a lot of small and larger issues surrounding item delivery, warehouse use, delivery priorities, inefficient routes, carriers idling, etc. At the end of the day, I couldn't solve many of these without adding substantial complexity and processing time. So I rewrote the system to run in a separate thread and be able to handle more workload and thus more logic and future changes I will need.

Key changes

A major change is to civilians. I did not like how their only “job” is to deliver goods from markets to houses. It sounded cool in theory, but residence deliveries were disproportionately cumbersome in practice. In fact, many players weren’t clear on when and why they idle. Instead, I made workers deliver the supplies to houses. However, that brought another problem that now half the population is ferrying residential supplies. So I made workers able to carry multiple “sold” goods at a time:



Civilians are now basically children:



A few players remarked that warehouses (and granaries) don't work well at all. And that's true -- their purpose was cold storage rather than active use or buffers. But I realize that when a player builds a warehouse somewhere between the producer and the consumer, then their intention is likely to “buffer” the items through it. So the deliveries will now accept retrieving from and stocking to storage based on distance more than necessity.

There are still scenarios where the default logic won’t work. So I decided to allow toggling of all the permutations of deliveries for storage buildings:



To illustrate, these work like so:



(And if you see the “infinite loop” in there, that’s the one case that is not allowed; although it also means that you cannot daisy-chain warehouses).

I also received comments about tasks and worker jobs being unclear (not helped by civilians adding their own numbers to the fray). So I converted the text-heavy detailed version into a more streamlined one and excluded civilians completely:



I think I will take this approach in designing tooltips going forward – replacing text-heavy explanations with a more visual approach. (This also cuts down on any future translation work.)

Some other small changes include adding change indicators for item report window:



Storage building now show the item they are storing:



Planks no longer break furniture production due to too many construction projects:



In fact, construction and material deliveries are now done on a queue basis:



Selecting a house will now show sentiment over all houses:



And a bunch of other small things.

Future plans

There’s so much else I want to do and fix, but at some point I have to push an update, even if it’s mostly just fixing existing issues. The backend rewrite took a long time, so I will try to focus on a content update next. I also recognize that there will likely be new issues that I will iron out over time.

My main long-term goals are extending the gameplay length and adding endgame. I already began some work on this, but I postponed it because of the reports and bugs with delivery logic. This is because larger cities suffer from logistics issues and adding content that encourages larger cities will only make the issues worse. But now I really want to get back to this, such as adding stages of city progression.

Full changelog
(including 0.3.1+ stuff)

Changes

• Civilians no longer deliver items to Houses, instead regular Workers do; civilians are now children that don't work and just wander about
• Workers can now pick up and carry up to 5 items from Market Squares in a temporary Basket (only to the same House, however and one worker at a time)
• Fewer Civilians will spawn, especially at the start of the game
• Warehouses and Granaries can now toggle whether items are received from and delivered to other storage buildings (in addition or exclusively)
• Deliveries--Warehouses and Granaries--are selected to maintain efficiency rather than priority
• Logistics no longer uses hard priority for items, but a variety of weights -- distance, item state, destination, etc.
• Construction site deliveries are prioritized in the order of placing them (i.e. build queue)
• Increase building worker item fetch distance up to 20 tiles
• Carriers will take slight priority over building workers when fetching items, but workers will fetch their own items when it's clearly faster
• Items left on ground will be delivered with some priority over others; stored items will be delivered with slightly lesser priority over others
• Building workers can now fetch internal supply items themselves (i.e. Tools)
• Item distribution window now allows setting Plank ratio for construction sites
• Many small logistics adjustments
• Improve top bar task tooltip overview legibility
• Warehouses and Granaries now show their stored item in-world
• Add Water Tower for Water storage for (future) emergencies
• Selecting any House will show a sentiment icon above all Houses
• Add unlock confirmation for technology unlocking
• Cloning buildings will also copy the delivery restriction toggles
• Profession adjustment window numbers can be adjusted in increments of 10 by holding Shift
• Item report window shows growth/decline indicators for all items
• Tooltips, tutorials and other text adjusted for new Civilian-related changes
• Carriers no longer prioritize output items (e.g. sawmill) over stored items (e.g. in a warehouse)
• Add zooming (mouse scroll wheel or numpad + and -)
• Add "X / sec" per item production and usage stats to item report window
• Bees are now units like animals
• Beehives no longer automatically produce Honeycombs, but require active Bees that fly to nearby Flowers and bring back nectar, filling up the Beehive
• Workers at a Beehive can spawn the first Bee; afterwards Bees that deliver nectar to Beehive can spawn up to 2 additional Bees
• Flowers can be gathered a limited number of times before they need to be replanted and go into short "downtime" after being harvested by Bees
• Beehives now show the range that Bees will harvest Flowers
• Increase Florist's max work distance and work area slightly
• Change Flowers graphic to single flowers; add 3 more variants
• Florist now has 3 work slots
• Well is now always unlocked
• Update Mason sprite, add sprites for active work, add item delivery/retrieval steps, add custom unit animation with sound and particle effect
• Increase icon and "button" size in item report window
• Brewing Vat now assumes input item ( Barley or Mead) based on selected production (even if it hasn't started producing yet)
• Add explanation notes to profession distribution window to bring attention to how the values would impact the game
• Bees will continue spawning for full Beehives so they don't "run out" if Honeycombs are not taken away
• Bees that successfully return harvest to Beehives will always spawn a new Bee if the hive is close to "running out" of bees
• Add version number to pause window

Fixes

• Workers will pick more important building tasks first (such as milking Cows over "spawning" new ones)
• New Plank construction use ratio prevents Furniture production halt
• Building site material deliveries will not try to consume all carriers and break other deliveries
• Update Herbalist steps and HUD to show used items properly
• Rare error where a Beehive is still used by a Bee returning harvest to it
• Rare error where a Ranch worker would attempt to spawn an animal for an Animal Pen where a wandering animal decided to stay
• Fix momentary item "drop" when villagers are picking up items; adjust animation to match item elevation; add idle holding item animation while the villager is thinking
• Reduce tooltip flicker
• Units fetching stored items now properly use the building's "entrance offset"
• Many logistics issues fixed
• Units that can't find a path within a certain time will gracefully abort and retry path-finding (mitigating being stuck waiting forever in case the path is "lost")
• Tavern no longer says that it is "producing" drinks
• Graphics option resolution dropdown showing duplicates
• Occasional cases of black seems between tiles when moving the camera
• Ranch showing auxiliary build buttons for locked animals
• Buildings showing empty production and item sections if potential items are still locked
• Woolworking now properly requires Herding, without which Ranches can't be built anyway
• Multiple restarts or loads leading to game being unresponsive and hanging
• Fix building inspection auxiliary building construction button getting improperly selected
• Well not unlocked for Woolworking
• Fix window header text for victory and save upload windows
• Fix food production tooltip value for top HUD food info
• Mason not having an operation progress bar in UI
• Building workers not positioning correctly for Mason and Well
• Fix worker hammering animation offset
• Fix building particle effects sometimes not appearing
• Brewing Vat always showing Barley as input item
• Fix error when a worker aborts harvesting an animal
• Rescue animals stuck forever following a worker
• Fix error when a Bee is left without a Beehive
• Fix Bees not returning harvest
• Stop Bees making Cow sounds
• Animals won't wander on roads
• Florist not planting Flowers to replace Shrubbery

Optimizations

• Delivery calculations running in a parallel thread, now with minimal overhead in main thread
• Much more efficient one-time entity flagging for deliveries and tasks
• Faster and more efficient entity lookup (used all over)
• Memory optimization for heavy UIs and tooltips
MicroTown - Rudy (Snowy Ash Games)
Key changes

For this update, the main focus has been on adding animals as proper "units". This means they can move, have animations, make decisions, age and die, and generally interact with the game world.

For now, I added three domestic animals to see how it goes -- pigs, sheep and cows:

Pigs have basically the same purpose, but with the updated interactions:



Carriers will lead the animals from pens to the butcher, scheduled similar to carrying items.

Sheep are used to produce wool clothing:



Cows are used to produce cheese:



Both wool clothing and cheese are stocked at markets and used by civilians at houses.

I have not yet added a proper way to breed and acquire new animals. The workers are able to "spawn" baby animals in animal pens as before. I have some ideas for handling this, but many of them rely on future content (like trading for certain non-native animals).

The new items have also complicated the UI a bit, and I'm not happy with it yet. For example, there are now linen (hemp) yarn and wool yarns, and they are processed separately but in the same building with an intermediate product in-between:



I also added a toggle for relevant buildings to choose the production item (and enable corresponding input items), so that buildings can focus on a specific item rather than process all as by default. Especially, if they are not located at a place where having both chains would make sense. (I thought about making these separate buildings, but opted out to have toggleable production instead.)

I (finally) added a deconstruct tool (X) that allows quickly (un)marking buildings for deconstruction:



I also added an item usage chart section to the item report window that shows how many items are being added and removed over selected time periods:



I've kept it very simple for now and I will likely extend this in the future (it's mostly about UI and doing some maths).

There are a whole lot of other internal and backend things I've been working on that will facilitate further features.

Future plans

I want to add more animals and interactions, including wild animals and hunting. However, I need to make other adjustments to make these viable first. So I'll be adding additional features and backend stuff and adding new animals "on top".

There are certain mechanics I'm not I'm not happy with. For example, I need to redo civilian logic (especially idling) and how they choose and carry items to houses. There are now 12 different items that they have to individually take from market to houses and it's becoming a chore to micro-manage and visualize it all. Similarly, there are 10 house desires each driven by its own conditions. I want to consolidate and group desires and simplify what it means that a residence is (un)happy. And make markets more productive, especially for supplying houses.

I also want to start working on expanding endgame, adding trading and reworking research and goals. But these are all big features that will likely slowly come together over many updates.

Full changelog

Changes

• Various buildings are reset/redeployed for loaded games
• Change Pigs to mobile mobs/animals (instead of item Pig)
• Animal Pens no longer "grow" Pigs directly and Ranches no longer directly produce Pigs as output items
• Add Cows and Sheep
• Animal Pens house individual animals (Pigs, Cows and Sheep) that wander around the enclosure; workers must prepare the area and can spawn animals there (for now)
• Animals will randomly walk around and graze; animals in pens will stay within the pens
• Add animal sounds
• Pigs are now led from Animal Pens to a Butcher by a carrier
• Animals grow over time and only grown animals can be "harvested"
• Add Milk milked from Cows
• Add Cheesemonger with Curd Vat and Cheese Press; add Curd and Cheese
• "Sliver", "Yarn", "Fabric" and "Clothing" are now Linen Sliver, Linen Yarn, Linen Fabric and Linen Clothing
• Add Fleece sheared from Sheep, which can be processed at a Wool Scourer with Fleece Tub into Clean Fleece and with Wool Comb into Wool
• Add Wool which can then be processed to Wool Sliver, Wool Yarn, Wool Fabric and Wool Clothing similar to Linen Clothing pipeline
• Houses now accept Cheese and Wool Clothing as reserves; Food Stalls and Supply Stalls can now stock Cheese and Wool Clothing respectively; add the related sentiment and needed amount for happiness
• Buildings with multiple auxiliaries can now support multiple work slots; Ranch, Beekeeper, Carding Mill, Brickyard, and Potter slots increased from 1 to 3
• Buildings with multiple outputs or intermediate items can now toggle their production (and corresponding input item delivery); enable this for Ranch, Carding Mill, Wool Scourer, Brickyard, Brewery and Tavern
• Add item production, consumption and usage over time charts to Item Report window
• Adjust Drying Rack presentation
• Replace full "close" buttons with "X" buttons for most windows
• Clicking on knowledge section in top HUD overview bar opens the knowledge research window
• Add Tool tab to HUD construction menu, and add deconstruct tool for quickly marking building for deconstruction; add shortcut X when not inspecting
• Add low disk space warning

Fixes

• Villagers always facing left when randomly moving around
• Building input and output items duplicating and mixing intermediate products
• Civilians idling next to Brewery instead of Tavern

Optimizations

• First map generation or load has much faster entity creation for larger maps
• Pathfinding runs in a separate thread, now taking almost no time in main thread
• Pathfinding checks are pre-calculated on changes only and repeat lookups do not consume additional time on main thread
• Post-pathfinding path cleanup/smoothing is now part of pathfinding thread
MicroTown - Rudy (Snowy Ash Games)
For the past few weeks, I have worked on mostly backend things and quality of life features, as well as tons of fixes and optimization.



Key changes

A major issue was being able to tell what items buildings have and what is happening with them. So the building inspection window now shows selected building's items. Firstly, this provides a straight-forward "explanation" about how the building processes these items. And secondly, it shows items that are going to be delivered (lighter yellow) and stored items that are pending for pick-up (cyan):



All other places where items appear and are delivered, like houses, construction, or storage, also show the same indicators:



And furthermore, the tooltip for each item "stack" provides additional information about the exact state of items being delivered or scheduled for pickup, including the distance the villager has yet to travel to fulfill the delivery:



Another annoying issue was trying to build "on trees", which is now solved by the builders clearing the area of any trees, shrubbery or flowers first:



Buildings can also be built on top of items, and the builder will move them away before construction. Furthermore, if these items are compatible construction materials, then they will just be directly used for construction instead.

Another nicety is task status icons for the top HUD overview bar that show the active trade, delivery and construction tasks:



A red icon would mean that the tasks are missing villagers and aren't being done.

I also moved the task information tooltip content to this section's tooltip and expanded it to show additional details.

I also added a much easier way to upload a save for bug/issue reports rather than having to manually navigate to the save folder and send the saves:



And a whole lot of other small things and fixes, including several optimization passes, especially for larger worlds.

Future plans

I may have again underestimated the time it takes to fix and adjust things. And I have a long list of tweaks, fixes and QOL features that I need to do. But for the next update I am primarily going to focus on some content addition. As the main goal, I really want to add proper animals to the game.

Full changelog

Changes

• Tradesmen can now also deliver their own building's outputs to nearby buildings as input or storage
• Building inspection to show its input and output items
• Building inspection input, output, stored, material, and house reserve and road inspection material item indicators to visually show pending and reserved amounts and have tooltips list these pending deliveries and pickups for tasks, including delivery distance
• Add in-game "soft" pause button and shortcut P
• Tooltips only update every second by default
• Add gameplay option for tooltip update frequency - periodic (new default) or continuous (old)
• Adjust Herb sprite
• Buildings can be placed on tiles with items
• Builder will move items out of a tile before constructing buildings
• Roads can be placed on tiles with items and built "under" them
• Buildings and roads placed on tiles with items that are compatible building materials will use them
• Buildings and roads can be placed on tiles with obstructing props (trees) and previously-discarded props (shrubbery, flowers) will stay
• Builder will remove props from a tile before constructing buildings and roads
• Add shortcut X for building and road deconstruction
• Population overview tooltip to separate number of idle vs carrier workers and also show these numbers for civilians
• Remove Tool label from top overview
• Add task status icons and label to top overview
• Move task info from population tooltip to task tooltip
• Expand task tooltip info with additional details and numbers
• Top overview labels to update continuously periodically
• Add "bug report" button to save/load menu that allows directly uploading a save

Fixes

• Incorrect road pending construction material counter
• Housing goal requiring more villagers than the houses that it requires can provide
• Lumberjack occasionally not cutting trees when using operation location
• Fix Ham description
• Crowded villagers getting stuck idling in a tile between finishing a task and reporting for the next one if there aren't compatible nearby locations to avoid crowding
• Idle villagers shuffling around will not choose inaccessible tiles (water)
• Villagers previously stuck in inaccessible tiles (water) will be teleported to nearby valid tiles on load
• Typo in tutorial text, in Medicine description
• Fix Water not being unlocked by Bookbinding or Brewing
• Fix building inspection arrow not appearing in correct location when some items are not yet unlocked by technologies (for example, Brewery before Beekeeping)
• Fix villager path-finding skipping certain tile points and in rare cases causing path-finding to fail
• Some villagers taking a very long time to choose the next task after having juggled idle tasks
• Lack of carriers causing items to (not) be delivered based on item type and ignoring delivery priority
• Fix P shortcut for pause not working
• Fix typo in controls info window
• Building and road pending material indicator/tooltip saying that an item is being delivered, when it's only queued
• Rare profile loading failure due to data conflict
• Forester not planting trees on Shrubbery or Flowers
• Task tooltip not grouping workers that are delivering/retrieving items as workers
• Restore the flag on the Town Hall
• Invisible sprites due to off-screen optimization issues
• Top overview villager count won't show the second limit number past 1000 and won't badly wrap when reaching high population
• Brewing Vats not switching production
• Paper Rollers using twice the amount of Paper Pulp
• Rare case of tree being still used after it's removed when workers aren't available to chop it immediately
• Occasional conflict between construction clearing tasks and regular tree chopping tasks using the same trees

Optimizations

• Faster thinking for villagers going to building positions
• Faster villager animation and other moving entity updates
• Much faster carried item updates and rendering
• Faster entity lookups with less lagspikes
• Building task checks with less lagspikes
• Task searches with less lagspikes
• Villager path processing slightly faster and with much less lagspikes
• Saving and future loading larger saves is slightly quicker
• Entities off-screen are not visually updated until visible (panning camera is slightly slower than idling, but still faster than idling previously)
• Less entity logical animation overhead
• Idle input processing more efficient
• Skip redundant entity transformations (rotation, scale)
• Faster entity ranged lookups
• Reduce save size slightly
MicroTown - Rudy (Snowy Ash Games)
Key changes

For the past few weeks I have been working on adding civilian needs to MicroTown, among many other improvements. The population is now divided into workers and civilians. Workers will continue as before -- carrying items, constructing things and working at buildings. However, civilians will not do heavy work and will instead supply houses with items from markets -- food, firewood, medicine, etc. Several new items and simple early production buildings have been added to that effect. Clothing finally has a use! 🎉

Each villager is now assigned a residence at a house:



Markets have been repurposed. Civilians will come to markets, where food and supplies are delivered:



They will take these supplies to houses, where they will be stored as reserves and gradually used up:



This also brings a large change to how happiness works, which is now primarily based on how well a house is supplied:



Each house will provide one or more (un)happiness points, depending on resident sentiment, which is mainly fulfilled by keeping the residence well supplied.

This means most existing villages will end up unhappy until the new supply chains are built. I decided not to penalize high unhappiness yet any more than the previous small reduction of worker operation speed. However, extreme-size villages may not make it past this update without making the mortician very busy.

The tutorial has been updated to include housing and market explanation.

Many other improvements were added. For example, workers will fetch their own input items if there's no one closer or carriers are busy:



Many usability thing are added, for instance, I'm working through the tooltips and trying to make them more understandable and explanatory and to avoid "hiding numbers" from the player:




Reflections

Adding this civilian feature set turned out to be a much larger endeavor than I expected and took 2 weeks longer than I wanted. Partly, because I was also adding a lot of enhancement based on feedback. And partly because it was a pretty large feature that I should have likely split into a couple smaller updates.

Future plans

There are still many improvements that I need to do. I will likely work on adding various report tools (like production rate overview) and quality of life improvements (like manually clearing forests) before other stuff. After that, I want to do another content update.

Full changelog

Changes
* Separate Worker and Civilian villagers (villagers working at buildings are now called "Tradesmen" instead of "Workers")
* Houses now have 8 resident slots that get occupied by villagers and are shown in building inspection HUD
* Add Woodcutter] (with Chopping Block) and Firewood unlocked by default; add goal
* Add Carpenter] (with Carpentry Table) and Furniture unlocked with Carpentry; add goal
* Add Potter (with Pottery Wheel and Pottery Kiln) and Pottery unlocked with Pottery]; add goal
* Bricklaying now also requires Pottery
* Warehouses can now also store Firewood, Pottery and Furniture
* Houses now have residential supply item stores for all food items and Firewood, Pottery, Furniture, Clothing and Medicine that are shown in building inspection HUD
* Tavern and Market Square no longer provide global happiness
* Market Square now serves as the parent building for individual stalls
* Food Stalls and Supply Stalls now supply a selected residential food or supply item respectively for Civilians
* Civilians "work" at Houses, bringing food and supplies from markets
* food is now consumed by its residents from Houses first; understocked and homeless villagers will consume food items "directly"
* Food consumption and production info in food tooltip
* Remove requirement for minimum distance between Taverns and Market Squares
* Houses now have a sentiment for each various factors, like having food and supplies
* Additional sentiments unlock when corresponding techs become available and sentiments become important to residents once the house is supplied for the first time
* Total sentiment in a House awards or deducts happiness for the village
* Happiness is now primarily based on the total sentiment of Houses
* Tavern now provides a sentiment point for nearby Houses and uses drinks proportionally to the number of nearby residents
* New villagers spawn from Houses (or Town Hall if there aren't any houses)
* Town Hall no longer provides housing, but initial population does not require housing to spawn
* Villager spawns faster in larger population towns and will not spawn if housing, food or happiness threshold is not met
* Villager happiness from population increases in "brackets" as population grows; shown in population tooltip
* Top HUD overview bar no longer shows Clothing
* Deliveries now have better internal priorities, for example items for processing or items on ground are now chosen first for deliveries
* Tradesmen at buildings will now fetch their own nearby input items for the building if they have nothing else to do
* Stored items (like at Warehouse) now shown as icons instead of text
* Brick and Glass production buildings are now in resource building tab
* Shift-building copies now also copies the storage item, like for Warehouses
* Monument now also needs Bricklaying and Glassblowing
* Arborist and Smeltery now have more worker slots
* Victory window shows total play time
* Items now shown in a single inspection box
* Various sprite and text adjustments, various UI tweaks and layout adjustments
* Item in-world stack sprites now visually show only up to 3 items
* Add tutorial steps to include Market Square construction and related features; tweak wording
* Tutorial arrow now point to in-world building for steps that need such selected
* No parent building in range reported as issue for auxiliaries
* Idle villagers will spread out instead of grouping up in large numbers
* Idle villagers mostly walk instead of run

Fixes
* Building deliveries being chosen by carriers closest to the building rather than the (closest selected) item
* Saved game times not being shown in local time
* Items rarely being ignored when differently prioritized for delivery
* Delivery proportions not adjusted when only one building at a time requested items
* Delivery proportions incorrect entries after loading older saves
* Starting to deconstruct and then cancelling for buildings with multiple production items (like Garden Plot) would have the production item record stuck
* In rare cases, a random consumed food item could stay reserved
* Goals with item consumption not triggering updates
* Mead to only unlock when both Brewing and Beekeeping are unlocked
* Error when moving mouse across tiles while confirming operation range range

Optimizations
* Faster item and building lookup for large quantities
* Faster delivery task assignment for large number of requesters
* Faster compatible worker search with many tasks and workers
* Slightly faster save loading
...

Search news
Archive
2024
Nov   Oct   Sep   Aug   Jul   Jun  
May   Apr   Mar   Feb   Jan  
Archives By Year
2024   2023   2022   2021   2020  
2019   2018   2017   2016   2015  
2014   2013   2012   2011   2010  
2009   2008   2007   2006   2005  
2004   2003   2002