Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow netplay with sideloaded WADs #1044

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

DankRank
Copy link

@DankRank DankRank commented Apr 8, 2023

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.

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.
@DankRank
Copy link
Author

Looks like there are open issues for this already: #455 and 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?

@fabiangreffrath
Copy link
Owner

I'd prefer if people would explicitly load PWADs when attempting network games. Doesn't sound to me like that's asked too much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants