TUXDB - LINUX GAMING AGGREGATE
 NEWS TOP_PLAYED GAMES ITCH.IO CALENDAR CHAT WINE SteamDeck
 STREAMERS CREATORS CROWDFUNDING DEALS WEBSITES ABOUT
 PODCASTS REDDIT 

 

SUPPORT TUXDB ON KO-FI

MENU

ON SALE

New Twitch streamer aggregation implemented (#FuckTwitch) due to Twitch's API issues (more info on my Discord )


Name

 MicroTown 

 

Developer

 Snowy Ash Games 

 

Publisher

 Snowy Ash Games 

 

Tags

 Strategy 

 

Singleplayer 

 

 Early Access 

Release

 2019-08-30 

 

Steam

 € £ $ / % 

 

News

 28 

 

Controls

 Keyboard 

 

 Mouse 

 

Players online

 n/a 

 

Steam Rating

 Very Positive 

Steam store

 https://store.steampowered.com/app/931270 

 
Public Linux depots

 MicroTown Linux [82.11 M] 




LINUX STREAMERS (0)




EA Update #10 - Seasonal crops

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 13:49:58 CET ] [ Original post ]