Skip to content

Lobby Overhaul #2977

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

Merged
merged 2 commits into from
Mar 8, 2025
Merged

Lobby Overhaul #2977

merged 2 commits into from
Mar 8, 2025

Conversation

Boondorl
Copy link
Contributor

@Boondorl Boondorl commented Mar 8, 2025

This is a sister rework to the recent netcode overhaul that focuses on the lobby system instead of just the front end code. In particular, the packet structure has been unified paving the way for actions like in-game joining. Alongside this a new strategy is taken with sharing user info. Rather than being done in distinct stages, info is now gotten and shared organically between them as they connect. As a result only one loop function is now needed for each, allowing for saner incoming connection handling when in-game joining is added in the indeterminate future. A new UI has been added to further allow users to see who's connected and hosts can now better manage these players via kick/ban functionality.

The max player count has been increased to 64 since the rest of the netcode can now properly handle it.

As a note, this adds a few functions to i_net that will need to be stubbed on other engines e.g. Raze. This is for the game-specific data and the functions are defined at the top of i_net.cpp with names like SetUserData. Also included are some changes to ZWidget that will need to be backported to the repo properly at some point.

Boondorl added 2 commits March 7, 2025 19:41
Added column support for consistent spacing between elements. Improved item adding functionality. Added Update and Remove item functionalities. Update ListView scrollbar on item add/remove.
Rewrote lobby to unify common and Doom-specific packet structure, allowing for saner handling of in-game joining. Added a new per-client stage system that allows individual clients to be handled at a time when gathering and sharing info. Reworked lobby UI to display user info and added kick/ban functionalities. Bans are only a temporary per-game IP ban (use passwords to keep unwanted users out). Increased max player count to 64 and unified engine constant.
@mjr4077au
Copy link
Member

If only we had someone like you working on Raze... 🥲

@madame-rachelle madame-rachelle merged commit ad3bcfd into ZDoom:master Mar 8, 2025
9 checks passed
@SanyaWaffles
Copy link
Contributor

This brings a tear of joy to this one's eye.

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.

4 participants