I kinda started one replying to Zodurus, but he kinda
disappeared... Here's a sample:
Rail Zero
In (open)BVE, the track you drive on is technically one rail,
named rail 0 (zero). You can curve and pitch the implicit rail 0,
while all other rails are defined relative to rail 0 and follow
rail 0 into curves and pitch changes.
Blocks of 25m
In BVE 2/4, tracks are defined in blocks of 25m. In openBVE,
tracks are defined in blocks of x m.
x is by default 25m, but can be changed,
however almost all rail objects are designed for 25m blocks. So
let's leave this alone.
All objects except those specified using Track.FreeObj.
You must place the following commands
at lengths of multiples of the block length (i.e. if the
block length is 25m, these commands must be placed at 25m, 50m,
75m, 100, and so on...).
Track._________
Namespaces
All commands consist of 3 parts, in format:
namespace.command,
namespace.command
argument;argument,
namespace.command
(argument;argument),
and indices are required,
namespace.command(index)
argument;argument,
namespace.command(index)
(argument;argument),
So in
route.comment This is a test route,
or
route.comment (This is a test route),
Namespace = route
Command = comment
Argument = This is a test route
Commands are case-insensitive.
White spaces before and after all commands are ignored.
If a "With prefix" is given, all subsequent commands that start
with a period (.) prefix will be added before the command. For
example:
With Route
.Gauge 1435
.Timetable 1157_M
is equivalent to:
Route.Gauge 1435
Route.Timetable 1157_M
PM me when you are done or have any questions. Also note that I
am focusing on routes optimised/designed for openBVE and may not
work for BVE 2/4.