Mod Tool/Oni level rebuilder
- Wouldn't it be nice to have a tool that can rebuild an Oni level?
- Of course after some modification has been made to the level.
Mod Tool and OniSplit could accomplish this task.
Transfer from Oni to Mod Tool
Following scenario: A modder drags and drops level1_Final.dat into Mod Tool's viewport.
Mod Tool tells OniSplit to extract needed data.
For example:
- OniSplit.exe -export level0_Final level0.dat
- OniSplit.exe -export level1_Final level1.dat
- OniSplit.exe -extract:dae level1_Final level1_Final/AKEV*.oni -search level0_Final
- OniSplit.exe -extract:xml level1_Final level1_Final/ONLV*.oni
- OniSplit.exe -extract:xml level1_Final level1_Final/BINACJBO*.oni
After that Mod Tool can examine the files and import 3D content on different layers.
- Core geometry: EnvLayer
- Pathfinding: BnvLayer
- Consoles: ConsLayer
- TriggerVolumes: TrgvLayer
- etc.
Also, an already half-filled xml master file can be created.
- The names of BSL folder and skybox can be received from the original ONLV file.
Transfer from Mod Tool to Oni
When user is ready he can click import and rebuild the level.
In ideal case he doesn't have to touch the xml master file.
Currently, the xml master file don't seem to cover the CRSA instance.
But, now that Neo has provided a code to create transform matrices, the ONLV file can be post-edited.
Getting the CRSA back into Mod Tool is a bit more complicated, or the code for it, .. like always.
Matrix to euler and back again: see scripting page.
Limitations
Besides the work needed to get this all done ..., cutscenes (animation compositions and FILM creation) and BSL in general won't be produced automatically.
Realization
Export relevant files
As said before the user will drag and drop a dat file into Mod Tool.
Let's say he drops the airport, the folder will be located at Softimage_Mod_Tool_7.5\OniLevels\level4_Final.
To ensure the AKEV gets all its resources, level0_Final becomes also exported.
Since level0_Final is such a big file, Mod Tool will check if the folder is already located at OniLevels.
For update purposes, the user can force to export level0_Final again by dragging and dropping it into the program.
Loading work data
Some content will be imported as it is such as core geometry and BNV.
Other content like consoles should be imported indirectly from CJBO files.
That's necessary because the extracted dae file doesn't cover any flags, script functions, etc.
Libraries
There's already the shared folder for the xml master file. But we should be able to extend it whenever necessary.
For instance BINACJBOCharacter/AISA/CRSA will require ONCC files in DAE format.
This will be done whenever level0_Final becomes exported.
onisplit -extract:dae level0_Final level0_Final\ONCC*.oni
Inside Mod Tool, envmaps will be disabled so that strange effects with transparency doesn't appear.
Project management
Progress must be saved in form of *.exp scene files.
Valid project locations will be provided automatically.
Alternate management
There should be a way to let users save their progress when *.exp files don't work.
Also the MergeScene function seems buggy.
- As alternative we can use *.xsi files. These can store custom properties, something that *.dae files can't do.
- It's probably be possible to store all actual content to one *.xsi and store the layer information to one *.xml file.
- Or each layer is stored to one *.xsi file.
- Slower systems might profit from the latter method because the user isn't forced to load everything, he can decide what scene layers he wants.