Single Status Update
I'm in a weird spot where I believe demo compatibility is one of the more vital things for the Doom community since so many demos have been made over the years, and as a result PRBoom+, EE, and Chocolate Doom are all really important ports. But I'm also at the belief that not literally every port needs to play back vanilla demos with 100% accuracy (or at all). But you have to have some that do so, so those old demos don't become inaccessible wastes of bits.
Same. It's fine that, say, GZDoom and 3DGE don't have legacy demo playback; even if I wish the latter had its own demo format (it doesn't currently) -- these are feature-led ports and thus it's not as high a priority.
prBoom+ and its successors though, I believe it is incredibly important to retain legacy demo playback; it's part of why this particular branch has endured for so long and is the de-facto standard for many runners.
Personally, I've never begrudged *ZDoom for not supporting vanilla demo playback. For me, as a source port author, it's an entirely understandable decision to have taken.
There's a fundamental decision you have to take when developing a source port, because Doom has a big pile of subtle bugs (see Doom Wiki's list or the Doom Movement Bible), and either you fix them or leave them in place. But demo playback depends on the old buggy behavior, so really the options are:
- Leave the old, buggy behavior in place
- Fix the bugs and break demo compatibility
- Fix the bugs and maintain demo compatibility by keeping both the buggy and fixed versions of the code in place (turns the codebase into a mess)
So: compatibility; correctness; maintainability. Pick two. Chocolate Doom, *ZDoom and PrBoom+ represent the three different outcomes.
Given *ZDoom's overall design direction, fixing the bugs and abandoning demo compatibility seems like the most reasonable decision to have made. There's a lot to be said for having a source port that's easy for beginners to pick up and that just fixes all this stuff. But really it highlights that we're better off overall having multiple source ports with different objectives rather than a single uber-port that tries to do absolutely everything.