|
We
know we're not the first people in the game development industry
who think they've stumbled onto a good idea. We get approached all
the time by colleagues who have created some cool water effects,
a better way to create sky effects, or a new physics algorithm.
So, this postmortem is written for the next aspiring middleware
developer, as well as for game developers curious about where tools
come from, and anyone else who likes stories about humble products
created by small companies that overcome various problems (including
the occasional flood) and end up making it through.
Unlike
the game developers we sell to, we did not start working on SpeedTreeRT
with a grand, visionary idea. Instead, the foliage-creation middleware
that is now integrated into titles by companies like Mythic, NCsoft,
Big Huge Games and Monte Cristo started out as an element in a golf
simulation.
But
from the moment we first began thinking about a better way to render
truly 3D trees in large amounts, SpeedTree began evolving, first
as an in-house offline tool, then as a plug-in to 3DS Max, and finally
as a full-blown, real-time SDK.
But
before we tell you what we did right and wrong, here's a quick overview
of the SpeedTree product line and history:
A
suite of three products, SpeedTree is founded on SpeedTreeCAD, a
Windows-based tool for tree and plant creation that facilitates
the detailed design of vegetation. SpeedTreeCAD is not offered as
a stand-alone tool, but is an essential part of SpeedTreeRT, our
real-time foliage creation SDK, and SpeedTreeMAX, our 3DS Max plug-in.
SpeedTree
was hatched by Interactive Data Visualization (IDV), which also
creates 3D technologies for military and industrial clients, when
we were asked to develop a real-time golf simulation. Because of
the importance of trees to a virtual golf course, we looked long
and hard for a tree rendering solution that featured compelling
wind effects, allowed flexibility in tree creation and ran efficiently.
After
a fruitless search, we decided to make our own trees and developed
a small in-house package where some of our most notable features
were born, including the overall procedural geometry generation
algorithm, our first pass at SpeedTreeCAD, and the overall lighting
and wind effect approaches. Before the golf simulation ever saw
the light of day, unfortunately, its backing dried up and our fledgling
tree software got shelved.
Four
or five months later, however, an architectural firm contacted IDV
and asked for an animated rendering of a proposed 25-acre residential
and commercial development, complete with almost 1,000 trees, each
one to be detailed and wind blown. Fearing that our in-house tree
creation system wasn't up to the project, we again sought to outsource,
pursuing tree plug-ins for 3DS Max.
However,
we again had no luck. Many of the products we looked at did not
have wind algorithms, while others offered only one extremely detailed
version of each tree, which would have made large collections of
trees inadvisable. Some, to put it nicely, just didn't meet the
aesthetic standards our customer required.
So
our in-house tree software was dusted off, refined and, to our surprise,
performed adequately. The resulting animation, which still gets
plenty of play at local civic events and business meetings, brought
to life a large residential and commercial development planned for
our hometown of Columbia, S.C. Lush, animated trees line the streets,
fill a park and stand along the river, helping flesh out the architect's
vision.
With
this project under its belt, IDV decided to move forward, to invest
the time required to fully develop and market the SpeedTree software.
Of course, we knew there was still a big difference between an in-house
tool and a viable commercial product. Fred Brooks estimated in The
Mythical Man-Month [Addison-Wesley Publishing Co., 1995 (first
publishing 1975)] that if it takes an hour to create a software
tool for your own use, it will take on average 10 hours to make
the tool usable for others. This principle has been borne out on
many projects undertaken by IDV, and we expected a similar development
burden for SpeedTree as we began our first effort, creating a commercial
plug-in to 3D Studio Max.
Six
months and many developer hours later, our plug-in was done. SpeedTreeMAX
began selling exclusively at Digimation in the winter of 2002. And
in December 2002, after many more 'hours' and some twists and turns
described below, we made our first sales of SpeedTreeRT, our real-time
foliage/tree middleware SDK, which allows automatic levels of foliage
detail, real-time wind effects, and multiple complex lighting options
over hundreds or even thousands of trees.
______________________________________________________
|