Saving, SVN’s, and Schedules

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).

20150603_203203

Okay, maybe I’m a *little* paranoid…

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.

Untitled-1

File Versioning (like Perforce SVN, above)  is important for any game development process that involves teamwork and collaboration

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 feel like the guy on the left.

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.

Screenshot 2015-06-03 19.43.48

Screenshot of Trello, the online project management app I’m using

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!).

Screenshot 2015-06-03 19.44.18

Pulled back view of my entire Trello board for Tombeaux

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!


6 thoughts on “Saving, SVN’s, and Schedules

  1. 1. Perforce is not based on Subversion. It is a different (paid) proprietary version-control system.

    2. Let me defend Subversion here. The article at http://www.codeforest.net/git-vs-svn tells

    [[[
    Git’s repository and working directory sizes are extremely small when compared to SVN.
    ]]]

    This is a complete BS. The statement is based on a faulty research that can be found at https://git.wiki.kernel.org/index.php/GitSvnComparison. It’s impossible to get “12 Gb when stored in SVN” repository. It’s either intentional, ehm, exaggeration, or the researcher did some mistake. If Git’s repository is about 420MB, then Subversion repository should be approximately the same size or even smaller.

    3. I strongly suggest trying Subversion which is great for gamedev version-control tasks. Unlike Git, it natively supports (large) binary files. Moreover, Unity has some kind of integration with Subversion in its free version. Perforce integration in Unity is available only in paid versions as far as I recall.

    4. You can install a local Subversion server on your machine. BTW, if you are one-man devteam, then you can use Subversion without any server at all! When you have a Subversion client installed on your system, you can run `svnadmin create MySuperMario` and access this repository via file:// access schema (i.e. local filesystem access). In future, you can always move such repository to an HTTP(S)-aware server.

    Like

  2. I’ve used Git with the free SourceTree https://www.sourcetreeapp.com/ gui that makes it look more like Perforce with Unity projects. I use Bitbucket to store my repository. There are plenty of tutorials out there for setting it up and using it with multiple people. It doesn’t require a programmer to understand 😉

    One of the nice features of Bitbucket is you get Jira to go with your project. We’ve used Jira for massive game development bug/task databases with a lot of success. I do use Trello as well for various project, I’m not trying to bash it. To me there is something very nice about having your project + task/bug database in one central location. I’m pretty sure you get wiki access as well. Free for teams of 5, slight cost after that.

    In the end go with what works best for you that also has a lot of supporters out there. Git, Mercurial, HG, Subversion, P4, etc. all have zealots that can sway you either way with very good arguments. Take a few hours and test each of them out with a small test project and see what works for you.

    Like

    • Thanks Z. This is really helpful. I’ve heard good things of bitbucket – perhaps I’ll look into that too. so many options! As you said, I need to go with what works best for me in the end, although I’m finding that what might work best for ME is different than what I might be able to have integrated into our state/public supported computer lab, if that makes sense. Thanks again for this insight – I really appreciate it!

      Like

Leave a comment