Moderator: OpenTTD Developers
This patch allows trains to reserve 3 (instead of 1) blocks ahead. Based on number of reserved blocks, there are different colors on signals (since v3, yellow is yellow ).
Each passable color has different maximum speed - green is unlimited, double yellow is 100km/h, yellow is 40km/h (or you can change that in settings).
It helps trains to reduce unnecessary stopping (behind other trains) and allows them to better join the main lines. Also it's more like in real life
- fixed 2x maglev speed in forgotten cases
- fix - trains in tunnels/on bridges can look ahead too
- fixed inconsistend behavior between reservation and extending, when block signal placed behind station.
- code cleanup
- added setting for watching next signal -> train can accelerate before passing next signal (default off)
- added setting for not slowing down in stations. Old behavior is more real, but slow trains in stations can be annoying and can create huge traffic jams.. It's up to players what they want. (default is slowing down)
- when train design speed is lower than double yellow speed and yellow speed, it extends only 2 blocks and 1 block
- settings check to forbid double yellow speed value lower than yellow speed value
- speed limits for maglev are multiplied by 2 (idk.. maybe this should be configurable too, but 3 settings in this patch are enough for me...)
- when loading "old" savegame, converting pbs states into new format, no more green/random colors on every pbs after loading trunk/stable saves.
- fixed same overflow bug when yellow pbs disabled
- fixed byte overflow bug causing 255 reservations in some cases
- lost trains can extend their paths too
- on pbs - block signals interface trains don't slow down anymore. It was pointless and it would force players to use only block signals or only path signals. However keep in mind, that both way PBSs make their surrounding "PBS blocks", which slow down trains entering the block from block signal (they are then forced to make reservation from non-pbs, which leads to entering this as from yellow signal).
- orders should be fixed. Generally they act as expected, it will need testing though.
- some refactoring a.k.a. let's crash the game where it previously worked fine
- drawing yellow state(s) part 2 - replaced every pbs sprite with supermop's sprites
- drawing yellow state(s) part 1 - electric signal variant
- block signals aren't influenced by this patch anymore (except when u make weird intersections combining block and path signals, but it's a feature, not a bug)
- fixed some bugs causing game crash
- setting for turning it on/off; setting for custom speeds other than 40/100
- checking/fixing savegame compatibily
- it works with both acceleration models
KNOWN BUGS/TODO LIST:
- when using normal signals with reservation, maybe consider it??
- not yet reported bugs
- is there better place for extending reservation than CheckNextTrainTile function?
- should be there speed limits setting for basic railtypes? [Normal+electric+unknown/monorail/maglev] Or is sufficient regular and 2x maglev?
- does it matter that "ExtendYellowReservation" and "FindExtendPbs" are recursive functios? Should they be while cycles instead?
- should be "ExtendYellowReservation" function merged with "ChooseTrainTrack"? (which will make "ChooseTrainTrack" a bit more complicated)
- has this patch noticable effect on game performance? Only performance problem can in theory appear in CheckNextTrainTile->FindExtendPbs function. However I have no idea, if it can make big enough difference to be noticable.
Here are windows binaries, linux binaries, patch files and grfs in one zip file. Please report bugs. I'm not aware of any bugs, which can crash the game. On the other hand, autosave is never bad idea
- There are 2 versions of signal graphic "shiny" (default) and "original". If you like the original more, you can copy it from "PBS_4_Aspects_NEWGRF\original\PBS_4_Aspects.grf" and paste into baseset folder
- (13.24 MiB) Downloaded 206 times
Probably you mean, that it is ambiguous situation with block signal prior to the junction with many other block signals.Eddi wrote:au contraire... it would be way easier if there were no block signals at all...McZapkie wrote:Good idea, but maybe it would be sufficient and easier to have block signals with such feature?
In such situation, it can give plain green signal or green+yellow, practically I presume that it is nowadays rather uncommon situation,
PBS are used instead. Block signals are used where they are supposed to be (single line).
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, preindustrial houses, wired, ECS industry extension, V4 CEE train set.
Addicted to freeciv longturn.
Btw. version 2 available.
Here are some quick dirty 4 aspect, UK styled colorlight signals. Still need to add a distiction for one-way, and the semaphores.
Pixels taken from OGFX, so released under GPLv2
I've done a UK styled distant semaphore version - with the distant (yellow) semaphore showing 3 positions to get the 4 total aspects; horizontal (next signal stop), 45 degrees (next signal caution), and vertical (next signal clear). The distant semaphore is on top mostly to give room for the vertical position. The home signal (red) has two positions; horizontal (stop) and 45 degrees (clear).
The shading is crude because I just flipped sprites to get the drive on left / drive on right variants. I am not sure if the base set needs to include the German style semaphores as well, but for now I would just use these for both.
Added one-way signs to color light signals.
It counts as evening where I am!
Edit: I noticed one of the signals is missing lower semaphore in one indication, so I will fix that tonight.
And it looks like supermop's electric signals (4 Aspect PBS Colorlight.png) would need improvement. Only one pixel light for most rotations isn't enough. On my standard 1920*1080 screen on normal zoom is most of the time almost impossible to tell, which color displays on signal.
UK style semaphores are fine, there is big visible difference between aspects.
Binaries posted in first post, let's test this!