Standardized Roadtype Scheme

From GRFSpecs
Revision as of 13:54, 14 October 2023 by Brickblock1 (talk | contribs)
Jump to navigationJump to search

Not in a useable state do not use

There is currently not enough clarification on how the standard is meant to be used along with other major issues

Surface / Type [X***]

Describes the road surface / rail type and thus the vehicle type.

Roadtype:

Letter Meaning (Road) Powered Roadtypes Recomended vehicle set fallbacks
R Regular Road RI(S)
P Passenger-only RPI(S) R
G Guided busway RPG P then R
I Industrial Site (ISR) I R
B Bicycle Lane RB(Z) R
W Waterway W
A Amphibious on road (hidden) RPI(S)W R
S Snowy or Iced Track S
a Amphibious on snow (hidden) SW S
Z Pedestrian Zone Z
E Eyecandy E
p Pump/Pipeline p

Tramtype:

Letter Meaning (Tram) Powered Tramtypes Recomended vehicle set fallbacks
R Regular Rail RI(M)
P Passenger-only RPI(M) R
I Industrial Site (ISR) I R
B Bicycle Lane (R)B
S Suspended Monorail S
M Metro M(RP)
O Trackless trams O
E Eyecandy/Electrical infrastructure E

It is the vehicle set's responsibility to implement fallbacks to other appropriate surfaces. It is also up to the author to decide if they want to do it or not.

It is up to the track set to implement all recommended roadtypes in the powered_roadtype_list (NML). The same goes for tramtypes: powered_tramtype_list (NML). It is further advised to implement support for the roadtypes/tramtypes in brackets, if applicable.

Hidden roadtypes for compatibility should be implemented by road sets. It is up to the author to decide if they want to implement it as a hidden roadtype or not.

Speed / Feature [*X**]

Any character may be used for roads, but at least one road must have "A". It is suggested that roadtype and tramtype speeds use capital letters (A-Z) and roadtypes and tramtypes with specific features use lowercase letters (a-z). Vehicles should use "A".

Terrain / Stability [**X*]

Describes the roughness of the road surface / trackbed stability, and thus the vehicle tier.

Letter Meaning Powered Roadtypes
a Very slow / rough / light aA
A Slow / rough / light aAB
B Regular ABC
C Fast / stable BCc
c Very fast / stable Cc

If all classes aren't defined by the road set, the other ones should be in the alternative_roadtype_list (NML). The same goes for tramtypes: alternative_tramtype_list (NML).

Road vehicle sets should not implement fallbacks for terrain / stability.

Classes "a" and "c" are entirely optional for road/tramtype sets and should under no circumstances be used by vehicles.

Energy [***X]

Describes the energy source of the track / vehicle.

Generic classes:

Letter Meaning (Road) Meaning (Tram)
N None None
E Overhead electrified (Catenary) Overhead electrified (Catenary)
G Ground electrified Ground electrified
Z Ground and overhead electrified Ground and overhead electrified

Specialized classes:

Letter Meaning (Road) Meaning (Tram) Vehicle set fallback
3 n/a Third Rail G
4 n/a Fourth Rail 3 then G
C n/a Cable G

A road or track set that only uses specialized types, should map the generic types to the most suitable specialized type in the set.

The default labels (ROAD, ELRL)

It is up to the road set author to decide what labels should replace these, but it is recommended to choose RABN / RABE.

Vehicle set authors might need to add the default labels as a fallback. If not implemented, their vehicles won't show up on the default roads and/or tracks.

Summary for Road/Track sets

This section summarizes the above for road/track sets.

[X***] Track gauge and type class
  • Define at least one track type for every track gauge/type class you want in your set.
  • If you only provide tracks for one gauge/type, consider leaving some free railtypes so a player can load an additional set for some other type.
[*X**] Speed limit class
  • Make sure class A is always available, either directly or via an alternate label.
  • Use only class A if you don't want speed limits;
  • With speed limits, A is the lowest speed limit. Continue with B, C, etc. for increasing speed limits;
  • The speed class can also be used to implement additional eye-candy track types, use letters higher in the alphabet for this.
[**X*] Axle load class
  • Always define all classes A through E for every track type class / electrification combination, either:
  • Extend the predefined classes only if you also provide a train set that makes use of these.
[***X] Energy source type class
  • If your set only uses specialized classes, always map the generic classes to the closest matching specialized type via property 1D.
Standard labels [RAIL, ELRL, MONO, MGLV]
  • Always define the standard labels when possible, instead of what would be the equivalent of the standard label in this scheme.
  • Map the equivalent labels from this scheme to the standard labels using property 1D (NFO) or alternative_railtype_list (NML).

Or, put differently, for each gauge/type, select one or more energy source types. For each type/energy combination provide all axle load classes for the speed class "A", either as a real type or as an alternate of another type. Provide more types with a different speed letter if you want to provide several different speeds or other eye-candy tracks.

Summary for train sets

This section summarizes the above for train sets.


[X***] Track gauge and type class
  • Use the track type class that matches the vehicle;
  • Define a fallback type via the railtype table in case you want the vehicle to be available on a different track if no matching track set is loaded.
    • Specialized subtypes like "n" might not always be available. If you want those vehicles to be still available then, fall back the the generic class (e.g. "N").
[*X**] Speed limit class
  • Always use class A for every vehicle.
[**X*] Axle load class
  • Use all classes A through E according to the maximum axle weight of the vehicle.
  • Extend the predefined classes only if you also provide a track set that makes use of these;
    • When extending the predefined classes A through E, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.
[***X] Energy source type class
  • Use the energy source type class that matches the vehicle;
  • When using specialized classes, define a fallback type via the railtype table in case you want the vehicle to be available if no matching track set is loaded.
Standard labels [RAIL, ELRL, MONO, MGLV]
  • Define a fallback type to the standard labels via the railtype table in case you want the vehicle to be available on the standard tracks if no matching track set is loaded.


Be as specific as you want when selecting the railtype, it is the job of the track set to select a playable, reduced subset out of all possible type combinations.