by Irritant » Sun Feb 27, 2011 4:15 pm
I think there are a few Q2 engines out there that are still compatible with Q2 that offer varying degrees of improvement.
Quake2Max - no longer developed, offers a few nice improvements such as particles and scripted shaders, and a few other things, but certainly quite dated by now.
BerzerkerQ2 - one of the more advanced renderers, but a bit on the slow side. Also the code is jammed into one huge single source file for some heinous reason.
Knightmare Q2 - This one is actively developed and has a lot of nice features.
Quake2XP - This one offers up some per-pixel lighting and some other changes and is still developed.
EGL - I don't know a lot about the engine TBH, there doesn't seem to be a good amount of info, but I think that it's implemented quite a bit from R1Q2.
R1Q2 - The last I remember was that the renderer isn't changed much, but a host of other security fixes and other improvements make this a pretty solid engine if you don't care about modern graphical effects.
Q2Evolved - this is probably one of the better choices if you want modern graphical effects. The codebase is for the most part completely rewritten, so don't look at the code and expect it to be easy to follow if you're used to how Q1 and Q2 are written.
MHQ2 - I am not sure if this one is still available, (MH could answer that one). I remember this had some new particles and bumpmapping among other things.
Other Q2 based engines that aren't q2 compatible but nonetheless might be useful for porting features/learning purposes:
Qfusion - very clean, well written, has many features such as per-pixel lighting, shadowmapping, parallax, q3 shader system, and netcode improvements. Uses skeletal model format, and is compatible with all Q3 file formats as well. They also have a built in irc client, a scripting language, and security fixes. The antilag code is excellent, if not the very best.
Quake2World - this is one of the cleanest, most elegant, and is the fastest rendering Quake based engine, hands down, it's not even close. It has per-pixel lighting(normal, parallax, specular) on all map surfaces, lensflares, shaders, materials, etc. I don't think this is compatible with Q2, but it is probably not too hard to port the renderer. ( I believe UFOAI did do this ). Some stuff is incomplete yet, but it's promising to be one of the very best engines, period.
CRX(Alien Arena engine). Since I work on this I can describe some of the improvements over Q2 in more full detail.
The game.dll/game.so(linux, mac) no longer exist outside of the engine as they are statically linked(seperate ones will still work as before for mods). The engine is fully cross platform and uses Autotools for easy compiling outside of windows. For windows we have a msvc2010 project(you can download msvc2010 for free).
Aside from a variety of security fixes and bug fixes, here is a rundown of some features that we improved over the original source:
Built in IRC client
In-game serverbrowser
Built in bots(based off of ACE, but heavily changed/enhanced)
full per-pixel lighting using GLSL
Soft volume shadows/shadowmapping(all objects, including map, cast shadows)
textured particle system, beams, etc(of course, what engine doesn't by now?)
Skeletal model format(interquake model format)
Ragdoll physics using ODE(the only open source quake based engine that has these currently)
Lensflares, light volumes and sun objects
Parallax, normal and specular on all surfaces
Use of Vertex Buffer Objects(optional), vertex arrays, static and dynamic
Overbright bits and texture combine
Scripted shaders(modified rscript system)
Vegetation and weather effects(grass, leaves, fog, snow, rain, falling leaves, etc)
Post process framebuffer effects using GLSL(blurs, distortions, etc).
Use of OpenAL for sound
Antilag(backwards reconciliation method)
ejecting brass shells
true type font support
Most all of the rendering routines rewritten in a more efficient manor for some nice performance gains.
Very scaleable, and settings are automatically detected on first run
I thought about making a Q2 compatible version of this at one point, but just don't have the time really. I think though that because we kept the overall codebase structured similarly to Q2, that it would be pretty easy to port some of the rendering features into other Q2 engines pretty easily. Everything we did is very modularly structured and organized. We also comment quite well in our code.