Yesterday was not a very good day. I spent about 12 hours trying to fix my project, due to a myriad of issues surrounding file versioning and back-ups. Because of this situation, I thought the timing was perfect to talk about something that every indie game developer cringes at the mention of – PROJECT MANAGEMENT! So, on top of actually making the game, you also need to remember and find time to: back up all of your work, work with versioning/repository software, put together schedules and to-do lists, back-up all of your work, and constantly and relentlessly promote your game (and then back-up all of your work). For this blog post, I’m going to talk about all of this except for PR (it definitely deserves its own post, due to the amount of time it takes to do it correctly).
So, back to yesterday. I woke up yesterday morning to find roughly 3/4’s of my entire game project corrupted (ie: files wouldn’t open, some assets missing, Unity spitting out errors, etc. – pick your poison, as they all happened at some point). I honestly can’t say how it happened, as things were fine the night before. Luckily, just as I tell my students to do, I had backed the project up in a couple different places the night before last (as I do every night), and was able to get most of it back. But it did cost me about 90 minutes of searching, finding, merging, and testing to do so (and even worse, I had to go back to a version from two days before to find a project that didn’t have any errors, so I lost a lot of work!). I’m a big proponent of cloud backup services (I use a combination of Crashplan, Dropbox, and Google Drive, all for different purposes), but due to me currently being somewhere with slower internet speeds, I had to rely on my collection of external hard drives (you can never have enough, as you can see in the picture above). It definitely pays to back-up in multiple places, as when one of them failed, another ended up working.
But that wasn’t the end of it. The main issue that took of most of my day was due to me trying to make my project available online for collaboration with other people. Being somewhat new to this approach for my own projects (and wanting to experiment for what to use next year in the classroom with my students), I did some research into both GIT and SVN. A simple search of “GIT vs SVN” brings up over 400,000 hits, making it very hard to make up one’s mind on a clear winner for the best tool in game dev. While they are definitely two different entities, both accomplish the same goal. They allow people to collaborate on projects simultaneously (if done right) and then allow changes that the developers have made to merge back into the master project, safe and sound (again, if done right). I won’t go into much more detail about how GIT or SVN works (I’m not sure if I even know!) or which is the better option, because frankly, many others have already explained it better than I ever could.
I decided to go with Github, which proved to be easy enough at first (and worked for a few days), but something must have gone wrong. After crawling back from the dead with my earlier back-up issue yesterday morning, I decided to uploaded it to Github, so as to not lose even more progress. Upon uploading, Github opened my files in the background, made conflict comments throughout the text version of the file, and put me in the point that I was earlier that morning – the Github-modified files would not open and everything was missing! After wrestling with that for a few hours, I decided to try using Perforce instead, a SVN client that requires a server. While Github is praised by a louder, more passionate crowd, it seems like SVN (of which Perforce, a for-profit company, is only one of many who use SVN) seems to be a better fit for game development, especially within Unity. But, since I had to upload my entire project to the server before doing anything else, it continued to fail the upload, probably due to the slower internet speed. After spending nearly all day wrestling with this, I decided to go back to what was working – sticking to my own personal local machine (the old-fashioned way!), and waiting until I get back to a faster internet to try out SVN and GIT options more thoroughly.
Finally, I wanted to talk a bit about project management from the other side of the fence – keeping track of schedules, to-do lists, and milestones. Software to support this abounds on the internet, due to teams collaborating across the country and globe. Because of this, the presence of some sort of online forum helps to make sure everyone is on the same page. I had a bit of experience with this in the last year, when I served as co-instructor and co-executive producer on a class project that brought together over 40 students to develop a game. We decided to try using a product called Basecamp to manage our tasks, schedules, and conversations. While it probably works for many projects, it really ended up being a waste of time for us. Instead, we decided to fall back on a combination of Facebook and Google Drive, two platforms that are a bit better at handling communication and large files, respectively (yet there was still a big hole in project management that neither Google or Facebook could fill). Because of that bad experience, I wanted to find something that would be a better fit for game development, especially since I’ll be instructing and leading a couple large student teams (around 12 per team) next year in my senior game development class. After a bit of research, I came across Trello, which – so far – has been extremely helpful. It is essentially set-up like a massive bulletin board – you can create to-do lists, cards, upload files, and manage schedules, all of which reside on the same screen (which is important). While I haven’t experimented with it on a larger team yet, I’m hopeful that it could be an answer as the alternative to “Facecamp” (which is what we started calling the mess that was our project management situation last year on the Harvey game project!).
So, hopefully this post shows that not all game development consists of fun forays into modeling, coding, and design. Some of it is the stuff that not many people like to do (and if you do enjoy it, there are certainly jobs out there for you!). While the jury is still out about how I’m going to get my project online for collaboration, I hope that this one bad day will be it for a while, and I can get back to the steady and rewarding process of making my game!
P.S. please comment below or contact me if you have some suggestions about SVN or GIT, or (even better) are open to helping a GitNoob figure all of this out!