... back to the alpha conspiracy again; there are many hidden disadvantages to using an engine ...
Which Engine?
Ok. One hurdle crossed, several to go. Let's consider the possible engines to build this on.
Nowadays there are a whole host of engines to choose from. There are high end professional engines, amatuer engines and engines which are very lose to hardware. Some are very expensive, some are very cheap and some are free (as in speech AND beer)
Let's be a bit careful in considering an engine to use. I'll be judging each on the following categories.
- Hardware coverage. An engine is of no use to me unless it runs on my hardware - but it's of limited use unless it runs on yours as well. The more different types of hardware an engine runs on, the better.
- Feature coverage. Does the engine support sound, networking, AI... or just graphics? In general the more the better - since it simplifies my life but:
- Feature flexibility. Will the engine let me do things MY way, or will it force me to program the way it is expecting? The more flexible the better - although too much flexibility will impact:
- Feature support. How much work is done for me? Can I just throw md3's at it, or does it expect me to work at the polygon level? The more support the better - although too much support will just lead to me ignoring some of it.
- Development support. Does the engine come with a good manual and a thriving community of people who will help me with it? Does the developer respond quickly to change requests?
- Cost. A pretty big factor for me - will I have to shell out thousands up front, will I have to shell out quids per unit. There can be negative costs too - will I be forced to open up my code by a GPL?
I will only be able to give passing note to engines I am not particularly familiar with. So here we go. In order of least to most support.
OpenGl
The interface is... clunky. It only does graphics, and only at the polygon level. It gives you total access to the hardware, and it's totally free. Also, I would kinda like to learn it (since many things use it, or a variant of it) Finally, it exists on most platforms.
DirectX
This covers more than just graphics, but the interfaces are hideous to use. I would end up creating a wrapper layer for myself. It does give you total access - but it only covers newer windows machines. It's free to use, although a pain to use without msvc (which is not so free)
Crystal Space
This is a pretty nice wrapper for openGl and directX (and others) It isn't the fastest of things to use - but it gives you both the ability to abstract to a high level, and to delve into the details when you need to. Also, it is free. It has a big disadvantage that the other (sound, networking) modules aren't as complete as the graphics modules are. Support exists for many different ways of working (static bsps AND dynamic portals for a start)
Allegro
Heavily biased towards 2d games - it does provide a good structure for them. Sadly it is fairly hard to expand, and forces you somewhat to its way of working. Also free.
Quake 1/2
Since the source-code for these engines has been opened up, you can do more than just make quake-clones. It does force you rather to its way of doing things (static maps, entities, think functions) although it would be posisble to code away from that. It is possible to buy a license - or you have to release your modified sources. Engines are kinda old now - so they don't support as many features as you might like.
Quake 3
Quake 3 engine is NOT opened yet - only the modders stuff. However, the engine WILL be opened up after doom3 is released; and much can be done with the mod-pak's until then. You can also licence the engine now. The engine is also kinda fixed in its ways - although it offers many new features (dynamic detail levels and curved surfaces being the most touted)
Unreal
The unreal modders kit offers very limited functionality - although it is very easy to use for simple changes (such as adding a new weapon) The full unreal engine must be licensed at a fairly high fee. The engine itself is as functional as the quake engine - possibly moreso since it is under constant development. However, it suffers from a similar 'use it this way only' problem. Is based upon portal maps.
Halflife
Halflife is a bastard child of quake1, quake2 and three years of development. It offers many features only just being included in recent engines (skeletal animation, network traffic shaping) and exposes them to the mod maker. Valve also shows the best support of any commercial team to its modders. However, the engine isn't being opened up to the world - and this limits what can be done easily. It also forces the 'quake way of doing stuff' to an extent.
Conclusion
Hmmm. I realllly like crystal space. The dev team is good, very responsive and the engine is quite wide and flexible. It isn't hugely supportive though.
On the other paw - I already know halflife; and the recent additions to it could be very useful.
However, with the prospect of the engine being opened up soon - I'm going to have to say that quake3 is the way to go. With a wide range of options, a responsive dev team and one of the most powerful engines around (and one that runs on multiple platforms) the prospects look good.
Plus, of course, it is quite likely that work based on the quake3 engine will be reasonably easy to port to the doom3 engine...
Of course, that's not to say that other engines might not be a better choice for other projects. If I wasn't considering making something sorta fps-like, then I'd have to prefer crystal-space.