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.
SpeedTreeRT Pangaea Set.
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.
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.