Repository navigation
A client is not started before the map it downloads is there - #339
Merged
cybersecurity merged 1 commit intoOct 19, 2026
Merged
Conversation
A client that joins a lobby on a Custom Edition map it does not have downloads it by map sharing. When the host started the game meanwhile, the host held the client's players out, as it should, but the client, whose download began in the lobby, did not know the game had started and asked for its player again; the host took the request as a late joiner's and started it at once. The client then loaded a map it did not have yet: cache_files_precache_map_begin's damaged disc error, which stops the game for good. Stock build-201 does the same with its own host. - The host (network_server_manager.c): a player asked for by a machine still downloading the map waits with those held at the start (network_game_server_hold_requested_player), and joins with them, the machine started as a late joiner, once its download is done (network_game_server_release_map_fetchers). - The client (network_client_manager.c): a start that comes while the map is still being downloaded, from a host of an earlier build, is put off until the map is there (network_game_client_begin_game, network_game_client_idle_pregame), and dropped if the game it was for is over by then (another map, or another game). - NETCODE.md's "Map sharing" says what happens when a host starts during a download (it said the host waited, which it has not since version 28). Nothing sent changes: no network version. Checked: the Linux CI steps, the web build and its tests, and the Windows release build. End to end on Linux in Docker, the host starting the lobby game at once while the client downloads (the case that stopped the game): this build both ends (the host held the player and started it at game tick 296 once the map was there); build-201 hosting this build's client (the start put off until the map was there); this build hosting build-201's client (held, then played). Each client played the game. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FractumSeraph
pushed a commit
to FractumSeraph/OpenCE
that referenced
this pull request
Oct 16, 2026
…-hud-loading Powerup timers and the classic loading screen (opt-in)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A client that is still downloading the game's Custom Edition map (map sharing) no longer freezes when the host starts the game.
The bug
cache_files_precache_map_beginshows the damaged disc error (display_error_damaged_media), which stops the game for good.Stock build-201 does the same with a build-201 host, every time the host starts during a download.
The fix
network_server_manager.c): a player asked for by a machine still downloading the map waits with the players held at the start (network_game_server_hold_requested_player). It joins with them, the machine started as a late joiner, once the download is done (network_game_server_release_map_fetchers).network_client_manager.c): a start that arrives while the map is still downloading is put off until the map is there (network_game_client_begin_game,network_game_client_idle_pregame). This covers a host of an earlier build. A put-off start is dropped if its game is over by then (another map, or another game).NETCODE.md, "Map sharing": it said the host's start waits for a downloading machine, which it hasn't since version 28. It now says what happens.Nothing sent changes, so the network version stays 28.
Checked
tools/ci_build.py linux release, the test step's pytest list: 325 passed;test_light_storage.py).tools/test_web_build.py.🤖 Generated with Claude Code