|
[How do you perfect your custom-created game tools? Sega and LucasArts veteran and Robotic Arm Software founder Goodman discusses tips and tactics for methodology when you roll your own tools.]
In game development, it is often
some of the most technical (programmers) making tools for the some of the least
technical (everyone else). It's no wonder that many of those "least technical"
struggle with the tools that are handed to them.
The tools themselves are
designed by the people who understand the underlying systems, but not
necessarily those who will be using them.
Usability determines how easy
software is to use, how quickly the desired results can be achieved by its
users and how error-free those results are. Techniques to test and improve
usability have been successfully used in other types of software development,
and are slowly making their way into ours.
There are probably tools in your
pipeline that could benefit from usability techniques, but as a developer,
you'll want to know which tools would benefit the most before investing in
them.
In this article, I'll discuss how to find the bottlenecks holding up your
production, measure the usability of your tools using proven techniques and
streamline your entire development process.
Mapping the Pipeline
The first step to solve any
problem is understanding what the problem is and why it's occurring. We need to
know where in the development pipeline our process is being stalled. To do
this, we must map the problem-space.
There are many ways to view the
development pipeline. Some may view it as a checklist of assets and
responsibilities, but this doesn't represent the dependencies between the
developers.
Those dependencies create an environment where developers are
wasting time waiting for someone else to finish a task, which requires
managerial effort.
To understand these dependencies, it is more convenient to
look at the pipeline as a graph showing workflow between various resources and
what each produces. Consider the example
workflow for character creation in the below figure.
In this illustration, the arrows
point to the dependent task -- the task that depends on the one the arrow is
coming from. So, modeling depends on character design, texturing and rigging
depend on modeling, and so on.
This represents a very small,
incomplete piece of a typical game development pipeline. Your actual pipeline
will be much more complex, including more areas of development (level design,
UI, gameplay programming, and so on), resources performing multiple processes,
and multiple dependencies for a single task. The stages that hold up the
development pipeline should be looked at for optimization through tool
improvement, as well as other means.
Assuming that each phase of
character development needs to be complete before continuing to the next, the
first character could be fully implemented in 24 days. We get this by adding up
the number of days in the longest pathway (the primary development pipeline),
from character design to completion.
Texturing and effects are left out of the
calculation, since their pathways diverge from the main, and the time for
completing those pathways are less than or equivalent to the primary one.
Character Design + Modeling + Rigging + Animation +
Behavior = 24 Days
That doesn't mean that it takes
24 calendar days to complete every character. This is an assembly line; four
other characters are being worked on while the current one is being finished --
one at each stage in the pipeline. So how many calendar days does it take to
complete a new character after the first?
Exactly the time it takes for the longest stage -- 10 days.
Ten characters completed in just
under six calendar months may sound great. Of course, if just the animation
time were cut in half, we could double the character output by creating a new
character every five days.
In any assembly line, efficiency
is achieved by breaking down tasks into component parts so that every stage of
manufacturing takes an equal amount of time. That's also the most efficient
model for developing game assets.
Unfortunately, each stage in the pipeline
requires unique skills, and it is often difficult to predict the exact timing
for each stage. So, work backs up behind
one developer, while another sits idly by waiting for the first one to finish.
There are many tactics for
getting around this issue, all of which are employed by game companies in one
extent or another. Managerial overhead and individual efficiency is often
traded for development pipeline bandwidth.
Still, if efficiency can be
increased in the areas of the pipeline that cause slowdown, pipeline bandwidth
will also increase, with little overhead. One method for achieving this
efficiency is through tool improvements.
|
The tools I have used at work often suffer greatly from missing features that I would have in a text editor - cut and paste, search+replace, etc. On the other hand, when I need a graphical representation, they are welcomed. So I work optimally when I can edit the parts that need the graphical representation in a tool, and then export it to a human-readable format to make large-scale changes. On the occasions where I can't do the latter, I waste hours of effort.
http://www.gamasutra.com/blogs/LuisGuimares/20090503/1302/The_Game_Design_Labora
tory_Gameplay_Improvement__Providing_Useful_Gaming_Tools.php
One notorious example is the engine = editor approach used at CryTech, though there are serious considerations to be made when you go this route, especially when the engine in question is 1st generation or insufficiently stable. It will affect the whole tool-chain.
I know that the article wasn't particularly about those questions/statements but they were offered as an example of things that a Usability test might incorporate. I came to realize that what I was creating was so far removed from the usability testing process that I couldn't use the statements. Skimming information from website visitors is so different from in-depth usability testing and the two methods solve different problems and offer different feedback on the value of a tool. Anyway, if you are interested in the approach that I have taken to evaluate game development tools then look at my blog entry here...
http://rcharney.com/?p=1584
Thanks for giving me so much food for thought!
Robc