马娘比赛机制
阅读
2024-05-11更新
最新编辑:Neku_m
阅读:
更新日期:2024-05-11
最新编辑:Neku_m
按右上角“WIKI功能→编辑”即可修改页面内容。
作者的话:开发人员已经不再将新的比赛机制代码储存在客户端应用程序中。所以文档内一周年后的大多新机制是基于游戏参数文件、比赛回放数据的捕获与手动测试推测出的。就我所知技能的相关数据仍然准确。
游戏逻辑概念
帧率
比赛以0.0666s每tick的方式进行。(约合 15 帧/秒).
为了能正确的回放比赛,游戏在比赛开始后的1秒内,或者在有马娘将要冲线前的25m内每1帧都会记录马娘的位置信息。否则,则是每秒钟记录一次位置信息。
(曾经有一个冲线时由于更新频次过低显示位置不正确的bug,后面增加了25m内记录来修正这个问题。)
赛段
每个赛道都被等距离分割成24部分。他们被编号为1-24段。
比赛阶段
一场比赛被划分为4个不同阶段。在不同阶段,马娘的目标速度和行为都有所不同,有些技能只能在特定阶段发动。在游戏逻辑中,比赛阶段被编号为0 到 3.
- 序盘 (0): 对应1 – 4段.
- 中盘 (1): 对应5 – 16段.
- 终盘 (2): 对应17 – 20段.
- 最终冲刺段(3): 对应21 – 24段. 这一阶段等同于终盘的后半,不要与“最终冲刺”的概念混淆。
在一场比赛中,屏幕顶部1的进度条在序盘至中盘之间会显示一个标记,而中盘到终盘则有另一个标记。在最终冲刺段时,UI会隐去。
译者注:由于phase3只在极少数的情况下,例如末脚等技能中被使用,大部分机制的条件均是终盘及最终冲刺段。在中文语境下,终盘一般就是指的phase2+phase3。单独称呼P2时一般称呼为终盘前段。
马身
马身(即一匹马的长度)是一个长度单位。
属性值
属性值的下限为1,上限为2000。
译者注: 技能调整值(诸如绿技能等)是进入比赛后提供的额外加成
面板属性值
面板属性是在马娘的面板上显示的属性。在计算基础属性值时,面板属性超过1200部分的属性会折半。
基础属性值
基础属性值是仅受干劲影响后的面板属性值。有时会使用这一属性值作为部分计算的依据,而非最终属性,比如 技能发动概率.
基础属性值下限为1,上限为2000.
干劲系数
絶好調 | 好調 | 普通 | 不調 | 絶不調 |
1.04 | 1.02 | 1.0 | 0.98 | 0.96 |
调整后属性值
每个调整后属性值的下限为1,上限为2000。
场地状况调整
对速度属性的场地状况调整
良 | 稍重 | 重 | 不良 | |
草地 | 0 | 0 | 0 | -50 |
泥地 | 0 | 0 | 0 | -50 |
对力量属性的场地状况调整
良 | 稍重 | 重 | 不良 | |
草地 | 0 | -50 | -50 | -50 |
泥地 | -100 | -50 | -100 | -100 |
跑法系数
S | A | B | C | D | E | F | G |
1.1 | 1.0 | 0.85 | 0.75 | 0.6 | 0.4 | 0.2 | 0.1 |
赛道加成
部分赛道具有1-2项属性作为门槛属性。如若对应的基础属性 超过该门槛值,会按以下比例加成调整后速度值。
- 对应属性 <= 300, +5%
- 300 < 对应属性<= 600, +10%
- 600 < 对应属性 <= 900, +15%
- 900 < 对应属性, +20%
最终加成是所有门槛属性加成的平均值。因此通过赛道加成能获取的最大奖励是20%。
育成模式加值
在单人模式下(比如育成中), 包括npc在内的所有马具有额外400点的调整后属性值。
比赛时速度
译者注:本节内容如无特别说明,计算所用到的属性值均为最终属性值。
目标速度
目标速度是马娘在比赛中企图到达的速度值。当马娘的当前速度低于目标速度,马娘会进行加速,而当前速度高于目标速度则会进行减速。目标速度不会低于最低速度,也不会超过30m/s。
有关位置意识系数的内容,请参考其相关章节。
初始并道加成
在序盘,且马娘位于最内侧栏杆0.12道宽以外,并且其内侧开放时,马娘的速度会获得初始并道加成。相关随机值只在比赛开始时随机1次。
跑法系数为
- 逃 0.02m/s
- 先 0.01m/s
- 差 0.01m/s
- 追 0.03m/s
变道加成
当马娘位于一个改变其变道速度(横向速度)的技能影响中,且在游戏的上一帧移动过跑道的情况下,马娘的纵向目标速度会获得变道加成。(一周年新增)坡道调整值
在马娘上坡或者下坡时,其目标速度会受到坡道的影响。详情请参见赛道事件表.
在上坡时,马娘会失去等同于 坡度*200/最终力量 的目标速度。
在下坡时,马娘有 最终智力*0.04% 每秒的概率进入下坡加速模式。在此模式下,马娘的目标速度会提升 0.3+坡度/10[m/s] ,并且其体力消耗会减少60%。下坡加速模式有20%概率每秒的概率结束。
赛道基准速度
一场比赛的赛道基准速度仅由该赛道的长度决定。
例如:
- 1200m 的比赛,其赛道基准速度为 20.8m/s
- 2000m 的比赛,其赛道基准速度为 20.0m/s
- 2500m 的比赛,其赛道基准速度为 19.5m/s
基础目标速度
基础目标速度的计算公式会随着比赛阶段变化。
在序盘和中盘,
需要特别提醒的是,在这两个阶段,马娘的目标速度不会受到马娘的速度属性影响。 在终盘和最终冲刺阶段,
跑法阶段系数
跑法 | 序盘 | 中盘 | 终盘及最终冲刺阶段 |
---|---|---|---|
逃 | 1.0 | 0.98 | 0.962 |
先 | 0.978 | 0.991 | 0.975 |
差 | 0.938 | 0.998 | 0.994 |
追 | 0.931 | 1.0 | 1.0 |
大逃 | 1.063 | 0.962 | 0.95 |
距离适应性系数
S | A | B | C | D | E | F | G |
1.05 | 1.0 | 0.9 | 0.8 | 0.6 | 0.4 | 0.2 | 0.1 |
赛道随机值
在上述调整之外,目标速度还会额外增加/减少赛道基准速度乘上一个随机值的数值,在每一赛段都会重新随机。这一随机值受到智力属性的影响。这部分随机性不会影响最终冲刺相关的计算。
例如:
- 400 智力下, 随机上限=+0.117%, 随机下限=-0.533%
- 800 智力下, 随机上限=+0.277%, 随机下限=-0.373%
最终冲刺速度
最终冲刺距离与最终冲刺目标速度在终盘开始时进行计算。(忽略赛段随机值)。注意不要将此概念与最终冲刺阶段混淆。
译者注:在一周年更新之前,最终冲刺速度的计算不含根性部分的数值,且终盘回复技能无法触发最终冲刺的重新计算。
在进入终盘时,若马娘的剩余体力足够以最终冲刺速度的最大值跑完剩余全程,她会立即以最大冲刺速度开始最终冲刺。
当剩余体力不足时,游戏会计算出一系列最终冲刺速度与最终冲刺距离的候选方案,计算的方式是每次降低最终冲刺速度0.1m/s,直到最终冲刺速度低至终盘的基础目标速度。之后,这些候选会以估计用时的顺序进行排序(估时由各自的距离除以速度得出,忽略加速过程)。从估计用时最短至最长,每个候选方案有的方案被选中。如若没有方案被选中,游戏会直接采取最慢的方案。
游戏在计算最终冲刺的消耗时,是按照在终点线前60m处恰好用光所有体力的方式来计算的,并且不会考虑加速至目标速度的过程。如果在进入在终盘后,马娘发动了一个回复体力的技能,游戏会重新计算最终冲刺距离和速度。但是,妨害性的技能即便影响了体力也不会触发重新计算。
初始速度
比赛开始时,马娘的基础速度是3m/s.
最低速度
马娘的最低速度受到其根性属性的影响。
在马娘用光体力时,马娘的目标速度会变成最低速度。
此外,最低速度还会在起跑冲刺后产生些微影响。这是因为在每一帧的速度增加计算后,若马娘的速度仍于最低速度,她的速度就会立即变成最低速度。
阻挡
当被阻挡时,马娘的速度不能高于前方的马娘的速度的0.988x(间隔 0m) - 1.0x(间隔 2m), 由两者间的距离决定。
实时速度
速度妨害类技能在上述计算之后直接影响实时速度。影响实时速度的变化是瞬时的,不会有加速/减速过程。
加速度
基础加速度
在正常情况下, [math]\displaystyle{ 基础加速度=0.0006[m/s^2] }[/math]
但在上坡时, [math]\displaystyle{ 基础加速度=0.0004[m/s^2] }[/math]
跑法阶段系数
跑法 | 序盘 | 中盘 | 终盘及最终冲刺阶段 |
---|---|---|---|
逃 | 1.0 | 1.0 | 0.996 |
先 | 0.985 | 1.0 | 0.996 |
差 | 0.975 | 1.0 | 1.0 |
追 | 0.945 | 1.0 | 0.997 |
大逃 | 1.17 | 0.94 | 0.956 |
场地适应性系数
S | A | B | C | D | E | F | G |
1.05 | 1.0 | 0.9 | 0.8 | 0.7 | 0.5 | 0.3 | 0.1 |
距离适应性系数
S | A | B | C | D | E | F | G |
1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.6 | 0.5 | 0.4 |
起跑冲刺
在起跑后,马娘会立即获得[math]\displaystyle{ 24.0m/s^2 }[/math]的加速度作为起跑加速度。当马娘的速度达到 [math]\displaystyle{ 0.85*赛道基准速度 }[/math] 时,起跑冲刺就会结束。
曾经起跑冲刺有一个bug,会使得起跑冲刺的加速度额外延续进正常阶段1帧。作为此bug的修复方案,在起跑冲刺过程中马娘的速度无法超过 [math]\displaystyle{ 0.85*赛道基准速度 }[/math],这样额外的加速度就不会带进正常阶段了。
在起跑冲刺结束后,马娘的通常无法在1帧内加速到最低速度,因此其速度会立即变成最低速度。
减速度
减速度和比赛阶段相关。
- 序盘时: [math]\displaystyle{ -1.2m/s^2 }[/math]
- 中盘时: [math]\displaystyle{ -0.8m/s^2 }[/math]
- 终盘时: [math]\displaystyle{ -1.0m/s^2 }[/math]
- 放缓模式(优先级高于以上所有情况): [math]\displaystyle{ -0.5m/s^2 }[/math]
- 体力耗尽(优先级高于以上所有情况): [math]\displaystyle{ -1.2m/s^2 }[/math]
体力
耐力转换为体力
在比赛开始时,会将马娘的耐力属性转换成体力。
跑法系数
逃 | 先 | 差 | 追 | 大逃 |
0.95 | 0.89 | 1.0 | 0.995 | 0.86 |
体力的消耗
体力每秒钟消耗一次。
状态调整值如下(有多项时,乘算叠加):
- 焦躁时, 1.6倍
- 位置意识处于放缓模式时, 0.6倍。.
- 下坡模式时,0.4倍。
场地状况调整值受场地状态影响
良 | 稍重 | 重 | 不良 | |
草地 | 1 | 1 | 1.02 | 1.02 |
泥地 | 1 | 1 | 1.01 | 1.02 |
在终盘和最终冲刺阶段,体力消耗会乘以根性系数。
例如:
- 200 根性时, 1.577倍
- 400 根性时, 1.408倍
- 600 根性时, 1.333倍
体力回复技能
体力可以藉由技能来回复。目前的体力恢复技能在发动时,均是立即回复最大体力值一定比例的体力。回复后体力超过最大体力值部分的会被舍去。尽管这些技能的发动条件和回复数额有所不同,但机制上均是一致的。
用尽体力
当马娘用尽体力时,她的目标速度会变成最低速度。
技能
有关技能列表和技能的发动条件,请参考技能数据站点。
译者注:原文给出的站点是 [1] 。国内常用的站点是 [2] 和 [3]
技能发动概率
大部分技能在比赛开始前需要通过一次智力检查才能在比赛中发动。
例如:
- 300 基础智力, 70.0%
- 600 基础智力, 85.0%
- 900 基础智力, 90.0%
- 1200 基础智力, 92.5%
注意使用的是基础属性。因此技能发动率不会受到跑法适应性系数或绿技能的影响。 译者注:自身的固有技能无需经过智力检查。继承的固有技能需要经过智力检查。大部分绿技能无需经过智力检查。
技能持续时间
大部分技能具有一个基础持续时间。实际的持续时间会受到赛道距离的影响。
技能冷却时间
大部分技能具有一个基础冷却时间。实际的冷却时间会受到赛道距离的影响。
译者注:大部分技能的基础冷却时间都是500s,这使得其根本无法在一场比赛中冷却完毕。少数技能为30s冷却,这类技能如果触发条件允许有可能会发动多次。
技能发动条件
译者注:一个技能在满足所有的技能发动条件之后就会发动。因此,技能的发动条件不仅限制了技能在满足什么条件时才能发动,也限制了技能会在什么位置发动。
形如Preconditions的是技能的前置发动条件。有前置条件的技能,需要同时满足前置条件和发动条件才能发动。这种情况下,一般前置条件用来描述技能的发动限制,而发动条件用来描述技能的发动位置。
藉由分离前置条件与发动条件,技能的发动位置变得更自由了。这是一周年更新时加入的新特性。
x_random类
带有随机修饰的技能在比赛开始后随机从其要求范围内选取一段10m的段落。当马娘位于这个段落内且满足其他技能发动条件时就可以发动技能。
straight_random
直线随机类技能先从所有的直线中随机选取一条作为发动技能的直线,再从这条直线上随机选取一段10m的段落作为发动区域。选取哪条直线和直线的长度是无关的。
corner_random
如果比赛会经过同一个弯道多次,此类技能在最后一圈(最后一次经过)时才会发动。
译者注:由于corner_random的填写方式,它总是会在最后一圈的第一个弯道立即发动。在一周年更新之后,大部分使用corner_random条件的技能改为使用新增的all_corner_random。仅有回复类技能仍然使用corner_random。
all_corner_random
在赛场中设置至多4个发动区域,在这些发动区域内即视为满足条件。触发段按照以下方式分配:
- 将比赛中所有的弯道设为候选弯道。
- 从所有候选弯道中随机选择一个。概率与弯道长度无关。
- 在选择的弯道上随机选取一段10m的段落作为发动区域。(基本等同于随机分布,但最后一个可以触发的位置需要位于弯道末尾−10𝑚的位置)
- 如果从这个发动区域的末端到弯道末尾还有至少10m的距离,这个候选弯道的距离会变成剩余这段的距离,否则将其从弯道候选中排除。
- 将选定弯道之前的所有弯道从候选中排除。
- 回到步骤2,直到4个发动区域全部被设置,或是已经没有候选弯道。
order_rate, order_rate_inXX_continue
比赛名次百分比条件会四舍五入地取整,转换成名次条件。
例如, 在9人比赛中,某技能的发动条件为order_rate>50。 9∗50%=4.5≈5. 该条件被转换为order>5 ,所以只能在6名及更低名次开启。
order_rate_inXX_continue类的条件要求马娘的顺位持续保持在XX百分比及之内,直至技能发动。 比赛的前5秒不计数。
near_count
附近有马的判定条件为
is_surrounded
如果同时在以下3个方向上均有其他马娘,马娘被视作包围状态。包围她的一只马娘可以同时在多个方向上满足条件。
外侧: 𝑎𝑏𝑠(前后距离)<1.5𝑚; 0<横向距离<3马宽
前方: 0<前后距离<3.0𝑚; 𝑎𝑏𝑠(横向距离)<1.5马宽
后方: −3.0𝑚<前后距离<0; 𝑎𝑏𝑠(横向距离)<1.5马宽
behind_near_lane_time, infront_near_lane_time
若马娘处于另一只马娘的以下范围内,就会被视为紧跟着她。
仅检查每个马娘名次前后1名的马来看是否满足这个条件。这类技能通常使用一个计时器,要紧跟一段时间作为触发条件。一旦马娘自己的名次发生变更,计时器就会立即重置(前后马娘的名次变化不会导致重置)。
技能目标
具有目标的技能在选择目标时并不区分友方或敌方。这意味着队友可以触发或成为技能的目标,并且如果技能有目标上限,队友也会计入这个上限内。
但是,在妨害类技能产生效果时,队友会被除外。
技能等级
具有等级的技能会随着等级的提升增加技能的数额,不过每个效果类型增幅有所不同。
译者注:目前只有马娘自身的固有技能具有技能等级。具有复数效果类型的技能每一项分别结算。
技能等级 | 影响目标速度 | 影响加速度 | 提供属性 | 其他 |
---|---|---|---|---|
1 | 1.00 | 1.00 | 1.00 | 1.00 |
2 | 1.01 | 1.02 | 1.01 | 1.02 |
3 | 1.04 | 1.04 | 1.02 | 1.04 |
4 | 1.07 | 1.06 | 1.03 | 1.06 |
5 | 1.10 | 1.08 | 1.04 | 1.08 |
6 | 1.13 | 1.10 | 1.05 | 1.10 |
7 | 1.16 | 1.125 | 1.06 | 1.12 |
8 | 1.19 | 1.15 | 1.07 | 1.14 |
9 | 1.22 | 1.175 | 1.08 | 1.16 |
10 | 1.25 | 1.20 | 1.10 | 1.18 |
技能动态数额
译者注:一部分技能的效果数额或持续时间会额外变化,在技能表内有一个值代表其变化类型。以下是目前的动态数额/动态持续时间列表及效果,其类型值在括弧内标识。
青春杯技能 (3-7)
青春杯技能的数额会随着你的队伍对应属性的基础属性总和变化。
- 总值 < 1200, 0.8x
- 1200 <= 总值< 1800, 0.9x
- 1800 <= 总值 < 2600, 1.0x
- 2600 <= 总值 < 3600, 1.1x
- 3600 <= 总值 1.2x
随机加倍1 (8)
- 60%, 0.0x
- 30%, 0.02x
- 10%, 0.04x
巅峰杯技能 (10)
巅峰杯技能的数额会随着育成时赢得的比赛数量变化。
- 胜场 < 6, 0.8x
- 6 <= 胜场 < 14, 0.9x
- 14 <= 胜场 < 18, 1.0x
- 18 <= 胜场 < 25, 1.1x
- 25 <= 胜场, 1.2x
发动特定类型技能的数目(14)
技能效果随着当局比赛发动的绿技能(技能tag 601-615)的数量而变化。
- 0-2 个发动, 0.0x
- 3-4 个发动, 1.0x
- 5 个发动, 2.0x
- 6+ 个发动, 3.0x
名次提升时额外效果 (19)
在发动时不产生任何额外效果,但在技能持续期间马娘的名次提升(超越了其他马娘)时,会在技能的剩余持续时间内持续提供额外效果。
改变技能持续时间 (默认=1)
按照距离头名的距离改变 (2)
按照剩余体力改变 (3)
持续时间会随着技能发动那一刻的剩余体力改变。
- 体力 < 2000, 1.0x
- 2000 <= 体力 < 2400, 1.5x
- 2400 <= 体力 < 2600, 2.0x
- 2600 <= 体力 < 2800, 2.2x
- 2800 <= 体力 < 3000, 2.5x
- 3000 <= 体力 < 3200, 3.0x
- 3200 <= 体力 < 3500, 3.5x
- 3500 <= 体力, 4.0x
名次提升时额外持续时间 (4)
在技能持续时间内,如果马娘的名次提升(超越了其他马娘)时,技能的持续时间会增加1秒,至多触发3次。这一增加的持续时间会受到其他改变技能持续时间的效果影响,并且也会和技能的基础持续时间一样,受到赛道距离的影响。请参见技能持续时间.
跑道
马娘所处的跑道位置由其位于内侧栏杆的距离来衡量。这一计算使用的单位叫做“道宽”。1道宽=11.25m。
游戏还会使用另一个单位“马宽”来衡量马娘之间的相对距离。1马宽=1/18赛道总道宽。
跑道位置的最小值是0,而最大值则随着比赛场地有所不同。最宽的是东京竞马场的草地赛道,有1.5的道宽,而最窄的则是札幌,函馆,新潟的泥地赛道,只有 1.1 道宽.
这一最大值有可能在比赛过程中变化。使用了这一机制的只有中山2000m与一些阪神的赛道。这一机制是否对游戏有实际影响还没有得到确认。
马娘位于的初始跑道位置等于[math]\displaystyle{ 马娘闸位 * 马宽 }[/math]。但只有使用1组闸门的大井竞马场完全遵从这个设定。其他比赛场地使用2组比赛闸门,所以从9号和10号闸位之间有额外0.6马宽的间隔。(盛冈场地则是8号和9号之间有额外0.6马宽的间隔)
变道速度
变道速度由三部分组成:实际变道速度,当前变道速度与目标变道速度。
在序盘和中盘,马娘到达首个变道检查点之前,其变道速度会有额外的起步补正。
在终盘和最终冲刺阶段,变道速度会得到名次补正。
当前变道速度会持续向着目标变道速度而变化。此速度为绝对值,与位移方向无关。这一变化的加速度是一个常数。当马娘成功到达目标跑道位置后,当前变道速度会被重置为0.
实际变道速度受技能影响,并且在向着内侧移动时会有额外补正。
在向外侧移动时,方向补正系数固定为1,而向内侧移动时,跑道位置越靠外则补正值越高。(负数代表了方向)
目标跑道位置
马娘的目标跑道位置指的是她们想要移动到的跑道位置。当马娘距离当前目标跑道位置的距离小于0.5马宽,又或者她在正在移动的侧向上被其他马娘阻挡时,目标跑道位置会进行更新。
更新目标跑道逻辑的第一步是决定使用哪种逻辑。一共有3种更新逻辑:通常模式,固定模式和超越模式。
可超越目标
想要进入超车模式就必须要有可超越的目标(可以有多个目标)。位于前方1-20米,且在自己视野内,且满足以下条件的其他马娘会成为超越目标:
- 该马娘的目标速度比你的目标速度更低,或者其位于被阻挡状态而当前速度比你的目标速度更低
- 你比该马娘的当前速度更高
- 你和该马娘之间的前后距离除以你和该马娘之间的当前速度差要小于15(以当前速度来计算,15秒内你可以追上该目标)
此外,如果你的前方被阻挡,距离你最近且正在阻挡你的马会自动成为可超越目标。
通常模式
当没有可超越目标,又或者马娘在序盘和中盘,且位于变道检查点之前的200m范围内时,马娘的变道更新逻辑采用通常模式。
通常模式的逻辑按以下顺序判定。
- 若体力耗尽,目标跑道位置总是当前跑道位置。
- 若处于放缓模式,目标跑道位置变成0.18。
- 如果在最终弯道及之后,且特殊变道位置在自己的外侧,并且外侧没有被阻挡的话,将目标跑道位置设置为特殊变道位置和当前跑道位置+0.05中的较小值。
- 如果在序盘或中盘,且内侧未被阻挡的话,向内侧移动(目标跑道位置设置为当前位置-0.05)。
- 如果在中盘,且距离内侧的马娘的横向距离小于1.75马宽,将目标跑道位置设置为内侧马娘位置再加2马宽的位置(如果贴得太近就拉开到2马宽的距离)
- 如果以上条件都不满足,则保持当前位置。
超越模式
当具有可超越目标时,马娘使用超越模式来决定变道更新逻辑。当马娘失去了所有的可超越目标后,超越模式还会接着持续1.5秒,之后会回到通常模式。
超越模式逻辑的第一步是列出一个超越目标候选列表。对于每个可超越目标而言,游戏按以下条件去循环寻找该目标所处的马群,找出位于最内侧的马娘和最外侧的马娘。
对于每个找到的最内侧/最外侧的马娘,其所处的跑道位置再减1马宽(内侧)或者加1马宽(外侧)的位置会成为一个候选跑道位置(这一候选位置不能小于最小跑道位置/大于最大跑道位置)。
对于每个侯选位置,如果视野内没有满足以下条件的马娘,就会继续将侯选位置加入到候补的目标跑道位置中。
这一模式还会与可超越目标无关地加入一个额外的侯选跑道位置。若是在序盘和中盘,且马娘距离最内侧栏杆有至少1马宽的距离,且内侧没有被阻挡时,会将 自身所处位置-1马宽的这个位置纳入候选。如果不满足这些条件,直行会成为候选。如果视野内没有满足以下条件的马娘,就会将这一侯选位置加入到目标跑道位置候补中。
对于每个候补而言,如果马娘在移动的一侧被阻挡或者和其他马没有足够的间隔来移动到那个候补位置,该候补就会被舍弃。剩余的候补会按以下规则得出一个候选分数,然后分数最低的候补会被选中。
阶段系数和不同的比赛阶段,以及在向内侧还是向外侧移动有关。
序盘: 内侧 = 1.0, 外侧 = 100.0
中盘: 内侧 = 1.0, 外侧 = 1.0
终盘及最终冲刺阶段: 内侧 = 1.0, 外侧 =1.15
如果没有候选剩余,就会直接把当前跑道选中。
最后,如果这个候选跑道位置在特殊变道位置的内侧,并且与候选跑道的间隔大于移动到特殊变道位置的距离,则将目标跑道位置设置为特殊变道位置。否则使用选中的位置作为目标跑道位置。
固定模式
一部分技能效果会影响目标跑道的选择,此时使用固定模式。在固定模式下,只要未在对应方向上被阻挡,目标跑道位置永远是技能指定的位置。
特殊变道位置 (最终弯道特殊变道)
进入最终弯道时会设置一个特殊变道位置,这一特殊变道位置等于
阻挡
前方阻挡
马娘前方被阻挡的条件是有另一只马娘在以下范围内。
假设前方2m处有其他马娘,横向距离需要小于0.3马宽才会被算作阻挡,而如果二者的前后距离是0m,那么横向距离的判定则是0.75马宽。如果有复数的马娘同时满足这一条件,前后距离最近的那一只会被选择为阻挡马。
当前方被阻挡时,马娘的速度无法高于
侧方阻挡
马娘两侧被阻挡的条件是有另一只马娘在以下范围内。
横向距离最近的马娘决定了有多少空间可以进行横向移动。
一部分技能需要“在所有方向上被阻挡”。实际上的要求是前方被阻挡,且至少一侧被阻挡。
重叠
2只马娘如果满足以下条件会被视作重叠。
当2只马娘发生重叠时,外侧的那只立即会向外“弹出”0.4马宽,并且会使外侧的马娘立即更新目标跑道位置。
视野
如果满足以下条件,则另一只马娘在你的视野内。
视野距离默认为20m ,且只会受到技能的影响。
公式表明,视野锥形(或者说三角形)的宽度最大值是恒定的,不受视野距离改变的影响。
起跑延迟和晚起跑
当比赛开始后,马娘的出闸会有随机0-0.1秒的延迟。此延迟不会受任何属性影响。若此延迟大于0.08秒,会被认为是一次晚起跑(出闸迟)。在队伍竞技场模式下,如果此延迟小于0.02秒,会有额外得分奖励。
以下技能会将出闸的随机时间改为一个固定值。
(0.085)
(0.1)
以下技能以乘法影响出闸延迟时间:
(0.4倍)
(0.9倍)
(1.5倍)
当起跑延迟小于1帧时,起跑的加速和体力消耗并不会有任何变化,但在第一帧移动的距离会是
加速后速度∗(1帧的时间−出闸延迟时间).
当起跑延迟大于1帧时,在第一帧不会产生任何加速,不会消耗体力,也不会移动距离。失去这1帧的加速的影响显著,可能会导致马娘被正常出闸的马娘阻挡。
即便起跑延迟大于1帧(约为0.066s),只要比0.08秒更低,就不会有晚起跑的警示。
位置意识
位置意识在前10个赛段影响目标速度(整个序盘,再加上中盘的前半段)。在通常模式以外有5种不同的位置意识模式。对于逃马而言有2种模式:提速模式和超越模式。对非逃马而言也有2种模式:加快节奏模式和放缓节奏模式。
在此之外,所有跑法还会有一个特殊的EX提速模式。
如果满足一个非通常模式的进入条件,马娘就会进入那个模式,这通常要求马娘成功通过一次基于智力属性的判定。这个判定无论成功与否,有固定2秒的间隔。
在满足非通常模式的退出条件,又或者非通常模式已经持续了一整个赛段(对于大逃跑法来说可以持续3个赛段)的长度后,马娘会回到通常模式。
在回到通常模式后,马娘需要经过1秒的间隔才能重新开始进入非通常模式判定(再加上前面提及的2秒间隔,一般需要等待3秒。)
领头马娘
对于非逃马的马娘而言,距离领头马娘的距离会成为其位置意识运作的参照物。
在1.5周年更新之前,领头马娘固定为跑法最靠前的马娘中,名次最靠前的马娘。
而在更新之后,决定领头马娘的机制尚不明确,目前只知道其使用了一个范围参数10.0和一个计数参数2。
译者注:更新后领头马娘可以在比赛中动态变化。在正常跑法分布的局和以前并没有区别。
但是消灭了领头乌拉拉这种规则黑洞,以及超人立刻放缓等恼人场景,让比赛节奏总体更快了。
逃马位置意识模式
逃马的位置意识总是尝试去争夺头名,并保持对于第二名的领先位置。
提速模式
目标速度系数: 1.04x
进入条件: 位于头名,但距离后方马的距离小于4.5m (如果场上只有1只逃马,范围增加到12.5m, 大逃则总是增加到 17.5m) ,并且通过智力判定。
退出条件: 马娘距离第二名的距离变得大于上述距离。
超越模式
注意不要和变道章节的超越模式混淆,二者没有共通点。
目标速度系数: 1.05x
进入条件: 在同一跑法的马娘中,此马娘并非头名,并且通过智力判定。
退出条件: 马娘相较同一跑法中第二名次的马,被拉开了10m (大逃为27.5)的距离时会提前结束。
非逃马位置意识模式
非逃马尝试保持自己和领头马娘距离在上限范围与下限范围之间。距离的上下限如下:
下限[m] | 上限[m] | |
先 | 3.0 | 5.0*距离系数 |
差 | 6.5*距离系数 | 7.0*距离系数 |
追 | 7.5*距离系数 | 8.0*距离系数 |
加快节奏模式
目标速度系数: 1.04x
进入条件: 距离领头马娘的距离比距离的上限更远,且通过智力判定
退出条件: 马娘距离领头马娘的距离比上下限之间的一个随机值要更近。
放缓节奏模式
目标速度系数:中盘时为 0.945x ,其他情况为 0.915x
进入条件: 距离领头马娘的距离比距离的下限更近,且当前没有增加目标速度或者实时速度的技能正在持续。
退出条件: 马娘受到一个增加目标速度或者实时速度的技能的效果的影响,
又或者距离领头马娘的距离比上下限之间的一个随机值要更远。如果在中盘,这一随机值的上限不直接使用上限,而改为使用[math]\displaystyle{ lerp(下限, 上限, 0.5) }[/math] 的数值。
EX提速模式
目标速度系数: 2.0x
逃马的进入条件: 有一个跑法本应比其靠后的马,位置在自身之前。
非逃马的进入条件: 领头马的跑法本应比其靠后。
退出条件: 没有跑法本应比其靠后的马位置在自身之前了。
此模式的优先级比其他模式都要高。
焦躁(掛かり)
每只马娘在比赛开始前决定其是否会在比赛中焦躁。这一概率和智力属性有关。
例如:
- 300 智力, 19.00%
- 600 智力, 13.26%
- 900 智力, 11.01%
- 1200 智力, 9.74%
技能自制心直接减少3%的焦躁概率。例如300智力时会从 19%降低到16%
如果马娘将会焦躁,那么她会随机挑选2-9赛段的其中1段,在进入该赛段所在位置时立即焦躁。
焦躁过程中,体力消耗速度会增加至1.6倍,并且会影响其位置意识模式使其爆冲。处于焦躁状态时会自动在所有位置意识的智力检查中成功。需要注意的是这只影响位置意识的AI,不会影响基于跑法的基础目标速度。
- 逃马会立即进入提速模式。
- 先行跑法会暂时按照逃跑法的位置意识模式行动。
- 差跑法有75% 概率按照逃,25% 概率按照先行的位置意识模式行动。
- 追跑法有70% 概率按照逃,20% 概率按照先行,10%按照差马的位置意识模式行动。
在这个状态下每3秒都有55%的概率退出焦躁状态,或者焦躁已经持续了12秒也会解除。技能的焦躁debuff发动时会使得焦躁时间立即变成5秒,并在5秒后取消焦躁状态。这个效果重复发动时会重新计时。
领头竞争 (位置取り争い)
注意:本小节的内容是根据游戏实际数据与参数进行推断和拟合得到的,而非直接逆向工程得到,无法保证其完全准确。
当有2只或更多逃,或者大逃跑法的马时,在比赛开始150m后直到第6赛段的区间内,它们可以触发领头竞争效应。
对于逃跑法而言,它们之间的距离必须满足
对于大逃跑法而言,它们之间的距离必须满足
逃和逃跑法的马互相竞争,大逃和大逃的马互相竞争,但是逃和大逃无法进行竞争。
在领头竞争期间,这些马基于其根性数值获得额外的目标速度。
和持续时间无关地,领头竞争总是会在第9赛段提前结束。
在领头竞争期间,体力消耗会按以下倍率增加。
- 逃马: 1.4x
- 逃马,且焦躁: 3.6x
- 大逃: 3.5x
- 大逃,且焦躁: 7.7x
冲刺竞逐(追い比べ)
注意:本小节的内容是根据游戏实际数据与参数进行推断和拟合得到的,而非直接逆向工程得到,无法保证其完全准确。
在比赛的最终直线上,两只或更多只马娘相近时会进行竞逐。
如果满足以下条件,一只马娘能够成为另一只的竞逐目标。
如果一个竞逐目标在2秒内持续成为目标,并且该目标的名次在50%及之前,且互相的速度差距小于0.6m/s, 冲刺竞逐就会触发。每个触发竞逐的马娘会根据其根性获得额外的目标速度和加速度,直到失去竞逐目标为止。
当一个马娘的体力小于15%时,它无法触发冲刺竞逐。
当一个马娘的体力小于5%时,它触发中的竞逐会提前结束。
积蓄脚力/脚力十足(足を貯める/脚色十分)
注意:本小节的内容是根据游戏实际数据与参数进行推断和拟合得到的,而非直接逆向工程得到,无法保证其完全准确,并且具体内容仍在调查当中。
马娘的基础力量值再加上技能影响的总和必须大于1200,才能进行积蓄脚力。
下列内容大多为推断:
每1.5秒(可能随着赛道长度变化),马娘检查自身状态来确定是否能够积蓄脚力。
增加积蓄脚力的模式:
- ID 1. 位置意识放缓模式 (6.7)
- ID 2. 位置意识通常模式 (4.2)
减少积蓄脚力的模式:
- ID 3. 领头竞争 (0.95)
- ID 4. 焦躁(0.8)
当积蓄脚力减少时,以下两种类型的技能似乎在其中扮演了未知角色:
- 走位速度上升 (28)
- 速度上升 (27, 31, 21,22)
如果积蓄的脚力足够,其将会在最终冲刺开始时转化为加速度。
力量属性为基础力量值(超过1200的部分不会减半)+ 技能调整值。
跑法距离系数为
短距离 | 英里 | 中距离 | 长距离 | |
---|---|---|---|---|
逃 | 1.0 | 1.0 | 1.0 | 1.0 |
先 | 0.7 | 0.8 | 0.9 | 0.9 |
差 | 0.75 | 0.7 | 0.875 | 1.0 |
追 | 0.7 | 0.75 | 0.86 | 0.9 |
状态系数为
- ID 3. 领头竞争, 0.98
- ID 4. 焦躁, 0.8
加速的持续时间尚且未知,但它也许取决于积蓄的脚力。根据观察,加速一般会持续三秒左右。其可能与下面的系数有关:
[math]\displaystyle{ 持续时间系数=1450 }[/math]
距离 | 对应的持续时间系数倍率 |
---|---|
短距离 | 0.45 |
英里 | 1.0 |
中距离 | 0.875 |
长距离 | 0.8 |
取位调整(位置取り調整)
注意:本小节的内容是根据游戏实际数据与参数进行推断和拟合得到的,而非直接逆向工程得到,无法保证其完全准确。细节之处仍待调查。
取位调整发生在比赛的 11-15 赛段,游戏每两秒会检查一次马娘是否距离头名过远(与智力有关)或周围有无马娘(与毅力,周围马娘数量与周围同跑法马娘数量有关)。如果检查成功,马娘将会进入取位调整状态。
具体的检查条件未知,但它使用了以下的阈值和其它条件。
与头名马娘的距离值(与赛道长度成正比)
跑法 | 距离 |
---|---|
大逃 | 0.0 |
逃 | 0.0 |
先 | 2.5 |
差 | 5.0 |
追 | 10.0 |
马娘进入取位调整模式后,会在2秒内消耗体力来增加目标速度,并在这之后进入1秒的冷却期。
[math]\displaystyle{ 目标速度提升 = ((力量属性/1500) }[/math][math]\displaystyle{ 0.5 }[/math] [math]\displaystyle{ * 2.0 + (毅力属性/3000) }[/math][math]\displaystyle{ 0.2 }[/math][math]\displaystyle{ ) * 0.1 * 跑法系数 }[/math]
跑法 | 跑法系数 |
---|---|
大逃 | 0.2 |
逃 | 0.8 |
先 | 1.0 |
差 | 1.0 |
追 | 1.0 |
[math]\displaystyle{ 体力消耗 = 20 * (跑法系数 * 距离系数 + 附近马娘参数) }[/math]
体力消耗的跑法系数为
跑法 | 耐力消耗跑法系数 |
---|---|
大逃 | 1.5 |
逃 | 1.2 |
先 | 1.0 |
差 | 1.0 |
追 | 1.0 |
体力消耗的距离系数为
- 距离 < 1401m, 0.3x
- 距离 < 1801m, 0.3x [原文如此]
- 距离 < 2101m, 0.5x
- 距离 < 2201m, 0.8x
- 距离 < 2401m, 1.0x
- 距离 < 2601m, 1.1x
- 距离 >= 2601m, 1.2x
当马娘不是因距离头名过远而进入取位调整,体力消耗将会额外增加0.5的附近马娘参数。换句话说就是它只在马娘因为附近有其它马娘而进入取位调整时被加入。
如果逃马周围10米内没有相同跑法的马娘,马娘的目标速度上升值会额外乘以下面的参数。(此参数有一个暂且无法解释的20%阈值)
跑法 | 跑法系数 |
---|---|
大逃 | 2.0 |
逃 | 1.1 |
耐力保存(持久力温存)
马娘将尝试保存自己完成比赛所需体力的1.035-1.4倍随机值,马娘将每2秒检查一次自己的剩余体力是否足够。如果体力不足,马娘将以30% * (智力属性 / 1000 + 智力属性0.03)的概率提示并进入耐力保存状态。进入耐力保存状态后,马娘将不会进入取位调整状态。
(这一公式极大程度上是推测的,真实概率远高于此公式得出的结果。我们确定了有30%,1000两个参数为除数与0.03为指数。在1000智力属性的测试下100次有93次立即进入了耐力保存状态)
触发体力回复技能将重置耐力保存状态,并允许马娘在体力足够时重新进入取位调整状态。
确保领先(リード確保)
注意:本小节的内容是根据游戏实际数据与参数进行推断和拟合得到的,而非直接逆向工程得到,无法保证其完全准确。细节之处仍待调查。
确保领先会发生在比赛的 11-15 赛段,它会在马娘没有领先较自己更靠后的跑法的马娘足够远的距离时触发。马娘会每2秒检查一次自己是否没有领先后方跑法马娘足够距离,如果满足条件,马娘将有约20%的概率(与智力有关,但详细算法不明)进入确保领先状态。
[math]\displaystyle{ 期望领先距离 = 跑法系数 + 0.0003* (赛道长度+1000) [m] }[/math]
期望领先距离的跑法系数为
逃 | 先 | 差 | 追 | |
---|---|---|---|---|
大逃 | 2.0 | 7.0 | 8.0 | 8.0 |
逃 | 4.0 | 8.0 | 8.0 | |
先 | 5.0 | 6.0 | ||
差 | 3.0 |
马娘将在2秒内消耗体力提升目标速度,然后进入1秒的冷却时间。 [math]\displaystyle{ 目标速度提升 =(毅力属性 / 2000) }[/math][math]\displaystyle{ 0.5 }[/math] [math]\displaystyle{ * 0.3 * 跑法系数 [m/s] }[/math]
跑法 | 速度提升跑法系数 |
---|---|
大逃 | 0.2 |
逃 | 1.0 |
先 | 1.0 |
差 | 0.8 |
[math]\displaystyle{ 体力消耗 = 20 * 跑法系数 * 赛道长度系数 }[/math]
体力消耗的跑法系数为
- 长度 < 1401m, 0.3x
- 长度 < 1801m, 0.3x [原文如此]
- 长度 < 2101m, 0.5x
- 长度 < 2201m, 0.8x
- 长度 < 2401m, 1.0x
- 长度 < 2601m, 1.1x
- 长度 >= 2601m, 1.2x
如果逃马附近10m内没有相同跑法的马娘,马娘的目标速度上升值将会额外乘以下面的参数。(这一加成尚且有一个无法解释的20%阈值)
跑法 | 跑法系数 |
---|---|
大逃 | 7.0 |
逃 | 2.0 |
比拼耐力(スタミナ勝負)
注意:本小节的内容是根据游戏实际数据与参数进行推断和拟合得到的,而非直接逆向工程得到,无法保证其完全准确。细节之处仍待调查。
如果马娘的基础耐力+技能加成耐力之和大于1200,马娘将在达到最大冲刺速度后额外增加一定的目标速度,这一加成会持续到比赛结束。
[math]\displaystyle{ 提示目标速度 = (耐力属性 - 1200) }[/math][math]\displaystyle{ 0.5 }[/math] [math]\displaystyle{ * 0.0085 * 距离参数 * 随机参数 }[/math]
距离参数取决于赛道长度:
- 长度 < 2101m, 0.0x
- 长度 < 2201m, 0.5x
- 长度 < 2401m, 1.0x
- 长度 < 2601m, 1.2x
- 长度 >= 2601m, 1.5x
如何计算随机参数尚不明确。参数文件如下表指出了“随机目标速度概率表随500力量改变”。
概率表类型 | 概率 | 对应随机参数 |
---|---|---|
0 | 500000 | 0.98-1.00 |
1 | 300000 | 0.95-0.98 |
2 | 200000 | 1.00-1.02 |
比赛用时
比赛结束时,在计分板上显示的时间和游戏实际所用的时间有所不同。
对于每个比赛来说,显示时间有一个最小值。举例来说,东京2400m草地比赛有一个最小用时为2分21秒6。若计算后的显示时间比最小值更快,显示时间会变成最小值-1秒到最小值+1秒之间的一个随机值。时间同样有一个最大值。
赛道信息文件
本节的详细内容对大部分玩家并无用途,除非你想非常细致的还原游戏情况。对于一般读者要注意的就是马娘跑在外道时会损失额外的距离。
位置与世界坐标
每个赛道从起点到终点有一个等间隔分成了1001个节点的3D坐标数据(关键帧)。每个关键帧都包括了3D坐标和一个四元数来表示旋转角。使用前后关键帧的数据做插值,马娘在某一处的行走距离可以对应的计算出在跑道位置=0 位置的坐标和旋转角。计算出跑道位置=0 的数据后,再根据马娘的跑道位置向赛道外侧将其移动,最终根据这两个信息得出马娘的世界坐标。
行走距离转换为世界坐标
根据前后两个世界坐标在XZ平面上的距离再除以行走距离,可以得到将行走距离转换为世界距离的比例。
在最内侧位置从0m到1m的赛道比例会用做这个赛道的基础比例。目前赛道的基础比例数值最低为0.96,最高为1.06。
每一帧都会计算这个行走距离转换为世界距离的比例。在每一帧,如果上一帧计算出的比例比赛道的基础比例更大,原本行走距离会按照上一帧计算出的比例进行缩减。
实际来说就是在弯道的外道跑动,或者进行变道时,要跑额外的距离,所以这一计算模型使得实际行走的距离要比根据速度计算出的距离更短来符合这一情况。
坡道数据(已经不再使用)
在1周年更新后,坡道数据转而使用比赛事件表中给出的信息,这里的信息已经不再使用。
马娘的朝向转换成欧拉角来计算在赛道某处的坡道情况。
如果计算出的坡度>1.0, 会被认作一个上坡,而坡度<−1.0则是下坡。
比赛事件表
赛道的很多参数在比赛事件表中定义,它们被认为是比赛期间会发生的事件。每个事件都有一个位置参数来定义其触发位置,还有一些有额外的参数。
ID | 名称 | 额外参数 | 注释 |
---|---|---|---|
0 | 弯道 | 弯道序号 (1-4); 弯道长度 | |
1 | 场地类型改变 | 将场地类型从草地变成泥地 | |
2 | 直线 | 标识开始或结束;直线类型(Front=1, Across=2) | 每个直线都由2个事件定义,一个标识直线开始位置,另一个标识结束位置。 |
3 | 赛道宽度最大值改变 | New value | 赛道宽度最大值改变 |
4 | 横板第一段BGM | 在横板比赛模式实装之前这两个id就存在,但之前的功能不为所知。 | |
5 | 横板第二段BGM | ||
6 | 实况触发器 | 未使用参数 | |
7 | 变道检查点 | 只在新潟1000直线使用了这个参数。对于没有使用此参数的赛道而言,变道检查点等于第一个弯道的开始位置。 | |
8 | 第一段BGM | ||
9 | 第二段BGM | ||
10 | 观众人群事件 | 未使用参数 | |
11 | 坡道 | 坡度,坡道长度 |
杂项注释
这一节的信息只是原作者自己参考用的注释。
比赛的初始化
- 比赛的初始化步骤按照以下顺序进行。
- (在初始化之前) 计算基础属性
- 计算技能的发动概率,决定哪些技能可以发动
- 发动所有在出闸时立即发动的技能
- 使用比赛物品 (一种尚未实装的道具,可以避免晚起跑)
- 按照闸位分配起始跑道位置
- 计算起跑延迟
- 计算调整后属性
- 将耐力属性转化为体力
- 设置初始速度
- 决定是否焦躁
每帧逻辑
每1逻辑帧,游戏按照以下顺序执行逻辑: (并非完整列表)
- Pre-Update
- 检查弯道是否结束
- Update
- 发动技能
- 回复因为技能发动导致的体力回复。
- 更新最终冲刺状态
- 更新目标速度
- 计算加速度
- 更新比赛阶段
- 计算前进距离和世界位置
- 检查坡道
- Post-Update
- Events
- 检查弯道是否开始