News:

Want to praise Simutrans?
Your feedback is important for us ;D.

Rail vehicles in drive-by-sight reserve junctions unnecessarily far in advance

Started by freddyhayward, May 06, 2023, 08:04:14 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

freddyhayward

Currently, rail vehicles in the drive-by-sight working method, such as trams, will reserve a rail tile as soon as it enters its line of sight, which will block the junction until the vehicle crosses the junction.

In my opinion, this is undesirable behaviour for urban tram networks, because a tram about to enter a junction will quite often be blocked from doing so by a tram much further away from the junction, simply because the farther tram had a more direct line of sight towards the junction. This is particularly disadvantageous when using slower trams in the 19th century, because it can often take several minutes for the farther tram to reach and cross the junction. The result is that urban tram networks consisting of many junctions are unnecessarily penalised with delays.

I propose that rail vehicles in the drive-by-sight working method should only reserve junction tiles when doing so becomes necessary to maintain their top speed, or the top speed of the junction, whichever is lower. In the case of urban tramways, this would usually be one tile away from the junction.

Matthew

I would also appreciate it if anyone is able to contribute this improvement. I think that realistically trams in drive-by-sight mode would only ever need to reserve one tile ahead (I can't imagine anyone will ever set metres_per_tile at less than than the 30-40m needed to stop a tram at 35km/h).
(Signature being tested) If you enjoy playing Simutrans, then you might also enjoy watching Japan Railway Journal
Available in English and simplified Chinese
如果您喜欢玩Simutrans的话,那么说不定就想看《日本铁路之旅》(英语也有简体中文字幕)。

Rollmaterial

I have another idea: introduce tram junction signals. These would only clear when all tiles within sighting distance are clear, in a similar way to time interval signals at junctions. The clearance check could also be limited to the end of a junction with an end of signalling sign or another specific sign.

Matthew

Quote from: Rollmaterial on May 06, 2023, 05:10:57 PMI have another idea: introduce tram junction signals. These would only clear when all tiles within sighting distance are clear, in a similar way to time interval signals at junctions. The clearance check could also be limited to the end of a junction with an end of signalling sign or another specific sign.

You can already build rail signals on tramways so in practice you can get this effect by combining absolute block signals with end-of-signalling signs provided the roads don't already have wayobjects (and with some bugginess around end-of-signalling signs).

I do think it would be a clearer UI if these tools were in the tram toolbar though.
(Signature being tested) If you enjoy playing Simutrans, then you might also enjoy watching Japan Railway Journal
Available in English and simplified Chinese
如果您喜欢玩Simutrans的话,那么说不定就想看《日本铁路之旅》(英语也有简体中文字幕)。

Mariculous

Talking about drive_by_sight clearance, I'd generally expect drive by sight reservations to work the same way as moving block does. That means only reservate as many tiles as required to stop from current speed.
Maybe one could add an additional safety distance.


Talking about tram junction signals: There is one major issue with drive by sight (and btw. also moving block) around junctions:
Whenever dual tracked lines cross or branch out, there are consecutive tiles of junctions along train paths, which are considered tile-by-tile, but effectively must be considered as one!
Currently, this can lead to head on "collisions" deadlocking the junction.
New players are regularly trapped into this, especially in the early era of drive by sight railway operation.

Thus, I'd suggest drive by sight and moving block to always expand reservations to the last consecutive junction tile.
In some situations, this might still cause deadlocks as trains might not be able to leave the junction, so alternatively we might always expand drive by sight and moving block reservations so that trains will never stop on junction tile.

If you still like the idea of specific tram junction signals, that functionality might instead be used by such a junction signal, butt bear in mind that this won't fix deadlocking in the early railway era where signals are not yet invented.

Rollmaterial

Quote from: Sirius on June 07, 2023, 02:56:56 PMIf you still like the idea of specific tram junction signals, that functionality might instead be used by such a junction signal, butt bear in mind that this won't fix deadlocking in the early railway era where signals are not yet invented.
It doesn't have to be a signal, it could also just be a sign like the one-way or end-of-signalling signs.

Junna

Currently, end of signalling signs result in, if two trams run close to one another, the second one will slow down to 1km/h until it has passed through the entire tile.

Octavius

Realistically, how could tram A know that tram B has reserved the junction, when the driver of tram A can't see tram B and there are no signals? The way this can be solved in real life is that the tram comes to a stop just before the junction, the guard/conductor gets off and walks onto the junction. After verifying that the track is clear and the points have been set properly, he waves his flag, the tram continues and the guard hops back on. This solves the problem of reserving the junction too early, but now the tram reserves it very late.

On modern systems this can be sped up a bit by using traffic lights and remotely controlled points, so that separation from trams on the same route is handled using drive-by-sight, but separation from trams on crossing/merging routes is handled by signals. This is how Simutrans handles drive-by-sight, but, as noted in this thread, it reserves the junction too early.

Basically, there are in real life two flavours of drive-by-sight. The oldest is completely unprotected, used on old-style tramways and unsignalled railways. The tram or train has to slow to a crawl or stop for every junction. The more modern flavour has protected junctions. On tramways, the tram announces its approach to a local controller. When no conflicting route has been reserved, the route is set and the traffic light cleared. On railways, this flavour is used for call-on signals when two trains couple together.

jamespetts

I have now implemented what I believe is the requested feature - I should be grateful if people could check that this works with the next nightly build.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Junna

This seems to have broken signalling completely, and trains will ignore signals and instead proceed in drive by sight where they ought not to, for some reason, getting themselves in total lockups. They keep ignoring the signals at the platforms and proceeding out of the stations and into oncoming traffic. It's total chaos, Railtrack style.

pretty sure this is because they ignore the next signal they encounter after going through a chose signal for some reason? It's a complete mess.

jamespetts

Quote from: Junna on September 09, 2023, 04:10:41 PMThis seems to have broken signalling completely, and trains will ignore signals and instead proceed in drive by sight where they ought not to, for some reason, getting themselves in total lockups. They keep ignoring the signals at the platforms and proceeding out of the stations and into oncoming traffic. It's total chaos, Railtrack style.

pretty sure this is because they ignore the next signal they encounter after going through a chose signal for some reason? It's a complete mess.
Thank you for the report and apologies for this. I have now pushed a fix for this, which should hopefully resolve this issue from to-morrow's nightly onwards.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.