Repository navigation
feat(room)!: replicate nested entity state - #290
Merged
Merged
Conversation
Use real Kernel inventory rows and equipment child entities with the generic owning publication codec. Keep client state authoritative through atomic baselines and deltas, with fixed projections and reconnect recovery. BREAKING CHANGE: the guest-room wire contract replaces scalar-only state with generic nested publications and explicit instance bindings. Rebuild the room server and Godot client together; only handshake value 2 is accepted.
Adds a reusable Protobuf boundary for owning nested Entity baselines and deltas. Applications supply a fixed trusted projection; the codec preserves typed values, row incarnations and container replacement/patch semantics while rejecting duplicate indexed records and enforcing separate wire, state and patch limits. Existing scalar APIs and the current room contract remain unchanged in this PR. Includes public header mappings, consumer wiring and bilingual API documentation. The room/Godot integration follows separately. Validation: - Permanent check-nested-wire: GUID64 11 cases / 114 assertions; GUID32 11 cases / 115 assertions. - clang-format 18 full tracked-file check and git diff checks passed. - Nimbus build/link checks passed; both new protocol pages verified in HTML, canonical Markdown and AI output. These checks cover the codec and its bounds, not client transport, deployment capacity or production qualification.
nick2781
marked this pull request as ready for review
November 5, 2026 02:42
Adds a reusable Protobuf boundary for owning nested Entity baselines and deltas. Applications supply a fixed trusted projection; the codec preserves typed values, row incarnations and container replacement/patch semantics while rejecting duplicate indexed records and enforcing separate wire, state and patch limits. Existing scalar APIs and the current room contract remain unchanged in this PR. Preserves the caller's Win32 GetMessage macro around Protobuf declarations and codec implementation. The collision was reproduced locally before the fix; hosted Windows acceptance remains required. Includes public header mappings, consumer wiring and bilingual API documentation. The room/Godot integration follows separately. Validation: - Permanent check-nested-wire: GUID64 13 cases / 122 assertions; GUID32 13 cases / 123 assertions, including both Win32 GetMessage macro/include orders. - clang-format 18 full tracked-file check and git diff checks passed. - Nimbus build/link checks passed; both new protocol pages verified in HTML, canonical Markdown and AI output. These checks cover the codec and its bounds, not client transport, deployment capacity or production qualification.
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.
Replaces the guest-room scalar-only messages with the framework's generic owning Entity publications. The server now captures real inventory rows and equipment child Entities; clients receive typed field patches, row lifetime changes, container replacements and child patches through one current Protobuf contract.
Adds potion pickup/consumption, weapon switching and power upgrades while preserving movement, HP/MP, explicit projections, bounded queues and reconnect recovery. JSON schema, shared vectors, native regressions and bilingual design/usage documents are updated together.
Depends on #289 and is held out of the merge queue until that predecessor merges. The branch includes its actual protected candidate and the deterministic shutdown-boundary regression repair.
Declares the room's Kernel, Map and Net providers so its Entity state and callbacks retire first. For ELF builds using static Protobuf, isolates the plugin's archive symbols and inline reflection entry points from the host's private descriptor pool; shared Protobuf, macOS and Windows linking remain unchanged.
Validation:
BREAKING CHANGE: rebuild the room server and Godot client together. The former scalar-only room messages are removed and only handshake value 2 is accepted; there is no legacy protocol branch. Existing reusable C++ scalar APIs remain available.