It’s been almost 3 months since the last major update, and it’s time to give a full preview of what’s coming in the update. The plan is to release the 1.2 update on Thursday, September 18th – all of the major features are done, it’s mostly just some minor bugfixes I’m trying to squeeze in, plus some more thorough testing, so I don’t see a reason why the date will change. Here’s what you can expect in this update:
UI Updates

Probably one of the first things you’ll notice. I’ve implemented the updated Minifantasy UI (with some modifications), giving the panel textures a more crisp look that contrasts them better against the background. I think this brings it more in line with rest of the game’s aesthetic as well.

There’s also new bubbles that pop up on buildings & trees that you are demolishing/chopping down, which should better communicate the status of things.

The biggest change in the functionality of the UI is the use of Windows
instead of PanelContainers
for many UI elements. These are two different UII objects in Godot: the PanelContainer
is a simple box with a background, whereas the Window
is a little more finicky, but more powerful object that acts as a window, complete with resizing and moving. (These can also be used to create “native” windows, that show up outside of the game window.) Many windows can now be dragged around and resized so they won’t get in the way of you playing.
Production Data Charts & Other Analyses

I would consider this the main feature of 1.2, if you had to assign that title to one feature. Although Iron Village has 88% positive reviews (out of 45: go add to that number if you haven’t already!), and half of the negative reviews are transphobia, there’s always room for improvement. One item that has come up multiple times is the lack of production data: basically, how do you figure out the rates resources are being produced so that you can find bottlenecks?
Originally I didn’t have this as a necessary feature, given that Iron Village’s gameplay is relatively short and simple. However, the importance of some sort of data analysis screen came apparent for a few different reasons:
- Review comments & discord feedback about feeling like they were missing that information.
- Since I literally programmed the game, I have a decent understanding of what’s going on just by looking at the movement of villagers and the flow of the resource counts. New players would probably not have this intuitive understanding, no matter how well I otherwise designed the user experience.
- The late gameplay came together rather late in the game’s development cycle. While it’s fairly easy to keep track of what you need in the early game, the late game gets a lot busier and can really be helped with that extra information.
There were four new windows designed for this feature, although the last one is only tangentially related and covered in a section below. The first two are the Maximum & Current Production Rates: What can your buildings theoretically produce (so you can find out what buildings are missing or superfluous), and what have they actually been producing (which will hint at other problems like low population). More details about these can be found in Diary #53 – OK, What’s Next?, with some implementation details in Diary #54 – Workers and Resources: Iron Village.

The third window (which actually gets unlocked between the two, more on unlocking below) is Population Statistics, giving you an overview of the population, housing, and job counts; summaries of urgent needs such as hunger or homelessness; and the production and consumption of food and water. This should get you an idea of if your villagers are having their needs met.
Railway Headquarters & Immigration Office


You don’t get all of that information right away though – there’s in-game reasoning for it instead. You have to build a Railway Headquarters (available in the 2nd level, the Light Industrial Permit) to get the Maximum Production Rates. This HQ upgrades again in level 3 (Full Agricultural Permit) to grant access to Population Statistics, and again in level 4 (Heavy Industrial Permit) to get the Current Production Rates.

The fourth window I alluded to above is the Immigration Controls window, which unlocks with the Immigration Office (itself unlocked in level 5, City Status). This office acts as an extension to the HQ, and handles another bug/issue/feature request from players: why does my population stall at just above 120 villagers? I had programmed in some population caps per level to avoid the player having to take care of more villagers than they could realistically handle. For level 5, this was set to 120, and as long as the population was at least 120, passenger trains would stop carrying new villagers. However, since City Status is the highest level you can achieve, that places a permanent cap of 120 villagers on your town/city.

With the Immigration Office, you now get the ability to increase that cap, so now the main limiting factor will be the size of the map. You can also decrease the cap, although this won’t actually kick anyone out. Instead, it will just prevent new villagers from coming in.
New Resource Graphics

This was also covered in Diary #53, many of the resource piles have been graphically updated and should better fit in with everything else.
Villager Housing Logic Improvements
Upgrading houses used to come with a semi-hidden drawback: doing so would evict the current residents. They might end up getting to live in the new building, but they might also just get moved to another random house, or in the worst case scenario become homeless. Either way, the eviction comes with a happiness penalty. Depending on where you live, this may be realistic, but that’s not a good enough excuse to mistreat the poor villagers. Now whenever there’s a housing upgrade, the existing residents get automatically rehoused in the upgraded house.
The villagers can also take the opportunity to rehouse themselves – if there’s a nicer building (defined by the resting rate – how quickly they regain energy) with open space, they have the opportunity to change homes when they’re ready to go back to sleep.
Excess Resource Disposal
Until 1.2, demolishing a building would require that you have enough storage space for the resulting resources. For example, demolishing a stone building would require sufficient stone storage for the resulting building materials, and demolishing a stone storage area would require sufficient capacity to store the resources that were present.

Now you’ll receive a warning when trying to do this, but you won’t be completely locked out from the bulldozer. Instead, you’ll just lose the resources that can’t be stored.
This also now applies to upgrades. Some upgrades, such as upgrading wooden houses to stone, included a refund (in this case wood). Before 1.2, you would end up over capacity, but now the excess is removed.
New Achievements (Steam Only)
New large construction projects means new achievements of course! The first and third levels of the HQ come with achievements, and reaching 200 villagers will get you a shiny badge as well.
Steam Input API (Also Steam Only)
This isn’t full support for key remapping, but this should enable playing Iron Village with just about any game controller, with fully customizable button choices.
Chop & Mine Sound & Animation Alignment

The some buildings emit sounds when villagers are working inside them. You get fiery forge sounds from the Steelforge, windmill swooshes from the windmill, etc. With the new mining and chopping animations in 1.1 though, you can clearly notice that these sounds do not line up with what the villagers are actually doing. This is fixed in 1.2, and the sounds should play as the pickaxes and axes impact the rocks and trees, respectively.
Train Graphics “Overhaul”

A lot of the locomotives and train cars have been tweaked to be a whole pixel shorter. You probably won’t notice, but if you compare side-by-side it’s surprising how much of a difference it makes. The locomotives have been tweaked too, with slightly longer cab roof overhangs, and I removed the excess smokestacks to make things a bit more realistic.
Job-Finding Overhaul, a.k.a. LinkedIn
Before 1.2, villagers were in charge of finding jobs. When they were idle (that is, they already sorted out their basic needs), they would ask the JobManager
to find an open job, which would then look through all of the jobs and assign one of the highest priority ones. This system did work, but could cause some issues in larger towns, since the location of the villager was not taken into account.

To fix this, the JobManager
is now in charge of the whole process. When an idle villager decides they are ready for a job, they set their state to LINKEDIN
1. The JobManager
keeps track of the job market, and each frame goes through the open jobs in priority order, assigning them to the closest villagers that have indicated they are #opentowork. This is a greedy algorithm, so it could potentially be more efficient, but it at least means your orders to chop down trees will be taken by villagers who are actually nearby.
Full Town Screenshots

This was a little tricky to figure out, since it’s not super well documented IMO, but thanks to this video I managed to get a second camera set up in the game. What does this special camera do? It lets you take a picture of your entire town. When you open up Screenshot Mode (the camera button in the lower right), a second button also appears. That button takes a picture from the second camera and saves it to user://screenshots/. (user:// varies by OS, for example on my Windows machine it’s C:\Users\(USERNAME)\AppData\Roaming\Godot\app_userdata\Iron Village.) I need to figure out the best way to document the feature, since that description is trickier to fit into the game, but I at least want to make it available for 1.2.
And More!
There’s a few more minor tweaks and fixes that would’ve made this even longer, so you’ll have to wait for full patch notes to see those. Anyway, I’m looking forward to sharing this with all of you on the 19th!
- Yes, that’s literally what I called it, but it’s less humiliating than #opentowork. ↩︎
Leave a Reply