【赛马娘】变道相关(超车目标选择/超车变道判定)
[关于跑道位置]
在比赛中,会以[与内场栅栏的距离]来划分马娘选取的跑道,计算时使用的单位是[道宽],目前推测[1道宽=18m]
而在涉及到马娘之间位置的时候,则会用[马宽]来作为计量单位,[1马宽=1/18道宽=1m]
(*レーン距離=跑道位置 コース幅=道宽 ウマ幅=马宽 征集更好的译名)
跑道位置的最小值是0,最大值则会根据场地的不同而有所不同
最窄的跑道是札幌、函館、新潟的沙地跑道(仅1.1道宽),最宽的则是东京的草地跑道(1.5道宽)
极少数比赛里会出现最大值变动的情况,但是由于太稀少了目前推测是废弃设定
起跑时的跑道位置会根据马的号码来决定,公式如下
起步跑道位置 = 号码 x 1马宽
该计算有一个特例,大井竞马场的8号与9号之间的宽度会比其他场地多0.6马宽,这意味着9号往外的马娘都会在更远的地方起跑
[关于阻挡判定]
马娘之间的位置判定与3个因素有关,分别是前后距离/横向距离/速度差
如果前后距离大于0,则意味着对方在前方;小于0则对方在后方
如果横向距离大于0,则意味着对方在外侧;小于0则对方在内侧
如果速度差大于0,则意味着对方比你慢;小于0则对方比你快
(速度差与前两个有点区别 务必注意)
<前方阻挡判定>
判定条件为 0 < 前后距离 < 2m 且 横向距离 <= (1.0 - 0.6 × 前后距离 / 2m) × 0.75马宽
横向的判定会根据与该马娘前后距离的不同而发生变化(离得越近,横向阻挡判定越大)
而如果前方有很多马都能达成该判定,则会将前后距离最短的马娘视作阻挡对象
<横向阻挡判定>
判定条件为 前后距离 < 1.05m 且 横向距离 < 2马宽
如果技能发动条件里有[互相竞争]字眼的话,就是在指代横向阻挡(例:重炮大招 blocked_side_continuetime>=2)
如果技能发动条件里有[被包围]字眼的话,就是在指代前方+横向阻挡(例:乌拉拉S卡的吹风 blocked_all_continuetime>=1)
需要注意的是,这两个横向阻挡不一定只有外侧,内侧阻挡也可以触发(内侧栅栏不会触发横向阻挡)
最后是比较特殊的[附近有马娘]的判定条件,该条件为
前后距离 < 1.5m 且 横向距离 < 1.5马宽
[视野的定义]
马娘的视野受前后距离及视野距离影响,具体条件如下
前后方视野= 前后距离 <= 视野距离
横向视野= 横向距离 <= (11.5马宽 * 前后距离/视野距离 + 2马宽)/2
其中视野距离默认是20m,仅受视野类技能影响,比如皮皮船觉醒3的'視界良好!異常なし!'的效果就是增加视野距离10m
但是,提升视野距离并不会帮助马娘视野变开阔,只会看得更远
值得注意的是,部分红技(如优秀素质觉醒等级5的'八方にらみ' 其下位'鋭い眼光' 以及'まなざし')只会影响视野里能看见的马娘
[横向(变道)速度]
关于马娘的横向速度(即变道速度),有三个不同的定义,分别是目标横向速度/当前横向速度/实际横向速度
<目标横向速度>
目标横向速度 = 0.02 × (0.3 + 0.001 × 力量) × 起步补正 × 名次补正 [道宽/s]
・[起步补正]
生效比赛区间为序盘~中盘 生效赛道区间为起点至最终弯道前,具体公式如下
起步补正 = 1.0 + 0.05 × (当前所处的跑道位置 / 最大跑道位置)
・[名次补正]
生效比赛区间为终盘~最终冲刺,具体公式如下
名次补正 = 1.0 + 0.01 × 名次
<当前横向速度>
马娘会一直以目标横向速度为准进行加速/减速,其中加速度/减速度均为定值
加速度 = 0.02 × 1.5 [道宽/s^2]
到这一步为止计算的速度都是绝对值,与方向无关
<实际横向速度>
实际横向速度 = clamp(当前横向速度 + 技能补正, 0, 0.6) × 内侧移动补正 [道宽/s]
(clamp的意思就是当前横向速度加上技能补正之后最大是0.6 最小是0)
・[内侧移动补正]
该补正只有在马娘往内侧移动时才会触发,具体计算如下:
内侧移动补正 = -(1.0 + 当前所处跑道位置)
如果计算出来的结果是负数,那么马娘就会往内侧移动
由于前两个横向速度的计算结果都是绝对值,所以即使变方向也不会影响当前横向速度
<变道结束后>
变道结束后,系统会根据横向速度及变道时间来计算出移动距离,并与变道前的宽度相加得出新的跑道位置
移动距离 = 实际横向速度 × 变道时间 [道宽]
需要注意的是,如果移动的方向被阻挡了的话,马娘就不会进行变道
马娘一旦成功变道到目标跑道上,当前横向速度会被马上重置成0
[变道(通常模式)]
马娘在进行目标跑道选择的时候,会有几种不同的战略,在目前的比赛系统中,只有[通常模式]以及[超车模式]
(这里的通常模式和超车模式与位置意识里面的模式是两个东西)
值得注意的是,直线比赛里马娘不会进行变道
<目标跑道选择(通常模式)>
如果马娘[没有超车目标]或者[在比赛的序/中盘时,处于第一个弯道前200m的区间之内]则会进入通常模式
通常模式下的目标选择逻辑如下
・通用选择逻辑
如果HP为0时,则目标跑道为当前所处跑道
如果马娘的位置意识处于[放缓节奏],则目标跑道会被设定为0.18[道宽]
・序盘及中盘
如果内侧没有被阻挡,则目标跑道会被设定成 当前跑道 - 0.05 [道宽]
如果在中盘且马娘的内侧被阻挡,并且与该马娘的横向距离小于1.75[马宽]的话,
则目标跑道会在[当前跑道 + 0.05]和[阻挡马娘所处跑道 + 2马宽]之间取小值
・最终直线
这里涉及到一个最终直线跑道的计算,该计算与[马娘进入最终直线时所处跑道]有关,具体公式如下:
最终直线跑道 = clamp([马娘进入最终直线时所处跑道位置] / 0.1, 0, 1) × 0.5 + random(0.1)
如果该计算出来的值被判定为外侧,且外侧没有马娘阻挡,
则目标跑道会在[当前跑道 + 0.05]以及[最终直线跑道]之间取小值
・若以上条件均不满足,则目标跑道会被设定成当前跑道
需要注意的是,解包里有技能会影响目标跑道选择的相关信息,但是目前并没有相对应的技能
[超车目标(OvertakeTarget)选择]
如果马娘视野里有另外一只马娘满足以下条件,则该马娘会被选为超车目标,具体条件如下:
1. 1m <= 前后距离 <= 20m
2. 当前速度差 >= 0 (即对方跑得比你慢)
3. 前後距離 / 現在速度差 <= 15秒 (也就是按这个速度差去跑,15秒内可以追上)
4. 自己的目标速度 > 对方的目标速度 或者 对方被其他马挡住了的时候,自己的目标速度 > 对方的当前速度
X. 与上述条件无关,如果马娘的前方被阻挡那么阻挡对象会优先成为超车目标
要注意的是,被标记成超车目标的马娘即使跑出了马娘的视野,也会继续被当成超车目标
(与该判定有关的固有:白翼麦昆等)
[变道(超车模式)]
如果马娘标记了超车目标,则会马上进入超车模式,而在失去超车目标后的1.5秒会回到通常模式
但需要注意的是,在序/中盘时,如果马娘处于最初弯道前200m内则不会进入超车模式
<目标跑道选择(超车模式-有超车目标时)>
首先马娘会找到被标记成超车目标的马娘,然后会在该马娘所处的马群中,寻找该马娘内/外侧的其他马娘
简单来说就是,会以超车目标为基准,按以下条件寻找其他内/外侧马娘:
0 < 横向距离 < 2马宽 且 0 <= 前后距离 <= 3m
如果能以该条件在超车目标内/外侧找到马娘的话,则会以新找到的马娘为目标用相同的条件接着寻找下一名马娘,一直循环直到找到最内/外侧的马娘为止
(该寻找过程视野不起作用)
最后以最内/外侧的马娘所处的跑道位置作为基准来决定目标跑道,具体如下:
目标跑道(内) = 最内侧马娘跑道位置 - 1马宽
目标跑道(外) = 最外侧马娘跑道位置 - 1马宽
(要注意的是,计算出来的值不可以小于最小跑道位置/大于最大跑道位置)
计算完成后,如果马娘视野内没有满足以下条件的X马娘,则会将上述计算结果加入目标跑道候补中:
自身跑过的距离 <= X马娘跑过的距离 <= 最内/外侧马娘跑过的距离 + 0.5m (原文:ここの距離はスタートからの距離のこと)
目标跑道 - 0.8马宽 <= X马娘的跑道位置 <= 目标跑道 + 0.8马宽
<目标跑道选择(超车模式-无关超车目标时)>
如果马娘处于序/中盘,且内侧没有其他马娘,并且当前跑道位置 < 1马宽
则目标跑道 = 当前跑道位置 - 1马宽
除此以外,目标跑道 = 当前跑道
计算完成后,如果马娘视野内没有满足以下条件的X马娘,则会将上述计算结果加入目标跑道候补中:
自身跑过的距离 <= X马娘跑过的距离 <= 除自己以外名次最后的马娘跑过的距离 + 3m
目标跑道 - 0.8马宽 <= X马娘的跑道位置 <= 目标跑道 + 0.8马宽
<目标跑道候补的具体判定>
・间距(Lane Space)
此处引入一个新的概念:间距(Lane Space)
所谓间距,是指与[移动侧中满足横向格挡中纵向距离条件的马娘]的横向距离的绝对值 (吐槽:距离不就是绝对值ma)
如果没有满足该条件的马娘,则以[当前赛道的最大/小跑道距离与当前跑道距离之间]的绝对值作为间距
(往外侧移动就取[最大值-当前] 往内侧移动就取[最小值-当前])
・具体判定过程
1.对于一个目标跑道候补,如果移动侧被阻挡,或者间距小于所需的移动距离,则该候补会被废弃
2.剩余的候补会以某种标准算出得分,以得分最低的(也就是最近的)作为目标跑道,具体算分标准如下
得分 = (目标跑道候补 - 当前跑道位置) * 比赛区间系数 * 技能系数
比赛区间系数:与所处比赛区间及移动方向有关,具体为
序盘: 往内 = 1.0 往外 = 100.0
中盘: 往内 = 1.0 往外 = 1.0
终盘、最终冲刺:往内 = 1.0 往外 = 1.15
技能系数:虽然公式中有提到技能系数(1.5)这个东西,但是因为目前没有这种技能所以不会参与计算
3.若在条件1之后已经没有剩余的候补,则以当前跑道为目标跑道
X.如果采用的候补跑道比通常模式下算出的最终直线跑道还要靠内侧,并且最终直线跑道那一侧没有被阻挡,以及间距比移动距离要大的话,会优先采用最终直线跑道作为目标跑道
其余情况则采用选好的候补作为目标跑道
转载自:https://ngabbs.com/read.php?tid=26267254&_fu=60668756%2C1&rand=815