GmkSplitter is a tool that can split Game Maker .gmk files into a tree of .xml and resource (image, sound) files, and can reassemble a .gmk file from those.
This can be useful for collaboration, because it allows you to use tools like diff and patch, or a version control system like git, on your Game Maker project. With the help of these tools you can find differences between two versions, and merge changes from different contributors together automatically.
There are some restrictions though:
- You may not have two resources of the same type and name, and there are some naming restrictions (e.g. no dots in resource names)
- There's no guarantee that IDs stay the same (though they are usually preserved and you will be warned if changes occur). This is unavoidable when merging two versions that evolved in parallel.
- Some Game Maker features are not supported, at least not yet (e.g. action libraries)
- The tool isn't well tested yet
Gmk Splitter was originally intended to solve a problem in the Gang Garrison 2 modding community. Every time a new official version comes out, the mods based on the old version become incompatible and have to be updated by hand. With the help of this tool, it would be possible to just distribute a patch with all the changes along with new releases, so that modders just have to apply this patch.
Writing Gmk Splitter was more work than I had anticipated, so I hope others will benefit from that effort too. You can find it at Github:
http://github.com/Medo42/Gmk-SplitterFor an example what a project looks like when it's split into a file tree, see here:
http://www.ganggarrison.com/GG2_unpack.zip