鸿蒙游戏的核心:System 才是真引擎
摘要: 文章探讨了鸿蒙游戏开发中的核心架构认知误区,指出传统游戏引擎思维(如Unity)在鸿蒙生态下的不适用性。作者提出,鸿蒙游戏的真正引擎并非集中式的“Engine”,而是分散的“System”集合。通过对比分析,文章阐明: System主导规则:战斗、AI、掉落等逻辑由独立System实现,而非Engine硬编码; Engine退化为调度器:仅控制执行顺序,鸿蒙的声明式UI和状态驱动已接管渲染


大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。
我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。
技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:掘金、知乎、CSDN、简书
创作特点:实战导向、源码拆解、少空谈多落地
文章状态:长期稳定更新,大量原创输出
我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。
子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”
持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱
文章目录
引言
很多人做鸿蒙游戏时,一开始都会下意识去找“引擎”:
有没有类似 Unity 的东西?
有没有现成的 GameEngine?
需不需要自己写一套 Loop?
然后你会写出类似这样的代码:
class GameEngine {
update() { ... }
render() { ... }
}
你会觉得:
这就是“引擎”
但当你的游戏复杂起来:
战斗变复杂
AI 增加
技能变多
状态变多
你会发现一个问题:
你的 Engine 越来越“空”,System 越来越“重”
这时候,一个关键认知必须建立:
鸿蒙游戏真正的引擎,不是 Engine,而是 System
一、为什么你会误解“引擎”?
传统游戏开发(比如 Unity、Unreal Engine)中:
Engine = 渲染 + 物理 + 动画 + 生命周期
所以你会自然认为:
引擎 = 一个“大而全的核心模块”
但在鸿蒙 + ArkUI 的体系下:
渲染 → 系统帮你做(声明式 UI)
状态驱动 → UI 自动更新
也就是说:
传统 Engine 的一半能力,已经被系统吞掉了
二、鸿蒙游戏里,Engine 还剩什么?
当你剥掉渲染之后,Engine 只剩下:
调度(什么时候执行)
顺序(先做什么后做什么)
代码通常是:
class GameEngine {
update(store) {
battleSystem.update(store)
aiSystem.update(store)
}
}
你会发现:Engine 不做“决策”、Engine 不写“规则”
它只是:
一个“执行顺序控制器”
三、真正决定游戏行为的,是 System
我们看一段代码:
battleSystem.attack(store)
真正发生变化的是:
血量减少
状态变化
触发死亡
触发掉落
这些都在:
System 里
也就是说:
System 决定了“世界如何运转”
四、一个关键对比
如果没有 System
engine.update() {
player.hp -= 10
enemy.hp -= 5
}
问题:
逻辑写死
不可复用
不可扩展
有 System
engine.update(store) {
battleSystem.update(store)
}
class BattleSystem {
update(store) {
this.handleAttack(store)
this.handleDamage(store)
}
}
变化:
规则被抽离
逻辑可组合
系统可扩展
五、为什么说 System 才是“引擎”?
因为它满足三个“引擎特征”:
1、定义规则
攻击怎么计算?
升级怎么触发?
AI 怎么决策?
全在 System
2、驱动状态变化
Store 不会自己变
必须由 System 推动
3、可组合、可扩展
你可以:
增加技能系统
增加 Buff 系统
增加任务系统
而不用改 Engine。
总结一句话:
Engine 只是“时间轴”,System 才是“世界规则”
六、一个更深层的理解:System = 微引擎
当你拆分 System 之后:
BattleSystem
AISystem
DropSystem
LevelSystem
你会发现:每一个 System,其实都是一个“小引擎”
比如:
BattleSystem
处理战斗规则
AISystem
处理决策逻辑
DropSystem
处理奖励机制
也就是说:
你的游戏,不是一个引擎,而是一组“引擎组合体”
七、架构的真正演化
你一开始的认知是:
GameEngine 很重要
但进阶之后变成:
System 更重要
最终你会达到一个状态:
Engine 可以很薄
System 非常强
甚至可以写成:
engine.update(store) {
systems.forEach(s => s.update(store))
}
Engine 退化成:
一个“调度容器”
八、为什么这种架构更适合鸿蒙?
因为鸿蒙(尤其是 ArkUI)的核心特性是:
状态驱动 UI
声明式更新
多端同步
这意味着:UI 不需要你控制、渲染不需要你关心
你唯一需要关心的是:
状态是怎么变化的?
而答案就是:
System
九、开发者常见误区
误区 1:过度设计 Engine
class SuperGameEngine {
render()
physics()
animation()
}
问题:
重复造轮子
复杂度爆炸
不符合鸿蒙模型
误区 2:System 只是“工具函数”
utils.attack()
问题:
没有结构
没有边界
无法扩展
误区 3:UI 驱动一切
onClick() {
修改状态
写逻辑
}
结果:
系统崩溃
不可维护
十、一个终极认知
当你真正理解这件事之后,你会发现:
你写的不是:
游戏逻辑
而是:
一组“规则系统”
游戏运行的本质是:
输入(操作 / AI)
↓
System(规则执行)
↓
Store(状态变化)
↓
UI(自动渲染)
总结
在鸿蒙游戏架构中:
Engine:调度执行
System:定义规则
Store:承载状态
UI:负责展示
如果用一句话总结:
鸿蒙游戏真正的引擎,不是 Engine,而是 System。
因为:
不是“什么时候执行”决定游戏,而是“规则如何定义”决定一切。
更多推荐




所有评论(0)