鸿蒙游戏中的“智能 NPC”架构设计


网罗开发 (小红书、快手、视频号同名)

大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验 。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员

👋 大家好,我是展菲!

📱 全网搜索"展菲",即可纵览我在各大平台的知识足迹。

每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。

文章目录

引言

如果你做过一点 AI 游戏,很快会发现一个问题:

NPC 看起来"会说话",但其实"不聪明"。

典型表现:

  • 只能回答,不能行动
  • 记不住上下文
  • 不理解游戏状态
  • 行为和世界脱节

本质原因是:

你做的不是 NPC,而是"聊天接口"。

在 HarmonyOS 的架构中:

智能 NPC,不是一个 API,而是一个"系统角色"。

一、先说结论

一个完整的智能 NPC,必须具备 4 个能力:

复制代码
1、感知(Perception)
2、记忆(Memory)
3、决策(Decision)
4、行为(Action)

如果缺任何一个:

NPC 都只是"假智能"

二、最常见错误

直接调用 AI

ts 复制代码
const reply = await aiService.chat("你好")

然后显示:

ts 复制代码
Text(reply)

问题:

  • 不知道玩家是谁
  • 不知道当前任务
  • 不知道世界状态

本质:

没有"上下文系统"

三、正确架构:NPC = Agent + Store + Service

核心结构

复制代码
玩家输入
   ↓
NPC Agent
   ↓
AI Service
   ↓
Action(行为)
   ↓
Store(世界状态)
   ↓
UI(表现)

重点:

AI 不直接输出 UI,而是输出"行为"

四、第一层:感知系统

NPC 必须"看见世界"。

输入来源:

复制代码
玩家行为
游戏状态
任务进度
环境变化

示例

ts 复制代码
getContext() {
  return {
    player: gameStore.state.player,
    task: gameStore.state.task,
    location: gameStore.state.map
  }
}

这是 AI 的"输入"。

五、第二层:记忆系统

NPC 必须"记得过去"。

错误

ts 复制代码
ai.chat("你好")

每次都是新对话。

正确

ts 复制代码
memory = [
  { role: "user", content: "你好" },
  { role: "npc", content: "你好,冒险者" }
]

示例

ts 复制代码
class NPCMemory {

  history: string[] = []

  add(msg: string) {
    this.history.push(msg)
  }

  getRecent() {
    return this.history.slice(-5)
  }

}

本质:

记忆 = NPC 的"人格基础"

六、第三层:决策系统

AI 不应该直接输出文本,而是:

输出"行为意图"

示例 Prompt

ts 复制代码
你是一个 NPC,请根据以下信息决定行为:

玩家状态:...
任务状态:...
历史对话:...

输出:
{
  "action": "TALK | GIVE_TASK | ATTACK",
  "content": "..."
}

代码

ts 复制代码
const result = await aiService.chat(prompt)

const decision = JSON.parse(result)

结果:

ts 复制代码
{
  action: "GIVE_TASK",
  content: "帮我找一把剑"
}

AI 不再只是"聊天"。

七、第四层:行为系统

AI 决策必须落地到游戏系统。

示例

ts 复制代码
handleDecision(decision) {

  switch (decision.action) {

    case 'TALK':
      gameStore.dispatch({
        type: 'NPC_SPEAK',
        payload: decision.content
      })
      break

    case 'GIVE_TASK':
      taskService.createTask(decision.content)
      break

    case 'ATTACK':
      battleService.startCombat()
      break

  }

}

本质:

AI → Action → 游戏系统

八、完整 NPC 架构

复制代码
玩家输入
   ↓
Perception(感知)
   ↓
Memory(记忆)
   ↓
AI Decision(决策)
   ↓
Action(行为)
   ↓
Store(世界状态)
   ↓
UI(表现)

完整闭环。

九、多端协同

NPC 不一定只在一个设备上。

示例:

复制代码
手机:输入对话
TV:展示 NPC
Pad:显示任务

数据流

复制代码
NPC Action
   ↓
Store
   ↓
分布式同步
   ↓
多端 UI

NPC 是"全场景角色"。

十、加入"人格系统"

让 NPC 更真实。

示例

ts 复制代码
personality = {
  name: "守卫",
  tone: "严肃",
  goal: "保护城门"
}

Prompt

ts 复制代码
你是一个严肃的守卫,目标是保护城门...

NPC 会稳定输出风格。

十一、加入"长期记忆"

示例

ts 复制代码
longTermMemory = {
  playerReputation: 80,
  completedTasks: []
}

AI 决策:

复制代码
根据玩家声望改变行为

NPC 更像"活人"。

十二、常见错误

1、把 NPC 当聊天机器人

2、没有记忆

3、AI 直接改 UI

4、不接入 Store

5、没有行为系统

总结

鸿蒙游戏中智能 NPC 的正确架构:

复制代码
感知(输入)
+ 记忆(上下文)
+ 决策(AI)
+ 行为(Action)

结合 HarmonyOS 的能力:

复制代码
Store(统一状态)
+ 分布式(多端)
+ 状态驱动 UI

最终带来的不是"更聪明的 NPC",而是:

一个"会思考、会行动、会成长"的游戏角色系统。

最后:

NPC 的上限,不取决于模型,而取决于你给它的"系统能力"。

相关推荐
王杨游戏养站系统2 小时前
3分钟!玩转游戏下载站系统!蜘蛛池seo功能完善部署!
游戏·游戏下载站养站系统·游戏养站系统
2601_949593652 小时前
Flutter_OpenHarmony_三方库_webview_flutter网页内容嵌入与交互适配详解
flutter·harmonyos
魔士于安3 小时前
unity 低多边形 无人小村 木质建筑 晾衣架 盆子手推车,桌子椅子,罐子,水井
游戏·unity·游戏引擎·贴图·模型
魔士于安3 小时前
unity 骷髅人 连招 武器 刀光 扭曲空气
游戏·unity·游戏引擎·贴图·模型
前端不太难4 小时前
为什么 AI 游戏更适合鸿蒙?
人工智能·游戏·harmonyos
沙振宇4 小时前
【Web】使用Vue3+PlayCanvas开发3D游戏(十一)渲染3D高斯泼溅效果
前端·游戏·3d
特立独行的猫a4 小时前
HarmonyOS 鸿蒙PC三方库移植:vcpkg方式的 Port 脚本编写简明教程
华为·harmonyos·openharmony·vcpkg·三方库移植
GLAB-Mary4 小时前
华为职业认证新版全景图介绍及重认证规则变更预通知
运维·服务器·华为·华为认证
wanhengidc4 小时前
服务器 数据科技发展
运维·服务器·爬虫·科技·游戏·智能手机