diff --git a/docs/superpowers/specs/2026-08-10-fighter3d-networked-minigame-design.md b/docs/superpowers/specs/2026-08-10-fighter3d-networked-minigame-design.md new file mode 100644 index 00000000..c79ca350 --- /dev/null +++ b/docs/superpowers/specs/2026-08-10-fighter3d-networked-minigame-design.md @@ -0,0 +1,52 @@ +# Fighter3D Networked MiniGame Design + +## Goal + +Implement a first playable networked 2.5D fighting mini game using the existing `XGame.MiniGame` hot-update framework. + +## Scope + +This version adapts `Doc/minigame/横版3D格斗小游戏_开发设计文档.md` into the networked mini game architecture described by `Client/Assets/Doc/MiniGameDevelopmentDesign.md`. + +The first deliverable is a server-authoritative MVP: + +- Two-player room through the existing gateway and room lifecycle. +- Pure C# shared Core with deterministic state, input, snapshot encoding, hit resolution, block, damage, KO, and timeout. +- Server room owns authoritative battle progression and accepts only player input intent. +- Client hot-update DLL displays server snapshots and sends local input. +- Publish metadata follows the existing `RockPaperScissors` mini game structure. + +## Architecture + +`Fighter3D.Core` contains no Unity references. It owns fighter state, frame stepping, input application, simple attack timing, block checks, damage, pushback, and binary snapshot codec. + +`Fighter3D.Server` implements `XWorld.Framework.IGameServerRoom`. It maps room players to seats, advances Core on room ticks, broadcasts snapshots, and ends the room when Core reaches KO or timeout. + +`Fighter3D.Client` implements `XWorld.Framework.IGameClient`. It loads a minimal UI asynchronously through `ctx.Assets.Load`, falls back to runtime-created UI if the prefab is missing, sends input commands through `ctx.Send`, and renders the latest server snapshot. + +## First-Playable Rules + +- Horizontal 2.5D lane with two mirrored fighters. +- Inputs: left, right, guard, light attack, heavy attack. +- Movement is server-authoritative with stage bounds and facing updates. +- Light and heavy attacks have startup, active, recovery, damage, hit stun, block stun, and pushback values. +- Guard succeeds only when the defender holds away from the attacker. +- KO ends the room and uses the winner player id for settlement. +- Timeout awards the win to the higher-health fighter, or a draw when tied. + +## Out Of Scope + +- Jumping, crouch, projectiles, command recognition, specials, supers, multi-hit moves, replay tooling, and polished 3D characters. +- Client-side authoritative combat decisions. +- New Unity-managed prefabs, materials, scenes, or binary assets created by hand. + +## Testing + +Core and server behavior will be covered by automated .NET tests before implementation: + +- Core movement clamps to stage bounds. +- Attack hit applies damage and enters stun. +- Holding away blocks and applies chip or no direct hit damage according to MVP rule. +- Server room broadcasts snapshots and ends with the expected winner on KO. + +Unity visual verification is limited to code compilation unless a running Editor is available through the Unity pipeline.