引言
做游戏开发的人,大多都写过 NPC。最常见的写法也很朴素:
if(playerNear){attack()}else{patrol()}
它的好处很直接:稳定、可控、好排查。问题也同样直接,NPC 的行为基本都是写死的。放到 AI 里看,这种角色更像脚本执行器,不像一个会'自己判断'的对象。
在 HarmonyOS 游戏里接入 AI 之后,变化就很明显了:
const action = npcAgent.decide(state)
这时你不只是写逻辑,而是在定义一个角色怎么思考、怎么反应。
从脚本 NPC 到智能 NPC
先看最核心的差别。
传统 NPC 通常是这样:
if(hp < 30){runAway()}else{attack()}
它的行为是固定的,玩家一看就知道大概会发生什么。调试也简单,断点一打,变量一看,基本能定位问题。
AI NPC 则更接近下面这种形式:
const action = agent.decide({ hp, enemyDistance, history })
它的输出不再只是几个分支,而是基于状态做决策。这样带来的变化很明显:行为不完全可预测,角色会有风格,场面也更容易'活'起来。
本质上,NPC 从规则集合变成了决策系统。
NPC 活过来了,但也更难管了
最直观的感受就是,NPC 不再只是'靠近就打、离远就停'的机械反应。它可能会先观察,再绕后,甚至假装撤退后反击。
开发者第一次看到这种行为,通常都会问一句:这段逻辑我没写啊。
没错,这就是 AI 带来的变化。它能补上脚本 NPC 缺少的那部分'反应感',但代价是控制力会下降一点。以前是你决定它做什么,现在是你给它一个边界,让它自己选。
开发重点从'写逻辑'变成'调性格'
传统开发更像在写条件判断:
if(...)doSomething()
接入 AI 之后,很多时候先想的是角色应该是什么风格。
prompt = `你是一个谨慎的敌人,优先保命,其次攻击`
或者:
npcAgent.setProfile({ style: "aggressive", : })


