Welcome to my factory! 100% Vanilla. Deathworld. 12600spm.
Posted: Sun Sep 05, 2021 10:39 am
It is my pleasure to present you the result of seven months of factory building! This factory has been built in a regular vanilla game, starting with a
Deathworld map and everything set to default. No mods or special game features (i.e. editor) have been used. It is ONE factory, not multiple clones
of identical factories. All seven science packs are produced and consumed. The factory achieves a throughput of 12600 spm (science packs per
in-game minute) and operates 14 rocket silos that launch one rocket every five in-game seconds. The power consumption at full load is around
70-75 GW, the energy infrastructure consists of over 2 million solar panels capable of providing 121 GW peak power (which roughly translates to
85 GW sustained power). Building all those solar farms without any convenience features provided by mods was probably the most painful part of
the whole project.
You are cordially invited to visit my factory. Here is the savegame. It's a large file so Google Drive will pester you with various warnings, just disregard
and click the 'Download' buttons.
Deathworld_12600spm.zip (586 MB)
In this save the factory is under full load, researching "Follower robot count" in order to consume all seven science packs. On my i7-6700K@4Ghz the
save runs with 18-19 UPS. That's slow but still playable. If you can't bear it you probably need to disable research and wait until the effect has
propagated throughout the factory. Now comes the good news: loading the save will put you in the middle of the glorious fireworks:
To mitigate the slow game performance I have put a box with three legs east of the silo park, feel free to equip those for faster walking speed. At
the same place is a car which you can use to reach the locomotive which is parked in south east direction. To visit the main base to the south choose
the train stop 'HQ Private'. Don't drive manually if you value your life.
Let me briefly comment on the advertised througput of this factory: it's actually not trivial to 'prove' that a factory is in a stable equilibrium state,
being able to sustain the maximal throughput for a longer period of time. The factory could be drifting away from equilibrium, potentially very
slowly. My approach was to let the final save run for a couple of in-game hours and check alarms and chests. If there was any sign of drifting away
from equilibrium I would reload the save, fix the issue and repeat the cycle until I didn't notice any problems anymore. Nevertheless if anyone spots
signs that the factory could be moving away from equilibrium please share your observations in this thread!
There is so much that can be said about this factory but I will stick to a few key topics to prevent this post from exploding.
HISTORY
This factory has been built incrementally and has grown over a long period of time (736 in-game hours). The initial strategy was to keep a low profile
(remember, it's a Deathworld map), focus on defense and build a compact starter base to research all the finite technologies. I reached a key moment
when I built the first artillery station and established a corresponding supply chain. That's when the balance of power changed and I could start
expanding. Here is the starter base with the first artillery station built to the west, established after 20 in-game hours of play:
I built a ring of artillery stations and expanded outwards. To the east of the starter base I found a suitable place to build the main base. After
roughly 80 in-game hours I launched my first rocket with science pack performance of 100-150 spm. Smelting was done inside the main base with
steel smelteries, displayed in blue colors at the left side of the main base, to the right of the train stations:
Now comes an interesting part of my strategy: my plan was to build large specialized factories as building blocks for the final factory, but at the same
time I wanted to link my main base to those factories as well in order to gradually increase the science pack performance. When I built the main base
in the first place I made sure to dimension everything to allow upscaling the science park later on. After building and linking smelteries and factories
for red, green, blue circuits, RCU and LDS I was finally able to operate the main base science park at 1800 spm. Reaching this spm milestone early on
was key to boost the 'Mining Productivity' research to high levels before scaling up the factory further and thus helped a lot to keep resource drain
low (at the very end I reached level 202).
I stayed for a long time at 1800spm. Up to this point I completely ignored the UPS topic. That was a conscious decision in order to not let UPS
considerations to prevent me from pursuing my vision of how I wanted my factory to look and work. But at 1800spm the time was right to start doing
optimizations and refactorings which in the end took a lot of time. I also decided to go full solar after having operated seven nuclear reactors with a
total of 112 cores. This meant alternating between factory building, solar farm building and expanding for almost the rest of the whole game.
Now we are going to fast-forward mode. The next milestone was to double production. I built an external science park to the north capable of
producing and consuming 3600 spm by itself. I operated that one at half capacity until I reached the next milestone, 5400 spm. Up to this point the
factory was always set to max capacity but after reaching the 5400 spm milestone I decided to work on the remaining two milestones (9000 spm and
12600 spm) with the external science parks shut down in order to save time. Here is how the final result looks like from a birds eye point of view at
max zoom level:
ARCHITECTURE
This factory hasn't been designed on the drawing board, I definitely would not have been able to design such a monster in advance without making
fatal mistakes. I started with a vision and with a general idea concerning the overall architecture of the factory but I left open the details (such as
where to place which factories and how exactly to link them together) and remained open for design alterations during the course of the game. But
some decisions had to be made upfront. One was whether to focus on belts, trains or bots. I decided not to focus on logistic bots because I
concluded that this decision would allow me to create more interesting factory designs. Bot-based factories often tend towards large matrix
arrangements and I wanted to avoid that. So I ended up creating a factory which focuses on belts and trains.
Let's start talking about smelting. Here is where another important design decision has to be made, namely how to organize the smelteries and the
mining outposts. One possibility is to build a centralized smeltery per resource. That's a viable approach for small and medium factories. Since I was
aiming to build a large factory I discarded the idea because I learned in past projects that train stations with many platforms tend to develop
bottlenecks that are very difficult to resolve. The other idea is to combine mining and smelting. I have seen such setups being advertised but I can't
make much sense of it. After all, the resource output of mining outposts is a decreasing function of time while smelting setups have constant
capacity. I also wanted building outposts to be as efficient as possible because I expected to build a lot of them.
I chose the middle ground between the two extremes. I organized the smelteries into clusters, consisting of 3-5 units, each unit producing [4]/16 blue
belts of [Steel]/Plates. Mining outposts are built nearby and are permanently linked to a cluster. Intersections between ore traffic of neighbouring
clusters are avoided/minimized. In the end this cluster setup leads to a localization of ore traffic, thus ore trains never travel far. Here is a screenshot illustrating the concept:
Next I would like to discuss how the plates are transported from the smelteries to the factory units. This brings us to the architectural key component
of the factory: the rail bus. I am calling it bus because it's frequented by many trains and because it needs to provide very high throughput. But it's
maybe not exactly what you would expect from a bus. It's not just a bunch of parallel train tracks used by all the trains at the same time. Instead it
consists of independent and non-intersecting double rail lines for each resource[group]. There are intersections with the global rail network used by personal/supply trains, but otherwise the trains driving on the bus are strictly separated by resource[group].
Making those rail lines non-intersecting was the key puzzle to be solved. This is achieved by inlining the train stations into the bus. Thus it's not the
rails that split off, it's the belts coming from the station. The belts are typically crossing other bus lines before they reach the factory unit.
The bus train stations are the key building blocks in the rail bus. The following screenshot shows a typical station located in the bus. Each station
contains two train stops, the actual drop off train stop and a wired waypoint at the entrance which opens/closes according to various conditions. One
condition is dictated by chest contents. There is a hysteresis logic which closes the waypoint if the chest content drops below a threshold and reopens
when it reaches another higher threshold. This means the total chest content oscillates between these thresholds and the local chest content is
balanced using the Madzuri mechanism. The second waypoint condition is triggered by a rail signal just behind the waypoint, thus as soon as a train
passes that rail signal the waypoint closes, preventing other trains to route to the same station.
When you look at the right top of the picture you see a wired rail signal on the bypass line. It is tied to the same logic as the waypoint, whenever the
waypoint opens, the rail signal closes. This mechanism is strictly necessary to force trains to repath into an open station. That rail signal initially
generated serious problems: a train which stopped at that signal for different reasons could deadlock when the rail signal closed due to the logic.
That could happen when trains queued up or during maintenance work when trains suddenly stopped because they lost their target. I didn't find a
pretty solution that didn't break the repathing behavior therefore I implemented a hack: I added logic to every affected station which ticks open the
signal once every five in-game seconds.
BITERS / EXPANSION
Most people building large factories disable biters to save time and/or improve UPS. Since I was playing with biters I needed to consider how to deal
with them as UPS-friendly as possible. A key observation is that biters simply idling in their bases consume much less UPS than biters who have an
objective, such as attacking a factory component or retaliating in response to artillery fire. This leads to the following biter strategy: surround the
factory with a ring of artillery stations whose range circle overlap to prevent biters from expanding through the ring. Continuously deform the ring
by displacing artillery stations in outward direction, placing them such that the artillery range circles still connect. Here is a screenshot showing part
of the ring:
Now there is a catch with this strategy. Keeping the biters idling means to keep them away from the pollution cloud. The problem is that the pollution
cloud is expanding continuously so the longer you play the larger the cloud becomes (you may argue that the cloud should reach an equilibrium state
eventually, but it doesn't expand fast enough to achieve that in practice). The pollution expansion forced me to expand faster than I had planned and
this became a massive time eater. When you saw the max-zoom screenshot above you may have wondered by I expanded so far. Here is why:
The ring in its final state consists of 80 artillery stations. I have researched artillery range only to level 5 because of bad experiences I made in the
past with higher artillery ranges. This has to do with artillery turrets not always targeting enemy bases in range and with biters not always retaliating,
maybe due to pathfinding issues. These issues start manifesting at level 5, but level 4 was too short for my taste, so level 5 was a compromise
solution. Shorter ranges have a positive side effect: the total firepower is higher when you have more turrets with shorter range, so the clearing of
enemy territory goes faster. On the negative side, enlarging the ring costs more time.
When dealing with biters on such a large scale, the most important property of the artillery stations is reliability. There is nothing worse than having
to do emergency trips all the time to clean up the mess left by artillery stations which fell to biters because of problems in the supply chain, for
example. This is why I went with lasers. All they need is power, so problems in the supply chain only delay the firing of the artillery turret but don't
prevent the laser turrets from stopping the biters. This approach has an obvious weak point: power loss means immediate loss of the station if a biter
mob is heading to it. This happened multiple times due to biters going unexpected paths and tearing down power poles on their way. As time went
on, I learned how to place the stations and how to influence the biter's path finding (for example by landfilling paths for them) to prevent such
catastrophes from happening.
Here is my artillery station design. It has a couple of nice properties. It has serious firepower so the station will last through many attacks even when
supply of repair packs and bots gets delayed. The circular design leads to an even distribution of firepower. The outer wall draws spitter AOE and thus
reduces repair pack drain. The inner area is so well-protected that I almost never saw any of the inner elements being damaged (except in the
power-loss scenario). Supply trains are 1-1-1 bidirectional and they fit completely into the inner ring of the station, so they are well-protected during
biter retaliations. The rail loop at the front of the station allows personal trains of length <= 5 to park there and the supply train can still pass back
and forth. And, last but not least, it's nicely compact and therefore can be [de]constructed very quickly and battery-friendly (this is especially
important when displacing 6-10 stations in one expansion session).
By the way you may wonder how many biters lived in that huge area which is now virtually biter-free. The kill stats give the answer: 20 million. That's
why they call it Deathworld.
THE BEAUTY OF FACTORY BUILDING
At the end of this post I would like to present a gallery with some of my factory designs. When working on those I was not only attempting to solve the engineering problem as well as possible, I also wanted to build constructions that are a sight to behold. Whether this has been achieved lies in the
eye of the observer. I definitely like those designs.
That's all folks. Feel free to ask questions, I will try to answer them as well as I can. Thank you very much for reading!
Deathworld map and everything set to default. No mods or special game features (i.e. editor) have been used. It is ONE factory, not multiple clones
of identical factories. All seven science packs are produced and consumed. The factory achieves a throughput of 12600 spm (science packs per
in-game minute) and operates 14 rocket silos that launch one rocket every five in-game seconds. The power consumption at full load is around
70-75 GW, the energy infrastructure consists of over 2 million solar panels capable of providing 121 GW peak power (which roughly translates to
85 GW sustained power). Building all those solar farms without any convenience features provided by mods was probably the most painful part of
the whole project.
You are cordially invited to visit my factory. Here is the savegame. It's a large file so Google Drive will pester you with various warnings, just disregard
and click the 'Download' buttons.
Deathworld_12600spm.zip (586 MB)
In this save the factory is under full load, researching "Follower robot count" in order to consume all seven science packs. On my i7-6700K@4Ghz the
save runs with 18-19 UPS. That's slow but still playable. If you can't bear it you probably need to disable research and wait until the effect has
propagated throughout the factory. Now comes the good news: loading the save will put you in the middle of the glorious fireworks:
To mitigate the slow game performance I have put a box with three legs east of the silo park, feel free to equip those for faster walking speed. At
the same place is a car which you can use to reach the locomotive which is parked in south east direction. To visit the main base to the south choose
the train stop 'HQ Private'. Don't drive manually if you value your life.
Let me briefly comment on the advertised througput of this factory: it's actually not trivial to 'prove' that a factory is in a stable equilibrium state,
being able to sustain the maximal throughput for a longer period of time. The factory could be drifting away from equilibrium, potentially very
slowly. My approach was to let the final save run for a couple of in-game hours and check alarms and chests. If there was any sign of drifting away
from equilibrium I would reload the save, fix the issue and repeat the cycle until I didn't notice any problems anymore. Nevertheless if anyone spots
signs that the factory could be moving away from equilibrium please share your observations in this thread!
There is so much that can be said about this factory but I will stick to a few key topics to prevent this post from exploding.
HISTORY
This factory has been built incrementally and has grown over a long period of time (736 in-game hours). The initial strategy was to keep a low profile
(remember, it's a Deathworld map), focus on defense and build a compact starter base to research all the finite technologies. I reached a key moment
when I built the first artillery station and established a corresponding supply chain. That's when the balance of power changed and I could start
expanding. Here is the starter base with the first artillery station built to the west, established after 20 in-game hours of play:
I built a ring of artillery stations and expanded outwards. To the east of the starter base I found a suitable place to build the main base. After
roughly 80 in-game hours I launched my first rocket with science pack performance of 100-150 spm. Smelting was done inside the main base with
steel smelteries, displayed in blue colors at the left side of the main base, to the right of the train stations:
Now comes an interesting part of my strategy: my plan was to build large specialized factories as building blocks for the final factory, but at the same
time I wanted to link my main base to those factories as well in order to gradually increase the science pack performance. When I built the main base
in the first place I made sure to dimension everything to allow upscaling the science park later on. After building and linking smelteries and factories
for red, green, blue circuits, RCU and LDS I was finally able to operate the main base science park at 1800 spm. Reaching this spm milestone early on
was key to boost the 'Mining Productivity' research to high levels before scaling up the factory further and thus helped a lot to keep resource drain
low (at the very end I reached level 202).
I stayed for a long time at 1800spm. Up to this point I completely ignored the UPS topic. That was a conscious decision in order to not let UPS
considerations to prevent me from pursuing my vision of how I wanted my factory to look and work. But at 1800spm the time was right to start doing
optimizations and refactorings which in the end took a lot of time. I also decided to go full solar after having operated seven nuclear reactors with a
total of 112 cores. This meant alternating between factory building, solar farm building and expanding for almost the rest of the whole game.
Now we are going to fast-forward mode. The next milestone was to double production. I built an external science park to the north capable of
producing and consuming 3600 spm by itself. I operated that one at half capacity until I reached the next milestone, 5400 spm. Up to this point the
factory was always set to max capacity but after reaching the 5400 spm milestone I decided to work on the remaining two milestones (9000 spm and
12600 spm) with the external science parks shut down in order to save time. Here is how the final result looks like from a birds eye point of view at
max zoom level:
ARCHITECTURE
This factory hasn't been designed on the drawing board, I definitely would not have been able to design such a monster in advance without making
fatal mistakes. I started with a vision and with a general idea concerning the overall architecture of the factory but I left open the details (such as
where to place which factories and how exactly to link them together) and remained open for design alterations during the course of the game. But
some decisions had to be made upfront. One was whether to focus on belts, trains or bots. I decided not to focus on logistic bots because I
concluded that this decision would allow me to create more interesting factory designs. Bot-based factories often tend towards large matrix
arrangements and I wanted to avoid that. So I ended up creating a factory which focuses on belts and trains.
Let's start talking about smelting. Here is where another important design decision has to be made, namely how to organize the smelteries and the
mining outposts. One possibility is to build a centralized smeltery per resource. That's a viable approach for small and medium factories. Since I was
aiming to build a large factory I discarded the idea because I learned in past projects that train stations with many platforms tend to develop
bottlenecks that are very difficult to resolve. The other idea is to combine mining and smelting. I have seen such setups being advertised but I can't
make much sense of it. After all, the resource output of mining outposts is a decreasing function of time while smelting setups have constant
capacity. I also wanted building outposts to be as efficient as possible because I expected to build a lot of them.
I chose the middle ground between the two extremes. I organized the smelteries into clusters, consisting of 3-5 units, each unit producing [4]/16 blue
belts of [Steel]/Plates. Mining outposts are built nearby and are permanently linked to a cluster. Intersections between ore traffic of neighbouring
clusters are avoided/minimized. In the end this cluster setup leads to a localization of ore traffic, thus ore trains never travel far. Here is a screenshot illustrating the concept:
Next I would like to discuss how the plates are transported from the smelteries to the factory units. This brings us to the architectural key component
of the factory: the rail bus. I am calling it bus because it's frequented by many trains and because it needs to provide very high throughput. But it's
maybe not exactly what you would expect from a bus. It's not just a bunch of parallel train tracks used by all the trains at the same time. Instead it
consists of independent and non-intersecting double rail lines for each resource[group]. There are intersections with the global rail network used by personal/supply trains, but otherwise the trains driving on the bus are strictly separated by resource[group].
Making those rail lines non-intersecting was the key puzzle to be solved. This is achieved by inlining the train stations into the bus. Thus it's not the
rails that split off, it's the belts coming from the station. The belts are typically crossing other bus lines before they reach the factory unit.
The bus train stations are the key building blocks in the rail bus. The following screenshot shows a typical station located in the bus. Each station
contains two train stops, the actual drop off train stop and a wired waypoint at the entrance which opens/closes according to various conditions. One
condition is dictated by chest contents. There is a hysteresis logic which closes the waypoint if the chest content drops below a threshold and reopens
when it reaches another higher threshold. This means the total chest content oscillates between these thresholds and the local chest content is
balanced using the Madzuri mechanism. The second waypoint condition is triggered by a rail signal just behind the waypoint, thus as soon as a train
passes that rail signal the waypoint closes, preventing other trains to route to the same station.
When you look at the right top of the picture you see a wired rail signal on the bypass line. It is tied to the same logic as the waypoint, whenever the
waypoint opens, the rail signal closes. This mechanism is strictly necessary to force trains to repath into an open station. That rail signal initially
generated serious problems: a train which stopped at that signal for different reasons could deadlock when the rail signal closed due to the logic.
That could happen when trains queued up or during maintenance work when trains suddenly stopped because they lost their target. I didn't find a
pretty solution that didn't break the repathing behavior therefore I implemented a hack: I added logic to every affected station which ticks open the
signal once every five in-game seconds.
BITERS / EXPANSION
Most people building large factories disable biters to save time and/or improve UPS. Since I was playing with biters I needed to consider how to deal
with them as UPS-friendly as possible. A key observation is that biters simply idling in their bases consume much less UPS than biters who have an
objective, such as attacking a factory component or retaliating in response to artillery fire. This leads to the following biter strategy: surround the
factory with a ring of artillery stations whose range circle overlap to prevent biters from expanding through the ring. Continuously deform the ring
by displacing artillery stations in outward direction, placing them such that the artillery range circles still connect. Here is a screenshot showing part
of the ring:
Now there is a catch with this strategy. Keeping the biters idling means to keep them away from the pollution cloud. The problem is that the pollution
cloud is expanding continuously so the longer you play the larger the cloud becomes (you may argue that the cloud should reach an equilibrium state
eventually, but it doesn't expand fast enough to achieve that in practice). The pollution expansion forced me to expand faster than I had planned and
this became a massive time eater. When you saw the max-zoom screenshot above you may have wondered by I expanded so far. Here is why:
The ring in its final state consists of 80 artillery stations. I have researched artillery range only to level 5 because of bad experiences I made in the
past with higher artillery ranges. This has to do with artillery turrets not always targeting enemy bases in range and with biters not always retaliating,
maybe due to pathfinding issues. These issues start manifesting at level 5, but level 4 was too short for my taste, so level 5 was a compromise
solution. Shorter ranges have a positive side effect: the total firepower is higher when you have more turrets with shorter range, so the clearing of
enemy territory goes faster. On the negative side, enlarging the ring costs more time.
When dealing with biters on such a large scale, the most important property of the artillery stations is reliability. There is nothing worse than having
to do emergency trips all the time to clean up the mess left by artillery stations which fell to biters because of problems in the supply chain, for
example. This is why I went with lasers. All they need is power, so problems in the supply chain only delay the firing of the artillery turret but don't
prevent the laser turrets from stopping the biters. This approach has an obvious weak point: power loss means immediate loss of the station if a biter
mob is heading to it. This happened multiple times due to biters going unexpected paths and tearing down power poles on their way. As time went
on, I learned how to place the stations and how to influence the biter's path finding (for example by landfilling paths for them) to prevent such
catastrophes from happening.
Here is my artillery station design. It has a couple of nice properties. It has serious firepower so the station will last through many attacks even when
supply of repair packs and bots gets delayed. The circular design leads to an even distribution of firepower. The outer wall draws spitter AOE and thus
reduces repair pack drain. The inner area is so well-protected that I almost never saw any of the inner elements being damaged (except in the
power-loss scenario). Supply trains are 1-1-1 bidirectional and they fit completely into the inner ring of the station, so they are well-protected during
biter retaliations. The rail loop at the front of the station allows personal trains of length <= 5 to park there and the supply train can still pass back
and forth. And, last but not least, it's nicely compact and therefore can be [de]constructed very quickly and battery-friendly (this is especially
important when displacing 6-10 stations in one expansion session).
By the way you may wonder how many biters lived in that huge area which is now virtually biter-free. The kill stats give the answer: 20 million. That's
why they call it Deathworld.
THE BEAUTY OF FACTORY BUILDING
At the end of this post I would like to present a gallery with some of my factory designs. When working on those I was not only attempting to solve the engineering problem as well as possible, I also wanted to build constructions that are a sight to behold. Whether this has been achieved lies in the
eye of the observer. I definitely like those designs.
That's all folks. Feel free to ask questions, I will try to answer them as well as I can. Thank you very much for reading!