AI驱动NPC

一次业余开发者的试验——UE5.7 + DeepSeek,让游戏NPC真的会说话

UE5.7 DeepSeek C++ NPC AI
AINPC_Character — Unreal Engine 5.7
[00:00:01] UE5.7 Project loaded — AI_NPC_Demo
[00:00:02] Loading AINPCCharacter class... OK
[00:00:03] Loading DeepSeek API connector... OK
[00:00:04] Loading ExpressionSystem (7 emotions)... OK
[00:00:05] Loading GestureAnimation module... OK
[00:00:06] Loading SlateChatUI (Ctrl+T)... OK
[00:00:08] [NPC] State: Idle (waiting for player...)
[00:00:12] [Player] 走近NPC (300u trigger) → 按F对话
[00:00:13] [NPC] State: Idle Engaged
[00:00:14] [Player] "你好,铁匠师傅,最近忙什么呢?"
[00:00:15] [NPC] "欢迎!刚打完一把新剑,正等着勇士来试。"
↓ 向下滑动阅读
起念 实现 暂停 发现 搁置
8
功能模块
6
天完成
7
种表情
3
NPC状态

先说结果:这个demo没做完,但做的部分比想象中多。一个业余开发者在UE5.7上用DeepSeek让NPC真正会说话的完整记录。

💡

起念

想法很简单:用大模型让游戏NPC真的会说话,而不是翻来覆去那三句台词。

市面上已经有很多AI NPC的尝试,但我想亲自试——作为一个业余开发者,能做到什么程度。

2026年5月,我搭了一个Unreal Engine 5.7的C++项目。

起念:主角面对机器人NPC的二选一对话框,心中想的是第三个不存在的选项

做,还是不做?不,我有一个主意!!!

⚙️

实际做了什么

打开源码,真实可见的内容比以为的多。从API调用到表情系统,从状态机到消息路由——一个能跑起来的UE5工程。

UE5.7编辑器中的AI NPC项目实机截图

UE5.7编辑器实机画面——NPC角色、测试场景与项目文件结构

01

DeepSeek API 实时对话

完整的 AINPCCharacter C++ 类,HTTP POST调用DeepSeek聊天补全接口。系统提示词可配,对话历史缓存(最多20轮)。

02

贴近触发 + 头顶气泡

300单位球体触发器,玩家走进范围自动检测。Widget气泡组件显示NPC说话内容。按F对话,按T打字输入。

03

NPC状态机

三状态独立维护:IdleEngagedBusy。无全局锁,两个NPC可同时与不同玩家对话。

04

智能消息路由

三层路由:精确点名 → 当前活跃NPC → 最近空闲NPC。兜底提示"附近没有空闲的NPC"。

05

全局聊天UI (Slate)

不用UMG,直接Slate写聊天界面。NPC青色、玩家绿色、系统黄色。Ctrl+T开关聊天框。

06

表情系统

7种表情:中立/开心/好奇/困惑/惊讶/思考/欢迎/悲伤。MetaHuman用Morph Target精确控制14个面部控制点,普通模型降级为骨骼旋转。

07

手势动画

AI回复后自动分析关键词——"你好"触发打招呼,"再见"触发告别,含"嗯""想"触发思考动作。动画资源可在编辑器中指定。

08

面向玩家

NPC自动转向,仅Engaged/Talking状态才转。转向速度分两档:对话中6.0(快)、非对话2.0(慢),走远后缓慢恢复。

NPC 状态机流转

玩家走近 系统繁忙 释放 / 空闲 对话结束 Idle Engaged Busy

智能消息路由

玩家输入
① 点名检测
② 活跃NPC
③ 最近空闲
目标NPC
一句话总结:这已经不是一个"想法"了,而是一个能跑起来的UE5工程。DeepSeek接了,NPC会说话,表情手势都有,聊天界面也写好了。
🛑

为什么还是停了

工程能跑,但游戏不好玩。问题不在AI,在游戏本身。

暂停的项目:全息骑士半身实体半身溶解,象征未完成的游戏开发

半成品骑士悬浮在工作台上——代码还在,但故事还没讲完

问题一:控制不住AI的方向。 AI对角色扮演好像有自己的一套剧本。你给它写系统提示让它当"友善的铁匠",聊着聊着它开始自由发挥。大模型天然倾向于"延续对话",而不是"坚守人设"。这种不可预测性在日常聊天里是优点,在游戏里却是致命伤。
问题二:游戏开发的专业门槛。 让NPC说人话只是第一公里。后面还有动作绑定、模型导入、行为树、蓝图系统、场景搭建、光照烘焙、音效设计……跟AI毫无关系,完全是另一个职业的全套技能。
问题三:时间分配。 项目从5月20日开始搭,到5月26日把功能写完。前后不到一周。然后就回到了主业——嵌入式惯导测试。业余开发者的现实就是:有冲动,有能力,但没有一整块时间。
🔍

一个更大的发现

项目搁置后,开始跟身边人聊AI。聊得越多,越发现一个有趣的现象:很多人知道AI,用过AI,然后就觉得AI"不过如此"。他们的结论是"AI没什么用"。

我恰恰相反——脑子里有太多可以让AI做的事情了:

一个更大的发现:左边是刷手机的闲人,右边是被时间锁链束缚的开发者

有人有时间却不知AI能做什么,有人知道AI能做什么却没有时间

📐
用AI协助分析组合导航问题
📝
用AI写报告
🔧
用AI辅助学习STM32代码
🎮
用AI驱动NPC说话
🖥️
用AI协助运维服务器、网站
📱
用AI做APP?等有时间就干
🎬
用AI生成视频?描述要极详细才行
🔩
用AI开发硬件?正琢磨嘉立创
📊
用AI做市场分析?
核心悖论:身边人有时间,但不知道AI能做什么。我知道AI能做什么,但没有时间。这是两种截然不同的困境。
📦

搁置不是放弃

代码还在硬盘里。UE5.7工程、AINPCCharacter类、DeepSeek配置、Slate聊天界面、表情系统、手势触发——这些东西不会消失。

哪天有合适的契机——比如跟做游戏的朋友合作,或者有更成熟的AI游戏工具出现——随时可以翻出来继续。代码是现成的,思路也是清晰的。

AI只是一个实现你想法的工具,真正有意思的想法在你的脑袋里。

想法,源于生活。

源于对生活的观察和体验、对未来的期待!

← 返回