GmkSplitter is primarily a tool for collaboration. It does not offer any collaboration functions itself, but it enables you to use existing version control tools like git, mercurial and bazaar for Game Maker games. These tools allow you to keep track of all the old versions your project went through, to find out who changed what, but most importantly, to work on different branches of development and later merge the changes together.
The problem in using these version control tools with .gmk files is that .gmk files are big binary blobs. Version control tools are usually written to work with text files, so they will not be able to understand the changes to a .gmk file between versions. That is essential for many of the functions offered by these tools though.
What GmkSplitter does is this: It converts between GM source files (.gmk or .gm81) and an SCM friendly "file tree" format. The file tree format is a directory which looks a bit like the folder structure of your resources in Game Maker, and there are separate files for e.g. Global Game Settings and Game Information, and subfolders for Sprites, Sounds, Objects and so on. The information for each resource is stored in an individual .xml file. Sounds store the original sound file, and Sprites are stored as several .png files (one for each frame of the animation).
This file tree format can then be managed with the usual version control tools, as I mentioned above. The workflow is a bit more complicated than using these tools normally: To work on the source and build it, you convert it back to a .gmk and edit it normally. Before you can commit, you first delete the old file tree directory and recreate it from the new .gmk.
Almost all information is preserved. The most notable exception are Triggers, because they are not properly supported by the library which I use for reading and writing the Game Maker source files. Action libraries are not yet handled either. Apart from that, some bits of information are purposely not stored because they are usually not needed and would cause unneccessary conflicts in version control. For that reason, the timestamp and the ID for every resource are lost in the conversion, except for the ID of objects, which is important for the execution order of events.
In the Gang Garrison 2 project, we have been using this tool in combination with Git for almost a year now, and I tested that it can convert source files as big as that of Mushroom Kingdom Fusion. You can take a look at the Gang Garrison 2 source tree in our repository on Github, to get a feel for what it looks like: https://github.com/M...ster/Source/gg2
You can download the tool at https://github.com/M...itter/downloads
It is a console tool which requires Java. The general usage for the exe version is:
gmksplit.exe input outputIf you want to convert from Game Maker source to the file tree format, input is a .gmk or .gm81 file and output is the name of a directory that does not yet exists. For converting the other way around, input is the name of a source tree directory and output is the name of the .gmk or .gm81 file that should be created. For example, to split gg2.gmk into a directory called gg2:
gmksplit.exe gg2.gmk gg2Not that difficult, huh?
I will try to answer questions about the tool and how it can be used with version control systems. I will not explain how to use git, mergurial or bazaar, there are perfectly good tutorials, mailing lists, IRC channels, documentation pages and other ways of getting help.
Edited by Medo42, 09 December 2011 - 05:13 PM.