crispy-doom
crispy-doom copied to clipboard
Allow netplay with sideloaded WADs
NET_SV_ParseGameStart
checks that episode and map are in the correct range. This prevented the episode 5 version of Sigil, as well as sideloaded NRFTL and Master Levels from working in netgames.
This is fixed by changing the number of episodes in the valid_modes
table. As a side effect, setup program will now allow warping to E5Mx for the Ultimate Doom IWAD. Outside of Heretic, the valid_modes
table is only used for these two things (netgame validation and setup warp UI).
Note that if you try to start a netgame with a non-existent map, the client will simply exit with a W_GetNumForName
error.
Looks like there are open issues for this already: #455 and chocolate-doom/chocolate-doom#875.
I don't think there's a way to prevent clients from erroring out when a map is missing without redesigning the protocol. The server doesn't know which maps players have nor does it know what will be the starting map, because that info only becomes available after the controlling client sends GAMESTART. At that point, every client has already received LAUNCH and closed the GUI. In any case, the MD5 check will give the user an early notice, so this isn't as big of a problem as it might first seem.
Also, note that valid_modes
isn't used on the client side. This means that both chocolate and crispy clients will react identically to this change. In particular, chocolate can play E5Mx maps on a patched server just fine (of course Sigil won't work due to the visplane limit, but that's a different matter). Perhaps the server shouldn't validate episode/map at all?
I'd prefer if people would explicitly load PWADs when attempting network games. Doesn't sound to me like that's asked too much.