游戏框架:Unity 中的积累(Indra 项目实现方案)
ABSTRACT
个人框架设计笔记。规划把 Unity 项目中与游戏无关的通用部分(基于 GameFramework/UnityGameFramework)单向依赖地抽取为 DLL/代码库,经自研 CopyOutFW 工具同步到各项目;梳理 Procedure 启动状态机(含热更、断线重连回归点)、Resources/Scripts 目录治理,以及合并与构建系统的管理约定。
核心要点
- 通用层抽取:与游戏逻辑完全无关的部分(Laz、GameFramework、UnityGameFramework/Scripts/Runtime)做到完全单向依赖,抽成 DLL 库;CopyOutFW 工具负责检查目录、清空目标、拷贝同步到 Client。
- 拷贝三档:可选 DLL 或源码;Scripts/#appname/core 作为可集中转移代码的目录(FGUI 的 CommonUI/UIBase/UIManager 等都移入 Core);Editor、InputCtrl(依赖 Prefab)按需选择拷贝,注意替换 AppName 的 using。
- 启动流程状态机:0 Launch → 1 Splash → 2 CheckVersion(HotUpdate 做成状态机处理)→ 3 PreLoad → 4 Localization → 5 ChangeScene → 6 GameInit → 7 Authentication → 8 ConnectNetwork → 9 Login → 10 CreatePlayer。
- 关键设计:断线重连回到 GameInit 状态重建所有数据;Loading 动画独立成界面,与场景切换判断解耦;语言实时切换则不需要单独 Procedure。
- 核心游戏流程:Demo 逻辑之外按 MainCity、BattleChapter、Maze、FairyLand 四大状态组织。
- 资源管理:Resources 按类型分类,ResourcePool + AssetBundleManager 双层;公共资源走池化提高命中率。
- Scripts 目录约定:App(通用 Component 集合,命名不含 AppName)、Core(待沉淀的准通用代码)、DataTable(配置表自动生成代码)。
- 协作约定:合并工作交给开发者本人做(赋权+尝试);关注 Epic 的 RoboMerge 自动合并思路;Build System 删减到只留必需。
- 网络同步方向:用预测技术做更准确的同步,只关心很少的对象属性。
关键实体与概念
GameFramework、UnityGameFramework、单向依赖、CopyOutFW、Procedure 状态机、HotUpdate、GameInit、ResourcePool、AssetBundleManager、DataTable、RoboMerge、预测同步
关联概念
来源回溯
- 原始文件:
raw/gamedev/游戏框架-unity中的积累-在indra项目中的实现方案.md(evernote/FW-游戏3研发技术 导入)
时效性评估
- 仍有效:通用层单向依赖抽库、启动流程状态机化、断线重连回归 GameInit、合并权责归开发者,都是可迁移的工程组织经验;GameFramework/UnityGameFramework 至今活跃维护。
- 已过时:RoboMerge 是 Epic 内部工具未公开;文中预测同步仅一句话,现代方案见 网络同步与弱网断线重连(客户端预测 + 服务器和解)。