A Proper Development Environment

So you’re gonna make a game.  Whether you’re going it on your own or you have some buddies to help you out, here’s what you’re going to need to pick:

  • A technology platform
  • A configuration management tool
  • Tools for communication and management (depending on project size)
  • Some web hosting

I’ll go through each of these items below:

Choose your technology

The platform is the tools you will use to make your game.  Your platform will determine what hardware and operating system are needed to play your game.  You want to pick something that will suit your needs based on your target audience, your development schedule, and your technical requirements.   Just because you can write games that run exclusively on Emacs doesn’t mean it’s necessarily a good idea!

Different platforms can help you and hinder you in each of the three aspects mentioned above.  C++ may be the language that “real” game engines are written in, but it’s complex and very difficult to write your own engine from scratch.  My brother started a solo game project two years ago using C++ and SDL, and today has only half of a menu system and tiling engine for a 2D isometric game.  I can boast the same after just one month using C# and XNA game studio 3.1.

If you’ve got loads of time on your hands, you would be well served by making simple prototype games in many different platforms so you can understand their quirks and limitations.  As you’ll find out from reading my blog, I favour Flash for browser games and XNA for simple-to-moderate PC and XBOX projects.

If you’re made of money, you could just license a ready-made engine on a powerful platform like Valve’s Source engine, which seems to have been the approach taken by the indie hit Zeno Clash.

Configuration Management is key

This is the single most important tool you will use across ALL platforms of game development.  Configuration management (or source code control) gives you the power to undo complicated changes to your code and to branch off in wild experiments while maintaining the stability of your trunk.  It also lets multiple programmers contribute to the same code base, and if paired with some web hosting, can keep your source code safe and secure in the event that your computer blows up.  Even for solo projects, you have huge benefits for trivial downsides.

I recommend SVN with the TortoiseSVN client, which is nice because it integrates very well with Windows Explorer.

Talk it up

Depending on the size of your project, you’ll have different needs.  For solo and small projects, I recommend at minimum a wiki for recording decisions, discussions, thoughts, musings, specs, etc.  With only a handful of team members, you can probably get by with just a wiki and some agile practices.  As the team grows above 5 or 7 active members, some project management practices, a bug tracker, and a bulletin board might be necessary.  Also, frequent meetings will be necessary, for which Skype is exceedingly useful.

How to be a good host

Pretty much everything in the last two sections can be achieved or enhanced with a good web hosting service.  I’ve tried fiddling around with registering a domain, setting up your DNS, and hosting out of an old server box in my basement – undoubtedly this works well for some people – but I found it more trouble than it’s worth.  Not only do you need to worry about your ISP’s policies against hosting, but you also have to worry about server administration, network security, and setting up all the various services you want to host.

I was pleasantly surprised when I found Dreamhost last year.  Bundling the domain registration with their hosting is a bargain compared to GoDaddy, and most of the services I mentioned above are trivially installed using their web panel.  The only thing to worry about is that since Dreamhost is a shared hosting service, all your stuff is on a server that’s shared with a bunch of other websites, meaning your domain might not be the fastest or able to handle a whole lot of traffic.  But for a small independent game development project, it’s perfect.

Posted in Development
7 comments on “A Proper Development Environment
  1. Andrew says:

    ewww… SVN

  2. Kevin says:

    So’s your face.

  3. Andrew says:

    Does your web host also host your svn repo? Why not a distributed system like git? It works quite well now under windows.

    Also, when can I become a fan of you guys on facebook? You guys should make a “page”…

  4. Kevin says:

    I know git is pretty popular in the “in crowd”, but I don’t understand why it would be better than SVN in this context. My experience with databases suggests that a single “master” database under version control is superior to a collection of working copies to which changes are being applied. Wouldn’t it be the same for source code?

    A facebook page is a fantastic idea. Go go gadget Viral Marketing Campaign!

  5. Andrew says:

    Indeed, I can understand the argument for a centralized repository, and git can certainly be used in this manner. Having used SVN for my Capstone project, and git for everything since, I can say that my overall experience is “happier” with git. I constantly found myself fighting with SVN over little things, whereas git just “works”. That being said, I would not rate myself as a terribly knowledgeable SVN user, and maybe i just didn’t know the right tricks.

    PS: Repo Hosting? How/where?

    Also. definitely feeling the FB love…

  6. Kevin says:

    Yes, Dreamhost is hosting our SVN repository. It’s actually quite convenient, as SVN is one of their “one-click installs” for software. Git is not, which is really my primary reason for picking SVN over git.

  7. Andrew says:

    Git updates can be “natively” pushed to pretty much any webserver, provided you have webdav or SSH/SFTP access. However, configuration would probably not be “one-click”.

Leave a Reply