billw2015
King
- Joined
- Jun 22, 2015
- Messages
- 837
These are a couple of things I have implemented for my experimental git repository that might be of interest to push to SVN as well.
Dynamic FPKs means that instead of having manually packed FPKs stored in the repository, there is a directory with the unpacked art and a script to automatically pack it into a set of FPKs. This uses the PakBuild.exe FKP tools command line to generate the FPKs from a single directory, and uses the handy option to limit the size of the FPKs that are generated. Currently I chunk them into 256MB files and we get 4 of them, C2C0.FPK to C2C3.FPK.
This has a few benefits:
1. The FPKs are maximally optimal in number, fewer = faster to load (I hope).
2. The art can be stored as loose files making editing it trivial.
3. You don't need to worry about making mistakes in what you put in the FPKs, it is automatic, everything in the unpacked directory goes into the FPKs.
4. Source control (SVN and git) handle smaller files better, and a separate history will be maintained for each file, rather than a change to an entire FPK when a single dds was modified.
5. Is actually not slow. It takes 1m35s to fully pack the ~30000 files on an SSD and same on a mechanical (according to someone elses tests).
Encapsulated dependencies make development of the DLL easier to setup. The compiler, tools and all SDKs (including boost and python) are all put in a single package that can be extracted automatically inside the repository when you want to build the DLL. The whole package (thanks to Anq/alberts2 for the parts I am using) comes in at just over 10MB, 100MB once unpacked.
I also made a set of scripts for:
- Unpacking all existing FPKs: during transition people can use it to update the unpacked folder
- Packing the unpacked directory to the dynamic FPKs
- Installing the dependency package (this is done lazily by the build scripts anyway)
- Build the DLL in each config
- Clean the DLL builds
If you want one or more of these things in SVN how shall I proceed with getting it there?
I have write access but I don't want to break peoples workflows or leave them confused about why the FPKs are gone etc.
Dynamic FPKs means that instead of having manually packed FPKs stored in the repository, there is a directory with the unpacked art and a script to automatically pack it into a set of FPKs. This uses the PakBuild.exe FKP tools command line to generate the FPKs from a single directory, and uses the handy option to limit the size of the FPKs that are generated. Currently I chunk them into 256MB files and we get 4 of them, C2C0.FPK to C2C3.FPK.
This has a few benefits:
1. The FPKs are maximally optimal in number, fewer = faster to load (I hope).
2. The art can be stored as loose files making editing it trivial.
3. You don't need to worry about making mistakes in what you put in the FPKs, it is automatic, everything in the unpacked directory goes into the FPKs.
4. Source control (SVN and git) handle smaller files better, and a separate history will be maintained for each file, rather than a change to an entire FPK when a single dds was modified.
5. Is actually not slow. It takes 1m35s to fully pack the ~30000 files on an SSD and same on a mechanical (according to someone elses tests).
Encapsulated dependencies make development of the DLL easier to setup. The compiler, tools and all SDKs (including boost and python) are all put in a single package that can be extracted automatically inside the repository when you want to build the DLL. The whole package (thanks to Anq/alberts2 for the parts I am using) comes in at just over 10MB, 100MB once unpacked.
I also made a set of scripts for:
- Unpacking all existing FPKs: during transition people can use it to update the unpacked folder
- Packing the unpacked directory to the dynamic FPKs
- Installing the dependency package (this is done lazily by the build scripts anyway)
- Build the DLL in each config
- Clean the DLL builds
If you want one or more of these things in SVN how shall I proceed with getting it there?
I have write access but I don't want to break peoples workflows or leave them confused about why the FPKs are gone etc.