引言
如果你做过游戏开发,一定写过 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 = `你是一个谨慎的敌人,优先保命,其次攻击 `
你在做的事情变成:
design behavior style (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 游戏真正的开始。


