Repository navigation
refactor: reduce client allocation and defer protocol catalog loading - #9
Merged
Merged
Conversation
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.
What changed?
Reduce packet allocation by caching immutable session capabilities, indexing applier dispatch, and avoiding border/brand closures on unrelated packets. Generate protocol lookup switches so requesting one version initializes only that descriptor. Cache sound lookup data and extract buffered frames before allocating timeout resources. Bump UMPK to
0.9.0-beta.7with a changelog entry and matching installation examples.Versions affected
Shared client paths; catalog lookup tests cover all 50 datasets (47–777). Live validation covers 26.2 / 776 and 26.3 / 777. Wire layouts and public APIs are unchanged.
Evidence
Five alternating pairs per workload, 60 seconds measured. Player traffic includes seeded movement, unsigned chat, drops and pickups into one observer; these are nearby entities, not independent connections. RAM is whole-client RSS in decimal MB.
RAM round,
bd219cc→ retained Client/Data.Java code:Live mob round,
a867a06→bd219cc(packet changes only):RAM at 1,024 players was unchanged within the paired 95% interval. RAM-round GC pauses rose by 0.29 and 1.26 ms/min at 250 and 500 players. ZLinq saved 72 B/tick locally but showed no application gain, so it was dropped.
Validation
dotnet clean UMPK.sln -c Releaseanddotnet build UMPK.sln -c Releasepassed with zero build warnings/errors.dotnet format UMPK.sln --verify-no-changes --no-restorepassed.verify, language--check, and DataGengeneratepassed; 92 outputs reproduced byte for byte.dotnet publish samples/MinimalBot -c Release -r linux-x64and nativeAotPublishSmokeTestspassed (14.01 MB).FullFeatureLegpassed for 26.2 / 776 and 26.3 / 777.Notes for reviewers
The tables use separate frozen stages; their percentages must not be added. Client/Data.Java hashes matched the RAM candidate before the version bump; the tables use the recorded beta.6 binaries. The later RAM changes were not remeasured in the live mob benchmark. The full live version matrix and proxy leg were not run. Profiling scripts, reports and temporary artifacts are excluded; the test-count config reflects the deliberate regression tests.