Contents
Building a Mindset for Rapid Iteration Part 1: The Problem
 
 
Printer-Friendly VersionPrinter-Friendly Version
 
Latest News
spacer View All spacer
 
November 22, 2009
 
Video Game Watchdog National Institute On Media And The Family Shutting Down [11]
 
Modern Warfare 2 Infinity Ward's 'Most Successful PC Version' Yet [12]
 
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
 
Sucker Punch Productions
Character Artist
 
Sucker Punch Productions
3D Environment Artist
 
Sucker Punch Productions
Network Programmer
 
Sucker Punch Productions
Texture Artist
 
Sony Online Entertainment
Brand Manager
 
Monolith Productions
Sr. Software Engineer, Engine - Monolith Productions - #113767
 
Crystal Dynamics
Sr. Level Designer
 
Gargantuan Studios
Lead World Designer
spacer
Latest Features
spacer View All spacer
 
November 22, 2009
 
arrow Upping The Craft: Susan O'Connor On Games Writing [6]
 
arrow Small Developers: Minimizing Risks in Large Productions - Part II [6]
 
arrow iPhone Piracy: The Inside Story [48]
 
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
 
Accepting the Inherent Value of Games
 
Planckogenesis, Part II: Song Structure & Gravy Train [1]
 
Designing Games Is About Matching Personalities [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
 
Features
  Building a Mindset for Rapid Iteration Part 1: The Problem
by David Gregory
10 comments
Share RSS
 
 
May 1, 2008 Article Start Previous Page 2 of 3 Next
 

Game build systems will usually be put in place to increase the predictability of new releases back to the team. When those aren't stable, other things are done to make those systems more reliable. Everything done here adds to the volume of work and the complexity of the project.

As game development has gotten more complex, projects have become unwieldy and for many teams, progress has slowed. It's caused developers to have a focus they never had to have before: optimize not only the game, but also the tools and processes involved in building the game. It's a huge shift in mindset.

Advertisement

Local/Individual Iteration

What items above are most responsible for impeding a single developer's progress these days? It's generally the tools involved in daily workflow: compilers, debuggers, digital content creation tools, source code and content control systems, custom tools and the game runtime itself.

Each component in the tool chain adds time to your iteration rate. When you make a change, how long does it take you to see the effect of that change in the most appropriate environment (game, viewer, whatever)? The closer it is to instantaneous, the better you are doing.

Team Iteration

A change made locally doesn't really exist until everyone on the team can see it (Is it in the build yet?)

This is usually all about getting your change submitted to a repository, and getting it successfully through a build cycle. Here's a build cycle diagram that will be useful in discussion.

As project leaders and studio executives have trouble understanding how far along their game development project is, they implement metrics and automated processes to help them achieve some predictability.

They stand up automated builds to bring order to a very complex, error-prone process.

In addition, to stabilize the build and protect the ongoing investment in the game, "gates" are placed in the way of checking in anything into the game. Sample "gates" include:

  • Get your change integrated into your local build
    • If it's a code change, either:
      • Compile a single configuration on your main development platform.
      • Compile all configurations (debug, release, shipping) on your main development platform.
      • Compile all configurations on all platforms.
    • If it's a content change, either:
      • Transform data on your main development platform.
      • Transform data on all platforms.
  • Test your change by either:
    • Running manual tests on all platforms, performing sufficient tests to verify that your change worked as expected and didn't break anything.
    • Running an automated test on all platforms, in addition to the above.
    • Running the entire automated test suite on all platforms, in addition to the above.

Wow. I'm forced to do that to check in my change? No wonder things are slow.

 
Article Start Previous Page 2 of 3 Next
 
Comments

Martin Smith
profile image
Very interesting read there. I am not so sure though that game development remains that dissimilar to business app development though. Waterfall is a pretty limited methodology, and frankly, I have found it rather constrictive in many of the business apps we try and develop. I have worked in IT as a business app developer/Analyst/PM for many years, and been in shops with everything from 2 man staffs, to 300+ developers across numerous continents. IN all those cases, I find that many projects defy the waterfall methodology, and that an iterative, prototyping approach is often required.

It seems to me, as the game industry continues to mature, that it is becoming more and more like the general business industry, not further diverging from it.

Sorry, a bit of an aside there I know, but I am just curious. Do you really feel the game and business IT industries are that dissimilar? And if so, do you feel they are headed toward further divergence, or not?

Anonymous
profile image
Game development to me seems like business app dev plus. Frederick Brooks told it like it is back in the 70's: waterfall falls apart once projects reach a certain size. Game development comes with all the trappings of general software engineering with the added bonus of not only having to be functional, but also fun. There's also the elements of art, audio, and story that we inherit from the film industry on top of all that.

So I would say game development is very much like IT, but in some ways even more necessitates the use of practices that reduce failure, show consistent progress, and make the product as good as the vision that gave birth to it.

Steven An
profile image
Great article on some important issues! However, I'm a bit confused about the goal of this article series. It seems that you're focusing on rapid iteration during full-on production. Ie. iteration on the actual shipping bits. But you mention early on that ideally, you iterate and find the fun in your pre-production prototype. In pre-production, you can take a lot more short-cuts and can afford to ignore some of these issues. So, I just wanted to clarify, are you mainly talking about full-production iteration? (Which, by all means, is inevitable and extremely important).

Daniel Enright
profile image
As someone who has worked on a few major mmorpgs as well as a couple smaller prototype teams I'll say that based on my experiences this article rings true.

Anonymous
profile image
As a relatively clueless person reading this article, I have to ask: how often are the automated processes the bottleneck? Sure, waiting for compression, lighting, etc. could take minutes, maybe hours, but does it take days? The rest of the rapid iteration process - manually testing the game, discovering what's fun, putting together a list of what needs to change, assigning tasks, making the changes - there might be a way to streamline that too, but this article only focuses on what the machines do. Waiting on the machine can be annoying, but that doesn't mean that it's the only thing that's inefficient with time.

Anonymous
profile image
After reading the article title: "Building a Mindset for Rapid Iteration", it's a little disappointing to end on a list of software tasks that need optimizing. I expected a list of what's going on in the mind, not the CPU.

David Gregory
profile image
Thanks to all who have read and responded! A few answers to some of you.

Martin & Anon #1: I brought out waterfall to make a point, not so much to say that it is the methods we use today. I've never done business software development, and I admit these days that waterfall doesn't really work for most teams, across both business and entertainment software. But when I started game development, waterfall was the standard on the business side, and it never worked in games. There's also always been no off-the-shelf tools to develop the differentiating features in games - those tools need to be written specially by the team, for the team. That means that the team is building the software it needs to make the game, not just the game itself. You are bringing artists and engineers together in an amazing cauldron of creativity, something I don't believe the business software industry does anywhere near the same scale.

On the other hand, there is a LOT that game developers could learn from business software teams that have been working in larger numbers far longer than they have. There is an incredible cultural barrier to get past in bringing new techniques into the Game Industry - lots of NIH, and developers who want to "work like they always have". You really have to work to get individual developers to change their tune and optimize how they develop games so they CAN make it better. Hence the title for the article "Building a Mindset..." - you have to begin with individuals, and spread the mindset to the team, before you can change culture.

Steven: When your team is small, and you are keeping it lean and mean, the challenge is to find the fun as quickly as you can, and get ready to scale your team. What I've personally seen is -- once a team finds the fun, and have all the foundational tools they need to make the content required for the game, they scale the team - and then find out that all of their tools and processes do not scale to a larger team - they can no longer iterate like they could when they were small. And sometimes, pressures come from publishers to scale the team even further than they anticipated. It is a delicate balance. You don't want to over-engineer. But you also don't want to get caught with a process that doesn't let you continue to iterate when you get big.

Anon #2: With large worlds, if you haven't properly built your tools, baked lighting or global illumination builds can indeed take days. Full content builds from source can also take days. These days, teams that are doing it well distribute these builds across multiple machines and cut the time down to see results. But if you're the guy that needs to see lighting changes, you're still in a world of hurt if you have to wait for the lighting build to see your change in the engine. How do you see "enough" results to know if the change you just made worked? You need close approximations much more quickly that don't involved a large lighting build. You need to see a few still frames at different camera angles in the scene you modified rather than a fully interactive world. You need a quick path.

Machines are definitely not the only inefficient things. Poor tool interactivity workflows and lots of context switches on your desktop can really slow things down too (amongst lots of other things). It's just that its probably easier to hit the tools and processes than it is to effectively optimize every single tool workflow, including those off-the-shelf tools that game developers DO use, like DCC tools.

Anon #3: I hope I answered your concern in the response to Martin.

Again, thanks everyone for your questions, and you should see part 2 soon.

Steven An
profile image
David: Ah I see. So during your prototyping stage, you should keep in mind these issues so that when you need to scale, you can make it happen. How do you feel about "throw away" prototyping in pre-production? For example, why not build a prototype as a mod for an engine that you have no commercial license for (if that's even legal?). But once you find the fun and figure some of the production quirks out, then you build full on scalable production tools for full-production. So nothing done in prototyping will ship, except the ideas that emerge from it. What do you think of such an approach? Could it be seen as "wasting effort"?

It's interesting that you bring up lighting-iteration as a significant bottleneck. I'm currently a graduate student in graphics, and there's a lot of research out there on rapid-iteration of scene lighting. A lot of it is focused on lighting-design for CG movies, but a lot of other techniques may be applicable to rapid iteration of environment lighting (anti-radiance comes to mind). It would be great if one small, isolated change in a map did not necessitate a complete re-computation of lighting.

Back in the old Quake days, their solution (god bless Carmack) was to make lighting optional. As a designer/level builder (back in the day when they were the same person), you didn't have to run the "light" or "vis" tools to play your map. It just meant that 1) your map would run slower (vis optimizes it) and 2) everything would be full-bright. Perfectly reasonable trade-off's in a development workflow.

Anyway, can't wait for Part 2.

Anonymous
profile image
This article seems more geared towards those who are already in a horrible build situation and a just fine with it. I would like to see more explanation on if a developer could do it right, what would the final picture look like? I'd like a description of the end goal of fast iteration, an exact workflow in an example situation. I'm sure everyone dreams their progress bar could go faster and then they try to "optimize" and just end up hittin the technical wall. I'd like more to see a workflow design based on fast iteration.

David Gregory
profile image
Steven: Throwaway prototypes during pre-production, or even afer it, can be critically important. They are an important shortcut in the game and technical design process. By the same token, be careful not to turn a prototype into a production tool (or runtime) without scheduling additional time to "beef it up" where required. Those tools can bite you later.

As far as using a commercial engine that you don't own a license to just for preproduction, I'd have to say that's not legal. You're getting a lot of benefit using an engine to get your ideas fleshed out, even if you don't ship with it (full disclosure: I work for a middleware company, so this is the expected response).

Anon #4: A great point, and I chose to write the article from the minimum state up, rather than showing a picture of a completed working system. Two reasons for this -

(a) I've tried to paint the full picture for teams before and ideas have been rejected wholesale because it seemed like too much investment.

(b) It's tough to have a one-size-fits-all solution for all teams. Every team has different requirements.

I still think that's its a worthwhile exercise, and I think i'll spend some time building a full picture of a system I think would work for most teams. People reading that type of article hopefully will be able to see the different parts and take the parts that work for them, and don't worry about the parts that won't.

Thanks for the comments.


none
 
Comment:
 


Submit Comment