- Joined
- Oct 22, 2008
- Messages
- 75
- Reaction score
- 143
I've been working with GFXFileManager lately. This DLL contains the logic for working with the PK2 archives. By writing your own GFXFileManager that maintains compatibility with the client, you have control over how files are processed for the client. This means you do not need the PK2 format anymore.
Right now, I am able to load files from the hard drive with no PK2s at all. Here are two videos showing this.
ISRO:
VSRO:
It should be noted, that currently I have only implemented the 'reading' aspect of the DLL. I'll do 'writing' later on, as it should not pose any problems, as my PK2 tools already use the writing functions from GFXFileManager. I'll be adding write support soon, and after a little more testing, I think the core API will be 'done', so I'm comfortable at this point starting a brainstorming thread for uses.
Anyways, I think this opens the door for a number of possibilities with customization, but I'd like to hear what the community thinks. For example, here's a list of some things that could be done:
I'm sure there's more creative things that could be done, so that is what this thread is for. I'd like to hear from the community about possible ideas or desires with making something that would benefit everyone and be worth the time doing.
Right now, I am able to load files from the hard drive with no PK2s at all. Here are two videos showing this.
ISRO:
You must be registered to see links
VSRO:
You must be registered to see links
It should be noted, that currently I have only implemented the 'reading' aspect of the DLL. I'll do 'writing' later on, as it should not pose any problems, as my PK2 tools already use the writing functions from GFXFileManager. I'll be adding write support soon, and after a little more testing, I think the core API will be 'done', so I'm comfortable at this point starting a brainstorming thread for uses.
Anyways, I think this opens the door for a number of possibilities with customization, but I'd like to hear what the community thinks. For example, here's a list of some things that could be done:
- Shared client files - Consider this: users download the base client files for the Silkroad version they want to play on. Let's say, for example, VSRO 1.188. Now, rather than distribute these files again, private servers would only distribute a custom configuration file, along with all files they modify with a special prefix to them.
To give an example, let's say I had a server and was giving out the changed files. I'd give out the configuration file and 'edx_divisioninfo.txt', 'edx_gateport.txt', 'edx_sv.t', and so on. The purpose of this prefix is to separate everyone's files from one another, so there are no conflicts. The purpose of the configuration file is to tell the GFXFileManager dll which set of files to load.
Now let's say the player wanted to try another private server. Let's pretend this server used a prefix of rz. The player would download the rz configuration file and 'rz_divisioninfo.txt', 'rz_gateport.txt', 'rz_sv.t', and so on. Now the player can access another private server using the same shared files, but the GFXFileManager would load the 'rz' files instead of the 'edx'.
- Texture mod packs - I'm not sure if this is even a big deal anymore, but the system would be similar to the shared client files, except it is meant for textures and sounds and allows people to easily swap out "themes". It would come with a manager to allow people to see potential conflicts as well as other little features.
- A new PK2 format - I'm not a huge fan of this, because all you would be doing is delaying the inevitable. Eventually someone will reverse the format and make tools for it, just like every other file format there is out there. While it's understandable to want to try and prevent people from certain cheats, the amount of time and effort vs. reward is hard to justify a new PK2 format.
However, what would be more realistic is to implement specific file based security for important files. For example, for any server_dep files, compress, encrypt, digitally sign, then add more verification logic to GFXFileManager. Since you would have source to GFXFileManager, you could better protect it with packers that make use of code macros.
I think this is more realistic and practical compared to writing a new solid file archive to replace PK2s. Using this approach, it would fit in well with the two previous ideas while still giving people a little more flexibility with modifying "cosmetic" files.
I'm sure there's more creative things that could be done, so that is what this thread is for. I'd like to hear from the community about possible ideas or desires with making something that would benefit everyone and be worth the time doing.