Contents
Planning For Fun In Game Programming - Part 1
 
 
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 [13]
 
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
3D Environment Artist
 
Sucker Punch Productions
Network Programmer
 
Sucker Punch Productions
Texture Artist
 
Sucker Punch Productions
Character Artist
 
Crystal Dynamics
Sr. Level Designer
 
Monolith Productions
Sr. Software Engineer, Engine - Monolith Productions - #113767
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 [7]
 
arrow iPhone Piracy: The Inside Story [49]
 
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
 
Time Fcuk - A Postmortem [2]
 
Accepting the Inherent Value of Games
 
Planckogenesis, Part II: Song Structure & Gravy Train [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
  Planning For Fun In Game Programming - Part 1
by Tom Hammersley
14 comments
Share RSS
 
 
May 20, 2009 Article Start Previous Page 2 of 3 Next
 

Is Games Development Different to Other Industries?

We frequently encounter the argument that games development is somehow fundamentally different from mainstream IT development, though it is often unclear why.

The industry is different, but not to the extent we like to believe.

Advertisement

Mainstream IT developments typically involve providing a software solution to a problem in a given real-world domain. There is frequently some existing work or process that we can study and understand. Even if we are creating a new product or type of product, we have an established domain to work in.

The difference in the games industry is that we are aiming to build products for entertainment purposes. Not only must a product be fit for purpose but it must be entertaining, too.

Furthermore, we create and invent the domain we develop for, with only the established practices of a genre to serve as guidance. Even those titles implementing real world activities such as sports involve some interpretation and modification of the real-world domain.

But what portion of our development work is spent on producing entertainment? Games engineering teams typically serve two customers with wildly varying needs: external retail consumers purchasing the shrink-wrapped product, and internal developers requiring tools and support.

After all, we do not create entertainment alone; we also construct tools, processes, architectures, servers and other software to support the final retail product. And is the development of that software really so different from mainstream IT fields?

Two Types of Development

We need to understand, differentiate and partition our work into that which is focused on creating fuzzy, uncertain entertainment software in an artificial domain, and that which is focused on creating the supporting infrastructure and tools. The latter is equivalent to the work done in other industries.

Communication Through Requirements

If we are to build a game constructed from our own ideas, we need to have a solid, unambiguous, clear method of communicating those ideas and visions. Developing software to solve real-world needs also needs a means of communicating the understanding of the real-world domain and the needs of the users to developers.

Requirements fill this need. Just as requirements can communicate understanding of a real-world problem domain to developers, they can communicate a game designer's ideas and vision to a developer.

What About Fun?

Fun is a challenging concept for design and requirements. It is very difficult to prescribe how to make a feature fun.

Experience may provide a reasonable guide but is no guarantee. It is very difficult to describe how to make a feature fun by description of its behavior alone. We need another dimension.

Functional vs. Non-functional requirements

To illustrate how we can address this challenge of making products fun, firstly I want to explain the concepts of functional and non-functional requirements. Functional requirements describe things that a product must be able to do, such as a Non-Player Character having the ability to throw grenades at a player.

Non-functional requirements describe qualities or properties that the product must have such as ease of use, performance, or human aspects. They are the characteristics of the implementation, not what the implementation achieves.

Functional requirements are what a product does, and non-functional requirements are the way and manner in which the product goes about doing them (Robertson & Robertson p9).

This separation of "what we do" versus "how we do it" is key; we can consider multiple different ways of doing the same thing, each with different characteristics. It is possible that we can faithfully implement the required functionality, but fail because we haven't satisfied the non-functional requirements.

I argue that fun is a non-functional requirement, or a product of non-functional requirements. We want to develop a set of functional requirements to describe how a feature works, and non-functional requirements describing how to make that feature fun, or challenging, or easy-to-use.

Clearly we cannot simply state, "This feature must be fun". We can, however, describe the particular aspects of how a feature works that will make it fun.

 
Article Start Previous Page 2 of 3 Next
 
Comments

Jeff Beaudoin
profile image
I really liked this article.

This has some really good observations on what a programmer can/should contribute to the design of a game. Many designers see programmers as a means to implement their ideas, rather than a means to find the best WAY to implement their ideas.

The underlying point that Tom gets across very well is that collaborative effort leads to the correct solution, instead of the first solution.

Bart Stewart
profile image
I believe the author's main point is correct: when generating requirements, it's better to state what is required and avoid stating how that requirement will be fulfilled.

Starting with a solution instantly cuts off opportunities to explore what might have been better solutions. So insuring that your customer -- often a system designer -- sticks to specifying the "what" (including budget and time) while leaving the "how" to the programming team is a sound principle.

I'd also like to suggest that there's an important corollary to this principle: never expose data internals to the customer unless you expect that you will never change those internals.

Beyond the obvious security concern, the moment customers are allowed to see an internal data element, they will begin to depend on it always being there. Any exposed data element becomes untouchable, preventing you from considering new and improved ways to implement the internals of that system. This makes it much more expensive to change any system of which that data element is a part.

As long as the back-end internals are not exposed, programmers have the freedom to modify or even replace them completely while maintaining the front-end behaviors that are visible to the customer. Keeping internals invisible to the customer thus helps them focus on the "whats" -- the forms and functions -- when writing new requirements, rather than on the internal "hows."

Of course no one every hits 100% on this stuff. There's always some overlap between design and programming, particularly in smaller studios. But it's been my experience that distinguishing "whats" from "hows" helps both designers and programmers focus on what each is best at doing, getting maximum value from the developers in those roles.

Ian Barkley-Yeung
profile image
I'm not sure I agree with the "requirements vs solutions" piece, or maybe it's just not stated well.

What Mr. Hammersley seems to be saying is that the lead designer of an RTS should say, for instance, "Each faction should have a cost-effective way of countering airplanes" instead of what they currently do, which is to specify the list of units that each faction has. And then assume the programmer will figure out whether it is best to give one side anti-air fighter jets and another side a special "kill fighters in area" spell.

Well, that's obviously ridiculous. First off, it's not just a programming problem -- art and audio and level designers need to know which solution to the "countering airplanes" problem we are going to use. Moreover, the programmer has no more idea (probably less) than the designer in terms of which solution is going to be fun. And this is making the programmer into a designer.

Now, I don't think that's what Mr. Hammersley really means. But that is what he says -- designers should only focus on requirements and problems, not solutions to those problems. Unfortunately, that's what 90% pf design *IS* -- finding solutions to gameplay problems. To simply issue a blanket "designers shouldn't try to find solutions to problems" is vastly overreaching.

I'm sorry, but I think he needs to revisit this a bit and try to be clearer about what problems he thinks should and should not be solved by design (or art or audio or...)

David Tarris
profile image
It seems to me, Ian, that the author was trying to say that there is a way to both allow for ever-changing, organic nature of software development while still keeping focus on what it is the team is ultimately trying to achieve with this product. Though I will agree that a little bit more specifics and less generalizations would have been nice to help clarify the main points.

I think Damion Schubert, speaking at the GDC a few years back, had an excellent speech on creating useful documentation and systems design requirements, a lot of those points being echoed here, and I agree whole-heartedly. But again, more examples would be greatly appreciated.

Blake Nicholas
profile image
Maybe the programmers should play more games so that the designers can say stuff like, "the mechanic is like X game, but with Y difference". The only reason that other programming can be specified easier is because the programmer is able to comprehend the design easier by using real world stuff that they encounter everyday. This is a problem with a lot of people in our industry, they aren't really gamers, they're too busy to be gamers.

Jason Avent
profile image
Sorry to reduce this article down to buzz words but aren't you just talking about User Stories? Alot of agile development systems use this phrase but it's not exclusive to those systems. Basically it's what you're after. Something that says what the user expects. It doesn't include the how or even the why really. It just talks about the result in terms that the expected user would want. The user can be the consumer, a designer/artist or another programmer - or sometimes you write a user story from a couple of perspectives because it could have multiple clients. By creating User Stories, it really makes you think about what's essential about a feature and gives the implementors a maximum amount of freedom to decide how they meet the requirements. User Stories as a concept is pretty well documented.

On the rest of the thread:
Ian - the user story for the designer might be 'As a Designer, I need to be able to control the fire rate, bullet power, movement speed...(etc) for the wheeled, ground-based AA cannons' - so you ask for what you need. Don't worry, with this system you should have more control over what you need, not less. The old school way of doing it is to write out loads of stats tables into design documents that you have no way of telling will work or not until you try them in the game.

B N - programmers should definitely play more games. : ) At our company, we've tried to make it as easy as possible for them to do so both at work and in their own time. It's worth making the investment.

J R
profile image
Speaking as a games programmer there's nothing "fun" about getting vague feature requests from designers who have some kind of idea what they want but haven't thought it through and haven't communicated it properly.

Ian Barkley-Yeung
profile image
Let me put my objection to the article another way -- I don't think there is a distinction between requirements and solutions. Each requirement is just the solution to the previous requirement.

The only real requirement for a business is "Make Money". Every thing after that is the solution to a problem. "How do we make money? Build an RTS" "What kind of RTS? A fun RTS." "How do we make the RTS fun? Make it balanced." etc. etc. etc.

So you are always being handed "solutions to problems". The author seems to object to certain kinds of solutions, but never states which solutions he has problems with.

Chris Howe
profile image
Interesting stuff Tom. I agree with some of the comments that more detail is needed, especially regarding the level at which the problem is specified, but I imagine part 2 will go into that.

In addition to specifying where we draw the line between problem spec and implementation spec I think it's just as important to make sure that all parties understand where this line is drawn. If the programmer is expecting a very tight spec and receives one that is open to interpretation it might seem vague and sloppy from his point of view. Similarly, a designer who delivers a very tight spec might get very annoyed when the programmer starts interpreting it in ways he hadn't intended.

I completely agree that tools development shouldn't be any different from development in other industries. This is perhaps hampered by the fact that tools development is often distributed throughout a team, meaning that programmers switch between working on tools and the game, and will use much the same mindset for both. Dedicated tools programmers ftw.

Dirk Broenink
profile image
The solution alone is not enough for a programmer, I agree with that, being a programmer myself. But, the solution must still be provided by a designer / manpower assigned to that specific problem (whether it is sound, gameplay, whatever). He or she must simply also state what is trying to be accomplished, to elaborate. From that point of view, the programmer can better understand the solution, and maybe even improve upon, after feedback has been given upon it.

John McMahon
profile image
Dirk, if I understand you. You disagree and state that not only the requirement must be given by a solution should be given as well. But that solution should not be set in stone and should be allowed to organically change throughout development. As well, the solution should not be a set of instructions, but also provide the philosophy and mindset behind why that solution is best to fit the function & non-functional requirements.

I think that is a fair middle-of-the-road compromise between the two schools of thought. I feel game development should be created in a modular way of thinking. Which allows for changes without becoming very expensive unless you are changing a basic principle of the original concept.

Tom Hammersley
profile image
Hello all – apologies for joining the debate late, I’ve been without wi-fi or Internet access for a week!

First thing: design vs. requirements. I think the key thing here is that requirements and design aren’t exclusive processes but rather they’re intertwined, complementary processes. Requirements formulate the problems we want to solve and the design goals, constraints and fit criteria for those problems. The design and/or programming processes follow on from this and produce specific solutions to solve the problems and achieve the desired outcomes.

I think the issue is that at the moment, we tend to practice this process quite implicitly. We mix the processes together, but we only keep the design – the solution. But we don’t have a record of what the motivating problems were. We don’t capture that knowledge explicitly – or it’s fragmented amongst several individuals. Requirements engineering can fill that gap. At a hierarchy of levels, we’d have descriptions of the problems and design goals we’re aiming to satisfy, the rationale for those, and the fit criterion for them to measure whether we’ve solved them.

We can see how these requirements fit together with others to achieve a particular goal. For each piece of implemented functionality, we could trace back where it came from, what it was attempting to solve and why it needs to do certain things. If we change some functionality, the requirements for those particular parts of functionality can tell us the related pieces of functionality so we can ensure we don’t break those, and of course we can refer back to the original problem and ensure we’re still solving that satisfactorily. It gives us a way to design tests for our solutions – or even test the design itself. It gives a way for later hires to a long-standing team a way to understand the nature and rationale of the product.

Arguably a good design could provide those benefits, but I think rather these issues are different sides of the same coin, and they're worth separating.

I don’t want to preclude or object any kind of design process that provides solutions. I’m trying to argue that there’s nothing about the nature of games development that precludes us from setting out what problems we want to solve and the requirements of a solution first, keeping those artifacts, and then hooking that up to a design process – and that there are benefits to doing so.

Chris and Dirk pick up on some of this – providing illustrations of how programmers, when implementing a solution, need to know and understand the original problem we’re trying to solve and the rationale of why and how we’re solving that problem.

Regarding user stories: this article was designed as two parts. Part 1, which gamasutra have published, was intended as an essay on the subject of requirements engineering in games, whether it is possible, and whether there is anything intrinsic in the nature of games that prevents it. I wanted to try and open the debate on the subject. The second part discusses some of the particular practices, such as user stories, and others, to implement this process.

Cheers


Bob dillan
profile image
Quite frankly there should be an R&D division that does nothing but implementation of well worn territory (getting a basic racing mechanic up and working for instance, or a battle mechanic as in god of war hitting some enemy etc).

I've always been stunned at the general cluelessness of devleopers themselves and why publishers haven't figured out that they are doing engineering, and the worst thing they could possibly do is merely have dev teams pump out games, they specifically need people working R&D and developing prototypes constantly to find the solutions so that when the next big game comes around, it's already a well worn path and well understood.

Raul Aliaga
profile image
I think that the word "design" it's a little bit overloaded here, and there's a need for distinction between "Game Design" and "Software Design". As I see it, the author tries to keep (game) designers from defining solutions, a.k.a. software designs.


none
 
Comment:
 


Submit Comment