Author Topic: Double-block-signals  (Read 555 times)

0 Members and 1 Guest are viewing this topic.

Offline Ves

Double-block-signals
« on: April 25, 2017, 07:50:13 PM »
So, I have compiled a bunch of signals with double block specifications to be tested with the swedish pakset (or any other for that matter), and made a savegame that tests the signals:

savegame: http://server.exp.simutrans.com/debug-saves/Two_block_testing.sve
pakset: http://server.exp.simutrans.com/Pak128.Sweden-Ex_Testing_version.zip

The pakset is my test pakset so it will probably not work with any other savegame, and games saved with it might not work with any other version of the pakset.

The savegame have currently 11 tracks:

1 - Double block (dbl) Absolute block (abs) T-signal, abs.exitsignal, abs.choose:
This is to test the T-signal, how its double block capabilities work. It appears to be working ok. The train nicely waits on the platform until the line is clear. There where some issues to begin with, like trains ignoring signals, but I didnt catch what that was all about.

2 - dbl.abs.platformsignal, abs.exitsignal, abs.choosesignal:
This is to test the general behavior as with the T-signal. This also appears to work as intended

3 - dbl.abs.platformsignal, abs.choosesignal:
This should imao yield the result that the train waits on the platform until a platform is free at the next station. This, however, appears not to be working correctly:
The third train stays nicely at the original platform, but it has already reserved the line to the next station, blocking the return passage of the two trains trying to reverse.

4 - dbl.abs.platformsignal, token.exitsignal, abs.choosesignal:
This is my most anticipated experiment! It appears, however, not to work properly, as the two block functionallity appears to be ignored:
When a train is released from the station, it will drive and hold at the token block signal.
Also, there appears to occasionally be some issues with the token block reservations:
The train dont reserve the whole line ahead of itself, only to the firstcoming station, after which, it only reserves the tracks it has traversed. It seems to be the "second" train that gets this issue, that is, the train which first ignores the two block functionallity and holds at the token block signal.

5 - dbl.abs.platformsignal, time-interval-with-telegraph.exitsignal, abs.choosesignal:
You wrote that this was not intended to be used with time interval (with telegraph). I assume you mean that a timeinterval (with telegraph) signal cannot be a twoblock signal?
The other way around, I think, makes sence, and anyway needs to be dealt with, since we cant prohibit a player from placing a (absolute block) double block signal in front of a timeinterval signal. The track no 5 shows this example, and it kind of works in the example. If you look at the trains when only one is is at a station, you see it will reserve a track ahead of the platform, potentially blocking the entrance of another train.

6 - dbl.abs.platformsignal, abs.exitsignal, abs.presignal, abs.choosesignal:
This test was merely to ensure that the doubleblock search did not stop at the presignal, which it appears to correctly ignore. Therefore it seems to work like track 1 and 2.

7 - abs.platformsignal, dbl.abs.choosesignal:
This test is to see what happens if you put it on a choose signal and to see what happens if you have no second block for the signal to reserve. It appears to work just like if the choose signal was just a normal choose signal without the double block specifications. Further testing could discover how one could use a double block choose signal to reserve through stations.

8 - dbl.abs.platformsignal, exit.one-train-staff:
This is my secondmost anticipated test, and there appears to be some issues with this one too:
Firstly, the double functionallity is ignored, allowing the train to head on to the one train staff and hold there.
Second: When the other train is coming back, it stops at the one train staff, the HOLDING train speeds up, passing through the returning train and on to the line. Then the returning train gets into the platform.
Third: The reservation from the one train staff appears to be some tiles behind the cabinett instead of directly behind it. The unreserved stretch is 4 tiles, and the trains are 4 tiles so that could be related but I have not checked that more deaply.
So conclusion on this one: It works, although in a very unexpected way :)

9 - dbl.abs.platformsignal, track-circuit-block.exitsignal, abs.choosesignal:
This was to test the track circuit block as a pure line working method and see wether the signals reserves the direction like they should. It appears to work correctly, however, the departing train will leave a tile reserved at the station.

10 - dbl.token.platformsignal, abs.choosesignal:
As a concept, I tried to make a token block signal be a double block signal. It should theoretically work like in no 3, the train will only enter the line if there is a free platform in the other end, but with the token abilities, it would allow for a very long stretch of single tracked line through multiple singletracked stops, still guaranteeing that there is a free platform in the other end.
There are some issues with it that I find it hard to describe, and one could also consider it to be illegal to use token block as a double block signal.

11 - dbl.abs.platformsignal, dbl.abs.exitsignal, 3x dbl.abs.signal, abs.choosesignal:
Well, this test is merely the silly test: What happens if you put multiple doubleblock signals behind each other?
The instinct tells that a train should not be released from the initial signal if not the entire row of double block signals is set to clear. It appears, however not to be the case, and I have observed trains be released both when only two blocks are clear in front of the signal, but also when it is only one block that is free.

This where all the tests that I have had time to create up until this point. Left to check is wether the feature can be used properly with and on track circuit block and cab signalling and see what works and what not. Moving block doesnt make any sence I think, neither the time interval methods and one train staffs.

Other observations:
I have observed some strange issues with trains ignoring the signals occasionally. I have not had a change to track down any details, as I have been buisy doing this report. When you mess around with the trains, you might occasionally detect something, especially if you send the trains to depot before a new release of them.

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Moderator
  • *
  • Posts: 15381
  • Total likes: 371
  • Helpful: 166
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Double-block-signals
« Reply #1 on: April 25, 2017, 11:55:18 PM »
Thank you very much for your testing: that is most helpful. I think that I have fixed issues 4, 5 and 8. I was unable to reproduce issue 3.

As to 7, 10 and 11: double block signals were really intended to work only with absolute block, track circuit block and cab signalling plain stop signals and it was not intended to allow double block chaining in the way that you describe, as these things go beyond what is necessary to resolve the original issue that double block signals were requested to resolve, and would potentially add a great deal of additional complexity.

I hope that this is helpful. Thank you again for testing.
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.

Offline Vladki

Re: Double-block-signals
« Reply #2 on: April 26, 2017, 06:12:48 AM »
I thought that the double block signal would be 'method agnostic'. I planned to use it on stations where lines with different signalling meet (e.g. Main line with absolute block, branch line with token block). I hoped that the double block signal would allow me to remove the passing loop at the end of token block line.




Offline Ves

Re: Double-block-signals
« Reply #3 on: April 26, 2017, 06:25:02 AM »
Vladki, i think that you in fact can do that, look at which ones he fixed! ;)

The 10 and 11 where "sillytests" to see what happens if you make a token block signal a double block respectively put absolute double block signals in a row.
Example 7, however, did actually not test the variant properly, therefore one can't say now that it works or doesn't as it is right now.

Strange that no 3 was not reproducible! Will have to adjust the save game to see if I can nail down what I saw.

edit:

Ok, some testings:

3 - Appears indeed fixed! Maybe got fixed as a concequence of another bug. With the "Depotbug" (read below)!

4 - Appears fixed! With the "Depotbug" (read below)!

5 - It appears fixed, however, only partly. The line was actually too short to actually demonstrate what happens, and the doubleblock signal holds the line until the entire time interval block is free, that is when the previous train passes the choose signal at the other side. Ideally, the doubleblock signal should release the train already when the time interval signal says caution. With the "Depotbug" (read below)!

8 - Is not fixed: Now, the one train staff seems to be completely ignored. The train continues in Absolute block and revert to drive by sight on reverse.

7 and 10 are easily avoided: I promise I wont code neither choose signals nor token block signals as two block signals. So if not Vladki plans on doing it either.... :)

11 needs a smart solution because one cannot prevent a player from placing multiple double block signals. The current situation is that the double block functionallity disables when the next signal is ALSO a double block signal. The least thing it should do is to react like a 'normal' double block signal, ie only turn green if there are two free blocks ahead.

Another functionallity I think would be very cool is if the double block search follows the same rules as the choose path follow, that is, a end-of-choose sign can cancel the double block functionality of the signal.


So, what is this "Depotbug"?
When opening the savegame the trains are inside the depot, send them out and they will start traveling. Now look at the depot: A ghost copy of one of the trains are driving back and forth on the depot tile! Clicking on it will open up the infowindow of the real train. Deleting the depot removes the house so you can clearly see the ghost train driving backand forth on the tile. Trying to remove the track underneath is prohibited with the explanation that a train cannot be deleted! Very fishy!! :o
It appears, however, not to apply to new trains sent to depot and released again and I remember that I prepared the savegame by  sending all the problematic trains to their depots, release them again but delete the first til of their track, pause the game and then save it in that state so that might be it. However, it might be worth investigating under which circumstanses this might happen so it doesnt happen accidentally to players during a game.
« Last Edit: April 26, 2017, 06:44:31 PM by Ves »

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Moderator
  • *
  • Posts: 15381
  • Total likes: 371
  • Helpful: 166
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Double-block-signals
« Reply #4 on: April 27, 2017, 12:32:41 AM »
I think that I have managed to fix some of these issues (issue no. 5 was especially complex, as the double block signals violated some of the basic assumptions of the time interval with telegraph signal).

I have not had a chance to look at the depot bug yet, but I have made a number of changes that might conceivably be relevant to this. Would you be able to re-test to confirm what now works and what does not? I should be most grateful.
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.

Offline Ves

Re: Double-block-signals
« Reply #5 on: April 27, 2017, 11:20:07 PM »
5 - Appears fixed!

8 - Appears fixed!

11 - Is partly fixed. If all the three trains departs from the left station it appears ok. But on the way they will ignore the double block functionallity.

Dont mind the depot bug, when the game is saved and loaded again, the ghost trains disappear! So that bug can wait a while :)

Offline jamespetts

  • Simitrans-Extended project coordinator
  • Moderator
  • *
  • Posts: 15381
  • Total likes: 371
  • Helpful: 166
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
Re: Double-block-signals
« Reply #6 on: April 29, 2017, 01:42:30 PM »
Thank you for testing this. Can you elaborate more on the remaining issue with no. 11? Multiple double block signals are not intended, so all that is really necessary here is something that is not dysfunctional when players mistakenly do this rather than any specific multiple double block functionality.
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.

Offline Ves

Re: Double-block-signals
« Reply #7 on: April 29, 2017, 05:29:25 PM »
I know the example 11 is not intended, and I will not encourogage anyone to place them in a row (unless they magically starts to stack). I think it is quite clear if you follow the trains from the savegame what happens:
All three of them waits from the left station when they exit the station. One is released at a time according to the double block functionallity.
When the first one reaches its terminus, it will reserve two block in the oposite direction
- Up until this point, the signals have behaved as one would expect!
When the two trains are starring at each other, the third train reserves its final segment wich is just the block behind the second train. That is wrong, as it should need two free blocks, not only one which is currently has.

Now, the example I provide would (and should) not work in any game, it is just to see how the signals works as a proof of concept and no hidden 'features' are there.