游戏开发论坛

 找回密码
 立即注册
搜索
楼主: skyking

[讨论] wow的一个有趣的AI问题。欢迎各位移步前来探讨

[复制链接]

1

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2010-3-9 20:27:00 | 显示全部楼层

Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

翻页!!!!!!!!!!!

7

主题

227

帖子

227

积分

中级会员

Rank: 3Rank: 3

积分
227
发表于 2010-3-10 11:41:00 | 显示全部楼层

Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

何必把简单的问题搞的这么复杂呢。
你确定 山猫幼崽 和 法力游龙 互相在一起 不互相攻击。如果确实如此我只能说BRZ蛋疼了。
兔子 阵营 1 和所有阵营中立       特殊AI 被锁定逃跑,跑出一定距离转为正常状态 其他AI正常
龙   阵营 2 和1中立 和3敌对      正常AI(加入血少于20 呼救)
猫   阵营 3 和 1 2 全部敌对      正常AI
OK 上面情况就发生了。
根据BRZ的程序习惯,不可能对游戏中的动态数据和事件去做特殊的捕获。

33

主题

2102

帖子

2102

积分

金牌会员

Rank: 6Rank: 6

积分
2102
 楼主| 发表于 2010-3-10 13:02:00 | 显示全部楼层

Re: Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

sorceryone: Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

何必把简单的问题搞的这么复杂呢。
你确定 山猫幼崽 和 法力游龙 互相在一起 不互相攻击。如果确实如此我只...


法力浮龙会攻击兔子,怎么解释?山猫和浮龙只有为争夺兔子的时候才会互殴。


另外贴一个别人的分析文档(附件不能只好copy,此文档来自有戏魂的 kkkservice 童鞋),
仇恨系统及其运作机制
一、运作原理
1、怪物如何区分各玩家的仇恨?
每个怪物都有一张仇恨列表,每一行分别记录可攻击目标(包括玩家、NPC、玩家的PET、玩家召唤的战斗辅助物品等)的仇恨值。
2、仇恨列表对玩家和怪物有何影响?
怪物会优先攻击仇恨理表最顶端的玩家,某些怪物也会根据设定对位于仇恨列表其他位置的玩家有所动作。
比如副本WC中的德鲁伊会随机对位于仇恨列表第二位的玩家施放催眠法术。
进入了怪物仇恨列表的玩家一定会同时进入战斗状态,但进入战斗状态并不等于进入怪的仇恨列表,如被怪AOE到。
3、仇恨列表是否会变化?
会,仇恨列表是动态的,基于玩家的各种动作和怪物的初使设置,都会产生变化。
4、什么样的行为会增加仇恨?
玩家靠近冷静的怪物到达一定距离、对怪物造成伤害、辅助已存在于怪物仇恨列表中的玩家(加血、加Buff等)。
5、什么样的行为不会增加仇恨?
什么也不做肯定不会增加仇恨。另外,坐下、吃喝、急救都不会增加仇恨。
对于已经被激怒的怪物,即使进入怪物的aggro范围,也不会增加仇恨(副本中可能有所不同)。
对于未存在于怪物仇恨列表中的玩家辅助,也不会增加仇恨(复活死去的玩家是不会挨打的)。
6、仇恨是否会累加?
会。累计攻击伤血101,比攻击一次造成怪物伤血100仇恨要大,但似乎比直接攻击伤血101仇恨要小。
7、仇恨是否会衰减?仇恨的衰减和什么相关
会。首先是和时间相关,随着时间的流逝而衰减;其次衰减的快慢也和玩家的动作相关。
什么也不做是衰减最快的,继续造成仇恨会使仇恨衰减变慢(也有可能使仇恨不再衰减)。
8、仇恨链(感谢会员水云的宝贵意见)
魔兽世界中有很多群居的怪物,引他们当中之一时,旁边的怪物也会跟着过来,因为他们之间存在仇恨链系统。
实际除了被引怪者激怒的怪物,其他的怪物并不处于激怒状态,只是被puller激活了准备找人发泄。
一般它们会去找puller,但如果其他人进入了正常的激怒范围并且离怪比puller更近,那么它们会直接对这些人进行攻击。
9、组队怪与非组队怪
大部分群居怪是设定的“组队怪”,它们无论用何方法也无法单引;而有些是“非组队怪”,只是偶然距离很近。
对于“非组队怪”,仇恨是否传递?如果传递的话那传递的距离和什么有关?
对于“组队怪”,是否会有某张特殊的被他们共享的仇恨列表?这些问题,都有待研究。

二、技能的仇恨
1、各种动作造成仇恨的大小
在同等减血/护甲/移动速度等(或加血/护甲/移动速度等)数值下:普通攻击<技能攻击<高等级技能攻击
2、战士的嘲讽运作原理
嘲讽后直接把战士置于目标仇恨列表第二位,且仇恨具体数值无限接近第一位。并强制该目标攻击战士2秒。
3、除去嘲讽、痛击,战士常用什么技能控制仇恨?
技能的仇恨大小,我认为与这几方面相关:初使设定、产生状态和伤害数值。
初步估计是这样:技能初使仇恨100,每造成一点伤害,多一点仇恨。当这个技能高级之后,技能初使仇恨增加。
破甲因为是一个初始仇恨高、瞬发、耗怒不多、全姿态可用、可累加的Debuff,所以成为战士最常用的获取仇恨技能。
4、群体嘲讽(Challenging Shout)
不要忘记群体嘲讽技能,虽然10分钟冷却让这个技能很少出场,但每次出场都应该是关键时刻。

三、推荐操作
1、激怒怪物距离
靠近冷静怪物到达一定距离即会激怒怪物,激怒怪物的结果就是被攻击,这个距离跟等级差有关。
等级差越大,此距离越大;等级差即使最小,这个距离也不是0。
1级的玩家可能视野中尚未出现60级怪物就已经激怒了怪物;靠的够近,1级怪物一样会攻击60的玩家。
2、OT后的行为
假如你不是MT,当OT(仇恨超出MT)之后,请停止攻击,并原地不动等待MT救援(基于条目7)
3、战士如何更好的拉仇恨
单个怪物的情况下,不停的破甲能让战士获得足够大的仇恨。在其他人OT的时候使用嘲讽、痛击强制怪物调头。
多个怪物的情况请参考本帖下方骨感美人的回复或直接查阅原帖并发表您的意见。
4、危险出现后的行为
引怪失误拉来数量多到无法战胜的怪物后,请除了引怪者外的其他成员不要做任何攻击或辅助动作。
已经被激怒的怪物不会把没有这些动作的成员加入仇恨列表,当怪物把现有仇恨列表中的对象全部杀死后,会自动跑回原位。
引怪者这时唯一需要作的就是挑选一个比较合适的地方死亡,方便他人复活。(参见条目5)
某些怪物(多见于副本)有守尸行为,此建议将不再适用,且副本中怪物一般会追击到杀死其仇恨列表中所有人为止。
5、关于引怪
尽量由主坦克(MT、maintank)引怪,第一个进入怪物仇恨列表的目标将获得固定数字的仇恨。
6、队友的协助
尽量不要让法师和牧师遭到攻击,因为他们施法的时候遭到攻击将导致施法延缓或失败。
当怪物很多或者强硬到让MT吃不消的时候,请尝试让其他成员(尤其是圣骑士、萨满等)分担承受部分攻击。
7、多名战士的配合
PVE Raid中,面对会强力AOE(区域伤害)伤害法术的怪物,尽量只使用一名战士,这样可以相对弱化怪物的AOE能力。
面对能造成单体强力伤害的怪物,因为怪物或许有多种解除仇恨的技能,使用多名战士轮流嘲讽,可以把怪物牢牢吸住。

目前在大型PVE Raid中比较好的做法是:
1maintank+1offTank后备,配备足够的治疗者保证MT 的安全;怪物血量下降3-5%再call dpser开火。

7

主题

227

帖子

227

积分

中级会员

Rank: 3Rank: 3

积分
227
发表于 2010-3-10 15:20:00 | 显示全部楼层

Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

法力龙能攻击兔子 这个很简单不做解释,
你说的 山猫和龙没有兔子出现的情况下 不会互相攻击有待验证。
或者BRZ确实处理了 特殊事件 对法力龙做了阵营转换。那么假如阵营4 也能很容易在现有的系统上实现。
只不过需要对游戏中的一个特殊事件去做捕获处理我很不能理解,这是纯粹浪费程序资源的表现。

0

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2010-3-10 16:02:00 | 显示全部楼层

Re: wow的一个有趣的AI问题。欢迎各位移步前来探讨

怪物攻击兔子是个脚本控制的世界事件,并非走对立ai的逻辑,我见过兔子在狼脚下溜达毫无反应的例子,我支持楼上的说法

33

主题

2102

帖子

2102

积分

金牌会员

Rank: 6Rank: 6

积分
2102
 楼主| 发表于 2010-3-10 21:46:00 | 显示全部楼层

Re: Re: wow的一个有趣的AI问题。欢迎各位移步前来探讨

fredzhang: Re: wow的一个有趣的AI问题。欢迎各位移步前来探讨

怪物攻击兔子是个脚本控制的世界事件,并非走对立ai的逻辑,我见过兔子在狼脚下溜达毫无反应的例子,我支持楼上的说法



你确定一次不攻击还是一直都不攻击??
求更多内幕~~

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-3-11 09:57:00 | 显示全部楼层

Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

这个和AI应该没有关系,我个人的理解就是  当 兔子满足 进入战斗这个条件的时候 出发 逃跑事件,然后就是所看到的了。。。

0

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2010-3-11 10:31:00 | 显示全部楼层

Re: Re: Re: wow的一个有趣的AI问题。欢迎各位移步前来探讨

skyking: Re: Re: wow的一个有趣的AI问题。欢迎各位移步前来探讨




你确定一次不攻击还是一直都不攻击??
求更多内幕~~



不是一直都不攻击,其实我想强调的是不是总会攻击,由此也看出不是走的对立ai见面就打的逻辑。我的理解是npc攻击小动物是一个世界脚本,每隔多长时间某区域内的某随机npc就会执行该脚本,寻找视野内的小动物,有则攻击,没有则没反应,等待下个时间再次触发该事件。对于战斗的过程,则和普通战斗一样。

0

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2010-4-10 05:58:00 | 显示全部楼层

Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

1.兔子非战斗状态下为随机游荡状态。
2.兔子的阵营势力与浮龙、山猫都为敌对,浮龙、山猫互为敌对。
*阵营势力敌对是指设定为敌对的2个阵营NPC只要进入互相的警戒范围内就进入对方仇恨列表。
3.兔子一旦进入战斗状态同时也进入逃跑状态。
*逃跑状态是指,当兔子检测到在自己范围N米内没有敌人时保持“观望”姿态,当检测到在自己范围N米内有敌人时则向自己第一仇恨列表目标的反方向逃跑。
5.浮龙与山猫进入战斗时互相附加的仇恨值大于他们各自与兔子附加的仇恨值。
6.浮龙在HP低于20%会呼喊最近的同伴。(呼喊其实就是拷贝仇恨列表给自己的同伴)
*以上需要仇恨列表、NPC阵营势力关系、战斗呼喊等功能完备
--------------------------
来模拟第一种情况:
-兔子首先进入浮龙的警戒范围之内,由于2中提到“兔子与浮龙为敌对”,因此他们互相进入对方的仇恨列表,浮龙与兔子进入战斗,浮龙追击兔子,兔子逃跑。
-同时,兔子进入山猫的警戒范围之内,由于2中提到“兔子与山猫为敌对”,因此他们互相进入对方的仇恨列表,同上。
-由于对兔子的追击,浮龙与山猫越来越近,互相进入警戒范围之内,由于5中提到“浮龙与山猫进入战斗时互相附加的仇恨值大于他们各自与兔子附加的仇恨值”,此时浮龙和山猫取代兔子成为对方仇恨列表的第一位,进而互相攻击。
-由于名词“逃跑状态”中提到“当兔子检测到在自己范围N米内没有敌人时保持“观望”姿态”,此时当兔子逃出第一仇恨浮龙一定的检测范围,则保持“观望”状态。
*此刻,已经形成了LZ所说的第一种情况中兔子观望2者互斗的状态,接下来LZ攻击山猫等流程都是正常的仇恨列表流程。
-浮龙被打倒20%HP的时候走呼喊流程,搜索离自己最近的同伴并拷贝仇恨列表,同伴上来帮着打山猫。
到这里,基本上第一个情景就实现了,还有个推测,就是如果在第一情景中山猫和浮龙不是LZ自己打死的话,就是说其中一方被另一方打死后不与LZ发生战斗的话,那么剩下的这一方应该会继续攻击兔子,因为兔子其实是始终没有脱离仇恨的。
第二个情景就不用说了吧,LZ可以根据这个逻辑推一下。

0

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2010-4-12 18:00:00 | 显示全部楼层

Re: Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

lasthuhu: Re:wow的一个有趣的AI问题。欢迎各位移步前来探讨

山猫见到兔子,进入战斗状态
建立仇恨列表
第一仇恨顺位 兔子 -->打兔子
后来见到浮龙
建立浮龙的仇...

山猫见到兔子,进入战斗状态
建立仇恨列表
第一仇恨顺位 兔子 -->打兔子
后来见到浮龙
建立浮龙的仇恨,浮龙仇恨>兔子
第一仇恨顺位改变,改为打浮龙
浮龙挂了,兔子重新获得第一仇恨
继续打兔子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-15 11:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表