Contents
Collaborative Game Editing
 
 
Printer-Friendly VersionPrinter-Friendly Version
 


Part of:



[More information...]
 

Latest News
spacer View All spacer
 
November 22, 2009
 
Video Game Watchdog National Institute On Media And The Family Shutting Down [12]
 
Modern Warfare 2 Infinity Ward's 'Most Successful PC Version' Yet [14]
 
New Tech, Design Details Of Project Natal To Emerge At Gamefest In February
spacer
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
November 22, 2009
 
Trion Redwood City
Sr. Environment Artist
 
Trion Redwood City
Sr. Evnironment Modeler
 
Sucker Punch Productions
Network Programmer
 
Sucker Punch Productions
Texture Artist
 
Sucker Punch Productions
Character Artist
 
Sucker Punch Productions
3D Environment Artist
 
Crystal Dynamics
Sr. Level Designer
 
Sony Online Entertainment
Brand Manager
spacer
Latest Features
spacer View All spacer
 
November 22, 2009
 
arrow Upping The Craft: Susan O'Connor On Games Writing [7]
 
arrow Small Developers: Minimizing Risks in Large Productions - Part II [7]
 
arrow iPhone Piracy: The Inside Story [51]
 
arrow And Yet It Grows: Analyzing the Size and Growth of the European Game Market [5]
 
arrow NPD: Behind the Numbers, October 2009 [13]
 
arrow Reflecting On Uncharted 2: How They Did It [5]
 
arrow Sponsored Feature: Rasterization on Larrabee -- Adaptive Rasterization Helps Boost Efficiency
 
arrow Postmortem: Wadjet Eye's The Blackwell Convergence [2]
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
November 22, 2009
 
Managing Creativity
 
Time Fcuk - A Postmortem [3]
 
Accepting the Inherent Value of Games
spacer
About
spacer News Director:
Leigh Alexander
Features Director:
Christian Nutt
Editor At Large:
Chris Remo
Advertising:
John 'Malik' Watson
Recruitment/Education:
Gina Gross
 
Features
  Collaborative Game Editing
by Mick West
12 comments
Share RSS
 
 
May 20, 2009 Article Start Previous Page 4 of 4
 

Version Uncontrol?

The problem of not having version control in an editing environment such as Second Life could obviously be addressed by incorporating some kind of VCS directly into the project. But this again raises the issues we had earlier of potential bottlenecks: how to divide things into files, and the manual burden of checking things out and back in again.

Take a step back and ask the sacrilegious question: Do we need version control?

The immediate and emphatic answer is, "Of course," especially if you remember the dark days of early game development when all code was manually merged on Fridays, nobody had the right version of anything, and programmers lost days of work if they accidentally overwrote a file. Version control is an invaluable part of the game development process that is impossible to discard.

But consider what you use version control for, especially with game assets. You use it to prevent edit conflicts, to distribute the latest versions, to back up files, and to create branched versions of the game.

Now on a daily basis, the vast majority of what a VCS is used for is the first two; preventing edit conflicts and distributing the latest version. Developers check out or "open for edit" some files, do their work, and then check in or "submit" those files.

They then "get" or "sync" the latest version of the project and tools. The backup aspect is a necessary part of version control but is used relatively infrequently. The branching is used even more infrequently and is a high-level task performed by very few team members.

Consider now how this works in Second Life. We don't need to ever get the latest version, as we always have the latest version. We are in the latest version. We don't need to check things in or out, as we simply start editing them, and they get locked. Then we stop editing them, and they are unlocked. We don't actually need the conflict prevention and version distribution of a VCS.

But what about backups? You'll note that backups are what you really miss about the lack of a VCS in Second Life -- and remember, the backup functionality is one of the least used functions in VCSs.

We still obviously need it, but we might now want to perform a little paradigm split and separate the VCS into two separate function groups, one being the file ownership and distribution system and the other the file backup and history system.

Since they have been so closely linked in the past, it has been natural to treat them as being the same thing. When you check in a version of a file, it becomes the file that gets backed up.

Yet the real utility of a backup system would be the ability to undo your changes to an arbitrary point. If you've been editing a file for a while without checking it in, then you might have made a lot of changes that you might want to undo. Designers often save multiple numbered iterations of a file locally before checking in.

Programmers who keep a file checked out for a long time frequently get nervous and make local backups, or even check-in with changes (hopefully) stubbed out, just to have the security of that VCS backup. Here the act of checking in a file is a useful label in the backup process, but it should not be the sole method of backing up a file.

Edit conflicts, bottlenecks, file distribution, and backups are, to some degree, historical problems, forced upon us by the constraints of a simple file-based editing system. Files are large, which means you get edit conflicts or bottlenecks, and that it's expensive to back up every single change.

But if we transition to a game editing process more like that found in Second Life, we are no longer editing files, but are editing much smaller objects within the world, which are stored on a shared database which needs no distribution.

Here it would be quite possible to back up every single change and every single edit to each object, essentially giving the developers both infinite "undo" capability and the confidence to make bold changes knowing they can safely return. Branching is also quite possible within such a scheme.

I think it is inevitable that some aspects of game development will move to using this collaborative model. It will require a rethinking of the way version control is handled, and even the way version control is viewed -- a perhaps violent division of the functionality of file locking, distribution, and backups, that will allow each separate area of functionality to develop unfettered with new and powerful tools and processes.

[EDITOR'S NOTE: This article was independently published by Gamasutra's editors, since it was deemed of value to the community. Its publishing has been made possible by Intel, as a platform and vendor-agnostic part of Intel's Visual Computing microsite.]

 

 

 
Article Start Previous Page 4 of 4
 
Comments

Bryan Bibat
profile image
Some VCSs are already following the "paradigm split" you mentioned. For example, the Linux kernel has been using one of those (Git) since 2005.

Building a real-time collaborative game asset editor will take time, especially if you consider the computing, storage, and bandwidth problems that would be encountered in the process. In the meantime, it would be more practical to reduce the amount of edit conflicts by reducing the dependencies and increasing the orthogonality of modules (as fine grained module division is usually not enough), and by improving the communication between team members.

When you think about it, VCSs shouldn't take the blame for most of the problems in version control (unless, of course, we're talking about VSS :P ).

Joshua Bouscher
profile image
And then there are things like HeroEngine, which supports collaborative real-time editing AND rollbacks.

Darrin West
profile image
In second life, you tend to edit your own "land". It is rare to have a second content developer banging on the script you are working on, or deleting the objects you are moving.

Consider two *entwined* editing sessions, then ask yourself how you are going to "undo" some changes. Do you undo your own edits? The other guy's? The other guy's that happen to touch the objects you touched?

I'm betting these hard questions would result in the same solutions we have today. Keep out of my backyard.

I understand that in Hero, the recommendation is to put up yellow police-tape around the area you are working in so these collaborative-conflicts don't happen.

Thanks for the thoughtful and balanced analysis of this problem. I'm trying to keep an open mind about it, but there is a lot of disagreement about where it lands on the usefullness scale. And what size team it makes sense for, what genre of game...

Eric Slick
profile image
I'm shocked that this article fails to mention HeroEngine (heroengine.com), which is a 100% live, collaborative, real time editing environment. The development environment IS the game. It has version control, the ability to rollback changes and elegantly handles as many developers building the game world at the same time as you want. This engine has been out in the wild now for a number of years and is being used for several high profile MMO projects.

Mike Smith
profile image
So pretty much all this article seems to be suggesting is to lock or checkout files before working on them so only one person can change a file at a time. Nothing really earth shattering there.

Mike Smith
profile image
Oh, yeah, and keep your files small and modular.

Aaron Eastburn
profile image
I think better advice would be use some of the newer version control techniques. Look at Subversion and the client TortoiseSVN and it's branching and merging capabilities. It's great for text based editing and when you check in or check out code if there is a discrepancy it gives you the option of accepting the code change or not after using a text diff program to show you the changes. Now this wouldn't work for most asset files but for scripting and programming it works great.

Mick West
profile image
@Mike Smith, not that's not what I'm suggesting. That's just the *current* methods discussed on thef irst page, the next two pages discuss the collaborative options.

@Eric Slick and others, The article was actually written for Game Developer a few years ago, this is a reprint, so HeroEngine was not so well known back then. But it does sound just like what I was suggesting.

James Hofmann
profile image
I did some investigation on this with respect to public-access collaborative projects. I think that granularity is basically the only significant variable; with file-based VCS you're working on the file level, and with databases you work on individual entries, whose size and complexity may vary. You can implement rollbacks in both, but files are more convenient since the data model is already established.

Different granularity comes with tradeoffs, as the article describes; with low granularity, conflicts are hard(people problem), and with high granularity, scalability is hard(computer problem). Note that DVCS mostly arises of the "people problem," and horizontal-scaling, non-relational databases arise from the "computer problem." Most of the obvious ground seems to have been covered by a VCS or database system in some form, so unless there's a radical improvement in our concepts, probably the best working practice is to go for the maximum level of granularity and then work out ways to optimize it, given that computers are cheaper than people.

Simon Carless
profile image
To clarify, this was indeed written a little while ago (February 2008), perhaps before HeroEngine was more famous, though I honestly think that HeroEngine is similarly famous now as it was then, and it's more a condition of the tool's slight lack of profile. Which is hopefully being addressed by comments.

Felix Frank
profile image
> @Mike Smith, not that's not what I'm suggesting. That's just the *current* methods discussed on thef irst page, the next two pages discuss the collaborative options.

I politely disagree. On the last page, you stress that "We are in the latest version. We don't need to check things in or out, as we simply start editing them, and they get locked."

That is in my eyes a very simple source control paradigm. Subversion-like systems perform better than that, and the concepts behind distributed systems such as Git are even more flexible.

Granted, those systems lend themselves better to code control. Merging changes to binary data is all but impossible in most cases, so in game development, the criteria are mostly different from many other software projects.

Thomas Holden
profile image
Mick, you might be interested in the Sauerbraten game engine: it is a first-person shooter that features an ingame editor (you tap "E" to switch into Editing mode), and the editor can function perfectly well online with multiple people working simultaneously. http://sauerbraten.org/


none
 
Comment:
 


Submit Comment