10k SPM bot-free train-heavy modular base

Clever and beautiful constructions, bigger than two chunks
- Defense: killing biters as an art
- Castles, Throne Rooms, Decorations (comfortable living in the Factorio World)
- Main Bus Concepts
- Modular Systems, Factory Streets, show how all works together
- Megabases
Please provide us with blueprints or saves, if that makes sense of course.
Forum rules
Clever and beautiful constructions, bigger than two chunks
Post Reply
Saibantes2
Manual Inserter
Manual Inserter
Posts: 2
Joined: Fri Oct 09, 2020 7:27 pm
Contact:

10k SPM bot-free train-heavy modular base

Post by Saibantes2 »

Hi everyone,

I want to show you my mega-base design.
  • no bots
  • lots of trains, one locomotive and eight cargo/fluid wagons, powered by nuclear fuel
  • runs in vanilla Factorio with no "cheats" (well actually ...)
  • produces theoretically 10k SPM of each of the seven science packs (there is no endless research for that, so that part is untested)
  • runs in a map without biters (which makes the grey science kind of pointless, but meh)
It uses a regular pattern of squares, each square producing one particular product (the general idea of the regular squares came from this YouTube video from three years ago: https://www.youtube.com/watch?v=DH3hCy4l4sY). The squares are only connected via 1-8 trains. A square looks like this:
square-map.jpg
square-map.jpg (96.27 KiB) Viewed 3385 times
As you can see, there are four regular stops on a square, allowing for productions of a single product with up to three ingredients (each train stop is used only for one item type) - which covers most products (Flying robot frames, Satellites, Space science, the petrochemical stuff and the science labs don't fit this pattern). Each train stop has also one waiting position (not quite a "stacker"). You can see that there are actually two train stops next to each other: The second one is the delivery station for train fuel (nuclear of course), and the waiting area for the arriving trains is actually large enough (and has the necessary signals) to hold two 1-8 trains and the additional 1-1 fuel delivery (in any order). Since each train only needs one stop in its schedule that can refill its fuel, not all stations will actually have the 2nd stop, usually the refuel station will be next to the "producer".
As you can see, arrival to or departure from a train stop only works from one direction of the surrounding track grid. I thought that was fine. *cough* Of course it means that the distance a train has to travel between squares is different depending on the direction and relative rotation of each square. I spent a lot of time making a map of what connections are the shortest, so that I could later put the whole factory together with the most throughput-heavy connections being the shortest travels.

Here is the RCU production as an example:
RCU-25p.jpg
RCU-25p.jpg (801.99 KiB) Viewed 3385 times
This also shows my preferred machine setup: Virtually all intermediate product machines have productivity modules and are in alternating rows with speed beacons. Products that can't take productivity modules will have either no modules at all, or just the minimum speed modules necessary to keep the number of assemblers reasonably low, but never use beacons.
ammo-25p.jpg
ammo-25p.jpg (800.16 KiB) Viewed 3385 times
This ammunition production for 10kSPM fits in one square even with no modules. Still the regular row pattern, because I lack creativity. Here you also see that sometimes intermediate products are in the same square (here: basic ammo together with armor piercing ammo), as long as they fit and are not used elsewhere as well.
Some productions don't fit into one square, so there will be several identical ones. I already showed you the RCU production square, which is used three times in the factory. There might be several reasons why the production might not fit into a square:
  • too many assemblers (as with the RCUs),
  • too much throughput that can't be handled by a train on just one stop, or
  • too much throughput for the inserters and belts to unload from the trains.
For example, the sulfur production is just too much for one train stop, so I have two of these:
sulfur.jpg
sulfur.jpg (780.12 KiB) Viewed 3385 times
In retrospect, I could have used the other currently free train stop for the 2nd half. (This is on my "will be fixed later" list, which I will just put away and never look at again.) In fact, that is what I did for the iron gear wheels:
wheels.jpg
wheels.jpg (773.71 KiB) Viewed 3385 times
You might be wondering what all these combinators at the iron plate station (and one of the two wheel stations) are doing. They indicate when one of the cargo wagons is empty (or full in the case of a loading station), so that the train departure conditions can be set so that the train leaves when at least one wagon is empty (or full) instead of the whole train. This seemed sometimes necessary, as most of the square fit designs lack a full balancer.
Personally I don't like balancers. I've only ever used other peoples' blueprints because my head hurts even when trying to understand them, while I design everything else myself (maybe after studying someone else's design, but still with fully understanding it). Also they become comically huge with increasing number of belts (I understand them so little that I can't even tell how they grow with number of belts <n>, but the area seems to be way above O(n²)).
I achieve balance instead with symmetry: All belts have the same number of machines attached to them, often even on each side of each belt (by having each alternating row mirrored - I wished mirroring a blueprint would be possible in-game, and yes, I understand the issues with that). Allowing trains to turn around as soon as just one wagon is empty helps with getting initial balance to counter belt-length mismatches and other issues with the starting conditions.
Having this wagon-selective condition on both the loading and unloading stations is a mistake, it should only be at the unloading. I realized that after designing most of the squares, but as long as the train schedules are not set up to use it, it doesn't matter.
The petrochemistry doesn't quite fit into the design with four train stops:
petro.jpg
petro.jpg (737.16 KiB) Viewed 3385 times
Here I added an extra loop with an extra fifth train stop. (This also causes the exception for the rule that all the producer stops have the extra stop for the train fuel: Lubricant trains are fueled at the consumer (electric engine units, of course).) This fifth stop looks like a huge waste of space, given that I now need eight of these petro squares. However, the size of one production square was limited by the amount of water I can get through only one train stop anyway - or more precisely, the amount of stuff I estimated I could get through one train stop, a number I had completely wrong anyway - more on that later.
Space science can also not be produced with only 3 inputs, the setup is different though:
space.jpg
space.jpg (766.75 KiB) Viewed 3385 times
There are some combinators to limit the number of satellites sitting around unused on belts. Also, no rocket will be launched as long as the science pack from the previous launch are not extracted yet. There need to be three of these launch squares. The limiting factor here is how many trains I felt I could comfortably get through one station (those tiny stack sizes are a problem). A train will leave a space science pack station when it has at least 64k packs loaded (same as a full train for any other science pack), long before it is actually full.
sat.jpg
sat.jpg (1.56 MiB) Viewed 3385 times
The satellite production doesn't fit into a square at all. Instead I use two squares, I skip the train stops that would be between those two squares, while still keeping the regular grid of tracks running between all squares. On most of the remaining two times three sides, I have two train stops next to each other, but without the extra waiting position.
One of these squares has the solar panel production (and also one assembler for the radar), the other one has the accumulator production (and also one assembler for the satellite itself). The satellite is transported in a 1-1 train, unlike almost everything else.
I will also show you the science lab square, three of these are needed for 10kSPM (assuming fully researched research speed):
lab.jpg
lab.jpg (908.84 KiB) Viewed 3385 times
Same as for the sat: Two train stops per side, but no waiting positions.
If you look closely, you can see one additional limitation of this setup: Trains can not turn right at the crossing immediately after leaving the inner of the two stops - but that would completely change later anyway.
The nuclear train fuel is also produced in a square:
Image


I also designed special "stacker" squares, here the one with three separate paths (I also have ones with only one and two paths):
stacker.jpg
stacker.jpg (664.36 KiB) Viewed 3385 times
The idea was that if I have only chain signals on the crossings in the corners of each square, the few squares that needed more than just the one extra waiting position could have a stacker square next to it, and the trains will stay in these stackers and not block the track grid. Later I realized that this would not work as good as I thought it would, because each entry/exit of these squares only works in one direction (as I already mentioned at the beginning), making the placement of these cumbersome.
Instead I use what I think is called a "cross-dock":
Image
What I don't like about these is that you can't really unload directly from train through chests into another train, so the throughput is limited by the belts. And yes, I know that it works diagonally (I actually built a square with that), but then only four chests (per wagon) can be placed, and the throughput is actually slightly lower as with the 8 chests I use here. Long inserters are even worse regarding throughput.
Of course there is a similar cross-dock for fluids.
They are needed because of the limitations of the train schedule and path finding thing, to distribute each product between x producers and y consumers, with x and y being coprime to one another. And yes, I've read the FFF for the upcoming 1.1 release. OMG, how much pain that would have spared me if that had been implemented earlier.

The smelters (iron plates, copper plates, steel plates) are not in these squares, but in an extra "layer" around the square grid. They are quite boring and incredible large, so no screenshot here.

I designed each of the needed squares (I showed only a small fraction of them here) separately, and tested each using trains coming from stations with infinity chests specifically for each square. I don't know how many hours I actually spent on these, but the savegame with all of them has now 160 hours on it (some of it I was AFK, to see if each square works continuously for an extended period of time). But of course I also spent a lot of time outside of the game just planning with Doomeer and KirkMcDonald. Since I played extremely irregularly, it ran over several months (or was it even years?). Then one day I finally tried to put all of it together, put each square in a blueprint, started a new game, placed the first few (petroechmistry plus plastic production, together with some cross-docks) - and fell flat on my face. It just didn't work. Even with this tiny fraction of the whole setup, the congestion on the innermost train track crossing caused the trains to wait for sometimes minutes before they could leave a station.
That was really painful.
I prefer belts over bots for several reasons, but one is that belts are usually calculable, bots not so much. And trains are even worse (but mostly unavoidable). What is the actual throughput of a train when there is an unpredictable amount of them at all times on the move, going from anywhere to everywhere else? In the end my estimates where completely off.



After tending to my bloody nose I came up with an easy fix: Four-track grid, while keeping the inner part of each square as before.
Image
With this, trains can enter a stop from any direction and leave it into any direction, which helps with congestion just as much as the fact that there are now twice the number of tracks. Only downside is that it is much bigger, so the whole factory is even less space efficient. :geek:

So this is the full factory:
Image
There is a grid of 15x8 used squares (minus 2 empty ones), plus an additional empty row at each edge, so really 17x10 squares. In the north are the copper smelters, with 8 copper ore unloading stations and 10 copper plate loading stations. In the east are iron smelters, 6 identical setups with one unloading and one loading station each. There are also two identical steel smelters in the southeast, each made out of three blocks, i.e. three iron ore unloader stations. In the south you can barely see the water, oil an stone from nothing stations (infinity chests), in the southwest is the uranium ore source.

It runs at about 25~28 UPS on my i7-6700K (slightly overclocked). Since currently the water, crude oil, ores, stone and coal comes from infinity chests, by my own requirement mentioned at the beginning, I'm technically not finished. Also the electricity supply is completely missing, there is just one electric energy interface for the 48 GW. There are also some creative-mod's "super radars" at the smelters.


The most complicated thing is the train setup. Due to the limitations of the game, it is highly impractically to route and balance stuff from many producers to many consumers. This is even more true when you deliberately design a compact setup where large stackers are not an option. Just to give you an idea how I solved it: There is one or two trains (max is two because there is only one waiting position before the square's stations) for each consumer of e.g. copper plates. Each of these trains will alternate between the 10 pickup stations at the smelters and the delivery, so 20 items in the train schedule, each with the correct conditions. Keep in mind that due to my design looking for empty single wagons, the unloading condition is "Emtpy cargo OR Circuit F > 0 AND 5 seconds passed". Which is why (a) in the end I skipped the wagon condition in most stops (though not all), (b) incroporated the "5 seconds passed" with some extra combinators into the circuit condition because you can copy&paste them around (unlike train conditions), and (c) decided that if I would ever do this again, I would instead write a small script that would generate a blueprint with all the trains in it. ... and now suddenly there will be a feature in 1.1 that fixes all of that. :roll:

Savegame (57 MiB): https://drive.google.com/file/d/1A6v_v9 ... sp=sharing

JasonCurnow
Inserter
Inserter
Posts: 21
Joined: Wed Jan 03, 2018 4:44 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by JasonCurnow »

I just happened to run across this - Thanks for sharing, I like how you have structured your "city blocks". Seeing the scope of what you've done and how much of it is done with yellow belts is impressive!

When you do end up expanding out to use resources "in the field" instead of getting them from a mod you might think about Logistical Train Network (LTN). It lets you create "requester" stations that request a certain amount of a resource and "provider" stations that provide resources. It will automatically schedule trains for you when a requester station needs a resource and a provider station has the resource available. It's great for basic products like iron/copper/steel/green/red circuits and takes away the tedium of trying to schedule specific trains for purposes.

User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1044
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by NotRexButCaesar »

JasonCurnow wrote:
Tue Feb 23, 2021 11:12 pm
I just happened to run across this - Thanks for sharing, I like how you have structured your "city blocks". Seeing the scope of what you've done and how much of it is done with yellow belts is impressive!

When you do end up expanding out to use resources "in the field" instead of getting them from a mod you might think about Logistical Train Network (LTN). It lets you create "requester" stations that request a certain amount of a resource and "provider" stations that provide resources. It will automatically schedule trains for you when a requester station needs a resource and a provider station has the resource available. It's great for basic products like iron/copper/steel/green/red circuits and takes away the tedium of trying to schedule specific trains for purposes.
Or, you could use vanilla train limits and same-name stations for an equally effective system.
: Alea jacta est. Determine what you intend to accomplish with an action before execution.
Have you ever heard the gospel? Most have not.

DaleStan
Filter Inserter
Filter Inserter
Posts: 298
Joined: Mon Jul 09, 2018 2:40 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by DaleStan »

AmericanPatriot wrote:
Tue Feb 23, 2021 11:18 pm
Or, you could use vanilla train limits and same-name stations for an equally effective system.
I really don't think you can. Vanilla is certainly a lot closer to LTN than without station limits, but LTN will only dispatch trains when the receiving station is low on the cargo that the supplying station provides. If your iron smelter is low on iron, but not coal, LTN will dispatch a train to provide iron, rather than picking one of the resources at random.

User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1044
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by NotRexButCaesar »

DaleStan wrote:
Wed Feb 24, 2021 3:48 am
AmericanPatriot wrote:
Tue Feb 23, 2021 11:18 pm
Or, you could use vanilla train limits and same-name stations for an equally effective system.
I really don't think you can. Vanilla is certainly a lot closer to LTN than without station limits, but LTN will only dispatch trains when the receiving station is low on the cargo that the supplying station provides. If your iron smelter is low on iron, but not coal, LTN will dispatch a train to provide iron, rather than picking one of the resources at random.
I don't understand the problem. You can either use two different stations or one station with filtered wagons and just accept that some iron gets moved around with the coal. The train still takes the same amount of trips.
: Alea jacta est. Determine what you intend to accomplish with an action before execution.
Have you ever heard the gospel? Most have not.

User avatar
ptx0
Smart Inserter
Smart Inserter
Posts: 1085
Joined: Wed Jan 01, 2020 7:16 pm
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by ptx0 »

I have a mod called Research Sink that you can use on a test copy of your map.

It adds a single high-cost infinite research for each of the science packs, which should help with testing a sub-base that you have for that particular science, for example.
My Mods - Fish Per Minute base size metric - Use your crashed spaceship as a belt balancer?
• • •
Base: Bob's @ 1 Million SPM
• • •
Linear search and overflows are indicative of sloppy coding practices.

hornetDC
Burner Inserter
Burner Inserter
Posts: 13
Joined: Thu Dec 03, 2020 10:57 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by hornetDC »

Robot follower count uses all 7 packs.

Ormy
Inserter
Inserter
Posts: 42
Joined: Thu Mar 14, 2019 9:05 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by Ormy »

Loving this, similar to my gigabase I've been working on since late 2019. I too use a modular/cell oriented base inspired by the same video you linked to. However I am using bots for transport within each cell rather than belts, each cell is its own contained logistic network, bots never cross between cells (except for my personal construction bots). To manage UPS I'm using a myriad of cheats including boosting bot capacity and battery, stack size multipliers, increased train capacity/speed and using the console to place resource patches.

I started by designing my own rail layout for the cells (using LTN) and I had dedicated cells for the LTN depots. It failed miserably due to train deadlocks, the depot cells ended up being horrendous bottlenecks and my rail design was severely lacking. I gave up and started again.

To build the template for my cells I used a high-throughput 4-way 4-lane intersection from here and put four of them in a square. This made a particularly large cell but that works as I'm now using Schall's Machine Scaling mod to increase production even further. This time the LTN depot stations are distributed among all the cells, 10 depot stations, 1 station bringing in train fuel and 33 input/output stations maximum (many cells use considerably less).

I also spent some time figuring which items share very similar ingredients so could share a cell, and which items are only used in a single recipe so can be produced in the same cell as they will be consumed. For example belts and inserters are only required for logistic science packs so they all share a cell. The raw ingredients going to this cell (iron plate, gear wheel, electronic circuit) are the same ingredients needed to make radars so they are also produced in the same cell. I drew out a big flowchart by hand to figure out which cells I could easily combine.

User avatar
NotRexButCaesar
Smart Inserter
Smart Inserter
Posts: 1044
Joined: Sun Feb 16, 2020 12:47 am
Contact:

Re: 10k SPM bot-free train-heavy modular base

Post by NotRexButCaesar »

hornetDC wrote:
Wed Mar 03, 2021 12:11 pm
Robot follower count uses all 7 packs.
Each of the packs separately. (One for automation, one for logistics, et cetera)
: Alea jacta est. Determine what you intend to accomplish with an action before execution.
Have you ever heard the gospel? Most have not.

Post Reply

Return to “Medium/Big/Gigantic Sized Structures”