▶






EA Update #10 - Seasonal crops
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).
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.
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.)
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.
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.
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
[ 2020-12-07 12:49:58 CET ] [ Original post ]
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
[ 2020-12-07 12:49:58 CET ] [ Original post ]
MicroTown
Snowy Ash Games
Developer
Snowy Ash Games
Publisher
2019-08-30
Release
Game News Posts:
28
🎹🖱️Keyboard + Mouse
Very Positive
(429 reviews)
Public Linux Depots:
- MicroTown Linux [82.11 M]
Build and manage your growing town in this relaxing village construction and management simulator with focus on production chains, villager desires and light combat elements.
Start with nothing and grow into a bustling town. Gather and process resources, establish supply and production chains, maintain your villager needs, and defend your settlement.
Collect and record knowledge, research and advance through technologies, and unlock new materials and professions.
Mr. Piggles agrees.
MINIMAL SETUP
- OS: Ubuntu 16.04+
- Processor: SSE2+ supportMemory: 1 GB RAM
- Memory: 1 GB RAM
- Graphics: 1280x720+. shader model 4.0+
- Storage: 500 MB available space
GAMEBILLET
[ 6045 ]
GAMERSGATE
[ 687 ]
FANATICAL BUNDLES
HUMBLE BUNDLES
by buying games/dlcs from affiliate links you are supporting tuxDB