Reason 2 of 6 – The System Model of Design

This ongoing series delves more deeply into each of the “six reasons your game development tools suck” as argued in my very first post.

Two of the most important concepts in software engineering are abstraction and modularity.  Abstraction allows us to categorize problems and write general code to handle all problems within a group, while modularity allows us to combine disparate abstract components to create unique solutions for a particular problem.  These two concepts give us the ability to write elegant, yet powerful systems that can solve many problems at once.

These systems often rely heavily on data, which is the glue that holds the abstract techniques together.  Data is used to configure which components plug into one another and how they behave. 

As programmers, it makes a lot of sense to us to expose the raw data in the tool to the people responsible for making something useful with it.  After all, not only is this the easiest implementation, it’s also difficult to see another implementation that would not constrict the end user’s ability to get the full benefit of the system’s power.

If the tool was in our own hands, or even in the hands of another programmer, this would all be true.  Unfortunately, this is usually not the case.  The end users have to figure our very clever system out for themselves, often with no knowledge of our intention, the underlying data structures, or even basic software engineering or programming concepts.

Instead of empowering the end users with our uber-system that can handle any problem, we’ve saddled them with a system so intricate and burdensome, that they can’t wrap their minds around it, let alone do anything useful with it.

Training can help to a degree, but that turns into one-on-one training with every user for any one person to understand.  Documentation also helps, but often ignored, in reading as well as in writing/updating.  Usually, one person ends up being the expert that everyone relies on, but when only one person can use a tool, you know that it’s doomed to failure.

The answer is simple, yet hard to swallow.  The tool interface can not be designed around the data structures used by the underlying system.  The tool must be designed around the users, and the very specific things they want to do with it. 

That will probably handle about 90% of the problems the system was designed to solve.  Most users will get along happily with that, and even find their own clever ways of getting some of the additional 10%.  They’ll be much happier with a tool that is easy to use than one that is all-powerful.

Call For Submissions: Game Development Tools Book

I thought I would bring to the community’s attention this new book on Game Development Tools that’s looking for submissions.  Here’s the call:

We invite you to submit a proposal for an innovative article to be included in a forthcoming book, Game Development Tools, which will be edited by Marwan Y. Ansari and published by A. K. Peters. We expect to publish the volume in time for GDC 2011.

We are open to any tools articles that you feel would make a valuable contribution to this book.

Some topics that would be of interest include:

  • Content Pipeline tools (creation, streamlining, management)
  • Graphics/Rendering tools
  • Profiling tools
  • Collada import/export/inspection
  • Sound tools
  • In-Game debugging tools
  • Memory management & analysis
  • Console tools (single and cross platform)

This list is not meant to be exclusive and other topics are welcome.

The schedule for the book is as follows:

June 30th – All proposals in.
July 15th – Final list of accepted authors are informed and begin articles.
August 15th – First draft in to editor
September 15th – Drafts sent to other book authors for peer review
October 15th – Final articles in to editor
November 30th – Final articles to publisher (A K Peters)
GDC 2011 – Book is released.

Please send proposals to marwan at www.gamedevelopmenttools.com.

Regardless of whether Toolsmiths readers get into the book, it sounds like it could be great.

Tools Related GDC10 Sessions

First off, our official Tools SIG gathering at GDC is on Thursday 1:30 to 2:30 at the IGDA booth.

Everyone should also show up to at least one of John Walker’s excellent roundtables. I find them useful to see what approaches people are using in their pipelines and share lessons learned from the past year.

Technical Issues in Tools Development
John Walker (Applied Signal Technology)
Thursday 4:30- 5:30 Room 120, North Hall
Friday 1:30- 2:30 Room 120, North Hall
Saturday 9:00-10:00 Room 120, North Hall

Lectures:

Data is a Four-Letter Word
Paul Du Bois (Double Fine) and Henry Goffin (Double Fine)
Thursday 10:30-11:30 Room 131, North Hall

Building Blocks: Artist Driven Procedural Buildings
James Golding (Epic Games)
Thursday 10:30-11:30 Room 130, North Hall

The Asset Pipeline for Just Cause 2: Lessons Learned
Mathias Westerdahl (Avalanche Studios)
Thursday 3:00- 4:00 Room 131, North Hall

Introduction to Maya API Programming and Custom UI
Kristine Middlemiss (Autodesk Inc.)
Thursday 4:30- 5:30 Room 300, South Hall

Collada – Featuring WebGL
Mark Barnes (Khronos Group)
Friday 1:30- 2:30 Room 123, North Hall

The Role of Middleware in Game Development: Today and Tomorrow
Martin Walker (Artificial Mind & Movement), Kevin Scharff (Spark Unlimited), Matthew Shaw (Electronic Arts, Mythic Entertainment Studio) and Mark Stevens (Autodesk)
Friday 4:30- 5:30 Room 123, North Hall