fabiangreffrath / crispy-doom

Crispy Doom is a limit-removing enhanced-resolution Doom source port based on Chocolate Doom.
https://fabiangreffrath.github.io/crispy-homepage
GNU General Public License v2.0
808 stars 132 forks source link

[Bug] Crispy Heretic: Title Demo Doesn't End Properly #1185

Closed OpenRift412 closed 8 months ago

OpenRift412 commented 8 months ago

Background

Version of Crispy Doom: Latest Autobuild

Operating System and version: Windows 11

Game: Heretic

Bug description

Observed behavior: When the player dies at the end of the first demo, the level restarts.

Expected behavior: Instead of the level restarting, it should go to the credits screen and then go to the next demo.

fabiangreffrath commented 8 months ago

I think this is because we have "extended demos" enabled by default, and these do not necessarily end when the player dies - though vanilla demos do.

JNechaevsky commented 8 months ago

Indeed, just as Fabian said. In vanilla Heretic, when demo is recorder without -demoextend parameter and player dies, recording stops on pressing use key (i.e. by trying to restart level), if I'm not mistaking. Demo1 in Heretic 1.3 is a typical case: it desyncs, player dies and in original recording pressing use. Since in desynced demo player is dead, and game is still in demo loop, it just ends the demo.

Just to make sure, this fact is right, let's have a look at demo bar and demo timer, since both are heavily relied on total demo tics: https://youtu.be/zjcRiH-aJVY. See? It ends right when it should.

So, despite of this is not very vanilla behavior, it is correct behavior technically. DSDA-Heretic works same way, having a -demoextend parameter by default is really useful, especially when there is no command line at hand.

fabiangreffrath commented 8 months ago

So, "it's a feature, not a bug."

JNechaevsky commented 8 months ago

If anyone curious, here's that demos played via DOS version of Heretic Registered v1.0 without desyncs:

Desync happens in 1.2 and 1.3, but not sure about 1.1 - don't have this registered IWAD. Most likely it will desync, as code changes were happened right in 1.1.

OpenRift412 commented 8 months ago

I think this is because we have "extended demos" enabled by default, and these do not necessarily end when the player dies - though vanilla demos do.

I think that should apply when running PWAD demos, and built-in IWAD demos that play during the title sequence should run without the extended mode. Would that be a good compromise, or does that not work within Crispy's design philosophy?