Editor's Note

Long-time forum users will know Rodéric as one of our forum moderators and a very good friend of B3D. Formerly known around the forums as Ingenu, Rodéric came to me with an idea for an article series some months ago, one where he'd articulate on his experience creating game and 3D rendering engines.

As we delve into the software side of 3D graphics more and more (see our article on NVPerfHUD for example), it made perfect sense to get Rodéric's thoughts and experience down on electronic paper for you all to read about. In short, wecouldn't rightly say no.

So Beyond3D is very proud to present the first part of an on-going series featuring one man's thoughts and experience on modern engine development. As you'll see, as we publish subsequent parts, Rodéric has a valuable story to tell. Rodéric and Beyond3D's foremost intention is that it sparks up insightful and informed comment on the forums, where everyone can learn something new about what's still a bit of a dark art in programming terms.

And the best thing is that you don't need to be a programmer to follow it. Read on.

Rodéric's Foreword

Sometime ago, I decided to write a video game, I looked for a team, then for an engine, and at the time (back in 2000) there was nothing as advanced as what I wanted, so I started working on my own engine.

At the time, I had just graduated and got a job, so I had little time to write the engine itself. I also needed to acquire expertise in the domain, so I spent an awful lot of time reading everything I could on the Internet.

Two years later, I resigned from my job to work full time on my engine. I could have written a copy of the Quake II or III engine, like many people were doing at the time, or I could try something different. Since I didn't see the point in rewriting something existing already, I chose to do it my way.

Since 2002, OctoPort (comes from octree and portal), the 3D engine I developed, has changed a lot. In fact each point version was a really big change from the previous one, so I can honestly say I (re)wrote OctoPort no less than 8 times.

The end result is that I have a working engine (used it as a demo to get a job in the game industry), which was made after the ideas and technologies I found on the web, with my additions. It's that which I'll talk about: the technology of the FlExtEngine, my new engine, based on previous work made on OctoPort.

Reader's Note: In the article, I sometimes use a word with a capital first letter, and sometimes you'll see it without it. When I capitalise it, it's to refer to the meaning of the word in the context of the engine. FlExtEngine stands for Flexible Extendable Engine.

So who is this article series aimed at?

This series of articles is meant for anyone willing to write, or learn about the process of writing, a modern, streaming, 3D engine, taking advantage of current programmable hardware.

The whole series will describe, layer-by-layer, diving deeper with each article, the design of the modules and their interactions inside a flexible and modern 3D engine.

This article is the first, and as such, an introduction to the series for a very broad public, covering the basics and clearing up a few things commonly asked.