coelckers / prboom-plus

This is a cleaned up copy of the PrBoom+ SVN repository as a courtesy for those interested in forking that port
289 stars 115 forks source link

Next Level command a bit broken in Episodes 5 & 6 #399

Open hackneyed-one opened 2 years ago

hackneyed-one commented 2 years ago

So, I was testing dtwid-le.wad with the umapinfo that @rfomin posted on Doomworld allowing for Episode 5 and 6 in the menu.

After e4m8 "next level" warps to e1m1. Should it or should it go to e5m1? I'm kind of fine either way but that is not even the main concern. In Episode 5 "next level" progression goes like this...

e5m1 (has exit to extra secret map) e5m0 (extra secret map) e5m2 e5m3 (has exit to secret map) e5m9 (secret map) e5m4 e5m5 e5m6 e5m7 e5m8 e5m9 (secret map) <--- again? e5m4 <-- again? e5m5 <- again? etc

Clearly PrBoom should not enter the secret map after e5m8. Woof goes to e6m1 after e5m8. DSDA-Doom goes to e1m1 after e5m8 which is probably fine actually wrong because e5m8 calls for e6m1 as the next level and ep6 is bugged bringing the player to e4m3 after ep6. Speaking of...

In Episode 6 there are no secret maps. It is a straight shot from e6m1 to e6m9 however invoking the "next level" command simply prints a message saying e6m10 cannot be found instead of warping back to e1m1 or anywhere.

fabiangreffrath commented 2 years ago

I think the problem is that there is simply no "canonical" progression for these maps. Strictly speaking, there is no E5M8 in Doom, so it is unclear what should come after that.

rfomin commented 2 years ago

I think we need to somehow synchronize idclev and "next level" between the three ports.

fabiangreffrath commented 2 years ago

definitely

hackneyed-one commented 2 years ago

True there is no "canonical" progression but isn't most everything needed already in the umapinfo? In Episode 5 progression can be mapped out from the next and nextsecret lines. So e5m3 has next = e5m4 and also nextsecret = e5m9 and it works as it should. However, e5m8 states next = e6m1 NOT e5m9 so PrBoom should not get confused and jump to the next number in the map sequence. It should honour e5m8's next map definition of e6m1 Right? Woof already does it.

Episode 6 e6m9 has no definition for a next map so why should the engine look for e6m10? It might be safe to assume the player should be warped to e1m1.

Now, going from Episode 4 to 5 is tricky. There is no e4m8 definition to go to e5m1. I see 2 possible actions. 1. Check umapinfo for a fifth episode "M_EPI5" and assume e5m1 should follow e4m8. Or, maybe as I think more about it... 2. Do nothing. It is a lack of umapinfo to not include a definition for e4m8 defining e5m1 as the next map. Falling back to e1m1 makes total sense without that definition and it can be fixed by updating the umapinfo. Better to not "assume" too much in this case.

Anyway, as I've said Woof handles everything just fine except for the e4m8 to e5m1 transition. Which could certainly be argued as an omission in the umapinfo file. Here I was mostly trying to report the odd Episode 5 behavior.