构建可复用的游戏框架:我们如何让游戏发布速度提升50%
Source: Dev.to
每个新的游戏项目都从相同的模板开始:音频管理器、场景切换、保存系统、触觉反馈封装、分析钩子、UI 框架。它们并非游戏独有,但每个团队都从头重建它们。
在 Ocean View Games,我们决定不再为此付出代价。当我们开发 What’s That(一款移动问答游戏)时,我们把它当作可复用框架的实时测试平台。游戏成功发布,但真正的交付物是我们从中提取的 模块化组件库。
该库现在让我们能够比从空的 Unity 项目开始 快 30‑50 % 地启动客户项目(Rapid Prototyping Hyper‑Casual Framework)。
问题:每个项目都在重写相同的代码
在我们第一年的客户项目中,我们注意到一个模式。每款移动游戏都需要:
- 音频管理器 – 处理音乐、音效以及音量偏好
- 场景管理器 – 处理过场、加载屏幕和深度链接
- 存档系统 – 将玩家状态序列化到本地存储
- 触觉反馈包装器 – 统一 iOS Taptic Engine 与 Android 振动
- UI 系统 – 常见模式(模态框、提示、加载指示器)
- 分析钩子 – 在不依赖特定提供商的情况下触发事件
每个模块都需要 2–5 天 才能正确构建。在一个 6–8 周 的项目中,这意味着在编写任何游戏玩法代码之前,需要 2–3 周 用于基础设施建设。
超休闲市场进一步放大了这一问题。客户需要快速交付 MVP——有时仅 4–6 周。将一半时间花在样板代码上是没有竞争力的。
关键要点: 如果你在每个项目中都构建相同的系统,要么向客户收取重复工作的费用,要么自行承担成本。这两种做法都不可持续。
Source: …
我们的做法:提取、标准化、测试
我们 没有 采用自上而下的方式设计框架,而是自下而上地从已上线的游戏中提取经过实战检验的代码。
步骤 1 – 在真实产品中构建
What’s That 的范围特意设定得足够宽,以涵盖常见系统(音频、UI、持久化、触觉、场景管理)。我们在构建每个系统时,加入了比游戏实际需要稍多的抽象层,以便后续提取。
步骤 2 – 解耦并打包
游戏上线后,我们审查每个系统并自问:“它是否依赖于 What’s That 的特定内容?”
- 如果是 → 重构以移除耦合。
- 如果否 → 按原样加入框架。
最终得到一套独立模块,每个模块具备:
- 清晰的公共 API
- 不依赖其他框架模块(除非显式声明)
- 用于配置的 prefab 或
ScriptableObject - 基础单元测试
步骤 3 – 在客户项目中验证
框架的价值体现在它能否在不同游戏中继续使用。我们在随后三个客户项目中部署了该框架,并记录了所需的调整:
- 音频管理器 – 在 Android 上未正确处理前后台切换。
- 保存系统 – 需要支持加密。
每一次修复都被反馈回框架中。
框架包含内容
音频管理器
一个单例,管理三个音频层(音乐、SFX、ambient),并拥有独立的音量控制。
- 音乐曲目之间的交叉淡入淡出过渡
- 自动压低(SFX 时短暂降低音乐音量)
- 处理应用最小化——当应用失去焦点时音乐暂停,恢复时正确继续
- 音量偏好通过保存系统持久化
触觉反馈包装器
iOS 与 Android 对触觉反馈的处理方式完全不同。我们的包装器提供统一的 API:
HapticFeedback.Light(); // iOS selection feedback, Android 10 ms vibration
HapticFeedback.Medium(); // iOS impact feedback, Android 25 ms vibration
HapticFeedback.Heavy(); // iOS notification feedback, Android 50 ms vibration
通过大量游戏测试进行调校,使各层级在不同平台上感知上等效。
场景管理器
处理场景切换,并支持可配置的加载屏幕。
- 渐入黑暗的过渡,可自定义曲线
- 异步场景加载并提供进度回调
- 场景预加载,实现无缝切换
- 深度链接处理(打开应用时直接进入指定场景)
保存系统
基于 Unity 的 PlayerPrefs 构建的轻量级序列化层,增加了结构化支持。
- 类型安全的访问器(代码库中不再散布原始字符串键)
- 可选的 AES 加密,用于敏感数据
- 带有迁移支持的版本化保存格式
- 写入前自动备份
UI 组件库
预构建、可主题化的组件,遵循一致的交互模式。
- 带背景点击关闭的模态对话框
- 带自动消失计时的 Toast 通知
- 带进度指示器的加载遮罩层
- 带压扁伸展按压动画和音效的按钮组件
对客户项目的影响
框架 并未 消除定制工作。每款游戏仍然需要独特的游戏玩法代码、艺术整合和设计迭代。它消除的是 前两周的设置工作。
在最近为 Mojo Games(Pocket Factory)的项目中,框架估计节省了 10 天 的开发时间。音频、触觉和场景管理在数小时内完成配置,而不是数天,这段时间直接用于游戏玩法。
准备加速您的下一个 Unity 项目吗?
在我们的网站上了解完整框架和案例研究:https://oceanviewgames.co.uk
Source: …
润色:真正让产品与众不同的开发部分
关键要点: 框架的价值不仅在于速度,还在于一致性。当音频、存档和 UI 都遵循经过验证的模式时,缺陷率会下降,因为你不必为已解决的问题调试新代码。
何时自行构建框架
并非所有工作室都需要构建框架。以下情况适合:
- 你每年发布多个项目 – 投资可以在多个发行版之间摊销。
- 你的项目共享同一平台 – 移动 Unity 框架对桌面 Unreal 项目没有帮助。
- 你拥有经过实战检验的代码可供提取 – 不要投机性地设计框架;应从已上线的产品中提取。
- 你的团队对更新保持纪律 – 未维护的框架会成为负担。
如果你每两年只发布一款游戏,维护框架的开销可能超过它节省的时间。此时应专注于编写干净、文档完善的代码。
相关阅读
- What’s That Case Study – 我们是如何构建框架的
- Game Development Services – 我们的完整开发服务
- What’s That Project Page – 开始一切的游戏
