- Joined
- Jan 7, 2008
- Messages
- 5,814
- Reaction score
- 869
- Points
- 203
- Location
- Earth
- Website
- orbides.org
- Preferred Pronouns
- she/her
Following is a set of proposals of systematic or partial nature about rearrangement of Orbiter's directory structure, sketch #1.
Some of the ideas seem sketchy for now, but it's something to think about, considering that O2009 is far enough for partial drop of backwards compatibility.
Every point and idea is open for discussion, new ideas are welcome, etc.
Here is the boilerplate example for it:
http://orbides.1gb.ru/orbf/orbiter_new_boilerplate_wrap.zip
(Note - the files are empty, and there is a zip inside a zip (the only case when it pays off, btw))
Common:
All the solid-state, unchangeable-with-time things, like planets, vessel config and modules, plugins, Constell.bin, etc should be under \Universe.
All non-solid things like scenarios and flight records should be under \State.
Documentation goes to \Docs.
Other things, like Tools and SDK goes to \Etc, or to \SDK
Point E:
\State\Setup contains all the settings - keymap.cfg, Orbiter.cfg, device.dat, client cfg's, etc.
\State\Scenarios contains scenarios, \State\Quicksaves contains quicksaves, autosaves and current state backups.
\State\Flights contains obviously what.
Point C:
Old \Modules\Server goes to the default system - \Orbiter_ng.exe is actually \modules\server\orbiter.exe, not a link.
Cfg's are put into \ and renamed with _NG.
Point J:
\Universe\Plugin contains sub-system plugins.
All \*.dll goes there (if possible), all non-specific dlls goes there.
\Universe\Plugin\toggle contains Modules-tab activable plugins, \Universe\alltime contains permanent-on plugins.
Point Y:
\Universe\ contains Constell2.bin kind of files, plugin cfg's, etc.
Also contains script directory and multistage and spacecraft3 sub-systems directories (if doable).
Point B:
Vessels.
Every vessel or vessel set have it's own directory under \Universe\Vessels\vessel name
For it:
\ contains cfg's, dll's, images and help files, along with whatever settings add-on need
\model contains msh and dds files, along with whatever other models the vessel should use.
If a vessel needs meshes or textures from another vessel, one must add Share = vessel to the vessel's cfg file (or in-dll call), to let the core know where to look for the files.
Local files have higher priority than the shared ones.
Point A:
Compatibility.
\Universe\legacy should contain add-ons in current format along with all the in-orbiter usable files.
Instead of "unpack over Orbiter tree" old add-ons should be "unpacked over \Universe\legacy tree".
That way, partial backwards compatibility will be preserved - all but complex addons should work.
Also, all very-shared and core-used textures can be put there. Transparently available to all vessels, lowest priority.
Point S:
Solar systems.
Goes under \Universe\celbody\system name.
In it:
\cfg contain all cfg's, markers, etc.
\modules contains modules.
\model contains tex, maps, dds's and msh's.
\terrain contains terrain info (optionally, or if generalized - into the main cfg's)
All rules apply, as in vessels - sharing, transparency, isolation.
Idea 1: Backup current state on exit, like quicksaves.
Idea 2: Provide a call in the Orbiter core to load a mesh from vessel dll:
The call will get a vessel mesh in Orbiter-compatible format and import it, thus allowing add-ons to use their own mesh formats.
Thank you for reading this.
Double thank you for replying to this.
Some of the ideas seem sketchy for now, but it's something to think about, considering that O2009 is far enough for partial drop of backwards compatibility.
Every point and idea is open for discussion, new ideas are welcome, etc.
Here is the boilerplate example for it:
http://orbides.1gb.ru/orbf/orbiter_new_boilerplate_wrap.zip
(Note - the files are empty, and there is a zip inside a zip (the only case when it pays off, btw))
Common:
All the solid-state, unchangeable-with-time things, like planets, vessel config and modules, plugins, Constell.bin, etc should be under \Universe.
All non-solid things like scenarios and flight records should be under \State.
Documentation goes to \Docs.
Other things, like Tools and SDK goes to \Etc, or to \SDK
Point E:
\State\Setup contains all the settings - keymap.cfg, Orbiter.cfg, device.dat, client cfg's, etc.
\State\Scenarios contains scenarios, \State\Quicksaves contains quicksaves, autosaves and current state backups.
\State\Flights contains obviously what.
Point C:
Old \Modules\Server goes to the default system - \Orbiter_ng.exe is actually \modules\server\orbiter.exe, not a link.
Cfg's are put into \ and renamed with _NG.
Point J:
\Universe\Plugin contains sub-system plugins.
All \*.dll goes there (if possible), all non-specific dlls goes there.
\Universe\Plugin\toggle contains Modules-tab activable plugins, \Universe\alltime contains permanent-on plugins.
Point Y:
\Universe\ contains Constell2.bin kind of files, plugin cfg's, etc.
Also contains script directory and multistage and spacecraft3 sub-systems directories (if doable).
Point B:
Vessels.
Every vessel or vessel set have it's own directory under \Universe\Vessels\vessel name
For it:
\ contains cfg's, dll's, images and help files, along with whatever settings add-on need
\model contains msh and dds files, along with whatever other models the vessel should use.
If a vessel needs meshes or textures from another vessel, one must add Share = vessel to the vessel's cfg file (or in-dll call), to let the core know where to look for the files.
Local files have higher priority than the shared ones.
Point A:
Compatibility.
\Universe\legacy should contain add-ons in current format along with all the in-orbiter usable files.
Instead of "unpack over Orbiter tree" old add-ons should be "unpacked over \Universe\legacy tree".
That way, partial backwards compatibility will be preserved - all but complex addons should work.
Also, all very-shared and core-used textures can be put there. Transparently available to all vessels, lowest priority.
Point S:
Solar systems.
Goes under \Universe\celbody\system name.
In it:
\cfg contain all cfg's, markers, etc.
\modules contains modules.
\model contains tex, maps, dds's and msh's.
\terrain contains terrain info (optionally, or if generalized - into the main cfg's)
All rules apply, as in vessels - sharing, transparency, isolation.
Idea 1: Backup current state on exit, like quicksaves.
Idea 2: Provide a call in the Orbiter core to load a mesh from vessel dll:
The call will get a vessel mesh in Orbiter-compatible format and import it, thus allowing add-ons to use their own mesh formats.
Thank you for reading this.
Double thank you for replying to this.