Version control for software and in-game ideas

Hi, I am severely new to the whole version tracking, but my game is getting to the point where it’s really needed to progress properly.

#1 I’m the sole coder (so need to worry about data sharing), but I’d like a way to properly version track my code, or at least my code builds. Right now I’m just making folders and building to new ones, and backing up approximately once a week, but this isn’t ideal. What would be the standard for a small indie team?

#2 I’m making a card game, and currently tracking the cards I create in an excel sheet. Every time I make substantial changes, I save a new version. What I’d ideally like is a database where I can track each card by an ID number, and then be able to track the different iterations the cards undergo, as well as comments for feelings while playing and design decisions. There are multiple card designers, so this would allow us to all input without the kind of pain that controlling this is now, especially when two of us are working on two separate aspects to the sheet.

#1) On version control, Git (http://git-scm.com/) and Bitbucket (http://bitbucket.org) would probably serve you well for a single person team. I’m sure there are better options here that play nicer with Unity and binary assets, but when you’re just one person you’re not looking for much more than backups anyway.

#2) Google Docs. Share it with other people you want to work with and you get full tracking of revisions and collaborative editing. Plus you can probably just upload your existing spreadsheet straight in.

Plus all of the above are free.

#2) I want to get away from a spreadsheet though, because it’s difficult to track individual changes on cards (as there’s currently 100 in the set). I basically want a bug database, but instead of bugs, I’ll track cards

git works nicely with unity since they added the metafile stuff.

  1. Sounds like some kind of wiki might be better than a spreadsheet. If you really want it to still be a spreadsheet, Google Docs does sharing and collaborative editing very well.

thats a pro feature… unless theyve changed it to free as well now…

Yep, metafiles and external source control support were added to the free version in Unity 3.5. The text-based prefab and scene serialization are still Pro only, however… but just having metafiles is all you really need to play nicely with source control. That was a great move on Unity’s part since the inability to collaborate was really hindering small indie teams from moving forward with Unity.

A wiki is actually a great idea. Editable by everyone, and easy to set up a basic database. I don’t even really need it searchable etc, just easy to work in and collaborate changes with. Thanks!!

As for git, I’m going to look into it. I know nothing about source control in general, especially in unity, so it might take awhile (unless someone has a tutorial? ;P)

bitbucket.org and use the Mercurial option.
And they have an issue tracker so you can close items off as you check in code.

Personally I prefer Mercurial and BitBucket.org over Git and GitHub, but when it comes to Unity and projects that have a lot of binary assets, I think Subversion is a far better option. Reason being is that Subversion supports locking of binary assets, which basically means you can set it up so no two persons can work on the same file at the same time, which is not even possible in Git or Mercurial.

Subversion isn’t as flexible or as awesome as the other two, but chances are you’ll find it easier to understand and use specifically because it lacks awesomeness :slight_smile:

The SVN book is available online for free and thoroughly covers all things Subversion.

Hey guys, I just published an article on MobileTuts about using Mercurial, and version control in general, with Unity:

I figured I’d dig up some of the old threads that talked about the topic and post the link.

Are you using a MAC? If you are, I’ve been on Tower (which has a cost associated with it) and using BitBucket Git (which provides private project hosting if you like) and using that to do my project syncing. It’s working brilliantly as a combo as you can choose to ignore particular files on your pushing to the git (like temp files that Unity generates).

Tower’s a good solution too (not available on PC) as its a full on application that lets you browse through previous commits and find out whats been changed, revert / pull entire projects from previous revision. It’s pretty easy to understand and alot of documentation is supplied for people not used to using git.

Just yeah, metafiles are needed :wink:

For your second backup of cards you add, i’d agree Google Docs would be an awesome easily accessible for you.

+1 for Bitbucket.org and it has an issue tracker you can use to record all your bugs/tasks etc.
It scales well for multiple users and is free for up to 5 users. It would serve well for way more than a single person as well.

Thanks for the link! Good read.

However the century-old question keeps coming back, which VCS to select? Also, there are a lot of front-end clients for each VCS (Git, SVN, Mercurial) to make life easier in general and as much as I want to keep the usefullness of client-side cmd-line management, I love working with an integrated UI front-end such as tortoise.

So, for all of them there is the tortoise client, for Git I just found http://windows.github.com/ too and I know there are tons more…

For distributed VCS, Git and Mercurial seems the norm, why take one over the other?

Should better handling of binaries be enough of a reason to go into a centralized VCS such as SVN?

Are there considerations when merging that would make one system better over another?

Stability issues?

Small team-size, big-team size?

Windows vs Mac considerations? (speed, stability, availability of clients available…)

Local repos, external code hosting support / or not, easy install?

I don’t think anyone can with certitude answer all those questions but is there at least one of the 3 VCSs that stands out?

Most ppl stick with what they know.

I stick with svn, because its easy to use (including server installation), and meets my needs.

Compared to TFS and CVS, SVN is my favourite. Havn’t tried the others, and dont really care to.

Yeah, there are cases where one system is better than another but in general stick with what you know and what is easiest.

If you aren’t familiar with any of them, Git is probably your best bet.

I’ve been used to SVN during my web-dev years but the more I read the more I get the feeling that large projects full of binaries (6gb for 1 project in my case) might be better handled with a distributed VCS such as Git or Mercurial… I’m wrong?

Now, apparently, Git has better branching than Mercurial but the latter has better performance on Windows. Mercurial is also said to be easier to use, but this point can be moot if you start using a client-side UI. Others argue it’s better at merging too…

The community seems to be more into Git / SVN and Unity Tech. are using Mercurial (if I remember) so I’ll probably have more support with Git than Mercurial.

Though choice… though choice… Getting some contradicting info about using SVN or Git for massive repos full of binaries.

In the past I have used many different version control system, we recently jumped over to git here. It takes a bit getting used to git but the idea behind it is brilliant (if you set it up right). I’ve used the asset server in the past but I still haven’t found any reason why it should cost 500$ I think it’s the only overpriced piece of Unity. SVN has it’s advantages as well all tough it’s slower bigger and more prone to all kinds of problems than git it takes less time to learn and comes over a bit more straightforward at first.

But for your needs I would recommend learning git or mercurial (sort of similar systems), use a web repository and a good client. Then you can always learn the command line stuff later on.

It’s the exact opposite actually. You’re probably better off sticking with Subversion if you have a sizable amount of binary assets. This stack overflow answer explains the issue nicely.

You are right, must got some things mixed up. The conclusion I am getting at is;

  • Large repos, many binaries; Better go with SVN, at the end the performance will compare to Git/Mercurial due to small changesets vs large repo.
  • Trade-off being that its a Centralized VCS, branching is a problem.

@amaliahern; It definitely looks promissing. Any experience using it with Unity? Any Unity-Specific setups for this VCS? Only problems I see are that it’s proprietary and the user-base is definitely smaller than the 3 big ones so support could be a problem. For small (< 15 users) teams, the first part doesn’t seem to be a problem though.

*Edit: What about scene merging? Does the provided merging tool works well with Unity?