AI行动指令一般都是通过行为树之外的全局AI脚本来产生,并通知给AI行为树。常见的使用方式是,用一个全局AI脚本来产生各种指令,将指令传递给行为树,实现全局AI控制单位。
3.2 AI事件响应 3.2.1英雄躲避塔的攻击避免英雄冲塔行为。
3.2.2全局GankAI周期计算Gank形势。通知AI是否该Gank或者集体逃亡。
3.2.3救援塔当塔受到攻击时触发,用来产生AI指令,控制AI行为。
3.2.4兵线分布调整当游戏运行时间超过6分钟时,AI要开始抱团,强推一路,之后每三分钟都要进行一次抱团检测。
兵线危机值计算:
兵线局势需要考察的因素:英雄数量,士兵数量,塔的数量,前塔的HP,推荐公式:
其中a,b,c为参数,Lane表示兵线1,2,3。对应10v10游戏推荐参数设置:a=8, b=2, c=6, d=0.2,e=20
兵线危机值可以是负值,危机值越高则兵线越危险,值越低则兵线越安全。我们每10秒计算一次兵线危机值,根据兵线的状况来决定是否援助和抱团。
抱团是一个较为稳定的行为,我们设定每次防守抱团之后都要锁定切换兵线行为3分钟,进攻抱团锁定2分钟。
从另外两条兵线抽调英雄到最危险兵线。派遣数量服从规律:抽调后兵线上 我方英雄数目/敌方英雄数目>0.65(参数),尽可能多抽调英雄,但也确保不会让被抽调的兵线变得很不安全。派遣数目可以是0,表示全线吃紧,每条兵线都无法抽调英雄去支援其他兵线。初期,每条兵线最少也要保留一个英雄。
3.3 Gank详解 3.3.1 Gank行为基本设定首先要明确几个设计前提:
1.Gank行为优先级要高于单体行为优先级,或者说,Gank行为执行期间会屏蔽掉大多数单体AI行为。
2.Gank行为需要考虑到局部范围内(比如说整个屏幕)所有单位(包括敌方),而后控制所有我方英雄一起行动。
3.Gank AI控制下的机器人可能会表现出和单体AI完全不一致的行为,比如肉可能直接冲到敌人人堆中,吸收仇恨,至死方休;ADC和APC最优先的策略可能不是输出,而是控制;部分机器人输出伤害优先级要高于逃避危险。
4.Gank行为并非常态。达成一定条件之后才会触发。比如某个时刻敌我力量对比呈现一边倒
Gank小队的生成
Gank是局部小团队行为。必须考察周边敌我英雄和塔的个数,英雄和塔的潜在杀伤。Gank是个局部行为,只有距离很近的那些单位才会被认为是处于同一个Gank小组内。Gank小组是个动态变化的单位组。需要每隔一段时间重新生成一次。
生成方案:
寻找Gank中心英雄,Gank中心英雄只是根据位置搜索产生的,并不意味着它们会在Gank中处于核心地位。每隔一个周期(2秒,参数)先遍历某阵营场上全部英雄,统计这些英雄身边敌对英雄的数目。并按照递减顺序排列。身边敌对英雄越多,该英雄越可能处于Gank中心位置。按顺序遍历己方英雄(只遍历身边有敌对英雄的),如果它们还未参与Gank,则以该英雄为中心,在一定半径(2000,参数)内搜索敌我未参与Gank的英雄,将盟友英雄写入Gank小队,并标记它们已经参与Gank了,将敌方英雄写入Gank目标小队(目标小队并不是敌方的实际Gank小队,敌方的实际Gank小队生成方式和我方一致)。如此,所有可能正处于交战状态的英雄就按照区域划分到了不同的Gank小组。
Gank的发起和结束
Gank小队是动态生成的,每一时刻Gank小队都是存在的,但发起Gank行为是需要条件的。
每隔一段时间要检测一下Gank小队的实力对比.