RedBeard’s Curious Life

July 3, 2005

Engine Evolution

Filed under: Ancient History, Computerstuffs — RedBeard @ 4:14 pm — 1534 words

I’ve been involved with the Genesis3D and Destiny3D communities for quite some time, and I feel quite attached to them. Unfortunately, I will have to part ways as a contributing member of those communities once my employment with Microsoft begins. As I feel the constant erosion and possible extinction of these communities, I feel as if some interesting tidbits of the digital world will be forever lost. For posterity and public enjoyment, I will attempt to recollect and tell the history of these engines and the communities around them. I’m not going to try justifying or embellishing any of this stuff, just reporting what I know.



Genesis3D:

Genesis3D began life as the technology end of a game named Dragon being developed by now-defunct Eclipse Entertainment, previously known for Jack Nicklaus golf games, under funding from Microsoft. Dragon was cancelled, but Eclipse pushed forward with the engine technology. At that point, the engine was not open-source, but it made waves when, in 1998, it was made publicly available in a precompiled form along with the source code to a functional, although hackish, game framework.

A small community instantly sprung up around this engine, which offered the promise of independent game development to the masses, in a landscape barren of other possibilities. At the time, Genesis3D offered rendering capabilities on par with Quake 2, skeletal animation that rivaled that of Half-life, and a set of custom tools including a map editor. After several beta revisions and a few release candidates, Genesis3D 1.0 was released in May of 1999 under a proprietary open-source license that highly resembled the modern LGPL, but with some rights reserved for the original developer, Eclipse. In June of 1999, GDemo was released as a demonstration of the technology available via the engine, and featured lava-filled caves, swaying marine life, and subterranean research facilities. Quake 1 would not be released under the GPL until the end of 1999, and hardly competed with Genesis3D except in terms of name recognition. Crystal Space, a totally separate endeavor, was also registered on sourceforge.net in December of 1999.


G3D 2.0:

Not content to rest on their laurels, Eclipse had been working on a 2.0 version of G3D for a while, and in July of 1999 started to make preview releases of the editor. The new editor used the actual 3D engine itself for all rendering, which was distinct from any 3D engine of the time and many since. Not long after that, WildTangent, which was formed by a former DirectX evangelist, Alex St John, proceeded to “acquire” the Genesis3D 2.0 technology under an agreement that left G3D 1.0 as it was and most of the Eclipse staff working for WT. Shortly after the acquisition, WildTangent made a few modifications to Genesis3D to add fixes & features, but then focused its attention on its own development of the WT Game Driver, which saw an initial release late in 1999.

Eclipse maintained rights to the 2.0 code as it was at the time of acquisition, and turned the code into another open-source project named Jet3D under the supervision of David Stafford, CEO of Eclipse. Most of the Jet3D development work after then was done by volunteers and after a while, bitter disagreement over language choice (C vs C++) fractured the community and some key developers quit the project. By late 2000, Jet3D was collecting dust. In the time since then, Jet3D has changed hands a few times and seen a few marginal improvements to the existing codebase, but hasn’t really gained much popularity.


Genesis3D Classic:

As Jet3D was showing poor promise for success, another man stepped in to try and establish another effort towards improving Genesis3D. Mark O’Hara (aka Hootie) dubbed his project Genesis3D Classic, with the intention of adapting the original Genesis3D 1.0 code to a more cutting technological edge. Mark also took on the Jet3D project after its progress had stalled for a while, with a similar intention to use it as the basis for even more sophisticated technology, and dubbed that project Jet3D Destiny. The underlying intention behind these projects was a plan for a game or series of games that would call for technology that was unavailable at the time, and perhaps a little entreneurship in the vein of mimicking id software’s success at licensing its own Quake engines.

Towards his goal of revamping Genesis3D, Hootie recruited some of the most active & experienced members of the Genesis3D community. The plan for G3DC was to use a closed-source development model to avoid the criticism of prying eyes, and then release the revamped G3DC codebase under the same open-source license covering Genesis3D. Development went rather slowly, as various modules were rewritten in C++ to correct design flaws and make the code easier to maintain. Back-ported releases showed improvements, mostly in framerate.

As development progressed, and the programmers discovered the inner workings of Genesis3D, they also discovered why Eclipse had started fresh with 2.0: the codebase was deeply entrenched in principles that were essentially incompatible with the newer breed of video cards. Hardware T&L seemed an impossibility with the existing codebase, and as most of the Genesis3D modules were in need of huge modification to adapt to the cutting edge, the decision was made to drop the G3DC goal and instead go ahead with Jet3D Destiny.


Destiny3D:

However, instead of using the Jet3D codebase, the developers continued with their heavily-modified Genesis3D code. In the middle of 2001, the project was renamed Destiny3D and moved to a separate website (rendered in dark blue and garish green). The closed-source model was kept, but the site invited community members to pay a modest membership fee to gain access to the pre-release codebase and suggest features and improvements to the development team. There was intention to release Destiny3D to the public after the foundation had been laid in closed-source development.

After a short while, it was decided that using the remaining G3D code in tandem with all the rewritten stuff would only hold back the future development, since WildTangent now controlled the G3D license and seemed unwilling to share. Thus, in October of 2001, Destiny3D dropped the remaining G3D code and became an entirely separate project from Genesis3D, despite keeping some of the key members of the G3D community tied up.

After removing all the G3D code, though, Destiny3D was left with a very minimal set of features. No renderer, no actors, no levels… essentially just some filesystem, bitmap, and other basic infrastructure remained. Undeterred, and seeing the license liberation as a unique opportunity, the Destiny3D developers began to formulate a plan for how they wanted to paint their now-blank canvas. Realizing that it would be some time before the engine would be ready for prime-time, a target was set for Geforce2 as a minimum-spec video card. The developers also experimented with deviations from the established standard of BSP levels, adopting procedural geometry and an octree-based scene descriptor.

In December of 2001, Hootie announced that he would no longer host the Genesis3D community, citing increasing bandwidth costs from freeloaders downloading the SDK but never putting it to use. Novus Delta, the company formed by a couple of Destiny3D developers (Lightning and jwvanderbeck), took on the management of the Genesis3D website. In addition, Destiny3D was no longer planning a public release at all, instead keeping the community closed to paying members only, despite a license that still required engine modifications to be shared with the community.

In December of 2002, Hootie decided to focus on other things, and handed over ownership of the Destiny3D project to Novus Delta and Assassin (me). Development from that point proceeded quite slowly, as the new stewards were somewhat unsure of the direction to take, and the community was shaken by the change in management. Without a demo application such as GDemo to help drive the direction of development, and the key developers having to devote time elsewhere in the real world, the development slowed even more. Some progress was made in the ability to render scenic vistas and maximize hardware performance with large scenes.

Since that point, Destiny3D has not progressed much, although the developers are contemplating a deviation from the current closed-community paradigm. Some rumors have spread regarding the potential of an open-source release, but nothing has been confirmed yet. I would like to see Destiny3D live up to the legacy created by Genesis3D.


Other Projects:

Many projects can trace their lineage to Genesis3D through the above tale of engine evolution. I hope to explore them in more detail in a future post.

G3D and Destiny3D are of course not the only 3D engines in town, and the market has expanded dramatically since the initial release of Genesis3D. Other possibilities include OGRE, Crystal Space, Torque, Nebula Device, PowerRender, Quake, and many others.

5 Responses to “Engine Evolution”

  1. Hippo says:

    Hey!

  2. Akamu says:

    Boy, you sure do love to write.
    You’re well on your way to becoming the next mittens.
    Keep up the good work!

  3. AndyC says:

    A trackback of sorts to a corresponding G3D forum thread

  4. JesseT says:

    Interesting bit of history.

  5. Jean Louis says:

    Andy! It’s great that you started this blog and posted this little piece of indie game development history. I enjoyed it. I’m somewhat also still attached to G3D as it jump-started my video game career. This is why I’m still around the community forum, even though I don’t post much anymore.

Leave a Reply