在这里插入图片描述

在这里插入图片描述

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名)

大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。

我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、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。

因为:

不是“什么时候执行”决定游戏,而是“规则如何定义”决定一切。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐