Dynamic train composition? (Decoupling/Shunting/etc..)
Moderator: OpenTTD Developers
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Answers for previous posts:
Decoupled part of train is becoming new train. There is open question, if the train limit should apply for trains or for locomotives. With this patch it makes more sense to limit locomotives, since they are what makes profit possible.
MUs (dualheads) won't be allowed to decouple, there is not much to do with generic wagons, it would be just weird. Only possibility to decouple will be to decouple 2 already coupled MUs.
Then there is the reversing idea. My plan is to rework reversing, basically as mentioned ^^. Then it will allow more combinations for shunting.
I'm also working on: Adding number parameter for how many units to decouple. And basic conditions for finding train for couple - IS_EMPTY, IS_FULL, and something with cargotypes. This will create framework for such thing as non-electric->electric shunting station
Decoupled part of train is becoming new train. There is open question, if the train limit should apply for trains or for locomotives. With this patch it makes more sense to limit locomotives, since they are what makes profit possible.
MUs (dualheads) won't be allowed to decouple, there is not much to do with generic wagons, it would be just weird. Only possibility to decouple will be to decouple 2 already coupled MUs.
Then there is the reversing idea. My plan is to rework reversing, basically as mentioned ^^. Then it will allow more combinations for shunting.
I'm also working on: Adding number parameter for how many units to decouple. And basic conditions for finding train for couple - IS_EMPTY, IS_FULL, and something with cargotypes. This will create framework for such thing as non-electric->electric shunting station
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Maybe involve train group into? To better handling with choose, which carriages should to be coupled?
Formerly known as: McZapkie
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, wired, ECS industry extension, V4 CEE train set, HotHut.
Another favorite games: freeciv longturn, OHOL/2HOL.
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, wired, ECS industry extension, V4 CEE train set, HotHut.
Another favorite games: freeciv longturn, OHOL/2HOL.
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
MU doesn't necessarily imply dual-head.Karn wrote:MUs (dualheads) won't be allowed to decouple, there is not much to do with generic wagons, it would be just weird. Only possibility to decouple will be to decouple 2 already coupled MUs.
See attached for what I mean.
In general the NewGRF spec permits wagons and locomotives to be arbitrarily different when coupled compared to when not, and it isn't obvious to determine whether this is a "safe" thing to allow in the context of decoupling.
Probably you will need to snoop on what the NewGRF is doing and just not allow de/coupling if it is doing this sort of thing (e.g. using variables 40-42, 60-62, etc.)
- Attachments
-
- MU decouple test, 1945-02-08.sav
- (29.97 KiB) Downloaded 255 times
Ex TTDPatch Coder
Patch Pack, Github
Patch Pack, Github
-
- Tycoon
- Posts: 5954
- Joined: 27 Apr 2005 07:09
- Contact:
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
"Longer" wagons/coaches are usually articulated, i.e. composed of 2 or 3 vehicles, e.g. by use of var 4D.JGR wrote: In general the NewGRF spec permits wagons and locomotives to be arbitrarily different when coupled compared to when not, and it isn't obvious to determine whether this is a "safe" thing to allow in the context of decoupling. [...]
@Karn
A very interesting project!
regards
Michael
- trainman1432
- Transport Coordinator
- Posts: 316
- Joined: 05 Jan 2013 02:34
- Location: at home
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Could somebody post a precompiled zip package of the Decouple (https://github.com/Palo123/OpenTTD-YPS/tree/Decouple)
because I appear to be having... issues... with compiling.
because I appear to be having... issues... with compiling.
Jetrain
YATTC
YATTC
- FulliAutomatix
- Engineer
- Posts: 120
- Joined: 24 Aug 2014 12:20
- Location: Kaon Prison, Cybertron
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
I wouldn't mind that too please! I have no idea how to compile OpenTTD and when I've looked at it I can't figure it outtrainman1432 wrote:Could somebody post a precompiled zip package of the Decouple

Known as StarRaid/UnholyPhish on other platforms
Some links to stuff I've made:
-=RUKTS=- | -=NML Py-Patcher (a Python 3.0 pre-compiler)=- | -=Screenshots=- | -=Doom Soundtrack port to OpenTTD=- | -=Heightmaps collection=-

Some links to stuff I've made:
-=RUKTS=- | -=NML Py-Patcher (a Python 3.0 pre-compiler)=- | -=Screenshots=- | -=Doom Soundtrack port to OpenTTD=- | -=Heightmaps collection=-

Re: Dynamic train composition? (Decoupling/Shunting/etc..)
This is a very interesting project, but I'm not sure how it would work with trainsets that change wagon properties according to the engine they're attached to.
For instance, in the set I'm working on, a passengers wagon's characteristics (livery, appearance, properties, even length...) are determined by the leading engine type. If a wagon has a "short" length when attached to engine A, and a "longer" length when attached to engine B, how would it behave in a game where I swap engine A with engine B in the consist? So far, we're not allowed to change a wagon's length outside of a depot, so I'm really puzzled as to how it would work with this patch.
For instance, in the set I'm working on, a passengers wagon's characteristics (livery, appearance, properties, even length...) are determined by the leading engine type. If a wagon has a "short" length when attached to engine A, and a "longer" length when attached to engine B, how would it behave in a game where I swap engine A with engine B in the consist? So far, we're not allowed to change a wagon's length outside of a depot, so I'm really puzzled as to how it would work with this patch.
The French Narrow Gauge Train Set is now released! Get it here
- andythenorth
- Tycoon
- Posts: 5705
- Joined: 31 Mar 2007 14:23
- Location: Lost in Music
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
It won't, not everSnail wrote:This is a very interesting project, but I'm not sure how it would work with trainsets that change wagon properties according to the engine they're attached to.

But I think it's good that forks can explore new ground.
The future of OpenTTD is stable core, and lots of feature forks. Some forks won't be compatible with newgrf spec. That's ok.
Meanwhile we've discussed 'shunting' here since year zero.


FIRS Industry Replacement Set (released) | HEQS Heavy Equipment Set (trucks, industrial trams and more) (finished)
Unsinkable Sam (ships) (preview released) | CHIPS Has Improved Players' Stations (finished)
Iron Horse ((trains) (released) | Termite (tracks for Iron Horse) (released) | Busy Bee (game script) (released)
Road Hog (road vehicles and trams) (released)
Unsinkable Sam (ships) (preview released) | CHIPS Has Improved Players' Stations (finished)
Iron Horse ((trains) (released) | Termite (tracks for Iron Horse) (released) | Busy Bee (game script) (released)
Road Hog (road vehicles and trams) (released)
-
- Tycoon
- Posts: 5954
- Joined: 27 Apr 2005 07:09
- Contact:
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Depends. Some wagon properties, based on the engine, will fall back to default values. Others, like modifying vehicle length, would not work outside their scope (defined only when done in depots), and will probably produce desyncs in MP games.andythenorth wrote:It won't, not everSnail wrote: This is a very interesting project, but I'm not sure how it would work with trainsets that change wagon properties according to the engine they're attached to.
BTW, apart from changing vehicle length by means of a CB for part vehicles inside a MU (which might not be split anyway by this patch), I don´t see any use case (= "bad feature") for changing vehicle lengths for wagons hauled by a normal engine (locomotive)?
regards
Michael
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Here are windows binaries. Use on own risk, it's still in development.
Update 0.2: Decoupling variable number of units and various fixes
edit: binaries removed to avoid confusion, there is newer version 0.3 available with less crashes
Update 0.2: Decoupling variable number of units and various fixes
edit: binaries removed to avoid confusion, there is newer version 0.3 available with less crashes
Last edited by Karn on 07 Jun 2018 18:21, edited 2 times in total.
- FulliAutomatix
- Engineer
- Posts: 120
- Joined: 24 Aug 2014 12:20
- Location: Kaon Prison, Cybertron
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Thought I'd post this video that I made demonstrating the patch for a sleeper styled loco swap service 

Known as StarRaid/UnholyPhish on other platforms
Some links to stuff I've made:
-=RUKTS=- | -=NML Py-Patcher (a Python 3.0 pre-compiler)=- | -=Screenshots=- | -=Doom Soundtrack port to OpenTTD=- | -=Heightmaps collection=-

Some links to stuff I've made:
-=RUKTS=- | -=NML Py-Patcher (a Python 3.0 pre-compiler)=- | -=Screenshots=- | -=Doom Soundtrack port to OpenTTD=- | -=Heightmaps collection=-

Re: Dynamic train composition? (Decoupling/Shunting/etc..)
I don't know how your patch works, but i would propose to handle the "wagon properties depend on engine" by having the player specifically define "detachable wagon groups" in the depot. only those may take part in shunting operations, and vehicles in that group will not have access to vehicle properties outside that group. as far as the NewGRF is concerned, that is the whole train. shunting may only happen betewen such groups, and they cannot be searated by shunting
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
"Let's make player's judgement prevent technical problems". What could go possibly wrong?Eddi wrote:I don't know how your patch works, but i would propose to handle the "wagon properties depend on engine" by having the player specifically define "detachable wagon groups" in the depot. only those may take part in shunting operations, and vehicles in that group will not have access to vehicle properties outside that group. as far as the NewGRF is concerned, that is the whole train. shunting may only happen betewen such groups, and they cannot be searated by shunting
- andythenorth
- Tycoon
- Posts: 5705
- Joined: 31 Mar 2007 14:23
- Location: Lost in Music
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
How about consists of consists (and also articulated consists within them)?
What could go wrong (it's Turtles All The Way Down), eh?
What could go wrong (it's Turtles All The Way Down), eh?

FIRS Industry Replacement Set (released) | HEQS Heavy Equipment Set (trucks, industrial trams and more) (finished)
Unsinkable Sam (ships) (preview released) | CHIPS Has Improved Players' Stations (finished)
Iron Horse ((trains) (released) | Termite (tracks for Iron Horse) (released) | Busy Bee (game script) (released)
Road Hog (road vehicles and trams) (released)
Unsinkable Sam (ships) (preview released) | CHIPS Has Improved Players' Stations (finished)
Iron Horse ((trains) (released) | Termite (tracks for Iron Horse) (released) | Busy Bee (game script) (released)
Road Hog (road vehicles and trams) (released)
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
i don't think that's what i saidKarn wrote:"Let's make player's judgement prevent technical problems". What could go possibly wrong?
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
There is technical problem with variable wagon length depending on NewGRF engine. The problem is, when you change the engine outside the depot, it can corrupt certain things like absolute positions on map or some properties on level of changing NewGRF in game. You proposed to make player define what's technicaly safe to do outside the depot, even when the game will end up in unexpected state. So player would have to guarantee with his choices that the game won't crash/corrupt.Eddi wrote:i don't think that's what i saidKarn wrote:"Let's make player's judgement prevent technical problems". What could go possibly wrong?
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
no, i proposed that the user gets the option to specify what he intends to do, so the game can avoid the unsafe operations, without completely removing them from the game.
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Okay, now I get it. It sounded like you are trying to solve general case. So disallow by default and allow only specified consists.
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
Some newgrfs have restrictions, using "start-stop" or "can_attach" switches, to handle MU things etc.
Is it possible to check result of these switches when coupling/decoupling order is being set?
Probably only second one is possible (decoupling order sanity check)...
Is it possible to check result of these switches when coupling/decoupling order is being set?
Probably only second one is possible (decoupling order sanity check)...
Formerly known as: McZapkie
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, wired, ECS industry extension, V4 CEE train set, HotHut.
Another favorite games: freeciv longturn, OHOL/2HOL.
Projects: Reproducible Map Generation patch, NewGRFs: Manpower industries, PolTrams, Polroad, 600mm narrow gauge, wired, ECS industry extension, V4 CEE train set, HotHut.
Another favorite games: freeciv longturn, OHOL/2HOL.
Re: Dynamic train composition? (Decoupling/Shunting/etc..)
What about livery overrides? The stuff associated with that is only ever meant to take place in a depot. All kinds of crazy stuff could happen: in particular a change in capacity may occur.
Who is online
Users browsing this forum: No registered users and 3 guests