Professional Development on an Indie Budget
One of the biggest challenges associated with development is figuring out how you actually get work done. This becomes much, much more complex when you have people not only in different time zones but also halfway around the world.
Version control systems store your game assets and code securely so that everyone can work on the project at the same time. We’ve gone through quite a saga with zeroing in on the correct solution. First we started out with git hosted on github. This worked just fine until we needed to store large assets (like uassets in unreal 4). We tried throwing git-lfs (git large file storage) at this problem, but found that none of the toolsets supported it. This became a gigantic headache as I had to debug git commandline issues with Adam over voice chat. If you can imagine fighting a tiger with a blindfold on while googling how to compile ubuntu.. it was something like that. We then switched to the tried-and-true perforce. We were using hosted perforce on assembla, but when they raised their prices to over $200 a month for our services, we needed to pull the plug. We are now hosting perforce on our own t2.micro on aws and its been working out fantastically. We pay <$5 a month for this and it works great even though I’m in the US and Adam is in Aus.
All told we’ve migrated source control systems 4 times!
I don’t know how many indie studios have nightly builds, but we sure do. We’ve got a build machine setup under my other desk running Jenkins which builds all versions of the game nightly. It’s hooked up with its own gmail account and wakes me up at midnight if the build is busted (its always my fault). Having a build system which automatically builds our systems has caught so many boneheaded errors that I *HIGHLY* recommend any dev setup a build system even if you don’t think you really need it. All the software for Jenkins is free, so if you’ve got a spare machine sitting around you can set it all up for free in a snap.
Version control is good at storing source code and big assets, but what about temporary work or files that don’t work well with source control (I’m looking at you ToonBoom Harmony!)? We tried various solutions such as dropbox, share drives over VPN, and others.. but nothing has come close to the speed and just plain ‘works’ as Resilio Sync. Its a torrent-based file transfer system which syncs file systems asychronously. We just leave the build machine always on as a peer with automated nightly archives onto our NAS and we’ve got versioned backups as well as always-available secure peers for fast file transfers.
Tools and Scripts
Creating easy-to-use development tools can be very tricky even as a small team. Telling someone to go run ‘GenerateProjectFiles.bat’, sync down the latest on p4, run the sync tools for unreal dependencies, build the editor in ‘development’ mode, run the code generator, and run the newly built editor is a huge pain. In order to simplify our workflow we’ve created a master helper batch file which we both use. If one of us creates a new tool we just add it as an option and check it in. No more ‘oh yeah.. sorry Adam.. I totally broke all your stuff.. so.. here’s a 12 step process … Adam? Are you there? …..
Debugging crashdumps from C++ applications can be a gigantic headache. To solve this we host a symbol server on our shared NAS which our build server updates. We use srcsrv & symstore so when we get a crashdump all we have to do is double-click the files and it syncs down the files from p4, grabs the symbols from the Z: and we’re fixing bugs before we realize it.
*a quick hint for those troubled by p4 srcsrv requiring identical hostnames and not playing well with proxies, just edit p4.pm so it doesn’t include the host.. then tell developers to make sure p4v is open on the right server and it’ll automatically grab your correct files
Tools and scripts : Java / Python / Batch scripts
Version control : Perforce self-hosted on AWS (free for <5 users)
File share : Resilio Sync Pro (secure folders ftw!)
Debugging : Srcsrv & Symstore
Total cost per month : $25
If you’ve got any questions you can hit me up on twitter @ambientenergy_0