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