Many interesting points made in the previous post....
Eldorado.Railroad, on 09 April 2017 - 08:15 AM, said:
Some ideas have been centered around databases of sorts, but the creation of those databases and how they "look" has always been a bit of a conundrum. We are going to have to settle on some kind of key, yes that kind a key, the database kind, maybe even multiple keys. When your collection of wagons and engines goes well past 1000 finding things is a problem. There are numerous .eng and .wag files out there from various sources, payware or otherwise, that all have "their own ways" of doing things. A user ends up having to edit every .eng/.wag file to conform to some kind of "standard" so that you can find things. This is a huge PITA.
Years ago I argued on behalf of using a dbms to solve all of the unmanaged relationships between track and intereactives but it was far too early in the project for anyone to care about. Perhaps it'll return as a point of serious conversation.
The big problem here is not database design or the applications used to put in or take out information, it's what happens when the end user does something (or his PC does something) and the integrity of either the database or of rows in the database is broken. I don't know of any good way to help him out of the jam he will be in.
But for those willing to take the risk -- probably a rather small risk -- using a database as a repository from which either flat files are produced or is accessed by the OR code, a whole lot of issues would be successfully addressed, from proper referential integrity for interactives to 3rd normal form for creator-attributed versions and their revisions of content like .engs and .wags.
Eldorado.Railroad, on 09 April 2017 - 08:15 AM, said:
The consist editor, MUST accommodate long names, explicit ones. The consist editor MUST allow for various font sizes too, one size cannot fit all. I speak from experience here. The level of frustration and compromise on having to re-edit .eng/.wag every time you realize that you cannot use more than X characters is a major PITA.
Which argues for display windows that can be expanded or shrunk as needed.
The fundamental issue here is absent
complete management within a custom application, one that presents you with all the metadata you need (thereby allowing the file name to be both hidden from view and probably just a serial number), we're going to put a lot of that metadata into the filenames: Road initials, unit number, type of unit, overall appearance of unit, optional but important features (like a white extra flag), and date range within which the model, in this appearance, was used. Or as they say, a real mouthful: "WP F7A #913 Silver small letters extra 1950-54"
Eldorado.Railroad, on 09 April 2017 - 08:15 AM, said:
In a very short list and not conclusive, you will have to deal with dead engines, loaded and unloaded wagons, etc. All of these need to be clear to the user, somehow.
IMO there is a need for some conceptual re-thinking: Take the mesh file and call it a class from which a variety of subtyped objects can spring, each of which get defined as individual game objects ahnd you solve lots of problems. For example, take a mesh for a particular U.S. diesel locomotive: A EMD SD-40. One file. Now add a subtyped variant: the skins it will display (yes, I know those are defined in the mesh but here I'm speaking of what the OR software will actually display. One mesh, many sets of skins, varying by railroad, railroad paint scheme, unit number, etc. etc. Maybe hundreds of variations. Yet there are a whole lot of data parameters specific to the mesh rather than any one variant, in fact, the majority of data parameters are probably true for the mesh. One mesh, one set of data parameters, many variants each with their own list of skins. What the game needs is a copy of all of that for each displayed loc0omotive. What the user should have on his PC is one mesh file, one set of data parameters (there may be multiple files here because a lot of the data is actually common to a lot of different locomotives -- think couplers), and a big bunch of tiny files listing the skins... and maybe a lot of metadata too. Reskinners then distribute only the last kind of file. End users would no longer have to put all of those reskinner files in separate directories -- they could have a single folder labeled UP "SD-40" and have 100 reskinning file sin there instead of having 100 folders labeled UP SD-40 6001, UP SD-40 6002....
IOW .eng and .wag files as we know them would be obsolete and the number of folders in \trainsets would be reduced considerably. The original mesh file and all of those data parameters could be read whether the game object was going to be a UP skinned SD-40 or a Santa Fe SD-40, or any other railroads SD-40. Who knows, maybe they get stored in a directory called Mesh Files and the convention is to mark everything their with the creators name -- "Barry_Munro_s_SD-40". If we're lucky, that'll be a folder name and it will contain an assembly file to points to as many individual mesh files as are needed to make up a whole locomotive. Meaning physical variants are dealt with here. What this really doess is it make the physical nature of the model wholly independent of its skinning and assigns most of the data parameters to the physical model. One model folder set off tot he side, many reskinning files placed into \trainsets, each of which is so tiny who cares about the cost of doing a copy/paste everywhere!
Eldorado.Railroad, on 09 April 2017 - 08:15 AM, said:
As a sidebar, for the longest time, I have wished for OpenRails to have its own shapeviewer, that understands, non square textures, DDS textures, etc. Other things like random consist creation are also very handy to have.
IMO Shapeviewer needed to be replaced at least 8-10 years ago. The graphics are bad, the displayed area far too small, and having one, permanent point for rotation is no good at all for anything larger than a small locomotive or car.
The only really insightful thing Shapeviewer does in the hierarchy window -- it shows the draw counts.