跳转至

Ludo Atlas · 技术实现手册

定位:游戏程序员的工程手册,覆盖架构模式选型、核心系统实现要点、性能方法论、多平台适配、网络基础、工程基础设施、引擎概念对照。 配套:《避坑大全》(程序与架构章节)·《制作管理手册》·《资源大全》(工具与课程)· docs/engines/(12 条引擎轨道)。 原则:本手册给"选型判断与检查清单",具体代码实现随引擎生态变化,以官方文档与你的 Profiler 为准。


1. 架构模式选型

模式 解决什么 适用场景 避免
有限状态机 FSM 单一对象的行为切换 角色控制、UI 流程、Boss 阶段 状态爆炸(>10 个状态时升级)
分层状态机 HFSM 状态分组复用 复杂角色(移动/战斗/受击分层) 小项目过度设计
行为树 BT 可组合的 AI 决策 敌人 AI、NPC 行为 需要高频动态变化时(改树成本高)
GOAP / 效用 AI 目标驱动的动态计划 沙盒/模拟类 NPC 表现力优先的项目(选择成本高)
ECS 数据局部性、海量实体 模拟、弹幕、大世界 小项目(样板代码成本 > 收益)
事件驱动/信号 模块解耦 成就、UI 通知、音效触发 事件链过长无人能懂(限制层级)
命令模式 输入记录/回放/撤销 回放、撤销、网络输入流 无回放需求时纯增加抽象
数据驱动/资源管线 非程序员调数值/内容 量产期全部项目 无工具链时的假数据驱动(表没人维护)

选型心法:按"当前团队规模 × 变更频率"选;模块边界清晰比模式先进重要;抽象多一层,先问它会省掉哪三处重复。

2. 核心系统实现要点(跨引擎清单)

2.1 输入系统

  • 动作映射层(逻辑动作 Jump ↔ 物理按键),为按键重映射与多设备提供基础。
  • 输入缓冲:缓存 100-200ms 的跳跃/攻击输入;组合输入(双击冲刺)要防误触。
  • 输入与帧解耦:在 Update 收集、物理步执行;录制输入流(回放/测试自动化)。

2.2 角色控制

  • 参数分离:最大速度 / 加速度 / 减速度 / 空中控制 / 重力(上升/下落分开),这些是手感调参的核心旋钮。
  • 跳到"宽容期":土狼时间 80-150ms + 预输入缓冲;落地判定用射线/形状而非纯碰撞事件(防穿透)。
  • 状态机化(Idle/Move/Jump/Fall/Attack/Hit…),状态切换防抖(优先级 + 锁定窗口)。

2.3 相机系统

  • 跟随:目标点 + 前瞻(朝移动方向偏移);死区(小动不移动相机);平滑(指数趋近 > 弹簧 > 插值硬调)。
  • 边界与室内:相机约束区(volumes)、房间切换;缩放(战斗拉远/探索拉近)。
  • 震屏:位移/旋转/缩放三类,叠加规则要限幅;必须提供关闭选项(可访问性)。
  • 相机是"第二个玩家",它的体验优先级仅次于角色操作。

2.4 存档系统

  • 结构:版本号 + 数据块 + 校验;只存状态不存对象引用;序列化用引擎推荐格式(JSON/二进制按体量)。
  • 版本迁移:每次改存档结构写迁移函数(v1→v2→v3 链式);上线前测试"旧档→新版本"路径(见《避坑大全》存档坑)。
  • 原子写入:先写临时文件再替换,防写入中断坏档;云存档需要冲突合并策略(时间戳/手动选择)。

2.5 对象池与实例化

  • 高频生成销毁(子弹/特效/敌人)一律池化;预热峰值数量;池溢出策略(拒绝/扩容/降级)明确定义。

2.6 UI 架构

  • 视图与数据分离(被动视图);导航栈管理(返回键/手柄 B 键);弹窗优先级与输入吞噬规则。
  • 多分辨率:锚点 + 安全区 + 缩放策略(见 §4);文本溢出(多语言长度 +30%)提前测试。

2.7 音频系统(程序视角)

  • 播放总线:Master → BGM/SFX/Voice/UI 分组;分组音量独立可调。
  • 播放接口事件化(PlayEvent("hit_metal") 而非直接塞文件);并发上限与优先级(重要音效不被淹没)。
  • 池化与流式:短音效内存缓存,长音乐流式;随机化(音高/素材变体)防"复读机感"。

2.8 本地化系统

  • 字符串键值外置(禁止硬编码可见文本);支持复数/性别/词序占位符;字体回退链(CJK/西文/emoji)。
  • 布局弹性:允许文本区域扩展;伪本地化(伪语言测试)提前暴露排版问题。

2.9 时间与更新

  • 固定时间步物理 + 可变渲染帧;逻辑用 delta time 或固定 tick(网络游戏慎用可变 delta)。
  • 全局暂停系统:单一暂停源管理(时间缩放要处理音频/动画/粒子)。

2.10 随机数

  • 所有随机走可控种子(调试可复现);避免直接用全局随机;网络同步需要确定性随机时,用自行实现的 PRNG。

3. 性能工程方法论

3.1 预算制

  • 先定预算再开发:帧预算(16.6ms@60fps / 33ms@30fps 的分配表)、内存预算(分平台)、包体预算、加载时间预算。
  • 每个资产类别有配额(纹理 MB、音效 MB、动画文件数),超预算即警告(进 CI 更好)。

3.2 测量工具

工具 用途
引擎内置 Profiler(Unity Profiler / Godot Profiler / Unreal Insights) CPU/GPU/内存总览
RenderDoc / Nsight / PIX 抓帧、GPU 管线分析
平台工具(Xcode Instruments / Android Studio Profiler) 真机 CPU/内存/电量
云真机(WeTest/Testin) 设备矩阵批量测试

原则:没有测量不做优化;优化前后记录数据;真机 > 编辑器(编辑器数据常常失真)。

3.3 常见热点与对策

热点 症状 对策
Draw Call 过多 GPU 等待、CPU 提交忙 合批(批处理/图集/合网格)、减少材质切换
Overdraw 移动端发热掉帧 减少全屏半透明、UI 遮罩滥用、粒子密度
GC 停顿(C#/Java) 周期性卡顿 对象池、避免每帧分配、结构体化数据
物理开销 大量刚体/复杂碰撞 分层碰撞过滤、睡眠体、简化碰撞体、降低物理频率
加载卡顿 进入场景卡住 异步加载、分帧实例化、预加载策略
纹理内存 移动端 OOM 压缩格式(ASTC/ETC2)、Mipmap、按需流式

3.4 移动端专项清单

目标机型分档(低/中/高端);温控策略(发热降频预案);电量(后台行为);内存水位(系统 OOM 杀进程防御);首包体与下载转化(分包/资源外置)。

4. 多平台与适配

  • 输入抽象层:逻辑动作 ↔ 设备(键鼠/手柄/触屏/触控笔);手柄提示图标按设备切换(Xbox/PS/Switch)。
  • 分辨率与安全区:UI 锚点策略(对齐边角/比例缩放)、刘海屏安全区、超宽屏(21:9)与 4K 支持清单。
  • 平台差异核对表:存档路径规范、权限申请、生命周期(后台挂起/恢复)、多用户切换(主机)、系统语言读取。
  • 平台能力接入:成就、云存档、排行榜、好友、手柄体感,按平台 SDK 清单逐项打勾(对照《全平台上架手册》)。
  • 构建矩阵:Windows/macOS/Linux + 主机 + iOS/Android + Web,CI 每平台至少每日一构建(见 §6)。

5. 网络与多人基础(入门地图)

模型 原理 适合 代价
状态同步(服务器权威) 服务器跑逻辑,客户端发送输入+渲染 大多数联机游戏 服务器成本;需要预测/插值抗延迟
帧同步(Lockstep) 只同步输入,各端确定性重演 RTS、部分 MOBA 必须完全确定性;掉线重连难
P2P(无服务器) 玩家之间直连 小规模合作 NAT 穿透复杂;作弊难防
异步联机 非实时数据交换 排行榜、幽灵数据 不解决实时需求
  • 延迟工具箱:客户端预测(本地先演)、服务器回滚、插值渲染(他人平滑)、延迟补偿(命中回溯)。
  • 服务器形态:专用服务器 vs 对战托管(PlayFab/Photon/腾讯 GSE 等,见《资源大全》§8.1);房间制 + 匹配服务 + 断线重连是联机功能最小集。
  • 反作弊入口:关键经济与战斗判定服务器权威化;客户端只做表现;接入反作弊系统(早期,见《避坑大全》)。
  • 深潜:Gaffer On Games 网络系列(《资源大全》§3.1)。

6. 工程基础设施

项 最小实践 进阶
版本控制 Git + Git LFS(二进制资产);提交信息规范 分支策略(主干+特性分支)、锁文件
CI/CD 每日自动构建 + 冒烟测试;产物可下载 自动打包上传(Steam/TestFlight)、性能基准回归
测试 关键逻辑单元测试;headless 冒烟(启动→进场景→模拟操作) 视觉回归截图对比;设备矩阵云测
日志与监控 分级日志 + 崩溃上报(含符号表) 线上指标看板(崩溃率/卡顿率)
文档 README + 架构概览 + ADR(决策记录) 新人 30 分钟可跑起来

7. 代码质量与协作

  • 评审清单:是否符合项目命名/结构规范?错误处理与边界?性能敏感路径有测量吗?可测试性?新增依赖的许可证核对(见《法务、专利与竞争手册》)?
  • 命名与组织:领域词表(游戏术语统一:Enemy/Turret/Projectile),目录按领域而非类型(combat/ 优于 scripts/)。
  • ADR(架构决策记录):每个重大技术选型写一页(背景/选项/决定/后果),半年后的你会感谢现在。
  • AI 辅助编程边界:生成代码必须过评审与测试;核心系统要求可解释;工具链与权限见《AI 工作流手册》与《AI 智能体》(含引擎 MCP 安全模型)。

8. 引擎概念对照表(Unity / Godot / Unreal)

概念 Unity Godot 4 Unreal
对象 GameObject Node Actor
组件/行为 Component (MonoBehaviour) Node 脚本(_ready/_process) Component
组合容器 Prefab PackedScene Blueprint / Level
场景 Scene Scene (tscn) Level / Map
脚本语言 C# GDScript / C# C++ / Blueprint
事件/消息 UnityEvent / C# event Signal Delegate / Event Dispatcher
协程/异步 Coroutine / async-await await / 信号 蓝图延迟 / Async
物理 PhysX / Box2D Godot Physics (Jolt 可选) Chaos
UI UGUI / UI Toolkit Control 节点 UMG
资源导入 Importer 设置(.meta) .import 文件 Import 设置
打包 Build Profiles Export Templates Packaging
服务 Unity Services 第三方 EOS / 自建

用途:跨引擎迁移与阅读对方教程时的翻译表;差异细节以各引擎版本官方文档为准。

9. 学习路线与延伸

  1. 语言与引擎基础 → 做 3 个小游戏(覆盖:2D 移动、物理、UI、存档)。
  2. 本手册 §2 逐系统实现一遍(每个系统做最小可玩 demo)。
  3. 用 Profiler 优化一个"故意写坏"的场景(性能直觉训练)。
  4. 做一个联机 demo(房间 + 同步 + 重连三件套),体会网络思维。
  5. 完整项目:进《制作管理手册》,把工程基础设施(§6)拉满,走一次发布全流程。

  6. 课程与工具见《资源大全》§1-§3;引擎专项见 docs/engines/。