So far, using git for managing my map projects has proven very useful.
- Easy to keep multiple versions of maps for different releases (alphas, betas, etc)
- Works great with the text-based map format, with a caveat.*
- Other developers and users can see the map progress and try it out at any time; development is more open
- Provides a repository for the original map assets, so the map can be easily updated in the future without having to worry about lossless compression for textures or other similar issues.
- Could theoretically set up a CI server to automatically build the .bsp files from the .map file as commits are pushed.
* The caveat is that Radiant sticks comments into the map file with ever-changing brush numbers, which throws off diff. Not sure if this is an issue or not. I haven't tried merging or anything with .map files :)
- Your map might get stolen by kharnov and sold to raise money to buy real life grangers.
- Difficult to version large files
Handling really large files, like .psd/.xcf texture files or some .blend models, isn't optimal. Git isn't great for dealing with huge files. And while github offers their large-file extension, it offers a measly 1GB storage/1GB bandwidth per month, which could get eaten up fast. So really large files will need to be archived elsewhere...
We had a brief discussion about compressed assets and how best to handle them. I think that despite the large file issue, using something like a github repo is a strong solution; as Fuma suggests, we could use a Make-like system to automatically compile, compress, and package a map, making "building from source" a snap. We just need a way to deal with huge assets.
I wrote a few more points in favor of using github and a more open mapping process for the Freeway announcement on my blog. While this might not suit everybody, I think mappers should at least consider an approach like this for maps that don't have an inordinate number of new assets.
Unrelated, here's the .gitignore that I use for my maps:
Code: Select all
I only want the .map file in the repo. No .bsp, no lightmaps, no temporary files produced by the compiler. If you adopt this github, be sure to change "maps/chasm/" to your map's lightmap directory (same name as the .bsp).