Kale's Model Railroad Tutorials

OpenTTD is a fully open-sourced reimplementation of TTD, written in C++, boasting improved gameplay and many new features.

Moderator: OpenTTD Developers

KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Kale's Model Railroad Tutorials

Post by KaleTrans »

Well, I decided to finally post these in a place with normal text formatting. Discord is not the place for a text based document style of tutorial - so I've decided to just post links to these here instead.

That being said, welcome to my little educational thread on Model Railroading OpenTTD. Here are my tutorials.

EDIT: Tfw you do the image hosting incorrectly because you haven't used a forum since 2014. Will be fixed.

EDIT2: Image hosting fixed. 8)

EDIT3: Image hosting... not fixed. Fixing.

Model-Railroadizing OTTD 101: An Introduction

Now I'm not an expert but Transport Tycoon is an OLD game. I started playing this game when I was maybe six years old on Windows 98, back when everything was beige. All I would do was mess around with running trains and building tracks places with no real purpose - I was just a kid who liked trains. Later on I came back to it as a young-adult and learned to actually play the game a bit. I would connect every industry and town, beat all the scenarios, etc. etc. but even in the early 2000s the game was showing its age. Maps were small, basic features were missing, and functionality was limited so I moved on. Once you made a bunch of money and bought out your competitors the game got stale quickly.

Image

Safe to say, this is as far as the original game will get you in terms of gameplay. It ain't much. Playing for money in this game quickly becomes far too easy and ends up doing nothing but slowing you down a bit rather then something to overcome with a strategy or a tactic. I see many people coming in the discord and talking about how much money they're making and I'm here to say – you're missing the best part. You have a train game with the most operational depth at scale of all time at your disposal and you're here to make money? I am here to challenge this notion.

So fast forward to now, the year of our lord 2023 – the game has gone through multiple open source iterations and has been essentially been being modded for decades. What happens to a game when it gets modded for decades? Well you get OTTD in it's current form. The Vanilla version has seen many updates, new features added, newGRFs made and most important of all – Patch Packs.

Image

I won't get into the weeds of explaining the infrastructure of an open source project but all you need to know is that the most popular patch pack by far is the legendary JGR Patch Pack. It adds a dizzying array of quality of life improvements, performance changes, entirely new sets of features and really turns the already vastly improved Vanilla version into a game with immense amounts of depth. JGR's patch pack makes everything I will show you here possible.

Image

From one of it's many time saving features, to multiple schedule dispatch to the ability to play enormous country sized maps (and I'm not joking about this, the scale here is unparalleled for any similar game) on any potato computer it gives you the ability to essentially create your own model railroad sandbox on a scale that your Transport Fevers or Railroad Empires can only imagine. Express trains that take 30 real life minutes to go from end to end, massive cities with their own metro systems, neighborhoods, industrial areas, ports and 20 platform stations. It all makes a little more sense when you're able to just spread things out a bit.

Image

This is a screenshot from a game currently running on my own private server. It is 8192 tiles by 4096 tiles. We've been working on this game for months and are still barely scratching the surface. Major cities are the size of entire scenarios from the vanilla game. There's detail, there's Shinkansens that go from one side of the island to the other, there's freight trains, there's passenger trains. The trains all have schedules, places to be, connections to make, busy rush hours to deal with and this is all able to be reflected in game. There's no real “gameplay” goals but foamers spend thousands of dollars and years of their time on small layouts in their basements with no real goal other then finishing it and running trains – so why not do the same thing here? For free? With no space limitations?

Image

Now sure - there's no pretty 3D graphics like newer games and obviously this isn't the same as having real moving models moving around your layout, but it costs nothing to play and doesn't take 32 gigs of RAM to run modded. There is some give and take – I will not lie to you and say this is not a journey you take without pain. The foundation of this game is still almost 3 decades old and is developed entirely by volunteers and enthusiasts. This leads to some strange limitations and just a general overall un-intuitiveness to the whole experience. You'll spend hours working on some tedious thing only to realize if you ctrl clicked in the right place that same process would take 5 minutes. It's one of the reasons I think this style of play has only relegated itself to veterans of the game who've been playing for years and years.

That's where I come in. I will (badly) try and lead you into enlightenment. Turn on money cheat and magic bulldozer, forget about legacy TTD gameplay, and embrace the strange, frustrating, charming, powerful beast that is Open Transport Tycoon Deluxe. You've realized the philosophical shift from "tycoon game" to "charming 2d train and city sandbox" and now you're ready to hop on board.
Last edited by KaleTrans on 23 Jul 2024 15:54, edited 7 times in total.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Model-Railroading OTTD 101: JGRPP, Settings and GS


Alright (if you're on Discord) first thing you're gonna wanna do if you haven't yet is just type...
"/jgr" into the #bot-spam channel.

Or alternatively just use this link: https://github.com/JGRennison/OpenTTD-patches/releases

Download the most recent version.
Image

Extract everything wherever you want to (it will use the same OTTD documents folder as Vanilla for your content, saves etc.) and you're all set.

Your main screen should end up looking this.

Image

Now begins the fun part. You're gonna need to mess with your time settings. OTTD has a strange relationship with how time works, but try to simplify things for yourself without getting too mired in the weeds of ticks, minutes, days, months and how it all correlates to real time.

This section is important. Your wall clock will dictate how you perceive time in your game. For this style of play we want to simulate a 24 hour period of time. Think of it as simulating an average weekday on your railroad. So you want time in minutes rather then days on and - we use ticks per minute at 300 because I like to spread things out a bit more, but this comes down to personal preference ultimately. All you need to know is that TPM is the best representation of how the relationship between a real life minute and OTTD "ticks" interact. The more ticks per minute the slower your in game clock.

Image

I don't like having ticks in my schedule options (again, to simplify things.) If you really want to you can use both ticks and minutes to get things really accurate, but I don't think this adds much to the experience.

Image

I believe these are on by default but if they're not, light em up.

Image

More JGR specific settings that I find pretty important. Realistic braking and realistic acceleration will go a long way in making your trains run a bit more like they would in real life. I won't explain how it works, but I use it. Weight modifier for freight is also up to you on how challenging you want to make things. I like to force myself into making realistic gradients so I add a bit of a weight multiplier, but you don't need to. Also I really like "Enable train speed adaptation" because if a fast train gets stuck behind a slower one, it won't accelerate and decelerate - it will just mirror the same speed and follow behind. Seeing this in game makes my brain feel warm and fuzzy. Don't ask me why.

Image

For limitations - you're gonna be in sandbox mode. Max out everything - or at least what is applicable to our model train layout.

Image

Just turn off vehicle breakdowns, annoying mechanic that will screw up your schedules. Having to send trains to infinite depth depots for maintenance is an immersion breaker (I like using real yards because it looks neat and adds a fun operations challenge). However there is a improved breakdowns setting that goes along with realistic braking that is kinda cool. Won't get into it here, but that ones up to you.

Image

Town stuff. I recommend these settings for towns and city zones. This makes it so that "Towns" will not have any skyscrapers (depending on how the building set you're using works) and "Cities" will have a lot less skyscrapers. Controlling the skyscraper menace is tough but it can be done. You do NOT want towns building roads, they look bad and you want to be doing that yourself anyway. Building out road systems and town layouts is part of the fun of this style of play in my opinion. Town cargo generation factor will not matter since the GS we will be using (Peaks and Troughs) will control that automatically depending on the time of day it is. If you're not using Peaks and Troughs then tweak to your liking. I usually just leave it around 1.0.

Image

UPDATE: This has since been updated and now town cargo shows as 100% instead of -1.0. A bit less confusing now, but the behavior remains the same.

Some notes here: Effect of distance on demand is an important setting. It will dictate whether the majority of your passengers want to go far or go close. We want the majority of the passengers going close so local, regional and metro trains carry a bit more traffic, otherwise the game feels very intercity travel heavy. I recommend 130% or even 140% for this (EDIT: At a large scale, push this up to maximum. It will still feel intercity heavy). Day length I use 21 as that's just what feels right to me, this will effect industry and pax production so I try to meet a middle ground. Length of time in game is something I completely ignore, so it's somewhat inconsequential. I think my current game is in year 2478 - doesn't matter.

Image

So this is all the most important stuff in my opinion. Some more options to look over if you want to start a multiplayer server but... that deserves its own tutorial. Onwards to our next topic of discussion...

Gamescripts! I think this leaves a little room for different options here but I'll give you what I personally enjoy the most.

The GS that really gives this style of play some depth other then just "trains moving around a map inconsequentially" is Erato's Peaks and Trough's GS. Fairly simple as far as Gamescripts go but this has a huge impact on your map. What this does is essentially fully turn the game into a 24 hour cycle you need to plan and respond to. Now you have a reason to run passenger trains all day and then stick them in a yard at night because no one is using the train from 1am to 5am. It really pushes you to take advantage of the scheduling and signalling features available to us, as well as force more realistic operational styles since in real life - if you're running a mixed network of freight and passenger traffic, most of the freight will move at night when there's less interference.

Image

It also gives you different styles of peaks and off peak passenger generation to simulate different trends in the way societies move via train. Japan:

Image

Hyperpeak:

Image

Equal peaks:

Image

UPDATE: P&T now includes two new modes, Day/Night and UK. Day/Night being somewhat of a simplification that only generates town cargo during the day and not at night. I would recommend starting with this.

Image

You CAN do this style of play with something like Renewed Village Growth - which focuses more on using specific cargoes to build up cities. It just depends on what you're going for. There is an intermediate style of play that I consider "60 minute timetabling" that lends more to using RVG standalone without P&T but that's a different discussion. P&T is handy in the fact that if you know your way around the backend of the game it is apparently pretty easy to combine with other GS. I have run a combined RVG + P&T script that requires cargoes to grow towns but still runs on a 24 hour timetable. However after a lot of extended experimentation with this if you're running a big map I recommend just using P&T as growing towns will become a tedious process when you have A LOT of them.

The downside is that this does not allow for as much gameplay when it comes to freight, but it is still quite fun to roleplay scenarios - especially if you're playing a MP game.

This brings us to last but definitely not least... The Cheat Menu. Magic Bulldozer should always be on, tunnels should cross each other so you can pull off funny metro shenanigans, station ratings should stay fixed at 100% and town local authority ratings should always be outstanding. This turns the game into a sandbox rather navigating your way through a bunch of annoying limitations. Now you build your own towns, you have infinite money to do so, and you can delete and rebuild anything you want.

Image
Last edited by KaleTrans on 28 Jun 2024 21:33, edited 2 times in total.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Model-Railroading OTTD 101: Scheduled Dispatch - Basic 60 Minute Timetabling

Alright class, so for this lesson I'm going to run you through one of the coolest features in JGRPP: Scheduled Dispatch. I will show you how to do my favorite two ways to use it which consists of what I call "60 minute timetables" and "24 hour timetables". The sixty minute version of this is what I would call SD easy mode - although you can still use this system in a more advanced way such as Rico's Archipelago Map in ⁠the game-journals on the discord (https://discord.com/channels/1427241115 ... 0654902292) where every service is scheduled for well timed transfers and service levels. The 24 hour version of this is a bit more complex and unintuitive but meshes very well with the previously discussed gamescript Peaks and Troughs, as well as being more realistic if you're into that kind of thing. Let's get into it.

First, lets run through the concept of 60 minute timetables if you don't understand the basics just yet. It will help you grasp more advanced concepts down the line and introduce you to the basics of how scheduled dispatch works in game.

So here's the "SD Example Railway," as well as our timetabling train and its route. You always want to start this process with one train (or a few depending on how you set things up) to fill out the timetable automatically by logging travel and wait times. Travel times are the most important as wait times for me tend to be customized depending on the station or what's going on around it. So set your train to "automate" and let it run it's route.

Image

As the train goes through it's timetabling run it will fill out travel times between stations for its schedule. Now the train knows that it takes a certain amount of time between stations and once this is set it will expect to be there at the time depicted on the right hand side.

Image

Once the train has done its timetabling run you will have all the travel times logged for you. That's how you know the train is ready to be setup with scheduled dispatch. You will find the arrival and departure times for each station timetabled on the right hand side next to "A" and "D" respectively. All you need to do now is click off automate and fill out wait times if you think that's necessary. For the sake of our example I've given every stop 1 minute waits. You can do this simply by double clicking on each order you want to add a wait time to. Then you click on "Scheduled Dispatch."

Image

This will bring up the scheduled dispatch menu. Hit "enable."

Image

Now you need to assign your scheduled dispatch to an order. We're going to use "Yoshiwa North" here, our eastern terminus.

Image

Alright we've got our Scheduled Dispatch order set and we're ready to add departure slots. These slots will be picked up by trains arriving at the station and then they will depart once the time you have set is reached.

Image

First things first though, we want to change the "Duration" to only 60 minutes.

Image

What this does is change your trains schedule to run through 60 minute rotations on every hour in game. Keeps things simple, simulates a perpetual hour rotation and thus makes it easy to create and set your schedules, and then intermingle them with other routes eventually.

Image

So here I've ctrl clicked the "add departure slot" button to bring up this "set time" menu. This will add multiple departure slots at once so you don't have to fill them in individually. This was not always a feature so in order to do 24 hour timetables you had to set each on individually. How times have changed. Here I have it set to add a departure slot every five minutes starting from 0000 and finishing at 0100, the end of the hour.

Image

Here's what you end up with, all the departure slots for the current hour are laid out in front of you. This hour will repeat infinitely and will fill in current times automatically. It's also given us some information such as "this schedule requires 3 vehicles" to ensure that a train is back in the station by the time another dispatch slot is ready to be picked up.

Image

Then I created two more trains (make sure to ctrl click these when you hit "Clone Train" so all the orders are shared) so that to make sure all these departure slots are picked up by the time the train has done it's full route and "returned to base."

Image

And here's our system in action. Trains depart Yoshiwa North every five minutes, make their stops and then return to Yoshiwa North to pick up another return slot. If you do this right there should only be one train waiting at a time.

Image

Here's an example of what you can do with this in game (this is from the current game on JGR Server 03). "LHAM 08" is a local train (stops at every station) and thus needs to leave right after "EHAM 04" which is an express (only stopping at select station stops). Depending on the length of the route there may need to be an overtake eventually, but doing this simple move ensures that the local stays out of the way of the express without using tons of infrastructure and allows you to get a lot more out of less tracks and infrastructure.

Image

Another example from an that same JGR server 03 game, this is a regional rail system for the city of Hamamatsu. On the map light blue means 3 trains per hour (so a train every 20 minutes), red is 6 trains per hour (a train every 10 minutes), and yellow is 12 trains per hour (a train every 5 minutes). Everything is timed out so that without significant delays, a regional train will run through the yellow section where the central station is located every 5 minutes. This leads to being able to move a really massive amount of passengers around without just spamming trains and dealing with frequent jams. Not only is this functionally cooler on a basic level then just hitting auto separate, it also is pretty meta. This is why if you see my companies in JGR games I am able to achieve a lot of throughput with a lot less infrastructure and trains.

Image
Last edited by KaleTrans on 28 Jun 2024 21:48, edited 2 times in total.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Model-Railroading OTTD 101: Scheduled Dispatch - 24 Hour Scheduling

So now that you understand how SD works, our next step is learning how to further explore the possibilities of mirroring real railroad operations and playing along with P&T. In real life a train does not constantly move from station to station all day and night - it tends to do things such as take a rest at night in a yard, get maintenance done or refuel at certain points. So the train will leave the yard early in the morning, then go back and forth between station stops and return to the yard at night. Through creative usage of conditional orders and multiple scheduled dispatch this can be achieved.

UPDATE: There is also the new "tags" feature in JGR that will be helpful for this style of scheduling. This method I explain below using dispatch slots for the conditionals is still the easiest way to set up a working route with working yard orders, so I recommend learning this first. The tag system however seems to require a bit more initial setup but you can do more with it. Either way, both methods are viable it just comes down to personal preference.

Here's our tutorial railway, really the only difference you need to note from this and our last example is the yard(s).

Image

Now sure, you can use depots for this... but we're trying to make a model railroad right? Besides, the addition of yards adds a fun network challenge to your railroad building experience and seeing all your trains chilling in the yard at night just looks... cool. Here I've used a combination of buffers and invisible station tiles to create this small yard next to Asora East to stable our trains in at night time. If your yards start getting obnoxiously big, it doesn't hurt to have a blackhole depot to shove all the extras in - but for now we will use a real stabling yard.

Image

You're going to want to run a scheduling train just like we did previously and map out all the travel and wait times (including your yard stops). I will usually place the yard stop first, then the first station stop, then the rest of your route, and then back to the yard at the end. Once we are finished your train will not always follow this path, but for now the travel times will be logged. Everything else following this step may have a few different ways of setting them up depending on personal preference - but this is how I do it.

Image

So next, you're going to fire up SD, add two schedules, then assign Schedule 1 to your yard order and Schedule 2 to your first station stop.

Image

Next, you fill out your departure slots for the whole day as opposed to just an hour rotation from the 60 minute scheduling section. I want my trains to leave their first station stop every 10 minutes (6 TPH) from 0500 to 0100. Something to note here is that I've changed the "Start Date" from 0000 to 0400 so that every "day" starts at 0400 which allows you to properly organize any departure slots that may be after the midnight mark. You can add multiple dispatch slots at once via ctrl clicking on add departure slot as discussed previously in the last section.

Image

Here's Schedule 2 ready to roll. These are your station departure slots.

Image

Now Schedule 1 holds a different purpose - it is purely for morning orders to leave the yard. So we only need as many departure slots as you have trains running this route (which is currently four). So I usually take a look at my departures for the first station stop - above we can see that we have 0500, 0510, 0520 and 0530. Travel time to the yard is only 1 minute so we just need to allow for 1 minute of travel and maybe some wait time before the train departs its first station stop.

Image

Now the only step left to create your fully functioning, mega realistic train operation is to delve slightly into the scary world of conditional orders. Select "end of shared orders", click on the little arrow next to "Go To" and then select "Conditional Order Jump."

Image

It will give you a little cursor thingy with an arrow pointing at an X on it. Select the first station stop (home of Schedule 1 SD) and it will give you the default conditional order "Jump to order 2 when Load percentage is equal to 0".

Image

Image

You're going first click on the first list of variables which can be found in the arrow next to "load percentage" here and scroll down to "Dispatch slot" and then select it.

Image

Next you want to select "Dispatch Slot" (as I've moused over in the above photo) and then your station stop schedule - so for me that's Schedule 2. In this case we will leave the "next" variable as is.

Image

Then we'll change "is first slot" to "is not first slot" so that when our train reaches the END of it's daytime schedule and there are no more departure slots left until the next day it bypasses the conditional order and goes straight to to order number 1 which is the YARD order and where your trains will be stored at night until their morning departure slots come along. Still with me? Yeah? Maybe? Alright lets keep going.

Image

Here's a little visual of the loop we have created using the conditional order. The yellow line is only for releasing your train from the yard in the morning and the orange line is what orders your train will follow for most of the day. So it will reach it's last stop (which in this case is the same station stop as where it began as will often be the case. You DO want to duplicate the order at the beginning and the end so you have room for the conditional), and then look at the departure slots left in the day. It will then automatically pick up the next available slot OR if there is none left it will bypass the conditional and head right back to its yard for the night (blue line).

Image

Confused yet? You probably will be, but if worst comes to worst do not try and understand. Simply copy my work and observe in game. That's how I essentially learned how to do this. You will learn to be more flexible with it as time goes on.

In the meantime lets observe this on our example railway. Here it is at night time, all trains are in for a rest waiting for the next day. This allows you to dump freight onto your network at night a lot of the time just like how they often do IRL. There's no passenger cargo gen at this time of the day due to P&T so running passenger trains at this time is pointless anyway.

Image

Our first train is away, having picked up the 0455 morning departure slot from the yard. It runs to the first station stop and then picks up its first station departure slot of 0500.

Image

At 0500 the train departs it's first station stop.

Image

And these will continue to file in until they're all on the line. Once they're in operation they will go back and forth all day until it's night time again (or until whenever their last departure slot is) and bravo you've created a really satisfying little model railroad.

Now to give you an example of how far you can take this we have a setup for this Nozomi Shinkansen on my private server that runs a very LONG distance in game.

Image

In order to facilitate the morning rush there's not 1 but 3 yards it needs to depart from. Here's Takiuma yard our biggest one, in the middle of it's route near Keru the biggest city.

Image

This is Kubokawa Yard in the far east (don't judge this is not finished).

Image

And Kyoshi Yard at the opposite end.

Image

So what I've done here is created 5 different scheduled dispatch schedules. When trains get run through this order "loop" they get sectioned off to yards at night since each end of the route has it's own set of station dispatch slots and sets of conditional orders like we discussed previously. So any time a train reaches either end of the route (or the station stop before the middle yard in this case if you look at my order list closely) and it's run out of dispatch slots for the day it will send to the yard at all the different locations and then restart in the morning from its respective destinations. On bigger maps this allows you to deal with P&T on long routes, otherwise you're only sending trains in one direction. Not totally neccessary but on busy lines this is somewhat similar to how real railroads store and release their trains at night.

Image

Either way, there you have it. The conditional part can get a little confusing, but for anyone who knows programming this will actually be somewhat familiar to you due to the terminology and logic involved. The positive part here is that instead of you creating a basic python script for a spreadsheet or whatever - you're using this system to move little pixel trains around on an enormous pixel model railroad. Enjoy!
Last edited by KaleTrans on 02 Jul 2024 15:52, edited 3 times in total.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Model-Railroading OTTD 101: Basic PBS Signal Programming

So here I’m going to run through some of the more basic uses of PBS programming in game. Some of these are absolutely essential if you want to prevent jams and not overbuild or over engineer network infrastructure. Smart uses of these will also go a very very long way in making sure your network runs smoothly. They may seem small, but when your network gets bigger and more complicated smart uses of these will add up.

So first things first, for functional uses I always turn on restricted signals in my zoning tab so I know where all my programming is located. This can be found here.

Part 1: Accessibility

Image

Image

This will make your signals with routefinding restrictions show up like this.

Image

So you don’t accidentally delete anything you worked very hard on. To access the signal programming menu you simply open the signal selection menu and look for the routefinding restriction button (it’s a gear).

Image

Then once this button is selected simply click on the signal you wish to program.

Image

Part 2: Simple Priority Signals and Reserves

One of the most useful ways to use signal programming is as a quick priority signal.

You have two options:

Reserve through: PBS will not end a reservation at this PBS signal, it is as if the signal is not there at all in the forward direction. This action has no effect when applied to a signaled tunnel/bridge entrance or exit.

Long Reserve: If a train makes a PBS reservation that ends at this PBS signal, a second separate reservation will be attempted starting from this signal. The first reservation is not canceled if the second reservation is not possible. This action has no effect when applied to a signaled tunnel/bridge entrance. (definitions taken from the JGR Wikipedia) https://github.com/JGRennison/OpenTTD-p ... ignalling

For a quick and dirty priority I find long reserve works the best. Here’s an example:

Image

Our passenger train, being more important than our freight - train gets priority over the freight train due to this chain of long reserve signals. If you don’t want a slow train to pull out in front of a fast one this will keep that from happening. You can also add a simple If statement to this if you want to be more specific.

Image

If you only want to enforce priority for passenger trains and not other freight trains, this will do the job.

Image

The conditions are not met for the signal to enforce priority and the long reserve chain is not activated in this case.

Quality of life tip: You can easily copy and paste signals by opening up an empty route restrictions menu and selecting the “copy” option. It will create a green border around your selected tile and it will paste any existing programming into your selected signal.

Now if you’re smart you’ll notice how you can only enforce priority one train at a time. If another fast train comes through after your first fast train (as often happens on busier lines), it will still get cut off. This is where slots come in, but we’ll get to that in a tutorial that focuses on advanced routing restrictions later down the road.

Reserve through on the other hand is much more useful as a jam prevention tool. For example, if you have a long freight train running through a station with shorter platforms and a signal block for each platform. The freight train is longer then the platforms so it will block the station throat if it has to stop which can lead to jams. To prevent this you simply do the following.

Image

Now the long freight train will never stop at any of the platform signals and run through to the other side without issues.

Part 3: Denials and Penalties for sorting and guiding trains.

Another very important thing to learn is how to use denials for sorting. My favorite example is sorting for slow and fast lines. This can drastically improve the efficiency of your network with very little extra work.
Say you have a four track main line and want to run some slow trains on the outside tracks and some fast trains on the inside.

Image

So what you can do to enforce this, is simply add some if statements with denials attached to them.

If you want to sort by speed you start out with a max speed if statement.

Image

Image

Then you click on the arrow next to “is” to control your variables.

Image

I chose greater than or equal to so that any train that has a top speed that’s greater than 120 km/h is unable to go down this track. Then you click on the value box and type in your speed.

Image

Then select end if and click on the insert drop down menu to select deny.

Image

So you’ll end up with this.

Image

So now any train with a max speed faster than 120 will not be allowed to go down this outside track. Now you still need to program the inside track so that slow trains won’t use it. So repeat the same steps but this time program it differently so that any trains with a max speed lower than 120 will get denied.

Image

And now you have a speed sort quad track line with fast and slow tracks. This is super important if you want to host other players’ intercity or freight trains to prevent them from getting stuck behind slower trains on your main lines or vice versa.

Image

There are innumerable other uses for this, but denials allow you to make 100% sure you can stop any train on your network from going somewhere you do not want it to go, as well as sort your trains for more efficient operations. Penalties are similar, but they do not outright deny. Using penalties to guide your trains is useful if you want a train to take a specific path but you don’t want to outright deny it from using other paths. In this instance, using our last example I have incoming slow (Mat ‘64 models) and fast trains (ICM models) and I want them to have an incentive to use certain platforms. However, I don’t want to outright deny them just in case it’s usual platforms are full.

Image

Here you can see the local train is being pushed away from the two platforms meant for express trains, but it can still use the platforms meant for express trains in an overcrowding event, as seen below.

Image

And there you have it. These simple programming tricks will get you a long way in being able to handle multiple services on one line, being able to handle other players’ trains in a cooperative situation and just general network management skills.
Last edited by KaleTrans on 02 Jul 2024 18:12, edited 1 time in total.
User avatar
jfs
Tycoon
Tycoon
Posts: 1867
Joined: 08 Jan 2003 23:09
Location: Denmark

Re: Kale's Model Railroad Tutorials

Post by jfs »

Please note that you have linked images from Discord's CDN servers, and those will stop working eventually. Some of them already have stopped working. You need to upload the images somewhere else to use them outside Discord.
User avatar
Captain Rand
Traffic Manager
Traffic Manager
Posts: 205
Joined: 28 Jan 2012 07:35

Re: Kale's Model Railroad Tutorials

Post by Captain Rand »

None of the images you're posting are appearing.

Pete.
There's nothing like a deadline to hone the concentration.

Good manners cost nothing, but earn respect.

" 'Impossible' is not in our vocabulary." Jack Chrichton, Farscape
User avatar
ProbablyIdiot
Engineer
Engineer
Posts: 9
Joined: 23 May 2023 10:22

Re: Kale's Model Railroad Tutorials

Post by ProbablyIdiot »

The images don't show up in the two last posts.
I've played for years, but I'm still stupid. :lol:
User avatar
paulcobbaut
Engineer
Engineer
Posts: 12
Joined: 20 Apr 2017 08:19

Re: Kale's Model Railroad Tutorials

Post by paulcobbaut »

ProbablyIdiot wrote: 29 Jun 2024 07:14 The images don't show up in the two last posts.
Same, but yesterday there were no images in any of the posts.

Thank you Kale for this tutorial, it is interesting.
--
Sent from Debian Linux
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Yes everyone, I am aware of image hosting issues. It takes a bit of busywork to take the images off of discord and onto a proper image hosting service and I am a busy (and lazy) man. This will probably mostly serve as a tutorial hosting zone for me to direct people from the discord to, so I'm just trying to get my ducks in a row before I release the whole shebang and get the model railroad bootcamp on the discord up and running.

Should be almost all fixed. :)
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Model Railroading OpenTTD 201: Basics of Scheduling Different Service Patterns

Alright so you’ve learned how to do 60 minute turntables, you understand the mechanics of SD - now what do you do with this?

Well, you can use less infrastructure and make sure your trains don’t conflict with each other at junctions but on a deeper level, what can you really do with it? What’s the point?

Welcome to the world of service patterns. Ever wonder how the Japanese manage to fit an express service (fewest stops), a rapid service (usually a combination of an express/stopping service pattern), and a local (stops everywhere) down one two track line with passing loops? It’s all timing, and if you know some basic tricks it will make your life a lot easier doing this in game. You don’t need line graphs for this, it’s more just a simple concept to build your networks around.

A bonus of doing this kind of thing is a much more efficient clearing of cargo dist. If you’ve read my tutorial on cargo dist etiquette in the JGR Server 02 tutorial you’ll know what I mean. This enables you to do this without all of your lines having separate express and local tracks.

Step 1) Establish your most important service.

Your most important service 99% of the time will be your expresses. There are different categories of these sometimes, such as the Limited Express vs. Express in Japan, IC vs. ICE in Germany, even things like the Acela vs. the Northeast Regional on the Northeast Corridor in the US - but we’re going to start with the train that stops the least in just about any case. This is usually the most direct and fastest service and you want all other trains out of the way, so it makes the most sense to schedule this line first in OpenTTD.

For this example I am going to use the Western Coast Mainline in a game running on my private server. I am running this service from Newcastle Upon Thyme to Finstock Heath.

Image

It’s only stop is “Sudfield” in the middle, as it’s a big-ish city and has some important transfers.

Image

It terminates in Newcastle Waterloo so I’ve named it “Napolean’s End.” 🙂 It has a 144 kmh top speed and runs 2 trains per hour, as the link between these two cities is quite busy already.

Step 2) Establish local or semi-fast services.

So on this line there are two services based out of Newcastle that are based on the schedule of the express train. There’s L3, our suburban service that stops everywhere and SE 1, that stops everywhere up until where L3 starts, then becomes an express. A s***.jpg below will help visualize this.

Image

So let’s start with the easiest to understand, L3. It has a top speed of 96kmh and stops at every station on its route.

Image

L3 leaves at xx10 and xx40, every half hour. But why? Let’s look at the other services that share this line.

So our most important service as mentioned earlier is our express, the vaunted “Napolean’s End.” It leaves Newcastle Waterloo at xx00 and xx30 every hour.

Image

So this train leaves 10 minutes before L3 does, it is “first in line” so to speak.

The next train to leave is SE 1, which leaves Newcastle Waterloo at xx05 and xx35 and has a top speed of 144kmh just like TT2.

Image

See where I’m going with this? That leaves us with L3, which as you already know leaves at xx10 and xx40. Which leads me to my final point:

3) Stack your departure times.

The easiest way to mix service patterns is this. Stack your service patterns. Put your express first, then have anything running on the same line with a different service pattern leave right after it.

If you were looking at the Waterloo departure board in the station it would look like

TT2: xx00
SE1: xx05
L3: xx10

Then it repeats later on at

TT2: xx30
SE1: xx35
L3: xx40

This will keep all your service patterns out of the way of each other until you add more frequent services or you go to setup…

4) The return trip.

So for the return trip be mindful of arrival and departure times of all your services.

Image

Here you’ll see TT2 pulling out right before SE1 begins its return journey from Sudfield, following the same rule as before just in reverse. You can see below that TT2 leaves Sudfield heading for Newcastle at xx48 as part of its return journey from Finstock.

Image

So when does SE1 begin it’s return trip? A couple minutes after at xx53, once again following our rule of departure stacking.

Image

Then we go further down the line to Sladchurch where our L3 has finished it’s run from Newcastle and is waiting for SE1 to pass by and turn into an express so it can begin its run back towards Newcastle. Since TT2 has already passed by SE1 previously, we don’t need to worry about it running up the back of L3 currently.

Image

And below SE1 passes by our waiting L3 shortly before L3 departs in the same direction towards Newcastle right behind it and the stack continues.

Image

The only other thing to keep in mind is the possibility of adding some passing loops as you add more and more trains per hour. If you’re running 4 tph locals (say, every 15 minutes) and 2 tph express trains, the express trains will most likely need to overtake the most recently departed local at some point and so on.

Conclusion

So if you get nothing else from this just remember to stack your departure times. Start with an express service and then have your local depart right behind it. That’s it. This will get you pretty far in terms of scheduling a network properly without having to break out a spreadsheet or giving yourself a migraine. If you really want to wing it to success simply follow this rule and watch out for conflicts as the game goes on, then add a passing siding or two. Enjoy.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Model Railroading OpenTTD 201: How to Make Stations that Look Nice - Dutch Stations

Alright, I’m making a station tutorial. We’ve been presented with some really cool station Newgrfs (and objects sets that can add to this) but very rarely do I see people using them to their full potential. This is understandable as, like a lot of the rest of the game - it can require a bit of trial and error to get things looking good.

Let’s start with a newgrf that I think is a great middle ground of usability, variation and looks - the Dutch Station Set.

image1.png
image1.png (496.44 KiB) Viewed 5201 times
Dutch station set is easily one of the most popular in OpenTTD and it holds this title for a reason. It has a wide variety of tiles to choose from, including advanced tiles like overlaps, non-track tiles, and elevated station tiles. Most importantly however - it’s pretty easy to use.

Let’s get started, from smallest to biggest.

Small Two Track Stations

Here’s your average two track mainline and a small town to provide a station for:
image2.png
image2.png (432.63 KiB) Viewed 5201 times
I find starting simple, setting a template and filling in the gaps is a good principle to start with, so I usually go for a basic station layout using basic platform tiles. Quick note - very rarely will you see the double sided platforms at stations in real life. Most of the time you will be using tiles in the “single sided platforms” section - for any set really. It also just looks way better than the double sided tiles.
image3.png
image3.png (479.82 KiB) Viewed 5201 times
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

So this station needs a station building. Not every station needs this as not every small town station has a ticket building in the modern era, but this town does. For this we can scroll down to “Non-track Stations” and we see a number of options available.
image5.png
image5.png (363.59 KiB) Viewed 5195 times
For this small town station we try and use the appropriate buildings such as the “Douma Style, simple,” or…
image6.png
image6.png (455.86 KiB) Viewed 5195 times
Something like KNLS-1.
image7.png
image7.png (485.01 KiB) Viewed 5195 times
Last edited by KaleTrans on 02 Jul 2024 20:09, edited 1 time in total.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Now we have a basic layout and a basic station building to add detail to. I usually scroll to the “Non-track tiles” section here and flesh out the station building a bit like so.
image8.png
image8.png (522.21 KiB) Viewed 5194 times
Next you can add some detail to the platforms. For this I usually add some fences for which you can then scroll to “fenced platforms, white (or black).” Here I’m going to add some on the corners to round things out a bit.
image9.png
image9.png (537.71 KiB) Viewed 5194 times
We go back to “single sided platforms” to add some platform detail with some roofs.
image10.png
image10.png (516.5 KiB) Viewed 5194 times
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

And there you go, a simple, easy to make small town station.
image11.png
image11.png (507.36 KiB) Viewed 5192 times
You can add details to this of course. I like looking at satellite images of stations I’m attempting to emulate. Let’s go to the Netherlands for a second.
image12.png
image12.png (595.09 KiB) Viewed 5192 times
We can something like this pretty easily with what we have available. While not 1:1 of course it’s fun to use real life as inspiration.
image13.png
image13.png (495.06 KiB) Viewed 5192 times
With some help from Auz CarParks Objects, we now have a pretty realistic little Dutch station.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Stations with Overpass and passing tracks.

Say you have a four track mainline or you need some passing tracks, you can add some overpass tiles, or even use the staircase tiles if you’re using a road bridge to cross the tracks. For example:
image14.png
image14.png (488.24 KiB) Viewed 5188 times
There’s two ways to approach this, pedestrian overpass for the station using the single sided platform footbridge tiles.
image15.png
image15.png (347.22 KiB) Viewed 5188 times
The way to fill in this footbridge gap properly is to use waypoint tiles - which are often made to work with certain station tiles. In this instance as part of the Dutch Station set we have accompanying footbridge middle tiles. Using the waypoints for tracks where there are no stopping trains makes this layout easy to use and you can always use the waypoints to force trains onto the fast tracks.
image16.png
image16.png (555.44 KiB) Viewed 5188 times
Last edited by KaleTrans on 02 Jul 2024 20:23, edited 1 time in total.
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Fill in some details and you end up with something like this. Nice and tidy, but also functional.
image17.png
image17.png (648.13 KiB) Viewed 5187 times
Another nifty way to do this is to use a road bridge as your footbridge via the “stairs to bridge” tiles in single sided platforms.
image18.png
image18.png (498.03 KiB) Viewed 5187 times
And you can also use the fenced tiles to get rid of that little graphics bug with the platform showing through the bridge.
image19.png
image19.png (394.23 KiB) Viewed 5187 times
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

And voila, here’s your new station.
image20.png
image20.png (592.63 KiB) Viewed 5186 times

Medium/Small Sized Hub Stations

Alright let’s move on to something a bit more advanced. Say our town of Brunshausen expands a bit (theoretically, not visually) and requires more platforms to stop there to take care of demands. There’s also been a new branch line built to a neighboring town that hosts a DMU that shuttles back and forth.

First, let’s get a station layout down.
image21.png
image21.png (613.08 KiB) Viewed 5186 times
Room for two more platforms, one platform dedicated to the branch line, one for down local trains (and down fast trains if needed), one for up fast trains and two for up slow trains (and up fast if needed).

Also note my switch placement. I like to space them out a bit more because I think it looks nice, but mostly you just want to avoid doing things like this. Not only does it look bad, but it does nothing to guide your trains into the right places, it’s the spam method. Don’t do this.
image22.png
image22.png (435.96 KiB) Viewed 5186 times
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

Platform wise we now lay down a basic platform layout starting with some buffer placement for our stub platform for the branch line.
image23.png
image23.png (277.53 KiB) Viewed 5178 times
Then more single sided platform placement and the station building.
image24.png
image24.png (439.43 KiB) Viewed 5178 times
Adding some modern overpass tiles to change it up. I’m using the “island platforms” for this to keep things fluid.
image25.png
image25.png (397.59 KiB) Viewed 5178 times
KaleTrans
Engineer
Engineer
Posts: 30
Joined: 26 Jun 2024 15:53

Re: Kale's Model Railroad Tutorials

Post by KaleTrans »

And then we top if off with a non-track tile that goes with the modern overpass tiles next to it.
image26.png
image26.png (391.31 KiB) Viewed 5176 times
Then we add our fences, like usual.
image27.png
image27.png (448.59 KiB) Viewed 5176 times
Then we add some more single sided platform tiles to add roofs and some details.
image28.png
image28.png (489.91 KiB) Viewed 5176 times
Post Reply

Return to “General OpenTTD”

Who is online

Users browsing this forum: Semrush [Bot] and 6 guests