Currently the three online doom ports we know of are Odamex, ZDaemon and Zandronum. They are all to my knowledge based off of ZDoom at one point or another.
- Odamex is based off of:
Source: http://odamex.net/wiki/OdamexThe ZDoom 1.22 core engine, as well as the ZDoom 1.23 beta33 ACS interpretor.
- ZDaemon is based off of:
Source: http://zdoom.org/wiki/ZDaemonZDaemon is a network port based on the ZDoom 1.23 release.
- Zandronum is based off of:
...is based on ZDoom 2.3.1 revision 1551 and GZDoom revision 127/323.
For anyone in the development scene who is familiar with the tracker will find that there are always requests that end up being "please request on the ZDoom forum" and then if done will get backported. This is a good idea in theory, however the amount of updates that come to zdoom are very far and few between, of which most of the suggestions get No'd for whatever reason. Some of them would be really useful in moving forward of our port, like more parameters for scripts, better String support...etc.
Unfortunately at this point, it feels like we are just getting 'hacky' fixes to solutions without addressing the problems. There is nothing wrong with this really in my opinion because the end product works... though I feel that one day it will end up becoming a problem if the port itself continues to move forward. So far it seems like (based on my discussion with other developers in this community) that zdoom itself is becoming more or less a clusterfuck of things to manage, making addition of features very difficult. If you want to customize something, at this point there is a lot of things you can do, but there are some underlying areas that developers do not have access to. Of course, there is good reason because it'd be very easy for a person to break a wad by simple mistakes, though this can happen anyways if you loop a 0 tic state.
Possible benefits
If a port was to be made from the ground up, there could be exposure of all the internal components. For example, what if you want to access actor pointers (like what tid is being pointed at as a master, or an enemy...etc)? You can manipulate that in zdoom, but the developers have to add a whole new function and create an array of constants for people to use. If you could directly modify the object itself with a scripting language, any new features would become immediately available. As a developer, I like to be able to control intricate parts of the playing experience, of which at this point I cannot really do anything with.
How about checking a list of entities? With a proper scripting language, you could possibly enumerate the entire list of in game actors, and then go through them one by one checking for certain properties. As of now, it is only possible to check pre-defined TID's of monsters or actors. This hurts games like zdoomwars where if you want to iterate through a group of monsters for whatever reason, you will need a loop that checks each and every single number from 1 to whatever (which could be thousands high with how the game gets, or maybe even more in co-op mods which employ ridiculous amounts of monsters). Something like that can only be accomplished by tagging everything and mass reading every actor. While this can work... it becomes a drain on the machine that is using it. For those who develop games in ACS will one time or another run into the "Runaway script" termination legitimately. Little problems like these come up that hinder us from moving forward. We could always do what ZDaemon did and increase the runaway limit to 2 million instructions, though it doesn't solve the underlying problem.
Without droning on, there are other examples (you can probably think of some you would run into if you were to create a dream wad). A new engine could support the classic mode, but also bring in a true 3D element.
There are other ports that have done this I think (like Doomsday), but the biggest problem is that zdoom wads are not compatible with doomsday, and therefore the port is stuck with running mainly vanilla wads. Unfortunately the doom community is too small for it to gain a strong hold on developing an abstract port that would allow some of the ideas proposed above. This also leads us to "are we too far down the rabbit hole?" where we reach a point that it would be too much work to have a zdoom -> new port converter? At this point, for anyone to create a successful competitive port that would allow more access pretty much would require a method of converting wads created with zdoom and gzdoom to run under the new system. With vanilla wads, that is easy; with all the new ACS/Action specials/Action functions/what have you, it is not so easy.
The major problem with such an idea happening is that it would require a multitude of people, of which I doubt doom has. It'd be nice to have a competant openGL developer doing something (because Graf Zahl is a walking bundle of 'no too much work you're dumb for asking'), but without turning this into a huge list of items, it'd be interesting to see where the staff, developers and/or community would stand with such a project.
I understand this is not even remotely feasible at this point in time, but it's more of a theoretical 'what if' question.