top of page
Blog

Captain's Diary #39: Lifts, tanks, conveyors, and Collin!

Ahoy, everyone! Captain Marek reporting in. I have lots of updates about our progress towards Update 2, so let’s jump straight in!


Welcome, Collin!

Before we get into the game updates, it’s my pleasure to introduce you to Collin – our new senior software engineer from Seattle! Collin is not new to the gaming industry, he was working for Zachtronics on some of their iconic games, such as SpaceChem. Since then, he has been working on some non-gaming projects, but he is back at game dev, and we are happy to have him! He will be focusing on the UI/UX at first, and he already started to rewrite our UI framework. Here are a few words from him:


“Greetings! I'm happy to join the MaFi team to work on improving my all-time favorite factory builder game! I look forward to helping accelerate development and improving the user experience for Update 2!”


Improved fluids recognizability

In our ongoing quest to enhance the factory building experience, Update 2 brings improvements to fluid recognizability. Fluids, whether they're liquids or gasses, have always been stored and transported in closed containers. However, players have faced challenges in distinguishing between them at a glance, especially in areas filled with various types of processed fluids like refineries or power plants. For instance, all steam types are represented in white, making differentiation a frustrating task.


Moreover, to identify the contents of an empty storage unit, players had to click on it, and it was not even possible to tell what fluid was present in an empty pipe.


Update 2 addresses these issues through three key enhancements:

  1. Icons on fluid storages: Fluid storages will now have an icon representing the assigned product, even when empty. This means you'll be able to identify its contents with a quick glance.

  2. Icons on tank trucks: Trucks transporting fluids will now display the product icon prominently on their sides. Additionally, the tank itself will be colored according to the specific product being transported. This means no more confusion about what products are being transported.

  3. Pipes reflecting transported fluid type: One of the most significant changes arrives in the form of color-coded pipelines. Now, pipes will be tinted based on the product flowing through them. However, to ensure a seamless visual experience, these color changes will occur gradually, avoiding any abrupt transitions. This enhancement allows to quickly trace the path of different fluids through intricate pipeline networks.


Here are some comparisons of before/after:

New pipes and storages coloring (Update 2). Notice that now you can clearly see that the empty storage in the top right is for diesel, thanks to the icon and colored pipes.


New truck tank coloring (Update 2). You can also see the new and improved tank truck model.


In case you were wondering, none of these changes will have any effect on the game's performance.


Conveyor lifts

Last update we’ve added vertical pipes and


this time it’s time for conveyors! This feature is a hot topic on our ideas website having over 1k votes and it’s finally happening!

Designing and implementing conveyor lifts took us a bit longer because we were committed to getting them right. While vertical segments are a natural fit for pipes, the same logic doesn't apply to conveyors. Our goal was to enable simpler and more compact factories without compromising immersion or realism.


In real life, vertical conveyors, often known as "bucket elevators" for loose products, are commonly employed in filling large silos with bulk materials s


uch as grain or cement. I bet that some of you have encountered these machines firsthand (if so, share some photos on our Discord!). For others, here is a short video explaining how they work in real life.


Our design process also considered gameplay mechanics. We wanted to avoid overloading conveyor lifts, especially in areas where space isn't a concern, and using ramps would be both practical and realistic.


This has led us to the following design: Conveyor lifts are stand-alone entities that can lift both unit and loose materials and occupy a footprint of 2x1 tiles. This offers substantial space savings compared to a conveyor ramp, which requires at least 3x1 tiles to change height by one tile, and 5x1 for a difference of two, 7x1 by three, etc.


However, there are some trade-offs when opting for lifts. They require significantly more power than using a conveyor ramp, and their construction must be done separately from building the conveyors. Here is how they look in action:

A comparison of assemblies connected via conveyor ramps (left side) compared to the new conveyor lifts (right side), which allow for more compact builds.


While conveyor lifts allow for more compact builds, the feature that excites me, even more, is the ability to be able to convey material over retaining walls! Take a look!

Conveyor lifts are used to transport mined iron ore from a deep mine over retaining walls. Notice that the middle lifts are built on raised pillars (they do not have to have the lower part touching the ground).

We are looking forward to seeing what new builds will emerge with the ability to use conveyor lifts!


Cloud shadows

Cloud shadows is a feature that was initially implemented for Update 1, but we had to remove it last minute due to significant performance regression. Turns out that Unity decided to draw the entire scene twice when cloud shadows were enabled using a directional light cookie (a mask that selectively blocks light based on a provided texture).


Despite the setback, we were committed to integrating cloud shadows into the game as they make the weather more interesting and realistic. It was Jeremy who found another way to do the clouds shadows without the crazy performance penalty so now we have clouds “for free”! See the before/after below!


Cloudy weather in Update 2 (with cloud shadows)


By the way, these screenshots were taken from JD Play’s ultimate island adventure finished in the year 1000. He was trying to secretly escape the island in his rocket with a lot of gold waiting for him at a secret place, but people on the island found out and tried to sabotage his escape plan by flooding the crater. Did he manage to escape or did the crater get flooded? See his last episode #79 to find out!


Optimizing save size

A few weeks ago, we received a bug report that the game crashed when the population statistics were switched to the maximum range (showing all years played). Turns out that the person’s save was 25k years old (yes, twenty-five-thousand!) and Unity could not handle a plot with 25k data points.


Seeing this issue, we realized that saving data from all years is not the best way, and it also uses up a LOT of space in the save file, around 50% (or 50 MB) for that 25k years save file to be precise. To fix this problem, we have limited the number of years stored to 100 and introduced new quarter-century statistics that are stored for all years played. This reduced the stored data by a factor of 25.


When we fixed this issue, we decided to go one step further and write a save analyzer that can quickly tell us what is actually using space in a save file. It’s a simple tool that visually shows the contents of a save file using a tree-map. Here is how it looks on that 25k year save after the statistics were consolidated:

A tree-map visualization of a 25k-year-old game save. The area of each rectangle is proportional to the disk space it uses.


We were happy to see that statistics are now a small portion of the total size, and the terrain is expected to be taking the majority of the save size. However, we were completely baffled about the mysterious queue in the vehicle path-finding manager that is taking over 40% of the save file. After a quick glance at the code, it turns out that this was some legacy code that was saving every fulfilled terrain designation, but this queue was never emptied, so it kept growing. Thanks to this tool, we were able to find it and fix it.


These two fixes were also back-ported to the live branch and released in patch v0.5.5c. Our in-house game serialization code is very flexible so we were able to do the statistics transformation and queue removal without breaking the save compatibility so that you all can enjoy smaller save files and faster saving/loading right away!


COI Hub

I am excited to tell you about the upcoming COI Hub! It’s our community portal built by us for you. Its main purpose is the easy and convenient sharing of game content such as blueprints, maps, and mods!


We’ve seen a great need for sharing blueprints and mods, and with the upcoming map editor, we needed a central place to share maps as well. We had a few options.


The first option was to do nothing and leave it up to the community to figure things out. This solution is the least work for us, and there already are some blueprint-sharing websites, such as Captains haven. We are truly amazed and grateful for the incredible work done in community-driven projects. However, such projects can lose momentum when maintainers face other life commitments, which perfectly makes sense. But we're dedicated to ensuring this doesn't happen, keeping the content alive and thriving.


The second option was to use some third-party solution such as Steam Workshop or mod.io This solution is a moderate amount of work for us, and many games use these. However, we don’t think it’s the best user experience for players due to the lack of tight integration with the game. For example, when a game has a major update breaking some compatibility, third-party services cannot automatically mark all incompatible content, and it just rots on the platform.


So this leaves us with the most complex solution – build it ourselves from scratch – and that’s what we are doing! We believe that the tight integration with the game will allow us to do really cool things such as:

  • Validating uploaded blueprint strings (to prevent typos)

  • Show a list of machines from blueprints and filter based on this data.

  • Show map previews and metadata such as map size, amount of resources, etc.

  • Validate mod version compatibility and show various metadata.

  • And much more!


Here are some screenshots from the work-in-progress COI Hub.

A work-in-progress COI community hub showing some blueprints for download.

COI hub blueprint detail showing metadata about what machines are present.


Work on the COI hub is completely independent of Update 2, and we will release it once it’s ready. If you have any questions or ideas regarding this project, feel free to let us know on our Discord!


Steam Awards

The prestigious Steam Awards season is upon us. We'd totally love your vote, but let's face it – our game does not have enough players to be nominated for a Steam Award just yet.


But wait! How about giving us a review on Steam? It's like our own mini awards show! Your feedback is the secret sauce for our game's improvement. I personally read every review, and lots of ideas and improvements come directly from them! Thank you!


Update 2 – when?

We initially planned to release Update 2 this year, but we have decided to postpone the release to Q1 of next year so that we have time to add even more awesome features and ensure that everything is stable and polished. We will keep you updated with our Captain Diaries along the way!


And that’s all I have for you today, thanks for joining the adventure, and until next time, cheers!


We are hiring!

Still reading? Ever thought about enhancing the 3D models in our game or brewing up your own ideas? Perfect, because we're on the lookout! Join us as a low-poly 3D artist. Know someone perfect for this? Spread the word! Check out the details here https://www.captain-of-industry.com/jobs


Comments


bottom of page