轩辕春秋文化论坛 » 步步为营 » 曹操传AI理论


2014-8-30 09:43 zhouhuan
曹操传AI理论

我对曹操传AI的兴趣,始于一次裸奔玩法,经过长时间的研究测试,总算总结出了一套比较系统的规律,现在发到这里希望对大家有所帮助。
虽然测试对象只是原版曹操传,不过对于旧引擎的mod如《吕布传》、《杨家将》、《岳飞传》等基本上都适用。

2楼 行动和攻击点顺序
3楼 行动价值
4楼 移动规律
5楼 站位规律

2014-8-30 09:43 zhouhuan
行动和攻击点顺序

[size=4]行动顺序用来判断哪个AI先动,哪个AI后动。

影响行动顺序的因素有:地形、HP、兵种类型、出场顺序。出场顺序必须用剧本编辑器或通用调试器查看。

行动顺序为:位于恢复地形>残血状态>攻击型法师>远程类>近战类>风水士类。若一个情况下有多个AI,则按照他们的出场顺序先后行动。

比如位于恢复地形的AI有好几个,无论这几个AI是什么兵种,也不管有没有残血,一律按照剧本里设定好的出场顺序行动。



攻击点顺序直接看图
[/size]
[attach]134646[/attach]

[color=Silver][[i] 本帖最后由 zhouhuan 于 2014-9-2 10:47 编辑 [/i]][/color]

2014-8-30 09:44 zhouhuan
行动价值

[size=4]我们常常在猜测AI会优先攻击哪些目标,像濒死、高伤害、无反击、恢复地形等等,这些状态在游戏程序里都被赋予了一个精确的数值,在此称之为行动价值。AI会采取行动价值最高的一项行动。
在介绍行动价值之前,先简单介绍一下AI类型。
AI的类型共有七种,可以用剧本编辑器或通用调试器查看:[/size]
[attach]134647[/attach]


[size=4]
(一)、被动出击。物理攻击区域内有敌方单位才会移动,法师也是这样判断。所谓物理攻击区域,是指一回合的移动范围内可以物理攻击到的所有区域。
(二)、主动出击。物理攻击区域内无敌方单位时,会主动朝最近的敌方单位移动。
(三)、坚守原地。无论如何都不会移动。
(四)、攻击武将。朝着指定武将移动,指定武将所在的地点是最终目的地,该目的地会随着指定武将的移动而改变。
(五)、到指定点。朝着指定点移动,指定点是最终目的地。
(六)、跟随武将。朝着指定武将移动,但不会攻击和使用策略。
(七)、逃至指定点。朝着指定点移动,但不会攻击和使用策略。

一、二、四、五的AI如果残血,会朝着本方第一个出场的有名武将方向移动,如果该名武将已撤退,则会朝最近的敌方单位移动。
五、七的AI如果到了指定点,AI类型会变更为被动出击。


接下来就开始介绍行动价值。
曹操传中的行动价值大致可以分为三类:物理攻击价值、策略价值、位置价值。
物理攻击价值用来判断某个武将的招打程度。策略价值用来判断优先使用哪个策略。位置价值用来判断AI优先走到哪个位置,可以跟前面的两类价值叠加。物理攻击价值和位置价值关系比较密切,也相对简单一点,就放在一起介绍。

[b][size=5]物理攻击价值和位置价值[/size][/b]
[/size]
[attach]134651[/attach]

[size=4]
第1项~第6项跟伤害有关。电脑在攻击前会产生一个伤害预估值,然后通过这个伤害预估值与目标的HP进行比较。伤害预估值是根据电脑移动前的地形计算得出,跟移动后的地形无关。

第1项:可击毙目标。(78)
即预估伤害值大于等于目标剩余HP。这项价值的确很高,但也不是不可超越。若不满足这项,则看第2项。

第2项:对目标的伤害大于等于总HP的10%。(14)
这就是所谓的电脑会优先攻击防御力较低的目标。其实攻击低防的目标只是表面现象,实际上是看伤害预估值占目标总HP的比例。豪曹中的曹洪防御力虽然低但是血多,所以比一些高防的武将更不招打。曹操传中只有简单的10%这一条分界线,而新引擎中已经划分出了更多的分界线,让我军防低血少的武将更容易受伤。豪曹中似乎每增加一个百分点行动价值就会加1。若不满足这项,则看第3项。

第3项:对目标的伤害小于总HP的10%,目标剩余HP小于总HP的41%。(14)
这就是所谓的电脑会优先攻击血少的目标,也就是亚残血理论,优先度与第2项相同。若不满足这项,则看第4项。

第4项:对目标的伤害小于总HP的10%,目标剩余HP大于等于总HP的41%,AI类型是主动出击。(8)
若这项再不满足,则跟单体攻击伤害有关的价值为0。1~4项是互斥的,最多只能满足其中一项。

第5项:AI拥有多体攻击的能力,目标是单体状态。(-4)

第6项:AI拥有多体攻击的能力,目标是连体状态。(10*A+4*B)
A和B都是目标连着的人数。A是满足第1项的人数,B是满足第2项的人数。

这里解释一下连体状态和单体状态。曹操传中,拥有多体攻击能力的AI就只有四种:重炮车和霹雳车的十字穿透攻击、以及驯虎师和蛇矛的直线穿透攻击。十字穿透的连体状态很明显,只要贴身连在一起就能被穿透到。但直线穿透不一样,必须从特定的方向攻击才能穿透到,所以仅仅连在一起还不够,还要看与AI的相对位置,用图来说明比较直观。下图中的敌军骑兵装备蛇矛,那么对他来说,ADE的武将是连体状态,BCF的武将不是连体状态,也就是单体状态。驯虎师虽然不能斜向攻击,但斜向的判断方式跟图中是一样的。[/size]
[attach]134655[/attach]

[size=4]
第7项:目标混乱。(8)

第8项:目标是有名武将。(4)
这项实际上应该写成“目标是DATA序号在前174位的武将”。由于曹操传中前174位都是有名字的武将,所以这么写更容易理解。但在某些mod中,一些有名武将的序号并不处于前174位,当然也就没有了这个价值。

第9项:目标是有名武将,且第一个出场(友军AI)。(8)
这项是第8项的特殊情况,似乎只有友军AI会判断,比如汜水关的华雄比李傕更招打。出场顺序要用剧本编辑器或通用调试器查看,不过敌军的主将一般都是第一个出场。

第10项:可不在目标的攻击范围内攻击(无反击)。(1)
这就是我们通常说的无反击,其实这是一种位置价值,并非攻击武将的价值。攻击混乱的敌人、或者装备青龙刀都是“无反击”,但这些“无反击”并无价值。

第11项:非残血时可进入恢复地形攻击目标。(8或7或6)
恢复地形的情况比较复杂,跟AI当前所在的地形有关。如果恢复地形和目的地是同一个坐标,情况还会有所变化,请看第15项的说明。另外,AI使用策略时跟恢复地形也有很大关系。这里面实在是太复杂,我放弃了研究。

第12项:残血时可进入恢复地形攻击目标。(X+50)
在第11项的基础上加上50。

第13项:可进入目的地攻击目标。(10)
“攻击武将”,“到指定点”,“跟随武将”,“逃至指定点”这四种AI都是有目的地的,这比较好理解。还有上面介绍AI类型时说过,有四种AI残血时,会朝着本方第一个出场的有名武将方向移动,这个有名武将的位置也是一个目的地。如果一回合内不能移动到这些目的地,那么就会产生一个临时目的地。如果目的地被自己人占据,还会产生新的目的地。关于目的地的具体算法,请看《曹操传AI站位规律》一文。

第14项:可进入目的地上下左右四格攻击目标。(9)

第15项:以上几个位置若无法攻击到目标,则其位置价值减少1(此项还不太确定,故没有写在价值表内)
此项可以用来判断AI是去攻击目标还是去某个位置。有个例外是,如果恢复地形和目的地是同一个地方,那么作为恢复地形的价值不用减1。


下面举几个例子

例子一:下图是我在打《曹操传全员3级红线通关》时,剑阁之战某个回合的站位,这样的站位可以保证我军无反击。但如果满宠是位于右边一格的白框位置,那么对于下面左边兵营里的驯虎师来说,司马懿将会处于连体状态,驯虎师会去攻击司马懿导致我军反击涨经验。[/size]
[attach]134649[/attach]

[size=4]例子二:下图重炮车AI为主动出击,残血。曹操HP为1,炮车对另外两人的伤害都在10%以上。
曹操满足第1、5、8、10项,炮车攻击曹操的价值为78+4-4+1=79
夏侯惇满足第2、6、8、10、12项,炮车攻击夏侯惇的价值为14+4*1+4+1+58=81
所以电脑会进兵营攻击夏侯惇。[/size]
[attach]134654[/attach]

[size=4]例子三:下图贼兵AI为主动出击,残血。刘备是敌方阵营第一个出场的武将,所以贼兵会朝刘备的位置移动,黑框是贼兵本回合的临时目的地,往黑框左边一格可以攻击到夏侯惇,所以夏侯惇满足第14项。
假设贼兵对夏侯惇和刘晔造成的伤害都在10%以上。
刘晔满足2、7、8、10项,价值为14+8+4+1=27
夏侯惇满足2、8、14项,价值为14+4+9=27
两人价值一样,贼兵会选择离自己更近的白框而去攻击夏侯惇。[/size]
[attach]134653[/attach]


[size=4][b][size=5]策略价值[/size][/b]

策略价值比前面两种价值复杂很多,因为这里面涉及到概率问题和其它杂七杂八的问题,我自己也不是很确定。价值表仅供参考。[/size]
[attach]134648[/attach]

[size=4]攻击策略说明:

1、跟物理伤害类似,策略伤害也是看比例,所以可以利用精神力低血少的人把敌军法师引上来。这也是典韦怕策略的原因之一,由于血少,敌军法师的灼热对他的伤害经常超过30%,所以虽然和许褚同样是C档次的精神力,但比许褚更容易被集火。[/size]
[attach]134650[/attach]

[size=4]2、和物理伤害不同的是,策略伤害会把伤害浮动值算进去。比如目标总HP是300,AI对其策略伤害是88,没有到30%,但是算上浮动伤害最高有92,超过了30%,那么也算是在[30%,100%)的区间内。
3、诱惑必须是AI的HP未满时才会有使用价值。
4、群伤策略的连体状态算法估计是和物理攻击一样的,未验证。



辅助和妨碍策略说明:

1、封咒、谎报、谎言这三种策略看的是命中率,太低了AI就不会使用。
2、谎报的价值是30,也就是说如果AI对目标的策略伤害小于其总HP的30%,就会优先使用谎报。
3、谎报和伤害在[30%,100%)区间的灼热都是30的价值,AI的使用规律是这样的。当目标剩余HP小于等于总HP的80%时,必定使用灼热。大于80%时,如果最小浮动伤害大于等于总HP的30%,还是必定使用灼热。如果最小浮动伤害小于总HP的30%,那么两种策略各有一定的概率被使用。
4、用觉醒解混乱有40的价值,解麻痹的价值有30,比一般的物理攻击价值高,所以杨家将里的战神经常优先使用觉醒。来看一下实际例子,下面是我在打《杨家将传奇战报》时,大破天门阵二里的一张图。我在战报里写到八姐不能被混乱,这是为了让敌方战神待在在后方使用觉醒。假如八姐被混乱,那么八姐满足物理攻击价值中的2、6、7、8、10项,价值为14+4*1+8+4+1=31,将会被拥有突击移动的战神攻击。[/size]
[attach]134652[/attach]

[size=4]补给策略说明:

1、输送的价值比大补给高,所以即使是近距离,AI也是使用输送。
2、援队和援军的价值是一样的,这点比较奇怪。当用援队和援军能补给到相同数量的人时,AI优先使用援队。

以上所说的策略价值是在AI可以在原地施放策略,而且攻击范围内无敌方单位时的价值。如果需要移动施放策略,或者攻击范围内有敌方单位,所有策略价值要减去1。不过这里似乎还跟AI类型有关,未详细测试。另外,当物理攻击价值和策略价值相同时,使用优先度为物理攻击>攻击策略>补给策略>辅助和妨碍策略。[/size]

[color=Silver][[i] 本帖最后由 zhouhuan 于 2015-2-21 08:48 编辑 [/i]][/color]

2014-8-30 09:44 zhouhuan
移动规律篇

[size=4]一张走位优先度的实测图,1最高,12最低。[/size]
[attach]134656[/attach]


[size=4]我以前写过一篇《曹操传主动出击AI在相同距离下的走位规律》,现在这个移动规律篇就是对该规律进行更加系统的描述。
在《行动价值篇》里讲到,AI优先选择行动价值最高的一项行动。那么如果有多项行动的价值相等,AI又会如何选择呢?本篇要讲的就是判断完行动价值以后,AI的移动规律。
AI的移动规律大致可以分为攻击区域内有敌人和无敌人两种,后者是建立在前者的基础上的,所以首先来讲一下相对简单的有敌人的情况。这个情况里面包含了三个规律,其中有一个规律应该是众所周知了,那就是所谓的“就近原则”,AI会优先选择离自己最近的攻击位。然而这个规律说起来简单,其实里面另有玄机。只是因为在一般情况下不影响我们的判断,所以即使不知道这个玄机也没关系。[/size]

[size=4][b]规律一:AI优先选择移动力消耗最少的位置[/b]

这句话里面包含了两个信息:“移动力消耗最少”和“位置”。
曹操传中的距离计算并不是简单的数一下格子数就行了,还要算上地形对移动力的影响。所以这里不说“距离最近”,而说“移动力消耗最少”。那么这个“位置”又是哪个位置呢?当然不是攻击位置,否则就没必要特别说明了。这个“位置”是指攻击位的上下左右四格。看下图:AI到ABC三个白框的行动价值相等,这三个白框往上下左右各延伸出四个格子,除去对方贴身四格和AI移动范围外的格子,剩下1234四个有效格子。AI到23两个格子消耗的移动力最少,所以会优先选择这两个格子,最终移动到B框。[/size]
[attach]134657[/attach]

[size=4]不过对上面这种情况来说,这完全是多此一举的判断,直接用ABC白框来判断更省事,下面再举一例。下图中,ABC三个白框行动价值相等,A框明显距离远,就不考虑了。B和C的白框延伸出1234四个有效格子,AI到1号格子需消耗4点移动力,到3号格子需消耗3点移动力,所以AI会选择3号,从而去C框攻击荀彧。[/size]
[attach]134658[/attach]

[size=4]如果把郭嘉右移两格,让AI到1号格子消耗的移动力变为2,AI就会去左边攻击郭嘉。[/size]
[attach]134659[/attach]

[size=4]如果让郭嘉右移一格,AI到两边消耗的移动力都是3,AI又会如何选择呢?

[b]规律二:AI优先选择靠上的位置,若高度相同,则优先选择靠左的位置。[/b]

这里的“位置”当然也和上面一样指的是攻击位的上下左右四格。
下图中,AI到1234四个格子消耗移动力都相等,1号和3号两个格子靠上,1号比3号靠左,所以AI会选择1号,最终去左边攻击郭嘉。[/size]
[attach]134660[/attach]

[size=4]在郭嘉右边两格处安排一名武将。受该武将贴身四格的影响,1号格子失效,剩下234三个格子,AI会选择位置靠上的3号,从而去右边攻击荀彧。[/size]
[attach]134661[/attach]

[size=4]假如AI装备了赤兔马,则可以忽略对方贴身四格的影响,1号格子仍然有效。
前面说的都是AI如何选择攻击位的上下左右四格,离攻击位还差一步,那么AI最后究竟是怎样选择这最后一步呢?

[b]规律三:AI按上右下左的顺序选择最后一格。[/b]

下图两个白框延伸出三个有效格子,1号格子最靠上,所以AI优先选择1号。再根据规律三,最终到右边攻击荀彧。[/size]
[attach]134662[/attach]

[size=4]如果AI一开始就只能移动一格,同样是按照上右下左的顺序移动。[/size]
[attach]134663[/attach] [attach]134664[/attach]

[size=4]根据这三个规律,就可以完美地解释开头那张图的优先度了。比如2和3,就是规律三的第一个例子。比如4和5,就跟规律二的第一个例子差不多。比如6和7,符合规律三里面的上右下左顺序。
上下左右四格是移动规律的核心,规律一和规律二均是基于此来判断的。想知道AI最终会走到哪个位置,就要先知道前一步是在哪个位置。下面再举一个规律二和规律三合起来判断的例子,规律一比较简单,就不再举例了。
下图AI有三个等价值的攻击位可以攻击,优先度是1-2-3[/size]
[attach]134665[/attach]

[size=4]来看一下AI是怎么判断的。
画出三个攻击位的上下左右四格,除去紧贴人物的格子,剩下四个有效格子。[/size]
[attach]134666[/attach]

[size=4]根据规律二,AI会优先选择最靠上的格子。这个格子周围只有下方的一个攻击位,所以还用不到规律三,直接判断往下走攻击荀彧[/size]
[attach]134667[/attach]

[size=4]然后是同一高度下,靠左边的格子。这个格子周围有两个攻击位,此时就要用到规律三了。按规律三的上右下左顺序,优先选择下方的司马懿,最后再选择左方的郭嘉。[/size]
[attach]134668[/attach]





[size=4]下面开始讲攻击区域内没有敌人的情况,这种情况下,如果AI类型不是到某个目的地,那就会朝“某个人”移动,关键是如何确定出这个“人”。这个判断过程不仅要用到前面说过的三个规律,其后续还有两个规律:规律四和规律五。
先看下图,敌人在AI攻击区域外,AI先要根据前三个规律确定一个攻击位。这个时候AI不会在乎是否会被反击,所以在判断时会把所有的攻击位都算上(这里内部程序的算法估计是用AI的攻击范围覆盖了对方的攻击范围)。另外,连攻击位都已经在AI移动范围外了,那么AI也不会在乎延伸出来的上下左右四格是否在移动范围内。荀彧周围共有8个攻击位,很容易判断出AI优先选择A框攻击位。[/size]
[attach]134669[/attach]

[size=4]到这里还没结束!上面说过,AI是朝离自己最近的“人”移动,而不是最近的“攻击位”移动。该图中,AI在A框里能攻击到的只有一个敌人,所以最终目标锁定为这个人,然后朝着此人(或者说此人所在的位置)移动。
那么问题来了,如果在A框里能攻击到多个人,AI会如何选择?

[b]规律四:AI优先选择出场顺序靠后的人。[/b]

这个顺序指的是出兵界面的武将顺序,越靠后优先度越高。
下图中,根据前三个规律,AI仍然是优先选择A框。此时AI在A框可以攻击到两个人。假如在出兵时,郭嘉位于荀彧之后,那么AI就会锁定郭嘉。[/size]
[attach]134670[/attach]

[size=4]锁定了郭嘉后,AI会选择一条移动力消耗最少的路线前往郭嘉所在地。如果这样的路线有好几条,AI会如何选择?

[b]规律五:AI按上右下左的路线朝目标移动。[/b]

下图中,AI到1号位的路线是先往上的,所以要优于往右走的2号位。[/size]
[attach]134672[/attach]

[size=4]再比如下图,刘晔比曹操后出场,AI按照上右下左的路线接近刘晔[/size]
[attach]134673[/attach]

[size=4]以上五个规律便是整个移动规律的全部内容,简单概括起来就是:
规律一确定移动力消耗,规律二确定攻击位前一格,规律三确定攻击位,规律四确定人,规律五确定路线。



下面再举一个完整的例子,看一下AI的整个判断过程。
下图我军两个人在AI的攻击区域外,AI是连弩兵。[/size]
[attach]134674[/attach]

[size=4]本来在开始判定之前,要画出所有攻击位的上下左右四格。但是连弩兵的攻击范围太大,就不一一画出了。反正从图中可以很直观地看出来,不需要严格地按照规律一来判断。这里只画出最近的几个攻击位和它们的上下左右四格。[/size]
[attach]134675[/attach]

[size=4]根据规律二,AI选择最靠上的一个青色格子[/size]
[attach]134676[/attach]

[size=4]根据规律三,AI选择下面的这个攻击位[/size]
[attach]134677[/attach]

[size=4]根据规律四,AI选择出场靠后的刘晔[/size]
[attach]134678[/attach]

[size=4]根据规律五,AI按上右下左的路线走到离刘晔最近的位置[/size]
[attach]134679[/attach]

[size=4]AI的最终走位如下图所示。[/size]
[attach]134686[/attach]

[size=4]最后,来解释一下原版曹操传中的一个现象:主动出击的AI原地不动。
在第一章第12关的袁术讨伐战中,西门吕布军的行动很奇怪,一开始原地不动,等其它几个门进攻到一定程度后才开始行动,而且移动方向也很怪异。虽然可以通过编写剧本来达到这种效果,但我查看了剧本后,却没发现有这种设置,吕布军从头到尾都是很普通的主动出击。现在就用移动规律来看一下究竟发生了什么事。
西门,吕布和敌人的站位如图[/size]
[attach]134680[/attach]

[size=4]先通过前三个规律,判断吕布会选择哪个攻击位,这里显然是下图中白框的位置,详细判断过程就不写了[/size]
[attach]134682[/attach]

[size=4]在白框中吕布可以攻击到多个人,根据规律四,AI会选择出场顺序靠后的人。通过查剧本可知,白框右下方那个弓兵的出场顺序比他上面的两个步兵要靠后,所以吕布的目标锁定为这个弓兵,他要朝着弓兵的这个位置移动。但是,所有可以移动到这个弓兵的路线全被堵了(弓兵的上下左右四格都被敌人或者障碍物占据),所以吕布只好不动了。下图中把吕布的移动力修改到255,可以看得更直观。[/size]
[attach]134683[/attach]

[size=4]下图,当我军进攻到一定程度,打通吕布通往弓兵的道路时,吕布就会朝着弓兵移动,选择移动力消耗最少的一条路线,按照上右下左的顺序走到图中的白框位置。[/size]
[attach]134684[/attach]

[size=4]如果下方的孙坚军进攻足够快,先于我军打通道路,那么吕布会往下方移动。下图红圈处是一格浅滩,消耗移动力比沼泽少,吕布肯定会选择经过这格浅滩的路线。但是经过这格浅滩的路线也有好几条,此时就要用到规律五,按照上右下左的顺序,吕布最终会走到下图白框的位置[/size]
[attach]134685[/attach]

[color=Silver][[i] 本帖最后由 zhouhuan 于 2015-7-20 21:38 编辑 [/i]][/color]

2014-8-30 09:44 zhouhuan
站位规律篇

[size=4]站位规律,指的是AI的目的地被自己人占据后选择站位的规律。分为敌人在攻击区域外和攻击区域内两类。
前一类比较简单,当所有可攻击敌人的位置被自己人占据后,AI就会原地不动,若附近有恢复地形则进入恢复地形。
后一类则跟上下左右四格有关,需要再分为三种情况



[b]一、目的地在AI移动范围内[/b]

下图步兵的AI是逃至指定点——白框,然而白框的位置已经被自己人占据。那么以白框为中心,往上下左右延伸出四个格子,然后按照移动规律依次选择四个格子。[/size]
[attach]134688[/attach]

[size=4]如果延伸出来的格子再被占据,则步兵原地不动[/size]
[attach]134689[/attach]

[size=4]再比如下图,献帝的AI是逃至指定点——白框。我军把白框以及从白框延伸出来的两个格子占住,献帝就不会动了。[/size]
[attach]134690[/attach]

[size=4][b]二、目的地在AI移动范围外面两格及以上[/b]

与目的地在移动范围内不同的是,这种情况要延伸两次。
下图步兵的AI是攻击武将——曹操,他的目的地就是曹操所在的那格。根据上右下左的移动规律,步兵会移动到白框,然而此时白框被自己人占据。于是以白框为中心,往上下左右延伸出四个格子,两个黄色格子在移动范围外不做考虑,步兵按照移动规律依次移动到两个青色格子。[/size]
[attach]134691[/attach]

[size=4]如果两个青色格子也被占据,则以这两格为中心,再延伸出上下左右四个格子。[/size]
[attach]134692[/attach]

[size=4]如果延伸出来的格子再被占,则步兵原地不动。[/size]
[attach]134693[/attach]

[size=4]再比如下图,步兵AI是到指定点——黑框,根据移动规律步兵会走到白框。若白框被自己人占据,则选择2号。若2号被占,则依次选择3、4、5号。若这五个都被占,则步兵原地不动。[/size]
[attach]134694[/attach]

[size=4][b]三、目的地在AI移动范围外面一格。[/b]

如图,步兵的AI是到指定点——黑框格子。[/size]
[attach]134695[/attach]

[size=4]这种情况比较特殊,因为电脑会排斥进入目的地上下左右的四格。为什么呢?因为一旦电脑进入了这四格就不会动了。
还是来看一下献帝的例子。下图献帝的目的地是曹操所在的那格,为了防止献帝逃跑,很多人都会采取下图的堵路方式,结果把献帝逼进了白框的位置。最后就算让开位置,献帝也不会动了。攻击武将、到指定点、跟随武将、逃至指定点这四种AI都会产生这个bug,但是前三者可以通过移动目标武将,或者靠敌方吸引让AI再动起来,唯独逃至指定点这个AI是无论如何也动不了。这个bug对几乎对所有兵种都适用,但是对原始移动力为3的轻炮车和重炮车却不适用。这两个兵种就算进入了白框,也会继续移动最后到目的地。[/size]
[attach]134696[/attach]

[size=4]回到原来的问题。下图电脑的目的地是黑色格子,按照移动规律,原本预定移动到白框位置,但由于会排斥进入这个位置,所以会先移动到以白框为中心延伸出的两个青色格子。[/size]
[attach]134697[/attach]

[size=4]当两个青色格子被占时,继续进行第二次延伸,一共有6个青色格子。这里的顺序比较奇怪,不是完全按照移动规律来选择,目前还没弄明白,总之就是这么一个延伸的规律。[/size]
[attach]134698[/attach]

[size=4]当二次延伸的格子再被占,步兵就原地不动[/size]
[attach]134699[/attach]

[size=4]最后还有一个特例,对于轻炮车和重炮车两个初始移动力只有3的兵种来说,只要一开始的目的地被占就会原地不动。如下图,重炮车AI为主动出击,本来应该往上移动,但是上面的位置被自己人占了,于是重炮车便原地不动。[/size]
[attach]134700[/attach]

[size=4]以上所说的规律对满足条件的主动出击、攻击武将、到指定点、跟随武将、逃至指定点这五种AI都适用。[/size]

[color=Silver][[i] 本帖最后由 zhouhuan 于 2014-8-30 10:52 编辑 [/i]][/color]

2014-8-30 09:46 zhouhuan
最后再占一楼

2014-8-30 10:23 WHITESHIP
坐等更完,存为htm做资料看。

2014-8-30 10:54 zhouhuan
回复 #7 WHITESHIP 的帖子

这片文章我已经添加到电子书2.0版里面了,今天在贴吧刚刚发布2.0版:hz1009:

2014-8-30 20:51 阿尔法孝直
物理攻击行动价值最好要写明哪些价值之间可以互相叠加。比如“目标是有名武将”的价值是8,究竟是只有8还是之前的价值加8呢?

[color=Silver][[i] 本帖最后由 阿尔法孝直 于 2014-8-30 21:27 编辑 [/i]][/color]

2014-8-30 21:58 zhouhuan
回复 #9 阿尔法孝直 的帖子

只要不冲突就可以叠加,可以参考举的那几个例子

2014-8-30 22:26 lufy
回复 #9 阿尔法孝直 的帖子

没想到了现在还能看到这么有意义的帖子啊
节度还等什么呢,可以给个推荐了吧

2014-8-31 03:14 立心
这帖不能加精吗

2014-9-1 17:01 墨叶
"曹操传中的一个现象:主动出击的AI原地不动。"

如果有合適地形,比如我軍守路口的。能否通過站位使主動出擊的敵人不動?

另外,這個帖子應該加精華。多幾點也可以。
也可以考慮把以前類似的帖子精華撤了,這個帖子加精華。

2014-9-1 19:29 zhouhuan
回复 #13 墨叶 的帖子

可以,实战中有出现过

2014-9-1 22:49 霓裳轻舞
不太懂,就是想问问,这贴跟这贴[url]http://www.xycq.net/forum/viewthread.php?tid=250765&highlight=[/url]
有什么区别吗?

因为之前看过链接的那贴。

2014-9-2 08:15 zhouhuan
回复 #15 霓裳轻舞 的帖子

那个帖子的内容讲的只是本帖4楼的移动规律部分,本帖2、3、5楼都是新的内容。
另外那个帖子是我在研究初期写的,总结得不是很到位,本帖内容写得更加系统。

2014-9-13 21:13 墨叶
回复 #16 zhouhuan 的帖子

你對到指定点的AI有研究嗎?

到目的地能攻擊到敵人價值為10,如果目的地不能攻擊到敵人價值有多少?
舉一個具體的例子,AI到目的地不能攻擊,而其他能攻擊的目標傷害低於10%血量高於40%無反擊,那麼AI會怎麼做。

2014-9-13 21:23 zhouhuan
回复 #17 墨叶 的帖子

第15项:以上几个位置若无法攻击到目标,则其位置价值减少1(此项还不太确定,故没有写在价值表内)
此项可以用来判断AI是去攻击目标还是去某个位置。有个例外是,如果恢复地形和目的地是同一个地方,那么作为恢复地形的价值不用减1。

2014-9-13 21:38 墨叶
如圖,槍兵AI是移動到指定點,暫時目標地為白框。

槍兵攻擊謝映登傷害20,謝映登197HP。槍兵對其他人傷害低於10%,且我軍均滿HP,齊國遠和王伯當無反擊。
這種情況槍兵會移動到白框。

如果增加槍兵的攻擊力,使槍兵對齊國遠王伯當的傷害超過10%,并把齊國遠改成8面攻擊。
則槍兵會去攻擊齊國遠。

請教其中的原理。

2014-9-13 22:00 zhouhuan
回复 #19 墨叶 的帖子

枪兵是否有穿透攻击

2014-9-13 22:05 墨叶
回复 #20 zhouhuan 的帖子

有。槍兵能攻擊8面,穿透2格。

2014-9-13 22:12 zhouhuan
回复 #21 墨叶 的帖子

那么第二种情况枪兵会去攻击齐国远是正常的,齐国远后面连着秦琼。
第一种情况就比较奇怪了,按理说枪兵去打谢映登的价值比较高。你这个伤害数值是按照枪兵站在山地上算出来的吗,枪兵在荒地和山地适应性是否一样?

2014-9-14 08:16 墨叶
回复 #22 zhouhuan 的帖子

你說的對,槍兵在荒地傷害沒有10%。
都弄懂了,謝謝。

2014-10-15 22:08 cs625625
好贴留名 膜拜神鸟大大

2015-1-2 13:31 maomao83118
这研究的好透彻啊!!

2015-1-2 14:24 神力助我
神鸟大大说得好全面啊,我等小学生之辈完全看不懂。

2015-1-2 14:51 风雪366
:!!:!!大爱技术贴,又学到了新知识

2015-2-21 08:55 zhouhuan
3楼策略价值,攻击策略说明第2点中有错误,之前写的是“比如目标总HP是300,AI对其策略伤害是98”,现改为88,我把30%当成1/3了。
电子书暂不修正。

[color=Silver][[i] 本帖最后由 zhouhuan 于 2015-2-21 08:58 编辑 [/i]][/color]

2015-5-12 15:38 lennoxlewis
辛苦了! LZ

2015-6-27 18:51 墨叶
一、二、四、五的AI如果残血,会朝着本方第一个出场的有名武将方向移动,如果该名武将已撤退,则会朝最近的敌方单位移动。

这个是有权值的还是必定的。
好像并非所有的残血主动攻击AI都一定向“第一个出场的有名武将方向移动”。

我傻了,下面有说明的。已经明白了。


残血目标进入恢复地形没有加分嘛?

[color=Silver][[i] 本帖最后由 墨叶 于 2015-6-27 19:32 编辑 [/i]][/color]

2015-6-27 20:01 zhouhuan
[quote]原帖由 [i]墨叶[/i] 于 2015-6-27 18:51 发表
一、二、四、五的AI如果残血,会朝着本方第一个出场的有名武将方向移动,如果该名武将已撤退,则会朝最近的敌方单位移动。

这个是有权值的还是必定的。
好像并非所有的残血主动攻击AI都一定向“第一个出场的 ... [/quote]
看第12项和15项

2015-7-20 12:21 imodream
在攻击范围外时AI的移动线路

好帖。有一点疑问想请教一下。

原文提到:
锁定了郭嘉后,AI会选择一条移动力消耗最少的路线前往郭嘉所在地,此时又要用到规律一和二。也就是郭嘉的所在地要往上下左右延伸出四格,AI选择到这四格中移动力消耗最少的一格。如果到这几格的移动力消耗都一样,那再根据规律二选出最优的一格。这里AI是选择1号格子。

而在后面的完整例子中提到:根据规律五,AI按上右下左的路线走到离刘晔最近的位置。
若是按上面郭嘉的例子,AI会走到黄线箭头所示位置左上一格(即选择目的地为刘晔上一格时的行动路线)。

我测试的结果也同完整例子。如图,若是按郭嘉的例子,则向A点移动,即左边,而实际上是按上右下左的路线走到白框位置。

2015-7-20 13:59 zhouhuan
回复 #32 imodream 的帖子

好像是有问题,郭嘉那个例子有点多余,容我三思

2015-7-20 21:45 zhouhuan
想不起来当初为什么要加这一段了,加了反而与实际不符,直接删掉吧

修正:
去掉四楼规律四中关于规律一和规律二的内容。

感谢32楼imodream指出错误

2015-9-28 20:37 49676016
非常感谢楼主大人的分享,看到这个帖让我发现曹操传的另一个玩法,真心兴奋,但有一个地方百思不得其解

如下图所示,左侧的张宝物理和策略攻击范围内只有张飞,AI为坚守原地,在分析张宝的行动价值

为了实验需要,我将张飞的防御修改为1、精神修改为150,行动价值计算如下:

物理攻击:
项目2:伤害预估值44(48),张飞总血量130,超过10%,14点
项目8:目标是有名武将,4点
项目11.3:非残血时进入恢复地形,前一回合处于120%地形,6点
合计24点

毒烟攻击:
伤害预估值2(6),张飞总血量130,0~10%,9点
项目11.3:非残血时进入恢复地形,前一回合处于120%地形,6点
另外按照补充说明,攻击范围内有敌人还要-1,但似乎和AI有关,暂时不纳入计算
合计15点

不管怎么计算,都应该是选择原地对张飞物理攻击,但他还是选择原地使用毒烟,只有在MP不足或能将张飞击杀时才会使用物理攻击,恳求楼主大人解惑,不胜感恩

[color=Silver][[i] 本帖最后由 49676016 于 2015-9-28 20:53 编辑 [/i]][/color]

2015-9-28 20:54 zhouhuan
[quote]原帖由 [i]49676016[/i] 于 2015-9-28 20:37 发表
非常感谢楼主大人的分享,看到这个帖让我发现曹操传的另一个玩法,真心兴奋,但有一个地方百思不得其解

如下图所示,左侧的张宝物理和策略攻击范围内只有张飞,AI为坚守原地,在分析张宝的行动价值

为了实 ... [/quote]
法师类AI应该是除了击毙之外不考虑物理攻击价值,只算策略价值。当初这个说明也忘了加上去了

2015-9-28 20:57 49676016
回复 #36 zhouhuan 的帖子

恩恩 非常感恩 终于解惑了

2015-9-28 23:10 49676016
回复 #3 zhouhuan 的帖子

不好意思又来请教楼主大人几个问题,恳请楼主大人解惑

1.请问行动价值第15项「以上几个位置若无法攻击到目标,则其位置价值减少1」所称的「无法攻击到目标」,是否包含攻击性及非攻击性的策略呢?如移动到兵营施放小补给,是否构成第15项?

2.法术类AI似乎倾向于移动到攻击范围内无敌人而可用策略攻击到目标的位置,而非消耗行动力最少的位置

3.「跟随武将」、「逃至指定点」的AI是否不考虑目的地以外的位置价值?我将敌军修改为残血,发现他们不会选择行动范围内与目的地方向不同的恢复地形

4.多体攻击的敌人在伤害、AI不满足第1到3项的情况下,选择攻击我方的单体目标,照理说待命的行动价值高于攻击,难道第5项在不满足第1到3项时的价值不是-4,甚至是有价值的?

5.殘血的判定似乎與是否為有名武將有關,有名武將是40%,非有名武將是20%

6.有关攻击性策略的施放,价值相同时,四系策略似乎是优先选择消耗MP最少的;消耗MP相同时,优先选择伤害最高的,也就是非风系的。另外,毒烟、定身、残血时的诱惑,适用伤害比例的范围相同时,三种策略的选择似乎没有绝对性,都有一定概率被使用

[color=Silver][[i] 本帖最后由 49676016 于 2015-9-29 15:46 编辑 [/i]][/color]

2015-10-2 00:16 zhouhuan
[quote]原帖由 [i]49676016[/i] 于 2015-9-28 23:10 发表
不好意思又来请教楼主大人几个问题,恳请楼主大人解惑

1.请问行动价值第15项「以上几个位置若无法攻击到目标,则其位置价值减少1」所称的「无法攻击到目标」,是否包含攻击性及非攻击性的策略呢?如移动到兵 ... [/quote]
1、第15项是针对物理攻击而言,至于策略方面如何我也没测试过,当时根本没想到。
2、对。
3、这两种AI不常见所以没测试过。
4、据某个技术人员所说,AI的行动价值应该是有一个不为0的初始值,所以即使这里是-4,行动价值也不一定是负数。另外我认为,行动价值为0只是代表这个AI不会移动攻击,而不是不攻击。不攻击的AI只有「跟随武将」和「逃至指定点」这两个。
5、对。
6、这些我也没测试。

2015-10-4 00:34 49676016
回复 #39 zhouhuan 的帖子

真的很感谢楼主大人不嫌麻烦的回复
另外请问,我用通用调适器v10.2.16查看第1关的战场资料,发现友军的步兵排在骑兵之前,但却总是在骑兵之后行动,相类似的还有第2关的李傕、郭汜晚于骑兵行动,是否代表调适器里显示的并不是出场顺序呢?
如果真是如此,请问要如何查看出场顺序呢?也下载了剧本编辑器,却还是搞不懂怎么看,程序白痴真的伤不起…

[color=Silver][[i] 本帖最后由 49676016 于 2015-10-4 00:39 编辑 [/i]][/color]

2015-10-4 00:46 zhouhuan
[quote]原帖由 [i]49676016[/i] 于 2015-10-4 00:34 发表
真的很感谢楼主大人不嫌麻烦的回复
另外请问,我用通用调适器v10.2.16查看第1关的战场资料,发现友军的步兵排在骑兵之前,但却总是在骑兵之后行动,相类似的还有第2关的李傕、郭汜晚于骑兵行动,是否代表调适器 ... [/quote]
如果真是这样,那这里面可能有其它规律,要重新测试了

2015-10-5 00:55 49676016
站位规律篇,对于延伸出的格子,仍然是依据规律一和规律二的顺序决定移动位置,只有目的地在移动范围外一格的二次延伸,是优先选择邻近目的地且靠上的位置,如果该位置就是臨時目的地,回归规律一和规律二;如果不是,其次选择邻近目的地且靠下的,然后回归规律一和规律二

另外,如果AI与目的地间存在敌方单位,选择路径时会避开敌方单位及其上下左右。但目的地是敌方单位的时候,会直接循消耗行动力最少、上右下左的路径移动,遇到中间有敌方单位,就以该敌方单位的前二格(即上下左右的上下左右,如斜角或前方2格)为临时目的地,依行动价值选择攻击敌方单位或移动至临时目的地待命,但若是现在的位置与该临时目的地相邻,则会原地待命,可能就是楼主所称的BUG了

个人是程序白痴,这些结论都只是猜测,感觉应该还有很多问题,恳请各位高手批评

[color=Silver][[i] 本帖最后由 49676016 于 2015-10-6 07:02 编辑 [/i]][/color]

页: [1]
查看完整版本: 曹操传AI理论


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.