A good example of such a change is "Snow fall in your Age" by Andy Legate or my own "Opening up new places in A'egura". As you can see, adding those changes involves a lot of manual operations, which is time-consuming and fraught with peril for the casual user, and cannot be rolled back easily.
This system lets a user install and remove a change by double-clicking an icon.
The system lets a developer "package" his change in a standard format that the installer script understands.
In order to better implement this system I desperately need three utilities (but I'm too stupid to write utilities using libPlasma and I don't have a C++ compiler):
Tool 1- a more granular prdcd which would export a specific object instead of the whole prp.
Something like "prcdc [options] filename [plKey Name] [plKey Type]"
Example:
To export the plSceneObject named "Lamp2" from file tutorial01_District_mainRoom.prp:
- Code: Select all
prcdc -o D:\Uru\project1\Lamp2.prc D:\Uru\dat\tutorial01_District_mainRoom.prp Lamp2 plSceneObject
Tool 2- an object importer (similar to the import function in PrpExplorer).
Something like "prcimport [options] prpfilename prcfilename"
Example:
To import the object from Lamp2.prc into tutorial01_District_mainRoom.prp:
- Code: Select all
prcimport D:\Uru\dat\tutorial01_District_mainRoom.prp D:\Uru\project1\Lamp2.prc
Ideally, this would also add the object to the plSceneNode when needed.
Tool 3- an object remover (similar to the delete function in PrpExplorer). This could be a stand-alone utility, or a command-line option for another utility such as prcimport.
Something like "prpdel filename [plKey Name] [plKey Type]"
Example:
To delete the plSceneObject named "Lamp2" from file tutorial01_District_mainRoom.prp:
- Code: Select all
prpdel D:\Uru\dat\tutorial01_District_mainRoom.prp Lamp2 plSceneObject
Ideally, this would also delete the object from the plSceneNode when needed.
Currently I do these operations using the convoluted process of:
- Unpacking the whole prp into .po files using PrpPack;
- Decompiling some objects using PrcDc;
- Adding, removing and modifying those objects;
- Recompiling those objects using Prcc;
- Packing the whole prp again from the .po files using PrpPack.
There are four problems with this process:
1- It is very CPU and I/O intensive, so it can get very long, especially on a slow computer. While the delay is acceptable for the enthusiast user, it is not for the casual user who just wants to try a distributed change. It doesn't seem logical to have the CPU work for 10 minutes just for inserting a small object into a prp.
2- It generates lots of temporary files that must be cleaned up, and uses up large amounts of disk space, which can bring problems if the disk is near full.
3- It is risky. What if something goes wrong during the long process of repacking? To alleviate this risk I have to add a rollback system, which means making a backup of the user's prp file, which brings us back to problem 2.
4- It is lossy, or so I'm told. Unpacking and repacking loss-compressed textures leads to more degradation. Nothing I can do for that.
I would like to ask the current libPlasma gurus (Zrax, Paradox, Nadnerb, Lonthav, or any other) if you would be interested in developing those utilities and adding them to the current libPlasma tools. It seems to me those tools would also be helpful to all Uru hackers such as GPNMilano, diafero, Race, etc, for their current activities.
Anyone interested?