2.3 KiB
2.3 KiB
| id | ticket | title | status | created | ref_decisions | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0077 | render-frame-packet-boundary | Composer Buffer and Game2D Packet | done | 2026-05-25 |
|
|
Briefing
Source decision: DEC-0030.
Convert current composer.* frame state into a mutable ComposerBuffer that closes into Game2DFramePacket at frame boundary.
Target
Game 2D scene, camera, sprites, HUD, and frame orchestration are represented as domain-owned state until RenderManager closes them into a typed packet.
Scope
- Add
ComposerBuffer. - Move scene, camera, sprite, HUD, layer ordering, and Game 2D orchestration state into the buffer.
- Close the buffer into
Game2DFramePacket. - Preserve the v1 four-layer scene/sprite composition model and HUD-above-game rule.
- Ensure fade is absent from Game 2D packet state.
Out of Scope
- Primitive
gfx2d.*command buffering. - Shell UI packet work.
- Renderer consumption refactor beyond packet shape.
- New Game 2D features.
Execution Sequence
- Locate current
FrameComposer, composer syscalls, scene/camera/sprite/HUD state, and tests. - Introduce
ComposerBufferand migrate composer mutation paths into it. - Implement closure into
Game2DFramePacketwith immutable packet contents. - Preserve integer layer ordering across the four Game 2D layers and HUD final composition.
- Route frame closure through
RenderManager. - Update tests that currently inspect
FrameComposerinternals.
Acceptance Criteria
composer.*owns Game 2D high-level frame state.- Closed
Game2DFramePacketcontains all data required by the Game 2D renderer without live VM orGfxaccess. - Scene/sprite layer behavior and HUD ordering are preserved.
- Fade is not represented.
Tests / Validation
- Add unit tests for buffer mutation and packet closure.
- Add composition ordering tests for scene, sprites, and HUD.
- Run current frame composer/render tests and compare existing expected output.
Risks
- Existing composer code may mix orchestration with drawing; split state capture from rendering before deeper migration.
- Layer behavior is user-visible and must not drift.
Affected Artifacts
- Composer/frame-composer modules under
crates/ - Game 2D tests