01-22-2015, 10:43 AM
(This post was last modified: 01-22-2015, 10:49 AM by MirceaKitsune.)
This is currently just a rumor coming from IRC, and should not be taken as an official statement from the dev team! I've recently heard discussion about porting Xonotic to a new engine, and that moving away from Darkplaces might be considered an option. Given that DP is based on idTech 1, I'm aware that it has or will reach a point where some bottlenecks simply can't be fixed, and modern features are no longer possible to add. Since a new engine implies heavy changes to the game code, a port would obviously be a great effort... but in my opinion one that's totally worth considering at this day. There is however one issue I personally have with the ideas I've heard so far, which is what I'm making this thread to discuss.
I understand that if a port will be carried out, it's meant to be toward an idTech 3 engine. As it's already been explained, this is an obvious option because it would be easier and more compatible: The same model and bsp formats would work (maps wouldn't even need to be recompiled), all important features existent in Darkplaces are supported in a similar fashion, and the game code would require fewer changes therefore making the effort to create this port smaller.
Despite these advantages however, I strongly favor a port to an engine based on idTech 4 instead (the Doom 3 and Quake 4 engine). I have recently been playing a fantastic FOSS stealth game called The Dark Mod, which extensively uses all features this engine has to offer. It has enormous advantages, which no engine based on Quake 1 / 2 / 3 is ever going to implement. I wrote a long list below... jump to the TLDR line if you don't feel like reading the details.
TLDR: Engine works directly with map files (no bsp), realtime game code interpretation (no more compilation), fast realtime lights with dynamic shadows and bumpmap lighting, volumetric fog, object and ragdoll physics, pathfinding, interactive surfaces, scriptable object definition system.
I believe anyone can tell why I'm so excited at the idea of Xonotic running on idTech 4, and consider this one of the most awesome things that could happen! However, as this has already been pointed out to me, there are two great obstacles in the way:
These two great limitations might outweigh the benefits, depending on what everyone's opinion is. Someone could attempt such a port as a different fork, then turn mainstream Xonotic into it at a later stage. In either case, this change would be greater than even the Nexuiz -> Xonotic transition, and would mean starting all over again.
So who else thinks this great leap is worth it and doable, and wants to see a revolutionary Xonotic 2.0 happen? Or instead supports a port to a Quake 3 engine, although it would mean staying in the era of baked lighting and a rigid code with very limited features. In my opinion, the effort to rewrite all code and existing map incompatibility would be a huge problem, but so are the bottlenecks of the Q3 engines which can't support many modern features and mechanisms... which will eventually leave Xonotic looking ancient in comparison to any modern FPS. I believe this needs to be well thought of, but that both points of view are valid.
I understand that if a port will be carried out, it's meant to be toward an idTech 3 engine. As it's already been explained, this is an obvious option because it would be easier and more compatible: The same model and bsp formats would work (maps wouldn't even need to be recompiled), all important features existent in Darkplaces are supported in a similar fashion, and the game code would require fewer changes therefore making the effort to create this port smaller.
Despite these advantages however, I strongly favor a port to an engine based on idTech 4 instead (the Doom 3 and Quake 4 engine). I have recently been playing a fantastic FOSS stealth game called The Dark Mod, which extensively uses all features this engine has to offer. It has enormous advantages, which no engine based on Quake 1 / 2 / 3 is ever going to implement. I wrote a long list below... jump to the TLDR line if you don't feel like reading the details.
Quote:- Realtime map format: Maps no longer need to be compiled into a bsp file using a process like q3map2. You simply click the save button in Radiant and that's it... the engine uses your mapname.map file directly. The only compilation required is a dmap, which generates a mapname.map.prof file needed for portals and path data... but I understand the engine can handle this process automatically.
- Realtime game code interpretation: The code would no longer need to be compiled separately, with programs like fteqcc or gmqcc. The scripting system idTech 4 is interpreted in realtime, and works dynamically like Python or Lua. Among easier development, this makes it simple for anyone to develop and install mutators, by simply writing and sharing their code without anyone having to compile anything.
- Realtime lighting! idTech 4 has no such thing as lightmaps at all, because all light sources are dynamic. Apart from the possibility to move or toggle any light at any time, there are two huge visual advantages: The first is that every light casts a dynamic shadow... and unlike Darkplaces, these do not decrease FPS as much and you can have quite a few at once! The second advantage is that dynamic lights allow for bumpmapped shading... meaning that the normal map of each texture causes shadows and highlights to be much more visible, and you can see light shining and shadowing every little crease or hole in a metal or stone texture. Projectors with image textures are also possible.
- Improved VIS portal system: One remarkable advantage of the new map format is that portals are based on rooms; When the player is in one room, the rooms he doesn't see into won't be computer at all. LordHavoc confirmed that the VIS system in the bsp format is a bottleneck, which is one reason why dynamic lighting is so much slower in comparison to Quake 4's. You can also script various things to happen based on which room the player is in, and have zone based properties using the VIS portals (like ambient lighting which fades as you enter different zones).
- A physics engine: idTech 4 comes with out-of-the-box support for both rigid body physics as well as ragdolls. Darkplaces and Xonotic struggled for years to implement physics or ragdolls with barely any success... whereas here they would simply work!
- Pathfinding: With idTech 4, bot waypointing would be a thing of the past. It supports realtime path finding, and bots will find their way to any location without the mapper having to do anything.
- Advanced entity definition system: Playing DarkMod and taking a quick look in DarkRadiant was enough to see just how advanced and flexible the entity definition system of idTech 4 is; You can create any object as a def file, and script it to do whatever you want. This makes it a cinch to define bots (possibly even payers), weapons, and any form of interactive object to place in the world. An important feature is the ability to attach any entity to any other entity, including light sources to moving objects.
- Interactive surfaces: If you played Doom 3, it's impossible not to remember the computer screens on which the player could click buttons straight from the display. Since Xonotic is a FPS, it's less likely for this to be used in the world... but it still makes things like an ammo display on the weapon model easily doable.
- Volumetric fog using lights: In Darkplaces, fog is defined globally per map... and the most you can do to customize location is set a height beyond which the fog fades away. In idTech 4, the volume of a light can be solidified and even textured, allowing each room to have customizable fog.
- Extra shaders and visual effects: There are some visual enhancements which I haven't seen implemented in any of the idTech 3 forks. One are refractive particles, which can be used to make hot air distort the image behind it. Another are god rays for sky shaders, which allow clouds to cast rays coming from the sun / moon. This is one thing that can be added to any of the older idTech engines, but so far none have done it.
- Reverb and advanced sound effects: From what I read, idTech 4 should support effects such as sound reverb (echoes) for large cathedrals or metal rooms. This does however seem to rely on EAX, which may be a proprietary technology and unavailable for Linux.
TLDR: Engine works directly with map files (no bsp), realtime game code interpretation (no more compilation), fast realtime lights with dynamic shadows and bumpmap lighting, volumetric fog, object and ragdoll physics, pathfinding, interactive surfaces, scriptable object definition system.
I believe anyone can tell why I'm so excited at the idea of Xonotic running on idTech 4, and consider this one of the most awesome things that could happen! However, as this has already been pointed out to me, there are two great obstacles in the way:
Quote:- Complete rewrite of the game code: idTech 4 no longer runs QC, but a completely new scripting mechanism. Absolutely all of the game code would have to be rewritten from scratch, while aiming to reproduce the same features and results... which is a huge effort! The good thing is that, thanks to the scripting and entity definition systems being so flexible, there should be a lot less for us to code because many of the mechanics are already there or much easier to connect together.
- Existing maps would no longer be compatible: Every single Xonotic map would have to be modified and recompiled, no backward compatibility. Light sources would have to be configured much more differently. I suspect the netRadiant brush and entity format should be readable to DarkRadiant, if not we can probably write a converter easily.
These two great limitations might outweigh the benefits, depending on what everyone's opinion is. Someone could attempt such a port as a different fork, then turn mainstream Xonotic into it at a later stage. In either case, this change would be greater than even the Nexuiz -> Xonotic transition, and would mean starting all over again.
So who else thinks this great leap is worth it and doable, and wants to see a revolutionary Xonotic 2.0 happen? Or instead supports a port to a Quake 3 engine, although it would mean staying in the era of baked lighting and a rigid code with very limited features. In my opinion, the effort to rewrite all code and existing map incompatibility would be a huge problem, but so are the bottlenecks of the Q3 engines which can't support many modern features and mechanisms... which will eventually leave Xonotic looking ancient in comparison to any modern FPS. I believe this needs to be well thought of, but that both points of view are valid.