Contents
Collaborative Game Editing
 
 
Printer-Friendly VersionPrinter-Friendly Version
 


Part of:



[More information...]
 

Latest News
spacer View All spacer
 
February 9, 2010
 
Dragon Age: Origins Sells In 3.2 Million Units [2]
 
Interview: Composer Garry Schyman Talks BioShock Soundtracks [1]
 
Analyst: Industry Sales To Rebound In March On Strong Core Slate
spacer
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
February 9, 2010
 
Super Happy Fun Fun
Senior Software Engineer
 
Tarsier Studios
Senior Game Designer
 
Tarsier Studios
Senior Game Engine Programmer
 
Konami Digital Entertainment Co., Ltd.
Sound designer
 
Trion Redwood City
Sr. Environment Modeler
 
Trion Redwood City
Sr. Graphics Programmer
 
Vicarious Visions / Activision
Tools Programmer
 
Blue Fang Games
Producer: Online/Mobile
spacer
Latest Features
spacer View All spacer
 
February 9, 2010
 
arrow Television, Meet Games
 
arrow Two Halves, Together: Patrick Gilmore On Double Helix [1]
 
arrow The Road To Hell: The Creative Direction of Dante's Inferno [19]
 
arrow The Sensible Side of Immersion [10]
 
arrow Jumpstarting Your Creativity [5]
 
arrow Truth in Game Design [49]
 
arrow Postmortem: Vicious Cycle's Matt Hazard: Blood Bath and Beyond [4]
 
arrow Developers React: The iPad's Future [16]
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
February 9, 2010
 
Lineage 2 Interview - 'Freya Update Is Just a Beginning' - Pt.2
 
Swashbuckling for Landlubbers: Why you may already be encouraging piracy! [12]
 
Lineage 2 Interview - 'Freya Update Is Just a Beginning' - Pt.1
spacer
About
spacer News Director:
Leigh Alexander
Features Director:
Christian Nutt
Editor At Large:
Chris Remo
Advertising:
John 'Malik' Watson
Recruitment/Education:
Gina Gross
 
Feature Submissions
Features
  Collaborative Game Editing
by Mick West
12 comments
Share RSS
 
 
May 20, 2009 Article Start Page 1 of 4 Next
 

 [Individual game developers take responsibilities for different parts of game development - sometimes leading to content mixups and bottlenecks where their work overlaps. In this  in-depth article, originally published in Game Developer magazine, Mick West discusses how collaborative editing may be the future.]

Game development teams are getting quite large. The largest teams can have more than a hundred developers working on a game at any one point in the process. Yet many developers still use work practices that revolve around individuals taking the entire responsibility for large chunks of the game.

For many things, such as the creation of the 3D models and textures for individual game objects, this is still quite reasonable. However, for the creation of large game levels and continuous game worlds, this can create problems and it is worth investigating methods of content creation that are more collaborative in nature.

This article takes a look at some of the issues involved, and discusses a few technical problems from the tool programmer's perspective.

Code Conflicts and Bottlenecks

When multiple people are working on overlapping aspects of a game, there are two problems that arise: edit conflicts and edit bottlenecks. These problems are two sides of the same coin. Fixing edit conflicts can create edit bottlenecks, and vice versa.

An edit conflict happens when two people edit the same thing at the same time and their changes create two conflicting versions. The nature of this problem depends on how fine-grained the "things" are in the game being developed.

Programmers have always had this problem when two of them work on the same area of code at the same time. If both programmers make changes to the same file, an edit conflict occurs, and it needs to be resolved.

Generally, programmers will not be working on the exact same line of code, but rather will work on separate tasks, which use code that overlaps in various files. When a programmer wants to make a change to a file, he or she will check it out from the version control system (VCS), edit it until the changes are working, and then check it back into VCS.

The problem of code edit conflicts can be handled by allowing only one programmer to check out a particular file at one time (this is typically a setting in the VCS software). Since only one programmer can edit the code at a given time, there can never be an edit conflict. However, we still get bounced over to the other side of the problem -- the edit bottleneck.

An edit bottleneck occurs when two people want to edit the same thing at the same time, yet person B cannot edit it because person A is editing it. With code, this is particularly problematic when large sections of functionality are incorporated in key files (typically with rather overarching names, like: "player.cpp" or "globals.cpp"), which affect many areas of the game and need many changes.

The common solution is to allow for multiple checkouts. Thus, more than one person is allowed to check out the same file at the same time. They make their changes, and then check the file back in. If the changes conflict, then they have to be merged. This step can usually be done automatically, but occasionally it requires a little manual intervention. Sometimes programmers end up editing the exact same piece of code and have to actually talk to each other to figure out a solution.

Some programmers prefer to structure things in such a way that multiple checkouts are never required. Theoretically, we can achieve this solution by making individual code files as small as is practical, splitting up files that contain multiple functionality, and establishing programmer procedures for rapid iterations, minimizing the length of time files can be checked out.

In practice a combination of efficient code division and multiple checkouts is commonly used. While edit conflicts can occasionally create problems, these can generally be mitigated by keeping a reasonable amount of functional separation in your code organization, and ensuring programmers check in (or merge) their code reasonably often.

The problem of edit bottlenecks can stop programmers in their tracks, or at least seriously cramp their programming options, and the occasional problem caused by an edit conflict is well worth the extra flexibility that simultaneous editing can provide.

 
Article Start Page 1 of 4 Next
 
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