跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScriptAI大前端算法

用 AI 打造鸿蒙游戏 NPC 的开发体验与思考

综述由AI生成AI NPC 在鸿蒙游戏开发中改变了传统脚本逻辑,通过端侧 AI 和多设备感知实现角色行为的不确定性。开发者从编写规则转向设计性格与安全边界,利用大模型增强交互体验,同时需应对调试复杂度和决策频率限制。这种模式让 NPC 从“写出来的”变为“表现出来的”,提升了游戏世界的真实感。

GopherDev发布于 2026/4/9更新于 2026/6/819 浏览
用 AI 打造鸿蒙游戏 NPC 的开发体验与思考

AI NPC 概念图

引言

如果你做过游戏开发,一定写过 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 游戏真正的开始。

目录

  1. 引言
  2. 一、从“脚本 NPC”到“智能 NPC”
  3. 传统 NPC
  4. AI NPC
  5. 二、第一感受:NPC“活”了
  6. 传统 NPC
  7. AI NPC
  8. 三、第二感受:你开始“调性格”,而不是“写逻辑”
  9. 示例
  10. 四、第三感受:调试方式完全变了
  11. 示例
  12. 五、第四感受:不确定性
  13. 好处
  14. 坏处
  15. 示例
  16. 六、鸿蒙上的独特体验
  17. 1、端侧 AI
  18. 2、多设备感知
  19. 示例
  20. 3、分布式协同
  21. 七、一个完整 AI NPC 示例
  22. 1、NPC Agent
  23. 2、接入页面
  24. 3、执行行为
  25. 八、进阶:接入大模型
  26. 示例
  27. 九、开发建议
  28. 1、不要一开始就用大模型
  29. 2、加“安全边界”
  30. 3、记录行为日志
  31. 4、限制决策频率
  32. 十、最大的变化
  33. 总结
  34. 1、逻辑变了
  35. 2、开发方式变了
  36. 3、调试方式变了
  37. 4、体验变了
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • WebODM 开源无人机地图制作指南
  • Java 项目 Skill 体系设计方案与实战
  • 使用 Rokid 灵珠平台搭建旅游 AR 智能体
  • Redis List 在现代 C++ 中的 redis-plus-plus 实践
  • 二级 Python 考试真题及参考代码解析
  • PyCharm 隐藏实用技巧与常用快捷键指南
  • LLaMA-Factory 构建医疗大模型:预训练、微调与偏好纠正三阶段
  • Spring Cloud Zuul 服务网关介绍及入门
  • SQL 查询:组合两个表
  • 基于 Spring Boot 与 WebSocket 的 Java 实时聊天室设计实践
  • 攻防世界 Web 题解:PHP 弱类型与伪协议漏洞利用
  • 使用 Python 和 WinRM 远程控制 Windows 服务器
  • 基于 OpenClaw 的 Discord AI 机器人部署指南
  • 基于 Python 的极简 OpenClaw Agent 实现:openclaw-mini
  • C++ 二叉搜索树详解:增删查改与 key/value 场景实现
  • Python 极简版 OpenClaw Agent:openclaw-mini 架构解析
  • Android 离线语音识别 (STT) 高效集成与性能优化
  • Spring Web MVC 核心原理与实战应用
  • 支持二次开发管理端的标准化 Skill Agent 框架选型
  • Android PopupMenu 弹出菜单实现方法

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online