Obviously I am a little biased – but as one of the last people to create a game using the id Tech 4 engine – I feel I have some authority to speak about it from an overall perspective. I think the only other person(besides myself) who is still using the engine and who is trying to actually sell a game using it is Brendon Chung with Quadrilateral Cowboy. (which I am personally looking forward to playing btw)
In my opinion it is a wonderful engine(obviously or else I never would have used it!). John Carmack said that one of the most under appreciated features of the engine was probably the GUI system. I would have to agree. The GUI system is amazingly and beautifully well designed:
I think most people agree that the real reason is because id Software really didn’t care about engine licensing:
The market was ours to keep, but we abdicated because we weren’t willing to put that effort into it.
And it actually does show in the engine itself. Most tools are command line based or text file based. Most tools don’t even work anymore in newer operating systems. They were written with a singular purpose in mind (the creation of Doom 3 and a few other games).
But that doesn’t mean there is anything inherently wrong with the engine itself. The source code has gotten high marks for being well commented and beautifully written:
The graphics still hold up to an extant:
And the systems all function as intended (aside from a few minor instances).
Even though many of the original tools and pipelines are pretty crummy – people have written awesome tools for it after the fact: http://darkradiant.sourceforge.net/
There are a few unfinished ideas in the engine (as there are in any software). There is evidence that they were planning to have vehicles but as far as I can tell they never finished this system for Doom 3 or the expansion. They did finish this by the time Quake 4 was released as we saw that they had rudimentary vehicles by that point.
One improvement I made to the GUI system was to increase the virtual resolution from 640×480 to 1280×960. This allowed for smoother mouse movements because on a modern monitor 640×480 is just not enough mouse positions for smooth movements. Obviously this has a slight performance cost and because monitors just weren’t as large on average back in 2005 it really wasn’t a priority for them.
I also increased the entity limit from 4,096 to 16,384. In practice I will never have more than 8,000 or 9,000 (tops) entities on a map at any one time in my game (for performance reasons). This required adjusting a few things in the source and some bug hunting but I eventually got it working.
Although the engine is a little wonky nowadays – I kind of see that as part of its charm. It might not have the feature set that many modern engines have and it might be extraordinarily difficult to develop with. But it results in games that are different. Different in appearance, different in style and different in execution.
I’ve taken advantage of any feature that already existed in the engine and made sense within the context of my game, but when an engine does the minimum amount to help you create your game – and lets you come up with creative solutions on your own – I believe that you do get a game that you can call your own – for better or worse: