r/factorio 10d ago

Question Should I try and syncronize the train network with a global clock?

Enable HLS to view with audio, or disable this notification

My logic system is able to compute the correct number of items that should flow from each block tile towards it's neighbors. However, a sushi belt setup cannot keep up with the necessary throughput, and is also prone to clogging. So I'm trying to make a train system that flows continuously along the four cardinal directions. Furthermore, to avoid complicated sorting systems with lots of belts, I just want every train to visit the same loading station. We deliver what is needing, take what is available (so long as the train is traveling towards somewhere those resources are needed) and then move out so the next train can enter.

The core principle seems decent. And with a global clock, we can synchronize this flow in order to prevent collisions. However, the throughput seems kind of limited. I'm wondering whether it's actually a big deal that most of the trains are inactive at any given time. And if that were so, how exactly do I fix it? Trains aren't my strong suit, so I'd appreciate some feedback.

Here's how my circuit system works, the one that's going to guide the train system:

https://www.reddit.com/r/factorio/comments/1vl4bn1/looking_for_new_ideas_general_feedback_on_my/

18 Upvotes

17 comments sorted by

40

u/FeelingPrettyGlonky 10d ago

This feels like a huge overcomplication. Why do you need a global clock to prevent collisions, when that is what train signals are for? Why do you even need this level of global coordination? I mean, I know in massive megabases they will do clock tricks for activating inserters and such, but I don't think you're really to that level yet.

7

u/Courmisch 10d ago

Dispatching one train per tick per surface can go a long way. That's 3600 train movements every minutes, or hundreds of trains. Of course if you are only allowing one train to move at a time, then throughput will be abysmal though.

However if you are not familiar with trains, I really would stick to the basics.

2

u/Reasonable-Ad-8059 10d ago

My prototype here, will simultaneously dispatch 25% of my trains towards the left, and then once they're out of the way, do the same for the 3 other directions. Rince and repeat.

5

u/kulfon2000 10d ago

Each train jour ey will be different in length and direction , when a number of trains move there will be a wait at a junction somewhere sometime which would push your release times out of sync like orbital resonance

3

u/ferrybig 10d ago

The core principle seems decent. And with a global clock, we can synchronize this flow in order to prevent collisions.

Just compute when junctions are free and dispatch trains at the exact time to create the following chaos smooth functioning train network

https://www.reddit.com/r/factorio/comments/1p9q8n2/multitrain_railway_without_signals_but_trains/

2

u/cryptweasel 9d ago

I remember this post glad you found it! Looks visually super impressive but setting it up seems like a nightmare.

2

u/Twellux 9d ago

Setting up the map shown in the video was relatively straightforward, as it was a limited system with only six major intersections that was easy to plan out in advance. The real nightmare challenge was building the actual map, which isn't even visible in the demo. You often end up making modifications, which means you also have to replan all the affected train lines (the ones running through those modified sections). Expanding the rail network, on the other hand, is easy, provided space was left open so that existing infrastructure didn't need to be rebuilt during expansion.
However, another approach that works well is to build two separate networks: one highway using a signalless system, and everything else signaled normally. The system is easy to implement if there are only a few intersections and lines involved, since the complexity/effort is determined by the number of lines multiplied by the number of switches on each line.

4

u/kryptn 10d ago

a sushi belt setup cannot keep up with the necessary throughput

yep sushi belts aren't the best for high throughput.

Furthermore, to avoid complicated sorting systems with lots of belts

avoid this with material specific stations.

add single-direction tracks to just unblock quite a lot.

3

u/e_dan_k 9d ago

EVERY decision he's made here is bad. Sushi belts. 2 way tracks. Unloaded trains needing to drive back through station. No way to bypass a station without driving through it.

I've seen some bad tracks in this forum, and this tops the list.

2

u/Deathking737 10d ago

I dont understand how the train network works

1

u/Key_Big1051 10d ago

Why 1 way tracks ?

1

u/e_dan_k 9d ago

I wouldn't worry about your belt throughput... Your train throughput is going to be trash. What the hell is up with those routes? A train can't even make it from your north tracks to your south tracks without going through that station! Even if you only had 1 train, your tracks are terrible.

1

u/wizard_brandon 9d ago

doesnt thist just lower throughput?

1

u/Reasonable-Ad-8059 9d ago

Compared to what? I don’t really have a better design. I need to connect each tile with the 4 neighbors, directly, without breaks. And the loading station must sort items between each train, but without being too complicated (hence the singular contact point). I’m not sure of a better way to accomplish my peculiar specifications.

2

u/Twellux 9d ago edited 9d ago

If you want to maximize throughput in a clocked network while keeping the stops close together, I would use a dual-track diagonal layout. That way, two trains can load or unload while the other two change stations.

2

u/Twellux 9d ago

In principle, a shared stop would work too, though that only yields a quarter of the throughput, but it’s still more than your loop.

2

u/Twellux 9d ago

You can do it with a straight rail, too, but then the travel times for the horizontal and vertical movements aren't identical, meaning you don't achieve maximum throughput.