用 AI 做鸿蒙游戏 NPC,是一种什么体验?
本文探讨了在HarmonyOS游戏开发中使用AI技术实现NPC的转变。传统NPC基于固定逻辑(if/else),而AI NPC通过决策系统生成动态行为,使角色更具真实感和个性。作者分享了四个核心变化:从规则逻辑到AI决策、从编码到行为设计、调试方式的转变以及NPC体验的升级。文章还提供了在鸿蒙平台上开发AI NPC的实践建议,包括采用渐进式开发(规则→简单AI→大模型)、添加安全边界、记录行为日志


大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。
我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。
技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:掘金、知乎、CSDN、简书
创作特点:实战导向、源码拆解、少空谈多落地
文章状态:长期稳定更新,大量原创输出
我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。
子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”
持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱
文章目录
引言
如果你做过游戏开发,一定写过 NPC。而且大概率是这样写的:
if (playerNear) {
attack()
} else {
patrol()
}
简单、直接、可控。但也有一个明显问题:
NPC 永远是“写死的”
而当你把 AI 引入到 HarmonyOS 游戏里,事情会发生变化:
const action = npcAgent.decide(state)
这时候你会发现:
你不再是在“写 NPC”,而是在“创造一个角色”
一、从“脚本 NPC”到“智能 NPC”
先看最核心的变化。
传统 NPC
if (hp < 30) {
runAway()
} else {
attack()
}
特点:
- 可预测
- 可控制
- 可调试
AI NPC
const action = agent.decide({
hp,
enemyDistance,
history
})
特点:
- 不完全可预测
- 有“行为风格”
- 会“变化”
本质变化:
NPC 从“规则集合”,变成“决策系统”
二、第一感受:NPC“活”了
这是最直观的体验。
传统 NPC
玩家靠近 → 攻击
玩家远离 → 停止
AI NPC
可能会:
- 先观察你
- 选择绕后
- 假装撤退再反击
开发者的第一反应通常是:
“这行为我没写过啊?”
没错—— 这正是 AI 的价值
三、第二感受:你开始“调性格”,而不是“写逻辑”
传统开发:
if (...) doSomething()
AI 开发:
prompt = `
你是一个谨慎的敌人,
优先保命,其次攻击
`
你在做的事情变成:
设计行为风格(Personality)
示例
npcAgent.setProfile({
style: "aggressive",
riskTolerance: 0.8
})
本质变化:
代码 → 行为设计
四、第三感受:调试方式完全变了
传统调试:
- 打断点
- 看变量
- 查逻辑
AI 调试:
- 看输入
- 看输出
- 调 prompt
示例
console.log("state:", state)
console.log("action:", action)
你会发现:
Bug 不再是“代码错了”,而是“AI 理解错了”
五、第四感受:不确定性
AI NPC 最大的特点: 不可完全预测
好处
- 更真实
- 更有趣
- 更耐玩
坏处
- 难调试
- 难复现
- 可能“失控”
示例
// 有时候 NPC 突然不攻击
你会想:
“是 bug 吗?”
其实可能是:
AI 决策的结果
六、鸿蒙上的独特体验
在 HarmonyOS 上,AI NPC 还有一些独特优势。
1、端侧 AI
const action = localModel.infer(state)
优点:
- 实时决策
- 无网络依赖
2、多设备感知
AI 可以感知:
手机输入
TV 状态
传感器数据
示例
agent.decide({
playerInput,
deviceContext,
environment
})
NPC 变成:
“全场景感知角色”
3、分布式协同
多个 NPC 可以协作:
teamAgent.decide(teamState)
形成: AI 队伍
七、一个完整 AI NPC 示例
我们做一个简单 Demo:
1、NPC Agent
class NPCAgent {
async decide(state) {
if (state.hp < 20) {
return "escape"
}
if (state.enemyDistance < 50) {
return "attack"
}
return "patrol"
}
}
这是“规则 + AI”的过渡版本。
2、接入页面
const action = npcAgent.decide({
hp: this.hp,
enemyDistance: this.distance
})
this.execute(action)
3、执行行为
execute(action: string) {
switch (action) {
case "attack":
this.attack()
break
case "escape":
this.runAway()
break
}
}
这就是最小 AI NPC 架构:
State → Agent → Action → Execute
八、进阶:接入大模型
如果你接入大模型(LLM),NPC 会更“人性化”。
示例
async decide(state) {
const prompt = `
当前血量 ${state.hp}
敌人距离 ${state.enemyDistance}
你会怎么做?
`
return await llm.generate(prompt)
}
效果:
- 会说话
- 会表达情绪
- 会“演戏”
九、开发建议
1、不要一开始就用大模型
先用:
规则 → 简单 AI → LLM
2、加“安全边界”
if (!validAction(action)) {
action = "idle"
}
3、记录行为日志
log.push({ state, action })
4、限制决策频率
setInterval(() => {
agent.decide()
}, 500)
十、最大的变化
传统 NPC :你写“它做什么”
AI NPC: 你定义“它是什么样的人”
总结
在 HarmonyOS 上,用 AI 做 NPC,本质是一次角色设计方式的升级。
可以总结为四个变化:
1、逻辑变了
if/else → AI 决策
2、开发方式变了
写代码 → 设计行为
3、调试方式变了
查 bug → 调 AI
4、体验变了
NPC → 角色
最后给你一个很有意思的结论:
当 NPC 不再是“写出来的”,而是“表现出来的”,游戏世界就开始变得真实。
而这,可能才是 AI 游戏真正的开始。
更多推荐



所有评论(0)