As you might have seen a guide about self-regulating SBahn was recently added to our Wiki. As #openttdcoop thinks large, we took it a step further and created a complete Self-Regulating Network (SRNW) in our current PublicServerGame (#121). You should definitely check the guide first, to get a better idea of what this article is about.
Though the key points stay the same and I’ll explain them to give you an overview how the network works.
Stations & Trains
First of all you should know that we currently only transport two cargo types in this game (grain [G] and livestock [LV]). Every cargo type needs a dedicated platform at a each station. And of course every train transports only one cargo type. Mixing would be totally useless because we can’t set a Full Load Order for our trains because we don’t know at which station they are going to load or if they even will load anything. Every station platform needs a complex system with so called ‘Dummy Trains’ behind the station. To keep it simple: these trains do the Full Load and give a track free if they did a full load, unload again the real trains join and can do a full load. Clever huh
Subnets are Sidelines
To organise the system we created sub-networks to which a train belongs. Every subnet has its own injection-system and stations as required. The PSG#121 uses a 512×512 map and we divided this map into 12 parts respectively subnets like a clock has. We don’t use the word subnet in practice, instead we call these Subnets Sidelines to keep the terminology easy and conform to our other games. Each Sideline is connected to a mainline via a SLH. The main network uses the SML technique to handle an insane amount of trains. We didn’t built a ring or something, instead we have four mainlines and four big factory drops (again we divided the map into four sections).
Orders & Injection
Every train belongs to a specific sideline and can transport one cargo type ([G] and [LV] in psg#121). There is no real load order, instead the train will just stop at the first station and load or, if all stations are in use, go to the depot and wait until there is a need for an injection.
The injection is a quite interesting topic and I think a lot of experimenting is still needed. We currently use many different systems which belong to two classes: Steady-Injection Systems which inject a train after constant time period (e.g. 10 days) and On-Demand Injection Systems which inject a train if there is a free track at a platform. If I recall correctly I also saw a mixture which constantly injects trains and on demand. Analysing injection systems would fill another article and I will not do that now.
The 100,000 target
The goal of psg#121 is to transport enough grain and livestock to produce 100,000 crates of goods per month. To achieve this we need stations which don’t have only one platform per cargo type. Why? Imagine a farm producing more than 2000 grain or livestock per month, you can’t transport this using a single platform. Mark, ODM and me tested this and found some solutions. The main problem was that if there are multiple dummy trains per cargo type one dummy train could load the cargo which is unloaded by a second one. Avoiding this is only possible if all trains load and unload at the same time. The conclusion is that trains only unload when all trains are loaded, a bit of signalling or logic gates did the trick.
Mark and I built ‘The Mess’ yesterday, which is a station with 3 platforms per cargo-type and of course a connection to the on-demand injection system. Because of the size a Sideline of another subnet is just tunneled underneath the station. It took us more than one hour to build this area (including fixing bugs and testing) and it is just a crazy piece of art.
The possibilities using this technique seem to be endless, this is just the beginning. It should be possible to have several SRNWs within a large one for example. Let’s keep developing this concept and let dynamic networks guide trains to wherever they’re needed.