World::Create()

AvatarProgramming ramblings with some vague emphasis on Games, Games Tools and Web.

Do you deliver your tools atomically?

Source Control is not a delivery mechanism


How do you get your tools out to the team?

If your preferred method is to shout over to the artists: "New tools are ready, sync to Perforce now!", then you're a bad dog, no biscuit for you.

This is exactly what we used to do, but no longer. Here's why:

50% of our support questions went like this.

ARTIST: "Help! My tools are broken"

    "Have you tried syncing to the latest" :ME

ARTIST: No.

    "Let's try that first" :ME

[Sync, try again]

    "There you go, all fixed" :ME

ARTIST: "You're the greatest."

The other 50% went something like this.

ARTIST: "Help! My tools are broken"

    "Have you tried syncing to the latest" :ME

ARTIST: "No"

    "Let's try that first" :ME

[Sync, try again]

    "Hmmm, yeah, er, that's bust, I'll go and fix that" :ME

ARTIST: "I hate you!"

When we switched to giving out installers we literally cut our support queries in half. Not only that but it also allowed us to properly version our releases, which makes tracking bugs much easier too.

Other things

Once you start with the installer, other advantages become clear. The process of building an installer is a natural fit for continuous integration, every evening you can build a new installer which can be given out to the team in the morning. This can lead to problems though, because if you are building an installer every night then it is by definition work in progress code. WIP code can have instabilities and bugs, and that can mean your team losing faith in the tools, and once that happens it takes a long time to earn it back.

So ideally, you do a nightly build of your latest code. A small section of the team, perhaps the technical artists or one of the more friendly designers can take the installer and upgrade every morning, after few hours or days of testing the installer can be approved and then you can offer it out to the rest of the team.

To force or not

In my opinion the jury's still out on whether to force an update out or whether to allow users the options. I guess ideally you'd support both, but in general I think that unless you have a very robust testing framework or team, forcing updates onto people will only generate bad blood when you break someones tools hours before their art review or something.

To be honest it seems pretty silly saying all this, because it is so obvious and once you've made the switch you can't understand why anyone wouldn't set their tools up to be installed atomically straight away. However, I remember the old days when Perforce seemed like the obvious way to distribute the tools, but no more.

Notes

  • Deliver your tools atomically
  • An installer is a good way to do this
  • Automate installer creation overnight for a daily build
  • Make sure you test the installer before distribution

Some installer software you could try:
  • InnoSetup - we've used this for a while now, it's pretty good. Nice and straightforward to get a typical installer set up. Main downside is any scripting you want to do has to be in Pascal!
  • Wix Toolset - we're looking into using this in the future. Integrates nicely with Visual Studio, can be scripted in C#
  • NSIS - the other one of the big three. I've no experience with this, but it's by the makers of WinAmp.

0 comments:

Post a Comment