Expand architecture plan for online ACT prototype

This commit is contained in:
2026-06-09 14:17:58 +08:00
parent 47936abed0
commit c1096f0ed5
+171 -1
View File
@@ -14,12 +14,22 @@ mindmap
近战连段 近战连段
关卡节奏 关卡节奏
游戏循环 游戏循环
登录入口
房间匹配
进入关卡 进入关卡
探索与移动 探索与移动
触发战斗区域 触发战斗区域
击败敌人 击败敌人
解锁推进 解锁推进
局内重置
结算与升级 结算与升级
底层框架
客户端服务端分离
基础热更
日志输出
异常捕获
资源异步加载
容错兜底
角色系统 角色系统
玩家 玩家
输入 输入
@@ -28,12 +38,14 @@ mindmap
攻击 攻击
受击 受击
动画状态机 动画状态机
血量
敌人 敌人
巡逻 巡逻
追击 追击
攻击 攻击
受击硬直 受击硬直
死亡 死亡
固定数值
NPC与可交互物 NPC与可交互物
对话 对话
机关 机关
@@ -70,11 +82,21 @@ mindmap
关卡配置 关卡配置
攻击配置 攻击配置
掉落配置 掉落配置
联网原型
房间匹配
2到4人联机
玩家状态同步
战斗同步
怪物同步
断线检测
简易重连
工具与调试 工具与调试
白盒编辑 白盒编辑
碰撞可视化 碰撞可视化
战斗区域可视化 战斗区域可视化
Hitbox可视化 Hitbox可视化
联机状态提示
简单调试面板
帧率与日志 帧率与日志
构建文档 构建文档
NS平台构建 NS平台构建
@@ -104,6 +126,12 @@ mindmap
+----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+
| Data | ---> | Debug | ---> | Build | | Data | ---> | Debug | ---> | Build |
| 配置表/关卡/参数 | | 可视化/日志/测试 | | PC/Switch/资源复制 | | 配置表/关卡/参数 | | 可视化/日志/测试 | | PC/Switch/资源复制 |
+----------------------+ +----------------------+ +----------------------+
|
v
+----------------------+ +----------------------+ +----------------------+
| Foundation | ---> | UI | ---> | Network |
| 日志/异常/热更/加载 | | 登录/匹配/状态/调试 | | 房间/同步/断线重连 |
+----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+ +----------------------+
``` ```
@@ -144,6 +172,7 @@ mindmap
- 装载关卡数据。 - 装载关卡数据。
- 创建玩家、敌人、道具和场景对象。 - 创建玩家、敌人、道具和场景对象。
- 控制镜头、战斗区域、关卡推进。 - 控制镜头、战斗区域、关卡推进。
- 支持单局场景重置:重置玩家、敌人、battle zone、掉落和临时状态。
已有: 已有:
@@ -155,6 +184,7 @@ mindmap
- 抽象 `GameplayScene` 作为通用玩法场景基类。 - 抽象 `GameplayScene` 作为通用玩法场景基类。
- `WhiteboxScene` 只保留第一关测试内容。 - `WhiteboxScene` 只保留第一关测试内容。
- 引入 battle zone 触发逻辑。 - 引入 battle zone 触发逻辑。
- 增加局内 reset 入口,用于卡状态、死亡重开和联机重同步。
### 3. Stage ### 3. Stage
@@ -184,6 +214,7 @@ mindmap
- 表达游戏对象:玩家、敌人、道具、投射物、可破坏物。 - 表达游戏对象:玩家、敌人、道具、投射物、可破坏物。
- 每个 Actor 只处理自身状态,不直接管理全局流程。 - 每个 Actor 只处理自身状态,不直接管理全局流程。
- 玩家和怪物都要支持血量、受击、击退、死亡/销毁基础生命周期。
已有: 已有:
@@ -194,6 +225,7 @@ mindmap
- 增加 `EnemyActor` - 增加 `EnemyActor`
- 增加 `BreakablePropActor` - 增加 `BreakablePropActor`
- 抽出 `CharacterActor` 作为玩家和敌人的共同基类。 - 抽出 `CharacterActor` 作为玩家和敌人的共同基类。
- 增加 `HealthComponent` 或等价数据结构,统一玩家/怪物血量与死亡判定。
- 将玩家动画切换改为数据驱动。 - 将玩家动画切换改为数据驱动。
### 5. Movement ### 5. Movement
@@ -201,7 +233,9 @@ mindmap
职责: 职责:
- 处理速度、重力、平台落地、边界限制。 - 处理速度、重力、平台落地、边界限制。
- 支持横版手感:左右平移、加速、移动减速、单次跳跃、重力落地、空中姿态锁定。
- 后续支持斜坡、墙体、击退、空中状态。 - 后续支持斜坡、墙体、击退、空中状态。
- 兜底防卡:防卡地形、防穿模、异常位置重置。
已有: 已有:
@@ -212,9 +246,11 @@ mindmap
下一步: 下一步:
- 支持水平墙体阻挡。 - 支持水平墙体阻挡。
- 支持移动加速/减速参数。
- 支持击退速度覆盖。 - 支持击退速度覆盖。
- 支持落地事件。 - 支持落地事件。
- 支持移动调试可视化。 - 支持移动调试可视化。
- 增加卡地形检测和安全出生点/检查点回退。
### 6. Combat ### 6. Combat
@@ -222,6 +258,8 @@ mindmap
- 管理攻击盒、受击盒、伤害结算、击退、硬直、命中特效。 - 管理攻击盒、受击盒、伤害结算、击退、硬直、命中特效。
- 保证战斗逻辑不散落在 Actor 内部。 - 保证战斗逻辑不散落在 Actor 内部。
- 表达普通攻击前摇/后摇、命中窗口、固定伤害数值、受击反馈。
- 支持跨玩家攻击命中和怪物状态同步的网络事件接口。
已有: 已有:
@@ -232,6 +270,8 @@ mindmap
- 增加 `CombatSystem` - 增加 `CombatSystem`
- 每帧收集 active hitbox / hurtbox。 - 每帧收集 active hitbox / hurtbox。
- 支持 team 过滤、重复命中过滤、伤害事件。 - 支持 team 过滤、重复命中过滤、伤害事件。
- 增加攻击前摇/后摇时间线。
- 增加伤害、击退、僵直和血量变化事件。
- 增加 debug hitbox 绘制。 - 增加 debug hitbox 绘制。
### 7. Animation ### 7. Animation
@@ -240,6 +280,7 @@ mindmap
- 管理 spritesheet 帧、动画状态、播放速度、循环和过渡。 - 管理 spritesheet 帧、动画状态、播放速度、循环和过渡。
- 避免每个 Actor 手写帧切换。 - 避免每个 Actor 手写帧切换。
- 与动作状态机配合,保证 idle/移动/跳跃/攻击/受击 状态互斥,杜绝动作冲突。
当前状态: 当前状态:
@@ -249,6 +290,7 @@ mindmap
- 增加 `AnimationClip` - 增加 `AnimationClip`
- 增加 `SpriteAnimator` - 增加 `SpriteAnimator`
- 增加 `CharacterStateMachine`,管理 idle/move/jump/attack/hitstun/dead。
- 增加动画配置表。 - 增加动画配置表。
- 攻击动画和 hitbox active frame 绑定。 - 攻击动画和 hitbox active frame 绑定。
@@ -258,6 +300,8 @@ mindmap
- 将玩法参数从 C++ 硬编码逐步迁移到数据。 - 将玩法参数从 C++ 硬编码逐步迁移到数据。
- 支持关卡、敌人、动画、攻击、掉落配置。 - 支持关卡、敌人、动画、攻击、掉落配置。
- 支持角色/怪物血量、伤害、速度、追击范围等固定数值配置。
- 支持后续热更清单:资源版本、配置版本、加载失败兜底资源。
当前状态: 当前状态:
@@ -268,6 +312,7 @@ mindmap
- 先用 C++ struct 稳定字段。 - 先用 C++ struct 稳定字段。
- 再迁移到 JSON 或编辑器导出格式。 - 再迁移到 JSON 或编辑器导出格式。
- 资源路径统一记录,避免散落字符串。 - 资源路径统一记录,避免散落字符串。
- 增加配置默认值和缺失字段兜底。
### 9. Render 与资源 ### 9. Render 与资源
@@ -275,6 +320,8 @@ mindmap
- 绘制角色、关卡、背景、道具、特效和调试图形。 - 绘制角色、关卡、背景、道具、特效和调试图形。
- 管理资源目录和运行时拷贝。 - 管理资源目录和运行时拷贝。
- 支持场景、角色、贴图的极简异步加载。
- 加载失败时使用占位图/色块兜底,避免场景直接崩溃。
已有: 已有:
@@ -288,6 +335,8 @@ mindmap
- 引入 tileset、背景、props。 - 引入 tileset、背景、props。
- 增加视差背景绘制。 - 增加视差背景绘制。
- 建立素材来源和授权记录。 - 建立素材来源和授权记录。
- 增加 `AssetManifest`,记录 stage/character/effect 资源槽位。
- 增加异步加载队列和加载中/加载失败调试提示。
### 10. Debug 与工具 ### 10. Debug 与工具
@@ -295,6 +344,8 @@ mindmap
- 提供开发时必要的可视化和状态观察。 - 提供开发时必要的可视化和状态观察。
- 降低调试碰撞、战斗和关卡触发的成本。 - 降低调试碰撞、战斗和关卡触发的成本。
- 输出基础日志、异常捕获信息、资源加载失败原因、联机状态。
- 提供简单调试面板:FPS、场景、玩家状态、网络状态、重置按钮。
下一步: 下一步:
@@ -303,6 +354,8 @@ mindmap
- 绘制平台碰撞、battle zone、camera lock 和 spawn point。 - 绘制平台碰撞、battle zone、camera lock 和 spawn point。
- 绘制 hitbox / hurtbox。 - 绘制 hitbox / hurtbox。
- 输出当前场景、角色状态、FPS。 - 输出当前场景、角色状态、FPS。
- 增加日志分级和异常状态重置入口。
- 增加网络延迟、房间号、连接状态显示。
### 11. Platform ### 11. Platform
@@ -310,6 +363,7 @@ mindmap
- 保持 PC 和 NS 共用游戏逻辑。 - 保持 PC 和 NS 共用游戏逻辑。
- 只在入口、构建、资源部署、平台输入处做差异化。 - 只在入口、构建、资源部署、平台输入处做差异化。
- 为后续客户端/服务端分离保留平台抽象:本地单机、局域网、公网房间都走统一会话接口。
已有: 已有:
@@ -323,6 +377,102 @@ mindmap
- 在 Ryujinx 或真机上验证主循环、shader 和角色纹理。 - 在 Ryujinx 或真机上验证主循环、shader 和角色纹理。
- 如果 RomFS 不可用,再补 SD 卡外部资源部署脚本。 - 如果 RomFS 不可用,再补 SD 卡外部资源部署脚本。
### 12. Foundation
职责:
- 建立底层框架基础:客户端/服务端分离思路、日志、异常捕获、热更清单、资源加载兜底。
- 单机开发阶段先以本地会话模拟服务端,后续再替换为真实网络服务端。
- 所有系统要能在异常状态下恢复到可继续测试的状态。
当前状态:
- 已有 PC/Switch 构建入口。
- 已有资源工作目录和 RomFS/SDMC 基础路径。
- 还没有独立日志系统、异常捕获边界、热更 manifest。
下一步:
- 增加 `GameSession`:本地单机/联机都通过同一会话驱动场景。
- 增加 `AssetManifest`:记录资源版本、资源槽位和 fallback。
- 增加统一日志输出入口,至少支持 info/warn/error。
- 增加异常状态重置入口:位置异常、状态卡死、资源加载失败。
### 13. UI
职责:
- 提供基础 UI:登录入口、房间匹配、联机状态提示、简单调试面板。
- 原型期 UI 不追求美术,只要求流程可达、状态清楚、可调试。
当前状态:
- 还没有游戏层 UI。
下一步:
- 增加 `LoginScene` 或入口面板:本地游玩、创建房间、加入房间。
- 增加 `RoomPanel`:显示房间号、玩家列表、准备状态。
- 增加 `NetworkStatusPanel`:显示连接状态、延迟、断线/重连状态。
- 增加 `DebugPanel`:显示 FPS、场景名、玩家状态、怪物数量、重置按钮。
### 14. Enemy AI
职责:
- 实现极简怪物 AI:固定巡逻、玩家进入范围追击、近战攻击、受击掉血、死亡销毁。
- 怪物行为要能被 battle zone 控制生成和清场。
当前状态:
- 还没有 `EnemyActor`
下一步:
- 增加 `EnemyActor`idle/patrol/chase/attack/hitstun/dead。
- 增加巡逻范围、追击范围、攻击范围、血量、伤害配置。
- 接入 `BattleZone` 的 spawn point。
- 预留网络同步字段:位置、状态、血量、目标玩家。
### 15. Networking
职责:
- 多人网游原型核心:局域网/公网极简房间匹配,支持 2 到 4 人联机。
- 服务端同步所有玩家位置、动作状态、血量状态。
- 同步跨玩家攻击命中、怪物状态、清场进度。
- 支持断线检测、简易重连、网络延迟适配。
当前状态:
- 还没有网络模块。
- 先不阻塞场景和 ACT 手感开发,但架构上要预留服务端权威状态。
下一步:
- 增加 `NetworkSession` 接口:offline/local/online 三种模式。
- 增加 `PlayerStateSnapshot`:位置、速度、动作状态、血量、朝向。
- 增加 `CombatEvent` / `EnemyStateSnapshot`:攻击命中、怪物状态、死亡事件。
- 增加断线检测和重连状态机。
### 16. Game Loop Closure
职责:
- 做单局闭环:进入场景 -> 战斗交互 -> 怪物清空 -> 局内重置。
- 做核心 bug 兜底:防卡地形、防穿模、防状态卡死、异常状态重置。
当前状态:
- 当前只有进入白盒场景和玩家移动。
下一步:
- 增加 `RunState`loading/playing/cleared/failed/resetting。
- 增加局内重置:重置玩家、怪物、battle zone、摄像机和临时效果。
- 增加安全点:玩家卡地形或掉出世界时回到最近检查点。
- 增加状态超时兜底:攻击/受击/重连状态超过上限自动恢复。
## 数据流白板 ## 数据流白板
```text ```text
@@ -368,21 +518,27 @@ mindmap
目标:验证 ACT 基础手感。 目标:验证 ACT 基础手感。
- 基础日志、资源加载兜底和调试面板可用。
- 玩家移动、跳跃、出拳稳定。 - 玩家移动、跳跃、出拳稳定。
- 第一关横向推进可从头跑到尾。 - 第一关横向推进可从头跑到尾。
- battle zone 可触发、锁镜头、解锁。 - battle zone 可触发、锁镜头、解锁。
- 有 1 种敌人占位。 - 有 1 种敌人占位。
- 有 hitbox/hurtbox debug。 - 有 hitbox/hurtbox debug。
- 有局内重置入口,能重置玩家、怪物、battle zone 和摄像机。
### Milestone 2:灰盒战斗验证 ### Milestone 2:灰盒战斗验证
目标:验证清版节奏。 目标:验证清版节奏。
- `CharacterStateMachine` 管理 idle/move/jump/attack/hitstun/dead。
- 玩家 2 到 3 段基础连击。 - 玩家 2 到 3 段基础连击。
- 攻击前摇/后摇和命中窗口可配置。
- 受击僵直、击退、血量变化可见。
- 敌人追击、攻击、受击、死亡。 - 敌人追击、攻击、受击、死亡。
- 每个 battle zone 有敌人波次。 - 每个 battle zone 有敌人波次。
- 有简单掉落或奖励。 - 有简单掉落或奖励。
- 关卡能完整结算。 - 关卡能完整结算。
- 防卡地形、防穿模、防状态卡死有基础兜底。
### Milestone 3:第一关美术测试 ### Milestone 3:第一关美术测试
@@ -394,7 +550,18 @@ mindmap
- 保留 debug overlay。 - 保留 debug overlay。
- 记录素材来源和授权。 - 记录素材来源和授权。
### Milestone 4数据化 ### Milestone 4联机原型
目标:跑通 2 到 4 人多人原型。
- 有登录/入口 UI。
- 有创建房间、加入房间、玩家列表和准备状态。
- 支持局域网或公网极简房间匹配。
- 服务端同步玩家位置、动作状态、血量。
- 服务端同步怪物状态、攻击命中、清场进度。
- 有断线检测、简易重连和联机状态提示。
### Milestone 5:数据化与热更
目标:降低后续扩展成本。 目标:降低后续扩展成本。
@@ -402,11 +569,14 @@ mindmap
- 攻击参数数据化。 - 攻击参数数据化。
- 敌人参数数据化。 - 敌人参数数据化。
- 关卡数据逐步外部化。 - 关卡数据逐步外部化。
- 资源 manifest、配置版本和 fallback 规则可用。
## 当前优先级 ## 当前优先级
当前调整为先做场景。理由:先把第一关的世界宽度、分层数据、镜头范围、视觉层和 debug 标记搭起来,后续 `BattleZone`、敌人刷出和战斗系统才有稳定承载位置。 当前调整为先做场景。理由:先把第一关的世界宽度、分层数据、镜头范围、视觉层和 debug 标记搭起来,后续 `BattleZone`、敌人刷出和战斗系统才有稳定承载位置。
新增的底层框架、UI、联网和闭环兜底会作为架构约束提前预留接口,但短期实现仍以“场景骨架 -> ACT 手感 -> 单局闭环”为主。多人联网在 Milestone 4 集中实现,当前阶段只避免把玩法逻辑写死成无法同步的本地状态。
下一步建议按这个顺序做: 下一步建议按这个顺序做:
1. `CameraZoneLock`:让 battle zone 可以临时锁定摄像机范围,清场后恢复跟随。 1. `CameraZoneLock`:让 battle zone 可以临时锁定摄像机范围,清场后恢复跟随。