鸿蒙游戏中的“智能 NPC”架构设计
本文探讨了游戏开发中智能NPC的设计架构问题。作者指出常见错误是将NPC简单实现为聊天接口,缺乏感知、记忆、决策和行为等核心能力。文章提出完整的NPC架构应包含四大系统:感知系统获取游戏状态,记忆系统记录交互历史,决策系统生成行为意图,行为系统对接游戏逻辑。通过结合HarmonyOS的分布式能力,可以实现多端协同的智能NPC角色。作者强调NPC的智能程度取决于系统设计而非单纯依赖AI模型,建议开发

大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括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
const reply = await aiService.chat("你好")
然后显示:
Text(reply)
问题:
- 不知道玩家是谁
- 不知道当前任务
- 不知道世界状态
本质:
没有“上下文系统”
三、正确架构:NPC = Agent + Store + Service
核心结构
玩家输入
↓
NPC Agent
↓
AI Service
↓
Action(行为)
↓
Store(世界状态)
↓
UI(表现)
重点:
AI 不直接输出 UI,而是输出“行为”
四、第一层:感知系统
NPC 必须“看见世界”。
输入来源:
玩家行为
游戏状态
任务进度
环境变化
示例
getContext() {
return {
player: gameStore.state.player,
task: gameStore.state.task,
location: gameStore.state.map
}
}
这是 AI 的“输入”。
五、第二层:记忆系统
NPC 必须“记得过去”。
错误
ai.chat("你好")
每次都是新对话。
正确
memory = [
{ role: "user", content: "你好" },
{ role: "npc", content: "你好,冒险者" }
]
示例
class NPCMemory {
history: string[] = []
add(msg: string) {
this.history.push(msg)
}
getRecent() {
return this.history.slice(-5)
}
}
本质:
记忆 = NPC 的“人格基础”
六、第三层:决策系统
AI 不应该直接输出文本,而是:
输出“行为意图”
示例 Prompt
你是一个 NPC,请根据以下信息决定行为:
玩家状态:...
任务状态:...
历史对话:...
输出:
{
"action": "TALK | GIVE_TASK | ATTACK",
"content": "..."
}
代码
const result = await aiService.chat(prompt)
const decision = JSON.parse(result)
结果:
{
action: "GIVE_TASK",
content: "帮我找一把剑"
}
AI 不再只是“聊天”。
七、第四层:行为系统
AI 决策必须落地到游戏系统。
示例
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 更真实。
示例
personality = {
name: "守卫",
tone: "严肃",
goal: "保护城门"
}
Prompt
你是一个严肃的守卫,目标是保护城门...
NPC 会稳定输出风格。
十一、加入“长期记忆”
示例
longTermMemory = {
playerReputation: 80,
completedTasks: []
}
AI 决策:
根据玩家声望改变行为
NPC 更像“活人”。
十二、常见错误
1、把 NPC 当聊天机器人
2、没有记忆
3、AI 直接改 UI
4、不接入 Store
5、没有行为系统
总结
鸿蒙游戏中智能 NPC 的正确架构:
感知(输入)
+ 记忆(上下文)
+ 决策(AI)
+ 行为(Action)
结合 HarmonyOS 的能力:
Store(统一状态)
+ 分布式(多端)
+ 状态驱动 UI
最终带来的不是“更聪明的 NPC”,而是:
一个“会思考、会行动、会成长”的游戏角色系统。
最后:
NPC 的上限,不取决于模型,而取决于你给它的“系统能力”。
更多推荐



所有评论(0)