Elvas Tower: OR consist format - Elvas Tower

Jump to content

Posting Rules

All new threads will be started by members of the Open Rails team, Staff, and/or Admins. Existing threads started in other forums may get moved here when it makes sense to do so.

Once a thread is started any member may post replies to it.
  • 16 Pages +
  • « First
  • 10
  • 11
  • 12
  • 13
  • 14
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

OR consist format Let's talk details Rate Topic: -----

#161 User is offline   gpz 

  • Superintendant
  • Group: Posts: Elite Member
  • Posts: 1,846
  • Joined: 27-October 12
  • Gender:Male
  • Location:Budapest
  • Simulator:OpenRails
  • Country:

Posted 07 August 2020 - 03:11 AM

How about defining a so called "json schema" for the new format, so we all know what we are talking about, and being able to propose specific changes, and not just talking into the fog? As an example, look at the glTF schema, it can be checked, how the big serious guys are doing this.

Here is a basic schema based on YoRyan's examples on the first page, added my own wishes of having nested objects, and being able to define a constraint.
For the top level tags:
{
    "$schema": "http://json-schema.org/2019-09/schema",
    "title": "train-or",
    "type": "object",
    "description": "The new OpenRails consist format",
    "properties": {
        "List": {
            "type": "array",
            "description": "An array of listElements. This ultimately represents a block or consist ordered sequence.",
            "items": {
                "$ref": "listElement.schema.json"
            },
        },
        "Random": {
            "type": "array",
            "description": "An array of randomElements. This ultimately represents an inventory list to pick units from.",
            "items": {
                "$ref": "randomElement.schema.json"
            },
        },
        "DisplayName": {
            "type": "string",
            "description": "The name that can be referenced in Consist or Train tags",
        },
        "MaxVelocityMpS": {
            "type": "number",
            "description": "Maximum velocity of the sub-elements",
        },
        "Durability": {
            "type": "number",
            "default": 1.0,
            "minimum": 0.0,
            "maximum": 1.0,
            "description": "Durability percentage",
        },
        "PlayerDrivable": {
            "type": "boolean",
            "default": "true",
            "description": "Whether it is to be listed in the player train/consist list",
        },
    },
}

This is for the ordered list tag under "List[]":
{
    "$schema": "http://json-schema.org/2019-09/schema",
    "title": "listElement",
    "type": "object",
    "description": "Ordered list of unit selections",
    "properties": {
        "Engine": {
            "type": "string",
            "description": "Reference to an MSTS .eng",
        },
        "Wagon": {
            "type": "string",
            "description": "Reference to an MSTS .wag",
        },
        "Consist": {
            "type": "string",
            "description": "Reference to another List type element",
        },
        "Train": {
            "type": "string",
            "description": "Reference to a Random type element",
        },
        "Flip": {
            "type": "boolean",
            "default": "false",
            "description": "Flips the (sequence of) unit(s)",
        },
        "Count": {
            "type": "integer",
            "default": 1,
            "minimum": 1,
            "description": "Selects and includes multiple of the referenced unit(s)",
        },
        "ConstraintOnSubSelections": {
            "type": "boolean",
            "default": "true",
            "description": "The sub-Train/Random should select always from the same pool",
        },
    },
}

And this is for the random inventory list under "Random[]":
{
    "$schema": "http://json-schema.org/2019-09/schema",
    "title": "randomElement",
    "type": "object",
    "description": "An inventory of units to select from",
    "properties": {
        "Engine": {
            "type": "string",
            "description": "Reference to an MSTS .eng",
        },
        "Wagon": {
            "type": "string",
            "description": "Reference to an MSTS .wag",
        },
        "Consist": {
            "type": "string",
            "description": "Reference to a List type element",
        },
        "Train": {
            "type": "string",
            "description": "Reference to another Random type element",
        },
        "Probability": {
            "type": "number",
            "minimum": 0.0,
            "maximum": 1.0,
            "description": "weight of probability",
        },
    },
}


#162 User is offline   gpz 

  • Superintendant
  • Group: Posts: Elite Member
  • Posts: 1,846
  • Joined: 27-October 12
  • Gender:Male
  • Location:Budapest
  • Simulator:OpenRails
  • Country:

Posted 07 August 2020 - 03:16 AM

Now seeing this, I have my first suggestion: The "Train" tag's name is quite strange, because that doesn't reference a _train_ in neither of interpretations appeared here recently. It only references a random-selectable inventory. It should be renamed to some more meaningful name, that represents, that it points to a pile of units that it will pick one from, not to a _train_. I propose renaming it to "SelectFrom".

#163 User is offline   gpz 

  • Superintendant
  • Group: Posts: Elite Member
  • Posts: 1,846
  • Joined: 27-October 12
  • Gender:Male
  • Location:Budapest
  • Simulator:OpenRails
  • Country:

Posted 07 August 2020 - 08:30 AM

It might also be a good idea to rename the "Consist" tag, to avoid using the MSTS name, and actually avoid using any name at all, thus making the future naming arguments pointless. I propose renaming it to "AddSequence" or "AddList"

#164 User is offline   RR1 

  • Hostler
  • Group: Posts: Active Member
  • Posts: 83
  • Joined: 03-March 13
  • Gender:Male
  • Simulator:OR
  • Country:

Posted 07 August 2020 - 09:39 AM

Ok, thanks re your MU comments.

View PostYoRyan, on 06 August 2020 - 02:17 PM, said:


Some GE locomotives are also equipped with a radio system, known as "Locontrol," to bridge the gap via wireless radio.


Regarding DPU though, FYI Locotrol was developed in the 60's and GE eventually acquired the technology through acquisitions. Locotrol is not limited only to GE engines. In fact today its apparently on more than 8500 locomotives around the world.

#165 User is offline   YoRyan 

  • Conductor
  • Group: Posts: Active Member
  • Posts: 391
  • Joined: 19-February 20
  • Gender:Male
  • Location:California, United States
  • Simulator:Open Rails/unstable
  • Country:

Posted 07 August 2020 - 12:02 PM

View Postgpz, on 07 August 2020 - 03:11 AM, said:

How about defining a so called "json schema" for the new format, so we all know what we are talking about, and being able to propose specific changes, and not just talking into the fog?

Thanks very much for the schema. I agree that going forward, I would like to see suggestions accompanied by concrete proposals for the specification.

Regarding nested objects, I had considered them at first, but I don't believe they are necessary. The reason is because I would like to write a GUI editor for this format, which would then become the primary (if not sole) method of creating consists. It would be convenient to force users to name all consists for future reuse.

Now, this would appear to result in a highly cluttered CONSISTS directory, but stay tuned on that front, because as soon as the dust settles here, I would like to revive the concept of a content manager. This would enable Open Rails to load from and store consists in multiple, segregated namespaces of content.

View Postgpz, on 07 August 2020 - 03:16 AM, said:

Now seeing this, I have my first suggestion: The "Train" tag's name is quite strange, because that doesn't reference a _train_ in neither of interpretations appeared here recently. It only references a random-selectable inventory. It should be renamed to some more meaningful name, that represents, that it points to a pile of units that it will pick one from, not to a _train_. I propose renaming it to "SelectFrom".

The idea is that it references another .train-or file, hence the use of the "Train" name. The referenced train needn't necessarily be a "Random" type; it could also be a "List" type.

(Frankly, I'm now less convinced of the need for a "new" name for our native format, unless somebody brainstorms a more suitable name than "consist.")

View Postgpz, on 07 August 2020 - 08:30 AM, said:

It might also be a good idea to rename the "Consist" tag, to avoid using the MSTS name, and actually avoid using any name at all, thus making the future naming arguments pointless. I propose renaming it to "AddSequence" or "AddList"

Here, "Consist" is used specifically to reference an MSTS .con file.

#166 User is offline   YoRyan 

  • Conductor
  • Group: Posts: Active Member
  • Posts: 391
  • Joined: 19-February 20
  • Gender:Male
  • Location:California, United States
  • Simulator:Open Rails/unstable
  • Country:

Posted 07 August 2020 - 12:10 PM

View PostGenma Saotome, on 06 August 2020 - 08:00 PM, said:

:jawdrop2:
Much bad news deleted to save my brain.

Ok, will consider that fora while... will get back to you.

Rob is not saying that the TrainClass and TrainDirection fields shouldn't exist... it's just that you seem oddly fixated on stuffing all of it into the .con file, a context-free list of rail vehicles.

This information belongs in the activity, traffic, and timetable files - or in the "explore the route" menu for the player to define themselves. Full stop.

#167 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin Group
  • Posts: 15,661
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 07 August 2020 - 01:04 PM

View PostYoRyan, on 07 August 2020 - 12:10 PM, said:

Rob is not saying that the TrainClass and TrainDirection fields shouldn't exist... it's just that you seem oddly fixated on stuffing all of it into the .con file, a context-free list of rail vehicles.

This information belongs in the activity, traffic, and timetable files - or in the "explore the route" menu for the player to define themselves. Full stop.


No, Rob is saying a real train in the UK -- under its official railroad name and number, can change both class and direction before its run is complete. THAT is news to me and IMO greatly complicates things.

As for the rest, I am still of the opinion there is some kind of construct that defines the complete set of units moving along the rails which is not the same construct as various subsets of the whole that are groupings of units contained therein. For now it doesn't matter to me what names are to be used, only that the two concepts are well defined and implemented as distinct things. As you observed earlier, all of the passenger units in the Acela example -- a list of units -- could be in many different circumstances -- those are a subset of the entire collection of units moving along the rails. I think we all agree on that. We do not yet agree on what to call those two things, nor have we settled on what data belongs with each one. That is not unusual for this sort of work (trust me on that as I did this stuff professional for nearly 25 years and I have to say doing it via posts has to be the most unproductive way I can imagine).

The other thing that concerns me is we're not thinking of the same situation where this data will be used. As best I can tell, you guys are thinking about what happens in an activity whereas I'm thinking what would a player like to see in explore route. I'm figuring if we have ideas that will work for explore route they should serve as defaults that can be revised for different Activities. In contrast, pushing Activity only solutions, while important, is almost a don't care for me. I am trying to help in that regard but it is not a priority for me.

#168 User is offline   roeter 

  • Vice President
  • Group: Posts: Elite Member
  • Posts: 2,453
  • Joined: 25-October 11
  • Gender:Male
  • Country:

Posted 07 August 2020 - 02:19 PM

View PostGenma Saotome, on 07 August 2020 - 01:04 PM, said:

The other thing that concerns me is we're not thinking of the same situation where this data will be used. As best I can tell, you guys are thinking about what happens in an activity whereas I'm thinking what would a player like to see in explore route. I'm figuring if we have ideas that will work for explore route they should serve as defaults that can be revised for different Activities. In contrast, pushing Activity only solutions, while important, is almost a don't care for me. I am trying to help in that regard but it is not a priority for me.


And please don't forget timetables. There are many and very deep differences between activities and timetables regarding the use of consist definitions and other things around it. So, in all, we're trying to push three pretty different sets of thoughts, ideas and necessities into one concept.

Regards,
Rob Roeterdink

#169 User is offline   YoRyan 

  • Conductor
  • Group: Posts: Active Member
  • Posts: 391
  • Joined: 19-February 20
  • Gender:Male
  • Location:California, United States
  • Simulator:Open Rails/unstable
  • Country:

Posted 07 August 2020 - 03:16 PM

View PostGenma Saotome, on 07 August 2020 - 01:04 PM, said:

The other thing that concerns me is we're not thinking of the same situation where this data will be used. As best I can tell, you guys are thinking about what happens in an activity whereas I'm thinking what would a player like to see in explore route. I'm figuring if we have ideas that will work for explore route they should serve as defaults that can be revised for different Activities. In contrast, pushing Activity only solutions, while important, is almost a don't care for me. I am trying to help in that regard but it is not a priority for me.

I didn't realize you were thinking in terms of "explore the route" mode, and I find this very notable, because that mode isn't really intended for this kind of structured gameplay, being that it lacks any AI traffic or static railcar spawning. At best, you can align the switches to access sidings and drop off cars from your train - but this is merely a form of optional "role-playing," since the simulator itself won't give you any guidance or track the progress of your objectives. And for explorer mode, that's fine. It's always been more of a casual "pick a route, consist, and starting location, and away you go" kind of deal, at least as I always understood it going back to the MSTS days.

So if you were looking for the ability to add custom destination tags to the cars of your train, I guess I can see why you would look to the .con format to do so, but the thing is that they wouldn't make any sense in the context of explore the route mode - since players would be under no obligation to honor them, and Open Rails wouldn't make any use of them, and thus they would be pure eye-candy. A consist alone is one train configuration among many you can choose to operate in explorer mode. A consist combined with routing instructions (as you propose) makes an activity.

View Postroeter, on 07 August 2020 - 02:19 PM, said:

And please don't forget timetables. There are many and very deep differences between activities and timetables regarding the use of consist definitions and other things around it. So, in all, we're trying to push three pretty different sets of thoughts, ideas and necessities into one concept.

Different, but perhaps not that different?

A "consist" as Kuju defined it is a list of railcars that can be spawned by the simulator. Activities spawn consists when services begin their runs, and similarly, timetables spawn consists when trainsets begin their first runs. Heck, a traffic (.trf) file bears a close resemblance to a timetable file, just without the ability for trains to divide and combine, or to terminate and become other trains - and for performance reasons, Kuju only simulated trains that run against the player's direction, but that's by no means an invariant.

#170 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin Group
  • Posts: 15,661
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 07 August 2020 - 04:11 PM

View Postroeter, on 07 August 2020 - 02:19 PM, said:

And please don't forget timetables.
Rob Roeterdink


No problem. I have no experience using timetables but from your comments it is quite clear you have found situations that cannot be well handled by OR today, things that do seem relevant to the conversation.

#171 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin Group
  • Posts: 15,661
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 07 August 2020 - 05:09 PM

View PostYoRyan, on 07 August 2020 - 03:16 PM, said:

I didn't realize you were thinking in terms of "explore the route" mode,

My apologies for not communicating more clearly in earlier posts.

View PostYoRyan, on 07 August 2020 - 03:16 PM, said:

...and I find this very notable, because that mode isn't really intended for this kind of structured gameplay, being that it lacks any AI traffic or static railcar spawning. At best, you can align the switches to access sidings and drop off cars from your train - but this is merely a form of optional "role-playing," since the simulator itself won't give you any guidance or track the progress of your objectives.


Not having any guidance is EXACTLY what I value most and by that I don't mean rolling along looking at the countryside, I mean pulling into a town and having to figure out if I have work to do here, which cars, which tracks, and in what order should I do the work. Being told everything by the Activity script is, IMO, like being a 4 year old and guided around a room of adults politely meeting someone exactly as your mother has told you to do. NO THANKS! I have a brain, I like figuring things out on my own, thank you very much.

FWIW, some years ago somebody (I think it was Rob) insisted the path had to constrain whatever was going on. I vehemently argued against that but my point did not carry the day. Effectively the argument was this: Is a fully signaled activity the only way to enjoy a route? For some people, yes. But for others, such as myself, the answer is no. And since then there hasn't been any backing away that there is one and only way way to use OR. I find that inflexibility both perplexing and frustrating. I was perfectly happy with a 10m long path on a 120 mile run. Yes, this is a problem IF there are signals but what about all other ways of running a railroad? In short I'm looking for the least constrained way to use the sim because the things I like to do are least like running the hot freight across the busiest CTC controlled routes.




View PostYoRyan, on 07 August 2020 - 03:16 PM, said:

So if you were looking for the ability to add custom destination tags to the cars of your train, I guess I can see why you would look to the .con format to do so, but the thing is that they wouldn't make any sense in the context of explore the route mode - since players would be under no obligation to honor them, and Open Rails wouldn't make any use of them, and thus they would be pure eye-candy. A consist alone is one train configuration among many you can choose to operate in explorer mode. A consist combined with routing instructions (as you propose) makes an activity.


So here is our gap: What you call eye candy is what I call essential information. Speculating now, perhaps the problem here goes back to what can the player do under the controlling hand of the path statement: Give me a path statement where my train occupies an area of tracks within which I can do whatever I want to do w/o my hand being held, as-if I left the defined path (of 10m length) long ago. Perhaps that is the concept behind a Track Warrant, perhaps not. Spare me of the going manual step... If I have to use an activity then I need area control. If I cannot have area control then I don't want an activity and would love for explore route to be free of the contrainst that were added those handful of years ago.

My contribution to this discussion has, in my own mind, always been about getting out of any obligation that Activities require while, at the same time, supporting a common solution to whatever you guys want to do with Activities and Timetables (e.g., taking Rob's comments about Cab only, Power Only, and both cab and power types of locomotives... I'd never have need for it but I think a construct could be created that fixes that problem and am happy trying to help figure out what it is).

#172 User is offline   gpz 

  • Superintendant
  • Group: Posts: Elite Member
  • Posts: 1,846
  • Joined: 27-October 12
  • Gender:Male
  • Location:Budapest
  • Simulator:OpenRails
  • Country:

Posted 07 August 2020 - 08:48 PM

@Dave, Then your use case can be shortcut and solved super fast.
1) You need to propose a series of "ExploreRouteXYZ" string type attributes for the top level schema.
2) You must insist on being able to nest "List[]" type objects (for your blocks), which I also find absolutely necessary for the properly structured consist definitions, especially for timetables.

@YoRian, Let me ask an important question. How did you plan to handle train-or files that have both "List[]" and "Random[]" arrays defined (1) when used in an activity service, and (2) when referenced via your "Train" attribute?

#173 User is offline   YoRyan 

  • Conductor
  • Group: Posts: Active Member
  • Posts: 391
  • Joined: 19-February 20
  • Gender:Male
  • Location:California, United States
  • Simulator:Open Rails/unstable
  • Country:

Posted 07 August 2020 - 09:05 PM

View PostGenma Saotome, on 07 August 2020 - 05:09 PM, said:

My apologies for not communicating more clearly in earlier posts.

Don't mention it! :sweatingbullets:

View PostGenma Saotome, on 07 August 2020 - 05:09 PM, said:

FWIW, some years ago somebody (I think it was Rob) insisted the path had to constrain whatever was going on. I vehemently argued against that but my point did not carry the day. Effectively the argument was this: Is a fully signaled activity the only way to enjoy a route? For some people, yes. But for others, such as myself, the answer is no. And since then there hasn't been any backing away that there is one and only way way to use OR.

But it isn't the only way - once you enter manual mode, you can go off-path and control the switches. Activities, too, were designed to have nonlinear objectives that you are free to complete in any order. Have you played any of the switching activities in Kuju's Marias Pass route? They demonstrate this kind of gameplay. You start in the Whitefish yards or on the Kalispell Branch with a work order of cars and corresponding destinations, and it's up to you figure out how to switch the cars.

View PostGenma Saotome, on 07 August 2020 - 05:09 PM, said:

So here is our gap: What you call eye candy is what I call essential information.

But the thing is, in explorer mode, the car labels are the very definition of eye-candy; they do not affect gameplay in the slightest. So just understand that what you're requesting here is a feature tailor-made for your own role-playing scenarios in explore the route mode. How many other players can we expect would make use of it?

View PostGenma Saotome, on 07 August 2020 - 05:09 PM, said:

Spare me of the going manual step... If I have to use an activity then I need area control. If I cannot have area control then I don't want an activity and would love for explore route to be free of the contrainst that were added those handful of years ago.

It's worth noting that those constraints did not exist in MSTS. If you load up one of the Whitefish switching activities, you'll get a penalty brake the moment you go off-path, at which point you're required to switch to manual. This was never intended by Kuju and it is a burden imposed by OR.

I agree this is an awkward experience and maybe this decision could be revisited. To my mind, you should at least be able to free roam beyond the end of the path up until the next signal. Hopefully someone better versed with the OR dispatcher can clarify.

#174 User is offline   YoRyan 

  • Conductor
  • Group: Posts: Active Member
  • Posts: 391
  • Joined: 19-February 20
  • Gender:Male
  • Location:California, United States
  • Simulator:Open Rails/unstable
  • Country:

Posted 07 August 2020 - 09:13 PM

View Postgpz, on 07 August 2020 - 08:48 PM, said:

2) You must insist on being able to nest "List[]" type objects (for your blocks), which I also find absolutely necessary for the properly structured consist definitions, especially for timetables.

Could you clarify, please?

Note that I'm not precluding the addition of new fields in the context of an activity or timetable. When we get around to designing a new activity format, I foresee including the ability to string multiple consists together, just as timetables can do now. The result would probably resemble the "List[]" type.

View Postgpz, on 07 August 2020 - 08:48 PM, said:

@YoRian, Let me ask an important question. How did you plan to handle train-or files that have both "List[]" and "Random[]" arrays defined (1) when used in an activity service, and (2) when referenced via your "Train" attribute?

This is not permitted; OR will throw an error if both arrays are defined. A .train-or file can only be one type or the other, and the eventual editor would enforce this.

#175 User is offline   gpz 

  • Superintendant
  • Group: Posts: Elite Member
  • Posts: 1,846
  • Joined: 27-October 12
  • Gender:Male
  • Location:Budapest
  • Simulator:OpenRails
  • Country:

Posted 07 August 2020 - 10:48 PM

View PostYoRyan, on 07 August 2020 - 09:13 PM, said:

This is not permitted; OR will throw an error if both arrays are defined. A .train-or file can only be one type or the other, and the eventual editor would enforce this.

Then essentially these are two distinct file types with two distinct purposes, a list-train-or and a random-train-or, right? What's the value in gathering them into a single file type?

  • 16 Pages +
  • « First
  • 10
  • 11
  • 12
  • 13
  • 14
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users