Ordered implementation contract · no calendar estimates

HUD & UI Implementation Plan

แผน implement แบบละเอียดสำหรับเปลี่ยน UI ปัจจุบันไปสู่ Hybrid CommonUI + UMG ตาม FEAT-HUD-UI โดยแยก verified baseline, target architecture, C++ work, user-only Widget Blueprint work, dependency gates, migration, testing และหลักฐานที่ต้องมีเพื่อผ่านแต่ละ milestone

Status: draftOwner: UnassignedUpdated: 2026-09-06UE 5.8

Problem, Scope & Execution Boundary

UI ปัจจุบันเป็น UMG widgets ที่ถูกเปิดโดย GameInstance subsystems แยกกันและยังไม่มี screen stack กลาง ขณะที่ target design ต้องรองรับ menu navigation, modal priority, controller focus, dynamic glyphs, multiplayer input blocking, SP pause, localization และทุกระบบที่ยังพัฒนาไม่ครบ แผนนี้จึงสร้าง foundation ก่อน แล้วค่อยย้าย screen แบบ vertical slices โดยไม่ตัดระบบเดิมพร้อมกันทั้งหมด

Included

  • C++ UI framework, presentation data, events และ input routing
  • CommonUI activation stack + passive UMG HUD
  • Widget Blueprint hierarchy และ manual Editor steps
  • 64 SVG icon import plan และ controller glyph mapping
  • Frontend, HUD, inventory, map, crafting, workbench, building, vehicle, boss, social, death, settings และ accessibility
  • Automation-test targets, compile/cook gates และ user-run PIE matrix

Not performed by this plan document

  • ไม่แก้ source code หรือ Unreal assets ในขั้นจัดทำแผน
  • ไม่สร้าง/แก้/compile/save Blueprint; เฉพาะผู้ใช้ทำใน Unreal Editor
  • ไม่เริ่มหรือควบคุม PIE; เฉพาะผู้ใช้รันและบันทึกผล
  • ไม่กำหนดวัน, effort estimate, assignee หรือ performance budget ที่ยังไม่ได้อนุมัติ
  • ไม่สมมติ backend สำหรับ gameplay feature ที่ยังไม่มี
Definition of implementation-ready: งานที่พึ่ง TBD สามารถสร้าง shell, contract และ unavailable/empty state ได้ แต่ห้ามเขียน authoritative behavior แทนคำตอบที่ยังไม่ตัดสิน

Verified Current Implementation vs Target

7verified non-glyph UI assets
12existing UI C++ classes
8→10Quick Slot migration
5→8survival-bar migration
AreaVerified current stateTarget / consequence
DependenciesUMG, Slate, SlateCore are in Lambeer.Build.cs. CommonUI is not enabled in Lambeer.uproject.Add CommonUI/CommonInput dependencies and viewport routing before any activatable screen.
Widget spawningULambeerHUDSubsystem, ULambeerInventorySubsystem, and ULambeerCharacterCreationSubsystem add widgets directly to viewport and set input mode themselves.One LocalPlayer UI manager owns root/layers/input config. Legacy subsystems become compatibility facades during migration.
HUDWBP_HUD, WBP_StatusBars, WBP_Compass exist. HUD and compass use NativeTick.Passive HUD remains UMG but updates from delegates/snapshots. Add minimap, hands, quick slots, status list, reticle and overlays.
Hit feedbackULambeerHUDWidget contains optional HitMarker and SetHitMarkerVisible.Remove API and Widget binding; project requirement forbids hit/headshot/kill markers.
SurvivalULambeerAttributeSet and ULambeerStatusBarsWidget expose Health, Stamina, Hunger, Thirst, Temperature.Add gameplay-owned Energy, Sleep, Immunity before live binding; UI shell may preview layout but must not synthesize authoritative values.
InventoryWBP_Inventory, slot, container assets and C++ bases exist; click-pair and drag assignment are implemented. Quick-slot constant is 8.Migrate screen to CommonUI activation, 10 slots, context commands, search/sort, side-by-side world container and full controller focus.
HandednessTwo replicated hand stacks exist, but ULambeerItemDefinition has no handedness field.Add a data-driven handedness enum/field and atomic two-hand occupancy validation on the server.
InteractionUInteractionComponent emits actor + prompt text and creates a centered prompt host.Emit structured FInteractionPromptState, project near the target, clamp to safe zone and expose hold/denied/alternatives.
Character creationC++ subsystem/widget base and config path exist; Content/Lambeer/UI/Menus/WBP_CharacterCreation.uasset was not found.User creates the Blueprint asset after screen-stack foundation; frontend routing must handle missing class explicitly until then.
GlyphsXbox and PlayStation imported assets exist under Content/Lambeer/UI/ControllerGlyphs/.Map verified assets through CommonInput controller data; do not rename until package license/source verification.
PersistenceUSaveSubsystem exists with an in-memory default backend seam.UI calls session/save services; it never invents durable state. Local-world index and per-server character state require backend contracts.
TestsNo UI automation/spec files were found; only a gameplay test loot crate class exists.Add headless C++ contract tests where possible; Widget/PIE validation remains user-run.

Gate G0 Baseline & Review Evidence

Gate state: PASS — closed 2026-09-06. Owner resolved TBD-HUD-UI-001, TBD-HUD-UI-002, and TBD-HUD-UI-008, approved the migration/rollback strategy, and supplied the interaction/input baseline below. The inability to drag an item into a Quick Slot is a captured legacy gap assigned to G3, not a G0 blocker.

Decision and evidence register

TaskVerified evidence (2026-09-06)Required close actionState
UI-PLN-001[CONFIRMED] Back Weapon 1–2 exclusively reserve numbered slots 1–2. Other items cannot be bound to those two slots; no displaced manual binding or restore behavior exists.Implementation tests must reject non-Back-Weapon assignment to reserved indices 0–1 and verify Back Weapon removal leaves the reserved slot empty.Complete
UI-PLN-002[CONFIRMED] Owner approved the documented palette, layouts, and exactly 64 SVG solid/silhouette icons on 2026-09-06.Use the approved sources for G2 import; retain source/license provenance before shipping.Complete
UI-PLN-003[CONFIRMED] Use Google Sans from RawResource/Fonts/Google_Sans/. Sixteen TTF files were found and each contains 87 Thai-block codepoints including the basic Thai set. Font metadata and the official source repository identify SIL Open Font License 1.1 without Reserved Font Names; OFL.txt is retained beside the fonts.Target /Game/Lambeer/UI/Common/Fonts/FF_UI_Primary; Regular is the default face with Medium/SemiBold/Bold variants. Google Sans supplies English and Thai glyphs; verify shaping, line breaks and tabular figures after user import.Complete
UI-PLN-004Unreal MCP asset/config/reference audit completed. Development Game target compiled and linked successfully; log: Saved/Baselines/HUDUI_G0_GameBuild.log. The initial Editor build was blocked at final DLL link by the running Editor (LNK1104); after closing the lock, the owner reported a successful clean Editor build on 2026-09-06 and the rebuilt Binaries/Win64/UnrealEditor-Lambeer.dll was verified on disk.Baseline compile evidence is complete. The existing warning that HairStrandsCore is used without declaring the HairStrands plugin remains recorded for G1/project cleanup.Complete
UI-PLN-005User supplied legacy HUD, inventory, and interaction-prompt screenshots. The owner reported that Wood can be dragged among Hand 1, Hand 2, and Pocket, while dragging Wood into a Quick Slot does not work. Unreal MCP logs corroborate two user-run L_Dev_Sandbox PIE sessions using a dedicated-server world plus two clients; all three worlds tore down after each session. No agent-run PIE claim is made.Baseline is complete for migration comparison. Preserve the Quick Slot drag failure as a known legacy gap and verify its correction under UI-HUD-010 in G3; controller, denied/out-of-range, and hold behavior remain unverified rather than implicitly passed.Complete

Verified legacy asset-reference snapshot

AssetHard package dependenciesRegistry referencersMigration disposition
/Game/Lambeer/UI/Common/WBP_InteractionPromptSlateCore, UMG, UMGEditor/Game/Lambeer/Characters/Player/Blueprints/BP_PlayerCharacterPreserve path until the player Blueprint is manually migrated and verified.
/Game/Lambeer/UI/HUD/WBP_HUDWBP_Compass, WBP_StatusBars, Lambeer/UMG modulesNo registry referencer; loaded by config and C++ fallback soft class path.Preserve as compatibility HUD until the new root passes cook and user PIE.
/Game/Lambeer/UI/HUD/WBP_CompassLambeer/UMG modulesWBP_HUDMigrate behind the new HUD adapter before any move/rename.
/Game/Lambeer/UI/HUD/WBP_StatusBarsLambeer/UMG modulesWBP_HUDMigrate behind event-driven state before any move/rename.
/Game/Lambeer/UI/Inventory/WBP_InventoryWBP_InventorySlot, Lambeer/UMG modulesNo registry referencer; loaded by config and C++ fallback soft class path.Preserve as compatibility screen until CommonUI activation passes user PIE.
/Game/Lambeer/UI/Inventory/WBP_InventoryContainerLambeer/UMG modulesNo registry referencer reported.Preserve; runtime creation is a code/config path not represented as a hard package reference.
/Game/Lambeer/UI/Inventory/WBP_InventorySlotLambeer/UMG modulesWBP_InventoryPreserve through inventory-screen migration.

Config snapshot: DefaultGame.ini points HUD and inventory soft classes to WBP_HUD and WBP_Inventory. Lambeer.Build.cs includes UMG/Slate/SlateCore but not CommonUI/CommonInput, and Lambeer.uproject does not enable CommonUI. Xbox and PlayStation glyph assets exist under /Game/Lambeer/UI/ControllerGlyphs/.

Frozen migration/rollback strategy — owner approved 2026-09-06

  1. Make a source-control checkpoint limited to the verified HUD/UI source, config, and seven legacy widget assets; do not mix unrelated dirty assets into the migration checkpoint.
  2. Create the CommonUI root and new screens alongside legacy paths. Do not rename, move, delete, or redirect WBP_HUD, WBP_Inventory, or WBP_InteractionPrompt during G1–G2.
  3. Switch through the existing soft-class config/facade seam only after the new root compiles and a missing-class path fails explicitly.
  4. Before each legacy removal, repeat Asset Registry dependency/referencer capture, fix config/C++ fallback paths, run redirector validation, compile Editor/Game/Server, and complete cook/package smoke.
  5. Rollback by restoring the legacy soft-class config and compatibility facades; remove redirectors only after the matching user PIE regression result is recorded.

User-supplied PIE baseline evidence

Legacy gameplay HUD screenshot supplied by the user, showing five survival bars, compass heading and weight
Legacy HUD · 1277×720 capture: five visible bars (Health, Stamina, Hunger, Thirst, Temp), compass text E 0, and 0 / 10 kg. The capture does not show an interaction prompt or prove behavior across other resolutions.
Legacy inventory screenshot supplied by the user, showing back weapons, equipment slots, hands, drop and eight quick slots
Legacy inventory · 1281×723 capture: Back 1–2, worn-equipment row, Pockets 0/4, right/left hand, Drop, Q1–Q8, weight and Close are visible. A static image does not prove assignment, drag/drop, transfer, focus, or input restoration.
Legacy gameplay screenshot supplied by the user, showing an E interaction prompt while facing a cube
Legacy interaction prompt · 367×700 capture: the E prompt is visible near screen center while the player faces a cube. This static capture proves prompt visibility and placement only; it does not prove activation, denied/out-of-range, hold, or controller behavior.

Unreal MCP log corroboration: user-run New Editor Window PIE started on /Game/Lambeer/World/Maps/L_Dev_Sandbox/L_Dev_Sandbox at 20:12 and 20:13 local time with one dedicated-server world and two client worlds. The logs prove session topology/start/teardown only, not visual or interaction correctness.

Owner-reported input baseline (2026-09-06): Wood drag succeeds among Hand 1, Hand 2, and Pocket. Wood drag into a Quick Slot fails in the legacy UI. The failure is retained as regression context and a required G3 correction; no result is recorded for controller input, denied/out-of-range prompts, or hold interactions.

Reviewed user-only baseline acceptance matrix

AreaMinimum captureG0 record (2026-09-06)
HUDSpawn HUD; health/stamina/hunger/thirst/temperature, compass, weight, blood overlay, and interaction prompt visible/hidden transitions.Captured: five stats, compass, weight, and visible E prompt. Blood overlay and prompt hidden transition are not shown.
InventoryOpen/close; mouse and keyboard focus; drag/click assignment; both hands; Back Weapon 1–2; all eight current quick slots; container transfer/drop.Captured/reported: inventory layout; Wood drag among Hand 1, Hand 2, and Pocket succeeds. Known gap: drag into Quick Slot fails. Controller/focus restoration is unverified.
InteractionValid target, no target, denied/out-of-range, prompt placement, hold behavior if present, and return of game input.Captured: visible E prompt while facing a cube. Activation, no-target transition, denied/out-of-range, hold, and controller behavior are unverified.
SessionSingle-player baseline and current multiplayer mode if available; confirm whether opening inventory pauses the world.Corroborated by Unreal MCP: dedicated server plus two clients in two user-run sessions. Pause and authority behavior are unverified.

Target Architecture [CONFIRMED 2026-09-06]

Owner approved. The Hybrid CommonUI + UMG architecture, one root per local player, four-layer ownership model, compatibility-facade migration, and SP/MP input-state policy below are frozen for G1 implementation.

Authoritative gameplay stateLocal presentation adaptersUI snapshots/delegatesUMG/CommonUI widgets
ULambeerUIManagerSubsystem : ULocalPlayerSubsystem
└─ WBP_UIRoot : ULambeerUIRootWidget / UCommonUserWidget
   ├─ Layer_GameHUD : Overlay                         // passive UMG
   │  ├─ WBP_HUDRoot : ULambeerHUDWidget
   │  ├─ WBP_ContextStatusList
   │  ├─ WBP_NotificationFeed
   │  └─ WBP_InteractionPromptHost
   ├─ Layer_Screens : UCommonActivatableWidgetStack  // one primary screen
   ├─ Layer_Modals  : UCommonActivatableWidgetStack  // context/split/errors
   └─ Layer_Toast   : WBP_ToastQueue                 // non-blocking notices

Gameplay components replicate canonical state.
UI manager owns only local presentation, activation, focus, safe-zone and device state.
Every server mutation is requested through the owning gameplay component/service and re-rendered from accepted state.

C++ ownership rules

  • ULambeerUIManagerSubsystem is the only layer/router owner per local player.
  • ULambeerActivatableWidget centralizes CommonUI input config, back behavior, initial focus and restoration.
  • Passive widgets remain UUserWidget; screens/modals derive from CommonUI activatable bases.
  • Presentation structs are local read models, not new replicated gameplay databases.
  • Widgets subscribe in construct/activate and unsubscribe in destruct/deactivate; no gameplay polling on Tick unless a specific visual interpolation needs it.
  • Blueprint owns layout/style and calls exposed C++ commands; authoritative logic remains in C++.

Input-state policy

LayerInputCursor/focusWorld
HUD onlyGameNo cursor; viewport focusRuns
Primary screen in MPMenuCursor for KBM; deterministic CommonUI focus for controllerRuns; movement/action contexts blocked
Pause screen in SPMenuSame navigation contractPaused by session authority
ModalMenuFocus trapped inside top modal; Back closes modal firstInherits underlying SP/MP rule
RadialAllStick/mouse selection; cancel restores game focusRuns

Target Files, Assets & Migration Map

Paths marked Proposed do not exist yet. Existing Blueprint assets must be edited by the user.

Source/Lambeer/UI/
├─ Common/                                      [Proposed]
│  ├─ LambeerUIManagerSubsystem.h/.cpp
│  ├─ LambeerUIRootWidget.h/.cpp
│  ├─ LambeerActivatableWidget.h/.cpp
│  ├─ LambeerUIActionTypes.h
│  └─ LambeerUITypes.h
├─ HUD/                                         [Proposed organization]
│  ├─ LambeerHUDWidget.*                        [move only in planned migration]
│  ├─ LambeerStatusBarsWidget.*
│  ├─ LambeerCompassWidget.*
│  ├─ LambeerInteractionPromptWidget.*
│  └─ LambeerScreenEffectsWidget.*
├─ Screens/                                     [Proposed]
│  ├─ LambeerInventoryWidget.*                  [derive activatable]
│  ├─ LambeerMapScreen.* / LambeerSpawnScreen.*
│  ├─ LambeerCraftingScreen.* / LambeerWorkbenchScreen.*
│  ├─ LambeerSettingsScreen.* / LambeerPauseScreen.*
│  └─ LambeerServerBrowserScreen.* / LambeerGroupScreen.*
└─ Legacy/                                      [optional transitional namespace, no asset move]

Content/Lambeer/UI/
├─ Common/Styles/  DA_UITheme, CommonButton/Text styles        [Proposed]
├─ Common/Icons/   T_UI_* imported from RawResource/UI/Icons/  [Proposed]
├─ Common/Input/   CommonInput controller data + action data    [Proposed]
├─ HUD/            WBP_UIRoot, WBP_HUDRoot, HUD child widgets   [Proposed + existing migration]
├─ Menus/          Main/Save/Server/Character/Spawn/Pause       [Proposed]
├─ Inventory/      existing assets + context/transfer screens   [Mixed]
├─ Map/, Crafting/, Building/, Weapons/, Social/, Settings/     [Proposed]
└─ ControllerGlyphs/                                             [Verified existing; preserve]

Config: Lambeer.uproject, Lambeer.Build.cs, DefaultEngine.ini, DefaultGame.ini
Input: Content/Lambeer/Core/Input/Actions/ and IMC_Default
Safe migration: do not rename/delete WBP_HUD, WBP_Inventory or legacy subsystems until the new root loads, screen activation works, asset references are redirected, cook succeeds, and the user records the matching PIE gate as passed.

Data Model, Interfaces & Events

ชื่อด้านล่างเป็น target contract จาก feature spec; implementation must first search for an existing gameplay-owned equivalent and reuse it where semantics match.

ContractProducer / authorityConsumerImplementation rule
FUIHUDSnapshotLocal adapter reading GAS/inventory/aimHUD rootNormalized values + availability flags; no replicated duplicate.
FUIWeaponHandStateHeld/combat components + client knowledge maskHand cardsObserved chamber/mag data is separate from hidden server truth and invalidated on unknowable changes.
FInteractionPromptStateUInteractionComponentPrompt widgetActor/target ID, action, label, quantity, hold, denied reason, alternatives; server still validates execution.
FUIMapMarkerMarker service; server for shared, local for filter stateCompass/minimap/map/spawnStable MarkerId, category, world position, visibility scope, source entity, expiry.
FCraftingQueueEntryPlayer/station crafting authorityCrafting screen/queuePersistent server record with reserved inputs and recovery state.
FMagazineLoadPlanWeapon/magazine authorityPlanner modalServer validates ammo compatibility/capacity; pure function builds preview fire order.
FWorldSaveSummaryLocal save index serviceSave select/Main ContinueSummary only; corrupt/incompatible state is explicit.
FServerBrowserEntryOnline session/backend adapterServer browserSession IDs remain opaque; favorite is local/user preference.
FUIAchievementEntryPer-character/server progression authorityAchievement screen/toastCatalog/reward payload blocked by TBD-E2F4910C.
FGroupActivityLogEntryServer group registryGroup screenActor/action/target/event type; retention blocked by TBD-HUD-UI-007.

Required event surface

OnHUDSnapshotChanged(const FUIHUDSnapshot&)
OnInteractionPromptChanged(const FInteractionPromptState&)
OnObservedWeaponInfoChanged(ELambeerHeldHand, const FUIWeaponHandState&)
OnMapMarkersChanged(const TArray<FUIMapMarker>&)
OnCraftQueueChanged(FGuid QueueId)
OnAchievementUnlocked(FName AchievementId, const FRewardPayload&)
OnGroupActivityLogged(const FGroupActivityLogEntry&)
OnInputMethodChanged(ECommonInputType, FName GamepadName)

Error contract

  • Every asynchronous screen has Loading, Ready, Empty, Error and Stale/Retry states where applicable.
  • Rejected server action returns a localizable reason code; widgets do not parse arbitrary server strings.
  • Missing optional backend displays unavailable state and logs once; it must not crash or fabricate data.
  • Top modal receives errors that block the current operation; non-blocking results use toast.

Ordered Milestone Gates

ไม่มี calendar dates ตาม roadmap หลัก แต่ละ gate ต้องผ่าน exit criteria ก่อนเปิดงานที่พึ่งพา gate ถัดไป งาน screen ที่ไม่พึ่ง backend สามารถทำ visual shell ล่วงหน้าได้โดยแสดง unavailable/preview state เท่านั้น

G0

Decision & Baseline Lock PASS 2026-09-06

เก็บ evidence, approve visual direction, ระบุ TBD blockers และ freeze migration targets.

Exit complete: asset backup/redirect strategy และ acceptance matrix reviewed; known Quick Slot drag gap routed to G3.
G1

CommonUI Foundation

Plugin/modules, viewport client, root, layers, activatable base, input/focus routing.

Exit: compile + cook; one dummy screen/modal navigates on KBM/Xbox/PlayStation.
G2

Shared Design System

Theme, typography, buttons, glyphs, icons, safe zone, DPI and localization skeleton.

Exit: shared component gallery passes all reference resolutions.
G3

Gameplay HUD Slice

8-stat layout, reticle, hands, quick slots, compass/minimap, prompt and screen effects.

Exit: HUD behavior and no-hit-marker contract pass user PIE.
G4

Core Survival Screens

Inventory/container, world map, death/spawn, pause and settings.

Exit: complete controller/KBM loop without focus traps or client authority leaks.
G5

Frontend & Session Flow

Main menu, local worlds, server browser, character creation and initial spawn route.

Exit: every branch handles missing/corrupt/offline/full/incompatible states.
G6

System Screens

Crafting, building, workbench/mag planner, skills, achievements, vehicle and boss.

Exit: each screen is wired to authoritative interface or visibly backend-blocked.
G7

Social & Communication

Group management, logs, chat and voice controls.

Exit: permissions, privacy controls and channel/failure states validated.
G8

Accessibility & Ship Hardening

English/Thai, semantic palettes, rebinds, scalability, automated checks, cook/package.

Exit: DoD matrix complete; user records final PIE evidence.

Detailed Task Register

IDGateLaneWork itemFiles / assetsDependencyExit evidenceStatus
UI-PLN-001G0DesignResolve Quick Slot 1–2 vs Back Weapon 1–2 collision/restore semantics.FEAT-HUD-UIOwner decision recorded 2026-09-06.Slots 1–2 are exclusively reserved for Back Weapon 1–2; no alternate binding or restore state.Complete
UI-PLN-002G0DesignApprove visual tokens, layouts and 64-icon solid/silhouette kit.RawResource/UI/Icons/Owner approval recorded 2026-09-06.Visual system and complete 64-icon kit marked confirmed in FEAT-HUD-UI.Complete
UI-PLN-003G0DesignSelect Thai-capable font file and verify license/repository path.RawResource/Fonts/Google_Sans//Game/Lambeer/UI/Common/Fonts/FF_UI_PrimaryOwner approval, local glyph audit, embedded OFL metadata, official source repository, and retained OFL.txt.Google Sans Regular/Medium/SemiBold/Bold approved; Thai coverage and SIL OFL 1.1 evidence verified.Complete
UI-PLN-004G0C++Capture current compile state, asset references and UI configuration before migration.Lambeer.uproject, Build.cs, Config, existing UI C++/assetsNoneUnreal MCP reference audit and Development Game build succeeded; owner reported the clean Editor rebuild passed after the prior DLL lock was removed.Complete
UI-PLN-005G0QARecord current HUD/inventory/interaction behavior in PIE for regression reference.Existing maps/widgets; screenshots under Documentation/assets/evidence/hud-ui-g0/Only user may run PIEThree owner-supplied captures retained; Hand 1/Hand 2/Pocket drag succeeds, Quick Slot drag fails, and the unverified interaction/input cases are explicitly bounded.Complete
UI-FND-001G1C++Enable CommonUI plugin and add CommonUI/CommonInput module dependencies.Lambeer.uproject, Source/Lambeer/Lambeer.Build.csG0 baselineEditor and Development targets compile without missing module errors.Ready
UI-FND-002G1C++Configure UCommonGameViewportClient and verify project startup uses it.Config/DefaultEngine.iniUI-FND-001Viewport class verified at runtime; split-screen/local-player path does not regress.Ready
UI-FND-003G1C++Create ULambeerUIManagerSubsystem : ULocalPlayerSubsystem.Source/Lambeer/UI/Common/LambeerUIManagerSubsystem.*UI-FND-001Creates one root per local player; duplicate calls are idempotent.Not started
UI-FND-004G1C++Create root class and typed layer accessors.LambeerUIRootWidget.*UI-FND-003HUD/Screen/Modal/Toast layers resolve or fail with explicit log.Not started
UI-FND-005G1EditorCreate WBP_UIRoot with named layer hierarchy./Game/Lambeer/UI/HUD/WBP_UIRootUI-FND-004Blueprint compiles; every BindWidget name matches C++.User-only
UI-FND-006G1C++Create ULambeerActivatableWidget with input config, Back and initial-focus contract.LambeerActivatableWidget.*UI-FND-001Top screen/modal owns focus; Back order is deterministic.Not started
UI-FND-007G1C++Implement push/pop APIs by layer tag and soft class reference.LambeerUIManagerSubsystem.*, LambeerUIActionTypes.hUI-FND-004/006Unknown layer/class returns failure; no duplicate modal activation.Not started
UI-FND-008G1C++Centralize cursor, gameplay mapping suppression, focus restoration and SP/MP pause request.UI manager + LambeerPlayerController.*UI-FND-007Closing final screen restores game focus exactly once; MP never pauses server.Not started
UI-FND-009G1C++Turn existing HUD/inventory/character subsystems into temporary facades that route to UI manager.Source/Lambeer/UI/Lambeer*Subsystem.*UI-FND-007/008Existing callers work without direct AddToViewport or independent input-mode changes.Not started
UI-FND-010G1QAPIE smoke: dummy primary screen + modal with KBM/Xbox/PlayStation.WBP test screen/modalUI-FND-001–009User records focus, Back, cursor and world pause results.User-only
UI-DSN-001G2EditorImport approved 64 SVG icons as tintable UI textures.RawResource/UI/Icons//Game/Lambeer/UI/Common/Icons/T_UI_*Approved source kit; user-only asset importTransparent background, consistent silhouette, correct UI texture settings.User-only
UI-DSN-002G2EditorCreate theme, button, text, tab, list-row, progress and modal style assets./Game/Lambeer/UI/Common/Styles/UI-PLN-002/003Component gallery shows normal/hover/pressed/disabled/focused states.User-only
UI-DSN-003G2EditorCreate CommonInput controller data for Xbox and PlayStation from verified glyph assets./Game/Lambeer/UI/Common/Input/, existing ControllerGlyphsUI-FND-001Accept/Back/Context/tab/stick/trigger glyphs change by active device.User-only
UI-DSN-004G2C++Expose input-method change event and preserve focused semantic control on device switch.UI manager/common widgetsUI-DSN-003Switch does not close screen or reset selection.Not started
UI-DSN-005G2EditorImport approved Google Sans faces and configure composite/fallback font.RawResource/Fonts/Google_Sans//Game/Lambeer/UI/Common/Fonts/FF_UI_PrimaryResolved TBD-HUD-UI-002; user-only asset importThai shaping/line breaks and tabular figures verified after import.User-only
UI-DSN-006G2C++Implement centralized DPI, HUD scale, safe-zone and text-scale application.UI manager + user settings modelUI-FND-005FHD/2K/4K and 16:10/21:9/32:9 layout snapshots remain unclipped.Not started
UI-DSN-007G2DesignCreate English source string table keys for all navigation, states and errors; add Thai translations.String Tables under /Game/Lambeer/UI/Localization/Approved copy/fontNo user-facing hard-coded C++ strings; missing key visible in validation.Not started
UI-HUD-001G3C++Create UI snapshot types and event-driven HUD adapter.LambeerUITypes.h, HUD adapter/subsystemG1Snapshot changes only when source state changes; unavailable fields are explicit.Not started
UI-HUD-002G3BackendAdd gameplay-owned Energy, Sleep and Immunity attributes/events.LambeerAttributeSet.* and survival systemCanonical survival designServer authority, replication and persistence tests pass.Not started
UI-HUD-003G3C++Refactor status bars from Tick polling to attribute delegates; support eight bars.LambeerStatusBarsWidget.*UI-HUD-001/002No persistent gameplay polling; 8 normalized values render without numbers.Not started
UI-HUD-004G3C++Remove HitMarker field/API and all bindings.LambeerHUDWidget.*, WBP_HUD migrationConfirmed no-hit-feedback ruleRepository search finds no hit/headshot/kill marker presentation path.Ready
UI-HUD-005G3EditorCreate WBP_HUDRoot and child hierarchy with actual viewport-edge anchors./Game/Lambeer/UI/HUD/G2, UI-HUD-001Blueprint compiles and layout matrix has no overlap/clipping.User-only
UI-HUD-006G3C++Implement contextual status list ordering by severity/time and non-hidden critical overflow.Status presentation model/widget baseGameplay status tags/eventsCritical rows remain visible; overflow expands accessibly.Not started
UI-HUD-007G3C++Replace heading text with compass tape and shared marker projection.LambeerCompassWidget.*, map marker serviceFUIMapMarker contractCardinals/degrees and allowed markers project/clamp correctly without Tick-heavy actor scans.Not started
UI-HUD-008G3C++Implement minimap view model, filters and player heading.Map service + minimap widget baseUI-HUD-007Shared marker IDs agree across compass/minimap/full map.Not started
UI-HUD-009G3BackendAdd item handedness to Data Asset contract and enforce atomic two-handed occupancy.LambeerItemDefinition.h, held/equipment components, item assetsPer-item Data Asset rule; user asset editsOne/two-hand validation passes server tests and UI receives stable state.Blocked
UI-HUD-010G3C++Migrate Quick Slots 8→10, reserve display slots 1–2 for Back Weapon 1–2, bind 1–0 actions and present both hands.Equipment types/component, PlayerController, input assets, HUD/inventoryUI-HUD-009 + resolved TBD-HUD-UI-001Server rejects alternate bindings at internal indices 0–1; removal leaves them empty; authoritative use-to-hand flow passes tests.Blocked
UI-HUD-011G3C++Implement reticle state machine; ADS hidden; no damage confirmation.Aim/combat events + reticle widget baseExisting aim componentHip/shoulder/ADS/melee/throw/interaction states map deterministically.Not started
UI-HUD-012G3C++Replace text-only prompt event with structured prompt state and projected placement.InteractionComponent.*, prompt host/widgetG2 glyphsHold, denied reason, quantity and alternatives render near target and safe-zone clamp.Not started
UI-HUD-013G3C++Implement low-health thresholds and blood/wet screen-effect timelines.LambeerScreenEffectsWidget.*, effect eventsHealth/blood/wetness sources30/20/10%; blood hold 2s + fade 5s; wet fade 5s; critical content remains readable.Not started
UI-HUD-014G3C++Implement observed chamber/magazine knowledge mask and invalidation rules.Combat/weapon component + hand presentationWeapon backendUnknown remains hidden until check; stale observations invalidate correctly.Not started
UI-CORE-001G4C++Convert inventory screen to activatable lifecycle without losing existing assignment logic.LambeerInventoryWidget.*, subsystem facadeG1Open/close, delegate cleanup and focus restoration pass; no direct input-mode ownership.Not started
UI-CORE-002G4BackendAdd validated Split, quantity Drop, Use, Equip, Sort, Search projection, Take All and Transfer All commands.Inventory/equipment/held componentsInventory feature rulesServer rejects invalid/stale indices and preserves item-instance state.Not started
UI-CORE-003G4EditorRebuild inventory and side-by-side container layouts with context/split modals.Existing Inventory assets + proposed WBP_ContainerTransferUI-CORE-001/002Drag, click, keyboard and controller paths expose identical commands.User-only
UI-CORE-004G4C++Build shared map screen/view model with category toggles, pan, zoom, center and ping.LambeerMapScreen.*, marker serviceUI-HUD-007/008Full map starts revealed; filters are local; shared ping is server validated.Not started
UI-CORE-005G4BackendProvide death/respawn state and death-marker lifecycle events.Death, loot bag, spawn servicesGameplay backendMarker clears on despawn or empty bag; killer/cause/location are authoritative.Not started
UI-CORE-006G4C++Create full-map spawn/death screen with last bed or Fresh Spawn and four-town flow.LambeerSpawnScreen.*, WBP_DeathRespawnUI-CORE-004/005No sleeping-bag option; invalid/occupied choice reports reason and remains selectable only when valid.Not started
UI-CORE-007G4C++Create pause/menu policy using session type rather than client assumption.LambeerPauseScreen.*, UI manager/session serviceG1SP pauses; MP shows “WORLD CONTINUES…” and only blocks local controls.Not started
UI-CORE-008G4C++Create settings model with staged apply/revert and per-category adapters.LambeerUserSettings target + settings screensG2Invalid unsupported settings cannot persist; risky display changes can revert safely.Not started
UI-FE-001G5C++Create frontend root and Main Menu activatable screen.Menu C++ bases + WBP_MainMenuG1/G2Continue disabled with reason when no world; Feedback opens external URL only after valid config.Not started
UI-FE-002G5BackendImplement local world/save index and last-world pointer.Persistence service + FWorldSaveSummaryTBD-HUD-UI-003 for process topologyCreate/list/open/error semantics work without UI owning save bytes.Blocked
UI-FE-003G5C++Create Save World Select screen and Continue routing.LambeerSaveWorldScreen.*, WBP_SaveWorldSelectUI-FE-002Start SP always opens selection; Continue enters remembered valid world.Not started
UI-FE-004G5BackendCreate online session/server-browser adapter.Session subsystem + FServerBrowserEntryOnline platform integrationOfficial/community, favorites, ping, population, search/filter metadata and errors supplied.Not started
UI-FE-005G5C++Create Server Browser screen with cancellable refresh/join flow.LambeerServerBrowserScreen.*, WBP_ServerBrowserUI-FE-004Stale results, full server, version mismatch, timeout and disconnect are explicit.Not started
UI-FE-006G5BackendExpose character-per-server existence, creation commit and persisted-position entry state.Session/player persistence servicesNetwork/persistence backendExisting character skips creation/spawn town and enters persisted position.Not started
UI-FE-007G5EditorCreate missing WBP_CharacterCreation child and preview hierarchy./Game/Lambeer/UI/Menus/WBP_CharacterCreationExisting C++ base + G2Config soft path resolves; preset/hair/color preview and commit/cancel compile.User-only
UI-FE-008G5C++Configure Steam metadata and external Feedback URL.Config/platform settingsTBD-HUD-UI-004Invalid/missing URL is disabled with reason; no custom launcher/patcher.Blocked
UI-SYS-001G6BackendImplement persistent player/station crafting queues with immediate reservation and cancel refund.Crafting components/servicesTBD-HUD-UI-005 for destruction overflowEarlier queue entries reduce availability; logout/leave does not stop queue.Blocked
UI-SYS-002G6C++Create searchable recipe/detail/queue screen.LambeerCraftingScreen.*, WBP_CraftingUI-SYS-001Player source uses carried inventory; station source uses only station storage.Not started
UI-SYS-003G6BackendExpose building catalog, placement preview state, cost/tier/snap/rotation and failure code.Building system interfacesBuilding backendCommit is server validated; UI preview cannot authorize placement.Not started
UI-SYS-004G6EditorCreate build selection/action radial widgets.WBP_BuildRadial, WBP_BuildActionRadialUI-SYS-003Cost/tier/snap/rotation/failure and Upgrade/Repair/Demolish/Authorize visible contextually.User-only
UI-SYS-005G6BackendImplement pure magazine-plan expansion and authoritative load validation.Weapon/magazine types and testsWeapon backendHead→Loop→Tail order; capacity may stop mid-loop pattern; incompatible ammo rejected.Not started
UI-SYS-006G6C++Create workbench screen, 3D preview contract and magazine planner modal.LambeerWorkbenchScreen.*, target widgetsUI-SYS-005 + weapon actionsDefault drag order and advanced planner preview match server sequence.Not started
UI-SYS-007G6BackendExpose skill XP, level, progress and next-bonus data per character/server.Skill progression servicePhase-2 skill backendExact XP is authoritative; missing next bonus has explicit state.Not started
UI-SYS-008G6C++Create achievement catalog/progress/reward screen and unlock toast.Achievement screen/toastTBD-E2F4910CCannot finalize catalog/reward action until canonical decision resolves.Blocked
UI-SYS-009G6C++Create vehicle HUD adapter and widget.FVehicleHUDState, WBP_VehicleHUDVehicle backendDiegetic speed/RPM; overlay fuel/damage/gear/seats/access; storage via Inventory.Not started
UI-SYS-010G6C++Create boss health and inspected respawn-state presentation.WBP_BossHUD, marker interactionBoss backend + marker serviceTimer hidden before inspection; occupied state uses exact approved copy.Not started
UI-SOC-001G7BackendFinalize and implement clan naming/tag, promote/kick authority and log retention.Group registry/serviceTBD-HUD-UI-007Leader/Officer/Member permissions have server tests and audit semantics.Blocked
UI-SOC-002G7C++Create group screen: Create, Invite Inbox, roster, roles, activity log; no Search/Join.LambeerGroupScreen.*, WBP_ClanSquadUI-SOC-001Actor/action/target and death/online/offline entries render; permissions disable with reason.Not started
UI-SOC-003G7BackendProvide text chat channels Server/Proximity/Squad with moderation/error state.Chat serviceOnline backendChannel membership and rejected sends are authoritative.Not started
UI-SOC-004G7EditorCreate chat panel/entry/channel widgets.WBP_TextChatUI-SOC-003Keyboard/controller entry, unread state and channel switching work without focus trap.User-only
UI-SOC-005G7BackendExpose voice channel/PTT/speaker/per-player volume/mute/block state.Voice servicePlatform voice integrationPrivacy actions persist at intended scope; unavailable microphone is explicit.Not started
UI-SOC-006G7C++Create voice panel and world speaking indicator; retain no squad roster HUD.WBP_VoicePanel, speaking marker widgetUI-SOC-005Speaking state appears near character/map context without persistent roster panel.Not started
UI-ACC-001G8C++Implement semantic palette presets; never recolor raw meanings ad hoc.Theme/settings serviceG2 stylesColorblind modes preserve icon/text/shape redundancy.Not started
UI-ACC-002G8C++Implement subtitle presentation for English/Thai; no environmental captions.Subtitle widget/settingsLocalization/audio eventsSpeaker/text timing wraps without clipping at scale extremes.Not started
UI-ACC-003G8C++Connect Reduce Camera Shake and Disable Flashing (black instead of white) settings.User settings + camera/effect systemsGameplay VFX integrationEvery flash source follows centralized policy; critical information remains visible.Not started
UI-ACC-004G8C++Implement full rebind model, conflict detection and hold/toggle aim/crouch/sprint.Enhanced Input settings service/screensInput action inventoryBindings survive restart and glyph display updates from resolved mapping.Not started
UI-QA-001G8QAAdd C++ automation tests for pure contracts: magazine expansion, marker lifecycle, quick-slot validation, setting serialization and queue math.New test translation units under Source/LambeerCorresponding backend functionsTests pass in non-PIE automation run; no UI screenshot claim.Ready
UI-QA-002G8QAAdd static checks for forbidden HitMarker bindings, hard-coded user strings and invalid soft widget paths.Validation script/build checksG3–G7CI/local validation reports actionable file/path and exits non-zero on violation.Ready
UI-QA-003G8QARun complete manual PIE matrix from FEAT-HUD-UI.PIE checklist UI-001–012Only user may run PIEUser records results, build/config, screenshots and defect IDs.User-only
UI-QA-004G8QACompile Editor/Game/Server targets and run content validation + cook/package smoke.Project targets/contentAll required gatesNo missing classes/assets, redirector errors or uncooked UI dependencies.Not started
UI-QA-005G8QAVerify FHD/2K/4K, 16:10/21:9/32:9, EN/TH and KBM/Xbox/PlayStation matrix.Packaged/PIE buildsOnly user performs interactive verificationNo clipping, overlap, focus trap or unreadable semantic state; evidence retained.User-only

No tasks match the current filters.

Screen-to-Task Coverage Crosswalk

Screen IDs และหน้าที่เป็น canonical ใน FEAT-HUD-UI; ตารางนี้ชี้เฉพาะ implementation owner task และ gate เพื่อไม่ทำซ้ำ behavior specification

Screen IDTarget WidgetPrimary task(s)GateBackend condition
UI-SCR-MAINWBP_MainMenuUI-FE-001, UI-FE-008G5Local-world summary + configured Feedback URL
UI-SCR-SAVESWBP_SaveWorldSelectUI-FE-002, UI-FE-003G5Local save index
UI-SCR-SERVERWBP_ServerBrowserUI-FE-004, UI-FE-005G5Online session adapter
UI-SCR-CHARWBP_CharacterCreationUI-FE-006, UI-FE-007G5Character-per-server service
UI-SCR-SPAWNWBP_SpawnMapUI-CORE-004006G4/G5Authoritative spawn eligibility
UI-HUD-ROOTWBP_HUDRootUI-HUD-001014G3Per-source availability flags
UI-HUD-PROMPTWBP_InteractionPromptUI-HUD-012G3Structured interaction state
UI-HUD-BOSSWBP_BossHUDUI-SYS-010G6Boss/marker events
UI-HUD-VEHICLEWBP_VehicleHUDUI-SYS-009G6Vehicle state provider
UI-SCR-INVENTORYWBP_InventoryUI-CORE-001003, UI-HUD-010G4Inventory/equipment/held commands
UI-SCR-CONTAINERWBP_ContainerTransferUI-CORE-002, UI-CORE-003G4Two authoritative inventories
UI-SCR-CRAFTWBP_CraftingUI-SYS-001, UI-SYS-002G6Queue/reservation service
UI-SCR-BUILDWBP_BuildRadialUI-SYS-003, UI-SYS-004G6Placement preview/provider
UI-SCR-BUILD-ACTIONWBP_BuildActionRadialUI-SYS-003, UI-SYS-004G6Server-authorized target actions
UI-SCR-WORKBENCHWBP_WeaponWorkbenchUI-SYS-005, UI-SYS-006G6Weapon action/compatibility service
UI-SCR-MAGWBP_MagazineLoadPlannerUI-SYS-005, UI-SYS-006G6Magazine load validation
UI-SCR-MAPWBP_WorldMapUI-CORE-004, UI-HUD-007, 008G3/G4Marker registry
UI-SCR-SKILLSWBP_SkillsUI-SYS-007G6Skill progression service
UI-SCR-ACHIEVEWBP_AchievementsUI-SYS-008G6TBD-E2F4910C
UI-SCR-GROUPWBP_ClanSquadUI-SOC-001, UI-SOC-002G7TBD-HUD-UI-007
UI-SCR-CHATWBP_TextChatUI-SOC-003, UI-SOC-004G7Chat service
UI-SCR-VOICEWBP_VoicePanelUI-SOC-005, UI-SOC-006G7Platform voice service
UI-SCR-DEATHWBP_DeathRespawnUI-CORE-005, UI-CORE-006G4Death/loot/spawn services
UI-SCR-PAUSEWBP_PauseMenuUI-CORE-007G4Session-type authority
UI-SCR-SETTINGSWBP_SettingsUI-CORE-008, UI-ACC-001004G4/G8User settings/input services

Replication, Persistence & Security Rules

Client-only

  • Screen activation, focus and cursor
  • Map category visibility
  • HUD scale/safe zone/text size
  • Observed ammunition knowledge cache
  • Transient blood/wet timelines

Server-authoritative

  • Inventory/equipment/held item mutation
  • Craft reservation/queue/cancel
  • Building commit/actions
  • Spawn eligibility and location
  • Group roles/logs
  • Achievements/rewards/statistics

Persistent scope

  • Character/server stats and achievements
  • Character/server persisted position
  • Player/station crafting queues
  • Local Single Player world index
  • User settings and rebinds
  • UI RPC requests carry stable IDs and expected version/revision where stale-selection risk exists; never trust client index alone.
  • Server rejection must trigger refresh from authoritative state and show a localizable reason.
  • Owner-only/private data is not replicated to unrelated players merely to simplify UI.
  • Death marker lifetime follows loot-bag entity state; it is not a separate permanent client marker.
  • Achievement unlock is idempotent; toast appears only after durable/authoritative acceptance.
  • Crafting reserve/refund must be transaction-safe against reconnect, retry and station destruction.

Performance & Failure Handling

ไม่มี numeric performance budget ที่อนุมัติ จึงใช้ structural rules และวัดจริงโดยไม่ตั้งตัวเลขเป้าหมายเอง

RiskImplementation controlEvidence
Per-frame HUD pollingBind GAS/component delegates; use Tick only for visual interpolation and only while visible.Unreal Insights trace + source review; no actor scans in widget Tick.
Large inventory/list rebuildDiff by stable IDs, virtualize long lists where supported, defer thumbnails and cancel stale requests.Profile worst verified inventory/catalog data when backend exists.
Map marker volumeCentral registry, category filtering before widget creation, pooled marker widgets and distance/viewport projection.Marker-count scenario derived from actual content; no invented count.
Soft asset load failureAsync load; loading/error state; no null dereference; log asset path once.Missing-asset test with one intentionally invalid development fixture.
Device hot-swapUpdate glyphs without rebuilding screen; restore focus by semantic control ID.User PIE device-switch matrix.
Network disconnect/stale actionCancel pending UI operation, return to safe frontend state, invalidate cached selection.Disconnect/reconnect test with recorded result.
Thai text expansionNo fixed text-width assumptions; wrapping/min-width/ellipsis only where full label is recoverable.EN/TH pseudo-long-string screen sweep.

Verification Strategy & Required Evidence

Automated/non-interactive checks

  • Editor/Game/Server C++ compile after each C++ gate.
  • Pure C++ automation tests for deterministic contracts and server validation boundaries.
  • Asset path/config validation for root, screen registry, input data, fonts and icons.
  • Repository search proving forbidden hit/headshot/kill marker APIs and bindings are absent.
  • Localization gather/report shows no unkeyed player-facing strings in the changed scope.
  • Cook/package smoke detects editor-only or missing soft references.

User-only Unreal Editor checks

  • Compile/save each Widget Blueprint after C++ parent change; resolve BindWidget names.
  • Run PIE checklist from PIE-UI-001…012.
  • Record resolution/aspect, language, device, SP/MP mode, result and evidence.
  • Only mark a gate verified after user-reported results are captured; agent must not infer a PIE pass.

Regression matrix

DimensionRequired variantsCore assertions
Resolution1920×1080, 2560×1440, 3840×2160Scale, readability, no clip/overlap
Aspect16:9, 16:10, 21:9, 32:9HUD uses actual viewport edges; center content remains stable
InputKBM, Xbox, PlayStationGlyph, focus, Back, context and tabs
LanguageEnglish, ThaiWrapping, fallback glyphs, subtitle readability
SessionSingle Player, listen/local development if applicable, dedicated multiplayerPause/input blocking, authority, reconnect
StateLoading, Ready, Empty, Error, Stale, DeniedNo blank or dead-end screen

Definition of Done per Screen

  • Screen ID and class/asset path match FEAT-HUD-UI; proposed asset is verified after creation.
  • All authoritative commands route through C++ service/component and handle rejection.
  • Loading/empty/error/denied states are designed where applicable.
  • Mouse, keyboard, Xbox and PlayStation navigation work; focus has a visible state and no trap.
  • English and Thai copy comes from localizable text; no clipping at supported scale/aspect.
  • Semantic state is conveyed by icon/shape/text as well as color.
  • Delegates are removed on deactivation/destruction; latent loads/callbacks cannot update a dead screen.
  • Automated checks pass where applicable; user-run PIE evidence is recorded.
  • Related canonical HTML docs are updated when implementation changes the contract.
  • Legacy asset/code is removed only after redirect/cook/regression gates pass.

Technical Decisions / Blocking TBDs

IDStatusAffects / decisionDoes not block
TBD-HUD-UI-001Resolved 2026-09-06Back Weapon 1–2 exclusively reserve display slots 1–2/internal indices 0–1; alternate bindings are rejected and no restore state exists.
TBD-HUD-UI-002Resolved 2026-09-06Google Sans is approved; 16 local TTFs have verified Thai coverage, embedded OFL metadata matches the official source, and RawResource/Fonts/Google_Sans/OFL.txt is retained. Target: /Game/Lambeer/UI/Common/Fonts/FF_UI_Primary.
TBD-HUD-UI-003OpenFinal SP authority startup/teardown implementationSave-list UI contract and session-agnostic screen stack
TBD-HUD-UI-004OpenSteam metadata and working Feedback actionMain Menu layout and disabled-state behavior
TBD-HUD-UI-005OpenStation-destruction refund overflow transactionQueue UI and ordinary cancel/refund path
TBD-E2F4910COpenFinal achievement entries, thresholds, reward payload/actionCatalog shell, progress component and unlock-toast contract
TBD-HUD-UI-007OpenClan naming/tag, promote/kick and log retention implementationGroup screen layout and confirmed invite roles
TBD-HUD-UI-008Resolved 2026-09-06Documented visual tokens, layouts, and 64-icon kit are approved for implementation.

Dependencies & Source of Truth

Plan source of truth: เอกสารนี้กำหนด implementation order, file impacts, gates และ verification evidence ส่วนพฤติกรรม player-facing ยังคง canonical ใน FEAT-HUD-UI และ gameplay authority/value อยู่ใน feature/technical docs ของระบบนั้น