游戏模块化核心(引擎无关)
面向各类实时游戏(侧视/俯视角 2D、第三人称或第一人称 3D 等):把重复逻辑抽成可组合能力与全局子系统,业务层只拼装参数与关卡规则。下文不绑定具体引擎 API,仅以职责与数据流描述;维度差异主要体现在运动与探测的数据结构(平面向量 vs 空间向量、形状 cast 的维数),模块边界相同。
为何拆分与依赖方向
- 复用:玩家、NPC、敌人共享同一套运动、生命、受击反馈,避免复制粘贴。
- 可测:子系统边界清晰,便于单测与替换实现(例如换存档格式不改玩法代码)。
- 依赖建议:玩法业务 → 角色基础能力 → 全局子系统 → 数学与工具。禁止工具层反向依赖具体关卡类名。
状态机(横切):常见两层——全局游戏状态(主菜单、暂停、过场)与实体行为状态(待机、移动、攻击、硬直)。状态机负责「合法转移与当前意图」,具体运动数值、动画片段、碰撞开关交给下层模块执行,避免状态类膨胀。
一、角色层(与状态机配套)
1. 运动能力模块
职责:位移与速度积分、重力或自定义加速度、跳跃/升空/贴地等支撑判定、速度插值、空中阻尼等「每帧积分」的单一出口。3D 下补充地面法线、斜坡滑动、角色控制器与动画根运动(若使用)的协调点。
输入:意图(轴/向量输入、动作键)、物理或运动学查询结果(是否着地、法线)、全局时间缩放。
输出:本帧位移或速度、着地/离地事件(用于动画与音效)。
玩家、NPC、敌人共用同一套运动参数表(加速度、最大速度、跳跃/推力曲线),差异用数据驱动而非复制逻辑。
2. 动画驱动模块
职责:把「当前状态 + 运动语义」映射为播放片段;朝向/面向(2D 翻转或 3D 根旋转/瞄准骨);事件帧回调(出刀帧、脚步音效);播放锁与防打断优先级。
输入:状态机或上层给出的动画请求(含优先级)。
输出:对渲染/骨骼层的播放指令。
状态机只发「意图」,由动画模块解决冲突与混合(blend),二者解耦。
3. 生命体组件
职责:生命、护盾、无敌时间窗、受伤闪烁、死亡流程(播死亡动画、触发掉落、延迟销毁)。
输入:伤害事件(数值、类型、击退向量、来源阵营)。
输出:死亡/击晕等高层事件供关卡与 UI 订阅。
做成可挂载的能力单元,任意可受伤实体复用。
4. 战斗能力模块
职责:攻击冷却、前摇后摇窗口、攻击体(形状与时序)、伤害结算、连招槽位、攻击优先级、友军/阵营过滤。
输入:攻击指令、目标查询接口。
输出:命中列表、是否被格挡/无敌吞掉。
与生命体通过事件或消息总线交互,避免循环引用。
5. 探测与碰撞语义
职责:支撑物检测、头顶/体前遮挡、斜坡法线(2D/3D 各自用线段/射线/形状 cast);身体碰撞、攻击体、交互触发体分层与标签。
输出:布尔标志与法线/距离/命中体引用,供运动与战斗消费。
同一逻辑体多形状时,用语义标签区分用途,避免魔法数字层号散落。
二、全局系统层(单例或服务定位器)
1. 输入门面
统一读取硬件/虚拟摇杆;按键重映射表;输入上下文栈(UI 打开时吞掉移动键);全局禁用输入(过场、对话)。
换平台时只改这一层,玩法代码只依赖抽象「行动」枚举或轴向量。
2. 资源与缓存
预加载关卡所需贴图、模型、音频、预制数据;引用计数或弱缓存;场景切换时的卸载策略;异步加载与失败重试。
防止同资源多路径重复加载造成卡顿与内存峰值。
3. 音频总线
背景音乐与音效分轨;主音量与分类音量;同类音效并发上限与短间隔节流,防止爆音;全局静音与持久化音量设置。
4. 场景流
关卡切换、淡入淡出、异步加载与进度回调、重开当前关、回主菜单;加载期间的输入与渲染策略(冻结或显示占位)。
5. 存档系统
版本化 schema(字段增删兼容);玩家进度、货币、解锁标记;自动档与手动档槽位;可选轻量混淆或校验和防篡改(按项目威胁模型)。
6. 时间与调度
全局时间缩放、暂停(区分「冻结模拟」与「仅冻结 AI」);一次性延时、周期 Tick、帧延迟任务集中注册,避免在业务里散落计时器句柄。
三、UI 层
1. 界面栈管理
打开/关闭弹窗、模态层级、焦点与导航(手柄/键盘);全屏遮罩与过渡动画统一入口。
2. 飘字与浮动提示
伤害数字、拾取提示:统一预制数据(字体、抛物线、生命周期),对象池生成,避免频繁分配。
3. 计量条组件
生命、耐力、技能冷却:数据绑定约定(当前值/最大值/预测值),皮肤与布局可换皮,逻辑只写一次。
四、工具层
1. 数学库
向量插值、角度差规范化、随机区间、平滑阻尼(smooth damp)、夹紧与曲线采样(运动、相机)。
2. 场景图 / 对象树辅助
安全查找子树、按组件类型收集、延迟销毁队列、实例化与初始化顺序约定(避免在构造期访问未就绪依赖)。
3. 相机装置
跟随目标、死区与 lookahead、平滑插值、震动(屏幕后处理或镜头偏移)、世界边界与视距/缩放策略;必要时与关卡体积或遮挡体数据联动。
4. 粒子与特效池
特效生成、回收、池容量上限;与「资源管理器」协同加载贴图与材质。
五、物理与玩法规则
1. 掉落物管线
生成位置与初速度、短暂物理弹跳、磁铁吸附范围、拾取判定、超时消失与池回收。
2. 可交互协议
宝箱、对话点、机关统一暴露「可交互」接口:进入范围、按下交互键、条件检查(钥匙/任务标记)、成功/失败反馈。
3. AI 行为基类
巡逻、追逐、逃离、待机、警戒半径等参数化策略;感知(视锥/距离/听觉)与寻路或转向结果作为输入;与实体状态机协作:AI 输出「意图」,状态机裁决是否允许进入追击等状态。
六、分层总览
- 工具层:数学、场景图辅助、时间、随机。
- 全局系统层:输入、资源、音频、场景流、存档、特效池。
- 角色基础层:状态机 + 运动 + 动画 + 生命 + 战斗 + 探测语义。
- AI 层:通用感知与行为策略基类。
- UI 层:界面栈、飘字、计量条。
- 业务层:具体玩家技能、关卡脚本、任务与叙事——只拼装参数与规则,不实现底层循环。
坚持单向依赖后,换引擎时优先替换「渲染与物理适配层」,核心模块可整体迁移思路。