Yesterday my co-worker Klaas van Gend published a first post on how I accelerated the idTech4 game engine behind Doom3. This has led to a lot of responses on sites like Reddit/programming and Hacker news. We got very valuable feedback (thank you!), including some positive comments about my work but also quite a few questions about our tool, methodology and results. Today, in this follow-up post I will try to clarify our previous statements and provide some answers. Please leave a comment below (or even in any of the aforementioned news websites) if anything needs further clarification, we will put great care in answering them.

First of all, it is important to realize that the goal of this exercise was to see how far I could get in optimizing the idTech4 engine for a multi-core architecture, with help of Vector Fabrics’ Pareon tool in limited amount of time. We chose IdTech4 as a benchmark because it represents a very typical use case: a large code base, optimized for single core execution.
The approach that I took is probably not the same as experts would have taken. I took a top-down approach, looking for coarse-grain parallelism rather than optimizing low-level rendering instructions. For this approach Pareon was useful. I believe that two methods could be combined to achieve even better results. For example, the engine appears to ship a very optimized math library exploiting SSE vectorization.
Our Pareon tool is not aimed to replace parallelization experts. We want the tool to be useful for any programmer who is looking for paralellization opportunities in either his own code or in code that he is unfamiliar with. A domain expert (game programmer) can probably save some time because of his in-depth knowledge.
A detailed report on my method and results is available in this whitepaper and to some extent in this presentation on the Dutch T-Dose conference. The summary is as follows:
So now for the specific feedback and questions we got. I will try to address those as detailed as I can below.
I hope this clarifies some of the comments and questions. If you have more, please comment in the existing threads about this topic or use the comment field below this post and we will try our best to answer them.
Hi Daniel,
Thanks for your reply to our blog post on accelerating the Doom3 game engine.
The patch we posted to the iodoom3 project (see link above) is totally generic - the results should be the same on any platform supported by iodoom3.
As far as we know, the patch has not made it into the actual iodoom3 source repository.
I was wondering if there were a precompiled binary of this available? I am (sadly) all thumbs when it comes to compiling. I applied the patch but am having problems with the build. Can’t wait to see how this thing looks. I have always wanted to develop a game for the id Tech 4 engine.
Hi Daniel,
Vector Fabrics makes software perform better, we’re not a game engine company.
We took the iodoom3 tree because that was readily available at the time. Unfortunately, it’s not the one where the action happens and as such is not a good base for further experiments. The “Dante” port (https://github.com/omcfadde/dante) has seen a lot more work by a community of people, they may be able to serve you better.
If you want to just build a game, you might want to take a look at the Unity game engine (http://unity3d.com/) or -if you prefer things open source- the Ogre 3D game engine (http://www.ogre3d.org/).
Hope this helps,
Klaas van Gend
I was wondering if your patch was available for osx? Great work!