如何设计一个具备「活人感」的 NPC

修改于04/0765 浏览开发心得 包含 AI 合成内容
大家好,我是 猛攻兄弟 的作者 附中。
在多人合作或竞技游戏中,AI NPC 常常扮演着填充战局、提供挑战或辅助的角色。
然而大多数 AI 给玩家的感受通常是机械重复可预测单调呆板
今天我就来分享下我对于 NPC 队友的一些开发经验,当然我现在也只是做了点皮毛,离完美还有很长的距离要走。希望大家都能透过我的分享,让 AI 队友呈现出具有「活人感」的行为特质——即让玩家感觉它们是在与一个有独立意识、有合理动机、有性格特点、会犯错误、能学习成长的「活人」并肩作战或对抗。
TapTap

一、「活人感」的核心特质

在细说方案前,首先需要定义我心中的「活人感」是什么
1. 有自主目标与动机:行为不是随机的,而是目标驱动(补给>生存>胜利)。
2. 注意力有限且会转移:掌握有限情报,专注当前任务,也会被突发事件(如枪声)吸引。
3. 能力合理且有局限:枪法不会百发百中,转身有快慢,决策有延迟,会害怕、会犹豫。
4. 具备个性与习惯:不同的「人」会有不同的交战偏好(激进/保守)、武器习惯、移动风格。
5. 会沟通与协作:能与队友进行简单的信息交流(警报、标记),并能执行基础的团队配合。
6. 对环境有反应:会利用掩体、规避危险区域(火线、爆炸物)、在草丛中隐蔽。
7. 行为可被玩家理解与预测:玩家能通过观察 AI 的行为,推测其意图(“他弹药不足了,在找补给而撤退等等”)而非感到莫名其妙。
TapTap

二、设计「活人感」的四大核心支柱

1. 目标驱动的有限状态机

核心思想:AI的行为由其当前目标决定,并应基于对环境和自身状态进行切换。
状态:巡逻/搜索、追击/战斗、拾取
驱动逻辑:状态转换完全由事件触发(看到敌人、听到声音、需要物资),并设有超时机制(追击N秒未果则放弃)。模拟人类注意力转移和放弃的过程。
活人感体现:AI不死追一个敌人,也不会在激战时突然跑去捡子弹。他的行为应该是连贯且符合常理的。

2. 基于武器与情境的行为调制

核心思想:所有行为决策都应与其持有的武器和当前情境(血量、敌情)相关。
武器感知:
交战距离:狙击偏好8米外,喷子喜欢贴脸3米。
转向速度:手枪手可快速转身(720°/s),狙击手转身笨重(360°/s)。
静走概率:困难与专家模式,狙击枪70%概率静走以求精准,冲锋枪仅15%。
情境感知:
低血量行为:HP<30%时,有40%概率触发撤退模式,边退边蛇形走位。
被压制反应:遭受火力压制时,会主动寻找掩体触发角落探头。

3. 不完美的感知与情报的互动

核心思想:AI不应拥有“上帝视角”。其感知应有范围、有角度、会被遮挡,其移动应避免机械感,并与其他单位有自然的物理互动。
分层感知系统
主视觉锥:90度视角,距离所有人相同
听觉系统:枪声会吸引一定范围内的AI前往查看,并有冷却时间。制造连锁反应和战场动态

4. 根据环境展现的战术与团队协作

核心思想:团队协作基于简单的分层指挥链实现。复杂的战术行为通过简单规则与概率组合实现变化。
团队规则: 8米内非交战的2-3人自动组队移动。(主要是降低A*寻路压力)队员在移动时会负责警戒周围。当接敌时可灵活的自主脱队进行接敌,或是实现团队战术配合。
交战逻辑:每0.5-1秒,AI根据距离、血量等因素,按概率选择蛇形、包抄、冲刺等模式。让AI的行为在每次交战都有微妙不同

5. 适当的作弊

核心思想:四大天王有五个,小技巧能带来真人体验的大幅优化
鼓励交战:AI 巡逻时,队长会带队伍前往随机一个敌对目标附近的坐标,注意是附近而不是精确位置,目的是避免 AI 四处闲逛刚好错过,且每次交战更像是偶遇。
适度埋伏:真人玩射击游戏肯定很多龟仔,这是一种轻松且高收益的行为,可以在地图上安排兴趣点,让 AI 在落单经过时有小概率会选择躲在那边埋伏敌人。(太频繁就不好玩了,此方案目前被我从经典玩法中移除的理由是我希望更积极交火,没必要被 AI 阴)
增加掩护:当你的游戏有真人时特别有用(我纯单机没用上),可以在游戏中设计两种 NPC AI,一种是一眼假,另一种是在预算内仿真。目的是用一眼假的让玩家产生这游戏有陪玩可以保底且放下戒心,仿真的人能让他觉得这游戏很火热且不被怀疑,至于能瞒多久,就看你的预算能做到多拟真,且是否有那个价值去深挖。

三、如何实现

1. 让哒拉拉建立最小的雏形版本,验证你的想法

核心思想:具象的说明你的需求与预期,如何实现交由嗒拉拉来发挥
实践经历:我跟搭拉拉说我要参考枪声搞个2D俯视角游戏,介绍了些角色的核心操作逻辑,然后 产出的表现直接远超我的预期,有完整地图,有角色可操控,有分两队伍,随机重生,有NPC AI 逻辑,甚至连团队行为都已经有了,Day0直接实现 10v10 团队战斗.....

2. 根据你的预期,由嗒拉拉提方案让你审核

核心思想:跟嗒拉拉说你有什么需求,让他去想办法
实践经历:我要NPC会侧袭! 我要NPC会绕背,我要NPC会拾取道具补给 blablabla

3. 不断迭代细节优化体验

核心思想:想到什么不够完美的内容,就告诉嗒拉拉让她去打磨细节

四、踩坑避雷

1. AI这东西逻辑非常耗性能,不忧化目标一多容易卡死

实践经历:让搭拉拉打印数据,反馈关键性能节点,剩下让嗒拉拉自己思考自己解决

2. 嗒拉拉可能会选择复杂的复合方案来解决问题

实践经历:嗒拉拉初始版本给我用直线寻路 + 碰撞滑墙来解决问题,我请他改用A*后变成复合方案,在一下A*又滑墙时,完全无法排除卡墙等问题。最后是透过完全重做寻路这块逻辑,在两点间直线路径上有障碍就用 A* 解决,中间无障碍就走直线的清晰规则来实现。

五、结语

设计一个具备「活人感」的队友,本质上是一场精密的骗局。
我们通过有限状态机模拟动机,通过参数调制模拟个性,
通过不完美的感知模拟认知局限,通过简单的交互规则模拟社交。
技术层面,我们需要模块化的架构、性能优先的优化;
体验层面,我们需要时刻站在玩家视角反问:“这个行为,一个真人队友会做吗?为什么?”
《猛攻兄弟》的AI系统成功地将超过5000行代码的复杂逻辑,转化为玩家眼中一个个有紧张感、有惊喜(惊吓)、有时甚至让人会心一笑的“活生生”的对手。它告诉我们,强大的 AI 不在于无所不能,而在于其行为的合理性、响应性和涌现出的那一点不可预测的灵光。这正是游戏 AI 设计所追求的艺术与科学的交汇点。
猜你想搜
taptap 制造ai队友行为逻辑
12
3
3