Welcome to the Umamusume Wiki! If you want to contribute, please read the guidelines.

Game:Mechanics

From Umamusume Wiki
Jump to navigation Jump to search

This page lists various mechanics used in the game.

Disclaimer

Much of this information is taken from the Japanese version of the game; as such, there is no guarantee that the mechanics listed here are the exact version that the English version currently has. This page will be updated as more information becomes available.

Racing Mechanics


Mood

Base stats are raw stats modified by mood. This number is used sometimes instead of the final stat, most notably by skill activation chance. Base stat is clamped between 1 and 2000.
BaseStat=(RawStats+UnityTeamRankBonus)*MoodCoef

Mood Coefficients
Awful Bad Normal Good Great
0.96 0.98 1.0 1.02 1.04

Race Phases

A race is divided into 4 phases. Phases affect a trainee's behavior and target speed. Some skills only activate in a certain phase. Phases are numbered from 0 to 3.

  • Opening Leg (0): Section 1 to 4.
  • Middle Leg (1): Section 5 to 16.
  • Final Leg (2): Section 17 to 20.
  • Last Spurt (3): Section 21 to 24. (Not to be confused with the concept of last spurt.)

During a race, the progress bar at top of the screen has a tick between opening leg and middle leg, and another tick between middle leg and final leg. During the last spurt, the UI fades away.

Gate Blocks

Trainees can start in up to 8 different gate blocks. If there are more than 8 trainees participating in a race, trainees will share gate blocks with others starting from the outside. Gate Block 1 is considered the innermost gate and Gate Block 8 the outermost.

How trainees are assigned to gate blocks at the start of the race is completely random. Since certain skills activate based on the starting Gate Block, you have to pay attention to how many trainees are running in each race to know how likely they are to activate.

Start Delay

When the race starts, a trainee starts running after a random delay of up to 0.1s. The delay is NOT affected by wit. If the delay is more than 0.08s, it is considered a late start. If the delay is less than 0.02s, you gain a start dash score bonus in the team stadium.

The following skills changes the random start delay to a fixed number:

The following skills multiply the start delay:

When start delay is less than 1 frame, acceleration and HP consumption are unaffected. The distance traveled on the first frame is SpeedAfterAccel*(1frameStartDelay).

When start delay is greater than 1 frame, no acceleration, HP consumption, or distance traveled calculation takes place. The loss of acceleration is particularly significant and may cause a trainee to become blocked. Note that if the start delay is between 1 frame (0.066s) to 0.08s, there will be no late start warning.

Lanes and Overtaking

A trainee's lane is measured by distance from the inner fence. The unit used in calculation is course width. 1 course width equals 11.25m. The game also uses the unit "horse lane" to measure relative distance, where 1 horse lane equals 1/18 course width.

The minimum lane distance is 0, while the maximum differs between racecourses. The widest racecourse is the turf course in Tokyo with 1.5 course width, and the narrowest being 3 dirt courses in Sapporo, Hakodate, Niigata with 1.1 course width.

The maximum may change throughout the race, though the only instances of this are Nakayama 2000m and some distances of Hanshin racecourse. It is unclear how this affects a race, if at all.

A trainee's initial lane is HorseIndex*HorseLane+Adjustor, where the adjustor is:

  • 0 for Ooi
  • 1.86 if gate >= 14
  • 0.6 if gate >= 10 on other JRA courses

Changing Lanes

Lane move speed has 3 components: actual speed, current speed, and target speed.
TargetSpeed=0.02*(0.3+0.001*PowerStat)*FirstMoveLanePointModifier*OrderModifier

First move lane point modifier is applied in the opening and middle leg, before the move lane point.
FirstMoveLanePointModifier=1+LaneDistance/MaxLaneDistance*0.05

Order modifier is applied in the final leg and last spurt.
OrderModifier=1+Order*0.01

Current speed changes towards target speed over time. This value is not directional. Acceleration is a constant. Current speed resets to 0 when the target lane is reached.
Accel=0.02*1.5

Actual speed accounts for skills, and is faster when moving inward.
ActualSpeed=clamp(CurrentSpeed+SkillModifier,0,0.6)*DirectionModifier

Direction modifier is 1 when moving out, and affected by lane distance when moving in.
DirectionModifierOut=1
DirectionModifierIn=(1+LaneDistance)

If the trainee is blocked in the direction she is trying to move, the lane will not change. However, the trainee will continue to accelerate, building up current lane change speed in this case.

Target Lane

The target lane of a trainee refers to the lane she tries to move to. It is updated when a trainee is less than 0.5 horse lane away from the current target lane, or if she is blocked on the side she is trying to move.

First step is determining which strategy to use. There are 3 strategies: normal, fixed, and overtake.

Overtake Targets

To enter overtake mode, there must be overtake targets. Overtake targets are all visible trainees between 1 to 20m in front, whose distance gap divided by speed gap is less than 15 (meaning she can be caught up within 15 seconds at current speed difference) and either has a lower target speed than yours, or be blocked and has a lower current speed than your target speed. The closest trainee blocking in front is also automatically considered an overtake target.

Lane Normal Mode

Normal mode is used when there are no overtake targets, or when a trainee is within 200m before the move lane point during opening or middle legs.

Normal mode has the following rules:

  1. If out of HP, set the target lane to the current lane.
  2. If position keeping mode is pace-down, set the target lane to 0.18.
  3. If on the final straight and extra move lane is on the outside, set the target lane to the extra move lane if not blocked.
  4. If in the opening leg or middle leg, set the target lane to the current lane, 0.05 if not blocked.
  5. If in the middle leg and less than 1.75 horse lane from inside trainee, set target lane to 2.0 horse lane away from inside trainee.

Otherwise, keep straight.

Lane Overtake Mode

Lane Overtake mode is used when there are overtake targets. When all overtake targets are lost, the trainee stays in lane overtake mode for an additional 1.5s before moving back to normal mode.

Lane Overtake mode starts by making a list of overtake candidates. For each overtake target, find the innermost and outermost trainee of the crowd she belongs to. The specific conditions are:
0.0<=DistanceGap<=3.0
0<LaneGap<2HorseLane

For each inner/outermost trainee, the lane +/-1 horse lane is a candidate. The candidate is considered for next step if there is no visible trainee within these conditions:
OwnerDistance<=Distance<=Inner/OutermostUmaDistance+0.5
CandidateLane0.8HorseLane<=LaneDistance<=CandidateLane+0.8HorseLane

There is an additional candidate unrelated to overtake targets. If the phase is the opening leg or middle leg, and the trainee is at least 1 horse lane from the fence, also check if 1 horse lane in is a candidate. Otherwise, check if going straight is a candidate.
OwnerDistance<=Distance<=FurthestAheadOvertakeTargetDistance+3.0
CandidateLane0.8HorseLane<=LaneDistance<=CandidateLane+0.8HorseLane

If the trainee doesn't have enough lane space to either side to reach a candidate, the candidate is discarded. The remaining candidates are scored and the lowest scored candidate is accepted.
Score=abs(CandidateLaneLaneDistance)*PhaseCoef

Phase coefficient differs whether the candidate is inside or outside.

  • Opening leg: In = 1.0, Out = 100.0
  • Middle leg: In = 1.0, Out = 1.0
  • Final leg, last spurt: In = 1.0, Out =1.15

If no candidate is good, the current lane is accepted as a candidate.

Lastly, if the candidate accepted is to the inside of the extra move lane, and there is enough lane space to move to the extra move lane, the extra move lane is used as target lane. Otherwise, the accepted candidate is used.

Fixed Mode

Fixed mode is used when affected by skill effects that affect target lane. In fixed mode, target lane is the lane specified by skill effect as long as the trainee is not blocked from moving towards it.

Extra Move Lane (Final Corner Lane)

Upon entering final corner, the extra move lane is set to clamp(LaneDistance/0.1,0,1)*0.5+random(0.1).

Blocking

When blocked, a trainee's speed is capped between 0.988x (at 0m) to 1.0x (at 2m) of the speed of the trainee in front, scaled linearly to the distance in between.

Front Blocking

The conditions for a trainee to block in front are:
0<DistanceGap<2m
abs(LaneGap)<=(1.00.6*DistanceGap/2m)*0.75HorseLane

This means the lane gap needed to be blocked is 0.3 horse lane when the other trainee is 2m ahead, and 0.75 horse lane when 0m away. If multiple trainees satisfy this criteria, the one with the lowest distance gap is the blocking trainee.

While blocked in the front, trainee's speed is limited to (0.988+0.012*(DistanceGap/2m))*SpeedBlockFront.

Side Blocking

The conditions for a trainee to block on either side are:
abs(DistanceGap)<1.05m
abs(LaneGap)<2HorseLane

The trainee with the lowest lane gap determines how much space is available for movement.

Certain skills require being blocked on "all" sides, which means being blocked in front and on at least one side.

Overlapping

Two trainees are considered overlapping if:
abs(DistanceGap)<0.4m
abs(LaneGap)<0.4HorseLane

When 2 trainees overlap, the one on the outside will be immediately bumped 0.4 horse lane away. This also triggers a target lane update for the trainee outside.

Rushed (Kakari)

Each trainee rolls for Rushed before the race starts. The chance is affected by wit.
RushedChance=(6.5/log10(0.1*WitStat+1))2%

Examples:

  • 300 Wit, 19.00%
  • 600 Wit, 13.26%
  • 900 Wit, 11.01%
  • 1200 Wit, 9.74%

自制心 reduces the chance by flat 3%, ex: 19% to 16%.

If a trainee gets Rushed, she will do so in a random section between 2 to 9. She will get Rushed as soon as she enters the section.

During Rushed, HP consumption is increased to 1.6x. Rushed also forces the trainee to change their position keeping strategy and succeed in all position keep wit rolls. Note that this change in position keeping strategy only affects the AI, and does not affect things like strategy coefficient when calculating base target speed.

  • Front Runners will enter speed up mode
  • Pace Chaser will become Front Runners
  • Late Surgers have a 75% chance to become Front Runners, 25% chance to become Pace Chaser.
  • End Closers have a 70% chance to become Front Runners, 20% chance to become Pace Chaser, 10% chance to become Late Surgers.

Every 3 seconds in Rushed, the trainee has a 55% chance to snap out of it. Rushed ends if the trainee is still affected after 12 seconds. Rushed-related debuffs ("Frenzied" skills) extend the Rushed timer by 5 seconds, and this effect can be applied multiple times.

Vision

A trainee is visible if:
DistanceGap<=VisibleDistance
abs(LaneGap)<=((DistanceGap/VisibleDistance)*11.5HorseLane+2HorseLane)/2

Visible distance starts at 20m and is only modified by skills.

The formula suggests that the maximum width of the vision cone (triangle) is a constant unaffected by visible distance.

Stats

Each stat is clamped between 1 and 2000.
FinalStat=AdjustedStat+SkillModifier

Raw Stats

Raw stats are the stats shown in the stat panel. Raw stats past 1200 are halved before being converted to base stats.

Base Stats

Base stats are raw stats modified by mood. This number is used sometimes instead of the final stat, most notably by skill activation chance. Base stat is clamped between 1 and 2000.
BaseStat=(RawStats+UnityTeamRankBonus)*MoodCoef

Mood Coefficients
Awful Bad Normal Good Great
0.96 0.98 1.0 1.02 1.04

Adjusted Stats

Each adjusted stat is clamped between 1 and 2000.
AdjustedSpeed=BaseSpeed*RaceCourseModifier+GroundModifier+SingleModeModifier
AdjustedStamina=BaseStamina+SingleModeModifier
AdjustedPower=BasePower+GroundModifier+SingleModeModifier
AdjustedGuts=BaseGuts+SingleModeModifier
AdjustedWit=BaseWit*StrategyProficiencyModifier+SingleModeModifier

Speed

Target Speed

Target speed is the speed a trainee will trend towards. When below the target speed, a trainee will accelerate. When above the target speed, a trainee will decelerate. Target speed cannot go below minimum speed or exceed 30 m/s.
TargetSpeed=(BaseTargetSpeed|LastSpurtSpeed)*PositionKeepCoef+
ForceInModifier+SkillModifier+SlopeModifier+MoveLaneModifier

Position keeping coefficient is covered in its own section.

Force-in modifier is applied in the opening leg when a trainee is more than 0.12 course width away from the inner fence and inside is open. The random number is rolled once at race start.
ForceInModifier=Random(0.1)+StrategyModifier[m/s]

Strategy modifier is:

  • Runner 0.02m/s
  • Leader 0.01m/s
  • Betweener 0.01m/s
  • Chaser 0.03m/s

Move lane modifier is applied when a trainee is affected by a skill that modifies lane move speed, and has performed lane movement in the previous frame.
MoveLaneModifier=(0.0002*PowerStat)0.5[m/s]

Base Speed

A race's base speed is determined by racecourse distance.
BaseSpeed=20.0(CourseDistance2000m)/1000[m/s]

Examples:

  • 1200m races have a base speed of 20.8m/s
  • 2000m races have a base speed of 20.0m/s
  • 2500m races have a base speed of 19.5m/s

Base Target Speed

The formula for base target speed varies depending on phase. During opening leg and middle leg, BaseTargetSpeed=BaseSpeed*StrategyPhaseCoef. Note that target speed is NOT affected by speed stat in opening leg and middle leg.

During final leg and last spurt, BaseTargetSpeed=BaseSpeed*StrategyPhaseCoef+sqrt(500*SpeedStat)*DistanceProficiencyModifier*0.002[m/s].

Mood Coefficients
Strategy Opening Leg Middle Leg Final Leg/Last Spurt
Front Runner 1 0.98 0.962
Pace Chaser 0.978 0.991 0.975
Late Surger 0.93 0.998 0.994
End Closer 0.931 1.0 1.02
Runaway 1.063 0.962 0.95
Distance Modifier for Proficiency
S A B C D E F G
1.05 1.0 0.9 0.8 0.6 0.4 0.2 0.1
Randomness Per Section

At each section, race base speed multiplied by a random number is added to target speed. The random number is affected by wit stat. This randomness does not affect the last spurt calculation.
Max=WitStat/5500*log10(WitStat*0.1)[%]
Min=Max0.65[%]

Examples:

  • 400 Wit, Max=+0.117%, Min=-0.533%
  • 800 Wit, Max=+0.277%, Min=-0.373%

Starting Speed

The speed at race start is 3m/s.

Minimum Speed

A trainee's minimum speed is affected by her guts.
MinSpeed=0.85*BaseSpeed+sqrt(200.0*GutsStat)*0.001[m/s]

Minimum speed is the target speed when a trainee is out of HP. Minimum speed comes into effect after the start dash. After each frame's acceleration calculation, if a trainee has less than minimum speed, her speed is instantly raised to match the minimum speed.

Speed Debuffs

Speed debuffs affect actual speed (or distance covered, in a sense) after all other calculations. The change in speed is instant with no need for acceleration/deceleration.

Last Spurt

Last spurt distance and target speed are calculated at the beginning of the final leg (without randomness per section). The concept of last spurt is not to be confused with the last spurt phase.
LastSpurtSpeedMax=(BaseTargetSpeedPhase2+0.01*BaseSpeed)*1.05+
sqrt(500*SpeedStat)*DistanceProficiencyModifier*0.002+
(450*GutsStat)0.597*0.0001[m/s]

Upon entering the final leg, if the trainee has enough HP to run the remaining distance at max target speed, she will immediately start the last spurt using the max target speed.

If HP is insufficient, a list of last spurt speed and distance candidates are calculated by lowering the target speed by 0.1m/s each step, till the last spurt speed reaches base target speed of the final leg. Then candidates are sorted by the time it would take to finish the race (sum of respective distance divided by speed, ignoring acceleration). Going from best to worst time, each candidate has a chance of 15+0.05*WitStat[%] chance to be accepted. If all candidates are exhausted without passing the wit check, the slowest candidate is chosen.

Last spurt calculation estimates the stamina usage up to 60m before the goal line. The calculation does not take into account the time it takes to accelerate to target speed. If an HP recovery skill activates after entering the final leg, the last spurt speed and distance are re-calculated. Debuffs, on the other hand, do not trigger a re-calculation.

Acceleration

Accel=BaseAccel*sqrt(500.0*PowerStat)*StrategyPhaseCoefficient*
GroundTypeProficiencyModifier*DistanceProficiencyModifier+
SkillModifier+StartDashModifier

Base Acceleration

Normally, BaseAccel=0.0006[m/s2]. When running uphill, BaseAccel=0.0004[m/s2] instead.

Strategy Phase Coefficients
Strategy Opening Leg Middle Leg Final Leg/Last Spurt
Front Runner 1.0 1.0 0.996
Pace Chaser 0.985 1.0 0.996
Late Surge 0.975 1.0 1.0
End Closer 0.945 1.0 0.967
Runaway 1.17 0.94 0.956
Surface Proficiency Modifier
S A B C D E F G
1.05 1.0 0.9 0.8 0.7 0.5 0.3 0.1
Distance Proficiency Modifier
S A B C D E F G
1.0 1.0 1.0 1.0 1.0 0.6 0.5 0.4

Start Dash

During a start dash, a trainee gains 24.0m/s2 additional acceleration. Start dash ends when her speed reaches 0.85*BaseSpeed.

There used to be a bug related to this acceleration. As a fix, speed is capped at 0.85*BaseSpeed until the start dash modifier is removed, so that the extra acceleration cannot be carried over the threshold.

After the end of a start dash, a trainee is usually unable to accelerate to minimum speed within 1 frame. As a result, her speed will be raised to minimum speed.

Deceleration

Deceleration is determined by phase.

  • Opening leg: -1.2m/s2
  • Middle leg: -0.8m/s2
  • Final leg: -1.0m/s2
  • Pace Down mode (overrides all above): -0.5m/s2
  • Out of HP (overrides all above): -1.2m/s2

HP

Stamina

Stamina is converted to HP at the start of a race.
MaxHP=0.8*StrategyCoefficient*StaminaStat+CourseDistance[m]

Strategy Coefficient
Front Runner Pace Chaser Late Surger End Closer Runaway
0.95 0.89 1.0 0.995 0.86

HP Consumption

HP is consumed each second.
HPConsumption=20.0*(CurrentSpeedBaseSpeed+12.0)<sup>2</sup>/144.0*
StatusModifier*GroundModifier

Status modifiers are multiplicative:

  • 1.6x during Rushed effect
  • 0.6x when position keeping status is pace-down.
  • 0.4x when in down hill accel mode.

In the final leg and last spurt, HP consumption is multiplied by guts modifier.
GutsModifier=1.0+(200/sqrt(600.0*GutsStat))

Examples:

  • 200 Guts, 1.577x
  • 400 Guts, 1.408x
  • 600 Guts, 1.333x
Ground Modifier for HP consumption
Good Slightly Heavy Heavy Bad
Turf 1.0 1.0 1.02 1.02
Dirt 1.0 1.0 1.01 1.02

HP Recovery Skills

HP recovery skills instantly restore a certain percentage of the trainee's max HP. Any HP recovered that goes over the max is wasted. All HP recovery skills function identically outside their trigger condition and amount.

Running out of HP

When a trainee is out of HP, her target speed is set to minimum speed.

Surface Modifiers

Ground Modifier for Speed
Good Slightly Heavy Heavy Bad
Turf 0 0 0 -50
Dirt 0 0 0 -50
Ground Modifier for Power
Good Slightly Heavy Heavy Bad
Turf 0 -50 -50 -50
Dirt -100 -50 -100 -100
Ground Modifier for Proficiency
S A B C D E F G
1.1 1.0 0.85 0.75 0.6 0.4 0.2 0.1

Positions

Position Keeping

Position keeping affects target speed between section 1 to 10. There are 5 modes besides normal mode. For runners, there are 2 modes: speed up and overtake. For non-runners, there are 2 modes: pace up and pace down. Then there is a shared pace up Ex mode.

When in normal mode, a check to enter non-normal modes is performed every 2 seconds. The check consists of an entry condition and sometimes a wit check. Trainee returns to normal mode once exit conditions are fulfilled, or after she has run in this mode for the length of 1 section (3 sections for Runaway; distance of 1 section is rounded down before multiplying). Once exited, there is a 1 second cooldown (followed by the aforementioned 2 seconds interval for a total of 3 seconds) before the checks are run again.

Pacekeeping

Position keep modes of non-runner modes are determined based on their distance from the pacemaker.

The exact mechanism a pacemaker gets chosen is unclear. The only known information is that a range parameter 10.0 (meters?) and a count parameter 2(.0?) are used.

Prior to the 1.5 anniversary update, pacemaker was the first place trainee among the most forward strategy.

Runner Modes

Runners try to take first place and maintain a lead ahead of the second place.

Speed Up Mode

Target speed modifier: 1.04x

Entry condition: Trainee is first place and less than 4.5m (12.5m if she is the only Front Runner, 17.5m for Runaway) ahead of the trainee behind. Pass the wit check.
Chance=20*log10(WitStat*0.1)[%]

Exit condition: Trainee is 4.5m (12.5m if she is the only Front Runner, 17.5m for Runaway) ahead of the second place.

Position Overtake Mode

Not to be confused with overtake target lane mode. Target speed modifier: 1.05x

Entry condition: Trainee is not first place within the same strategy. Pass the wit check.
Chance=20*log10(WitStat*0.1)[%]

Exit condition: Trainee is 10m (27.5m for Runaway) ahead of second place among trainees who have the same strategy.

Non-Runner Modes

Non-runners try to maintain their distance with the pacemaker between 2 distance thresholds. The distance thresholds are:
CourseFactor=0.0008*(CourseLength1000)+1.0

  • Leader: Min=3.0 [m], Max=5.0*CourseFactor [m]
  • Betweener: Min=6.5*CourseFactor [m], Max=7.0*CourseFactor [m]
  • Chaser: Min=7.5*CourseFactor [m], Max=8.0*CourseFactor [m]
Pace Up Mode

Target speed modifier: 1.04x

Entry condition: Trainee's distance from the 1st place is above the maximum distance. Pass the wit check.
Chance=15*log10(WitStat*0.1)[%]

Exit condition: Trainee's distance from the 1st place is below a random value between the thresholds.

Pace Down Mode

Target speed modifier: 0.945x if in the middle leg; 0.915x otherwise

Entry condition: Trainee's distance from the 1st place is below the minimum distance. No target speed or current speed up skill effect is active.

Exit condition: Trainee's distance from the 1st place is above a random value between the thresholds. If in the middle leg, the maximum distance is replaced with lerp(Min, Max, 0.5) before rolling the random value. Also exits when trainee is affected by a skill that modifies her current speed or target speed.

Pace Up EX Mode

Target speed modifier: 2.0x

Entry condition for runners: another trainee whose strategy should be behind is ahead of the trainee.

Entry condition for others: pacemaker's strategy should be behind the trainee.

Exit condition: no other trainee whose strategy should be behind is ahead of the trainee.

This mode is prioritized over all other position keep modes.

Competition

Note: information in the following sections are inferred from the game's parameter file, which is less concretely confirmed as results from reverse engineering. Some details may still be under investigation.

Lead Competition

In the code, this mechanic is referred to as CompeteTop.

When there are 2 or more Front Runners or Runaway, lead competition may be triggered between 150m from start to the 6th section.

For Front Runners, relative position must be:

  • DistanceGap<3.75m
  • LaneGap<0.165*CourseWidth

For Runaway, relative position must be:

  • DistanceGap<5.0m
  • LaneGap<0.416*CourseWidth

Front Runners may compete with each other, Runaway may compete with each other, but a regular Front Runner does not compete with a Runaway.

During lead competition, the runners gain additional speed based on their guts stat.
TargetSpeed+=(500*GutsStat)0.6*0.0001[m/s]
Duration=(700*GutsStat)0.5*0.012[s]

Lead competition always ends when the 9th section is reached, regardless of whether duration has expired.

During lead competition, the HP consumption rate is multiplied by the following number:

  • Front Runner: 1.4x
  • Front Runner + Rushed: 3.6x
  • Runaway: 3.5x
  • Runaway + Rushed: 7.7x
Competition Fight

On the final straight of a race, competition may occur when multiple trainees are close to each other. A trainee is considered another trainee's competition target if:
abs(DistanceGap)<3.0m
abs(LaneGap)<0.25CourseWidth

If the competition target remains a target for more than 2 seconds, is top 50% in placement, and abs(SpeedGap)<0.6m/s, a competition is triggered. The trainee gains speed and acceleration based on her guts stat.
TargetSpeed+=(200*GutsStat)0.708*0.0001[m/s]
Accel+=(160*GutsStat)0.59*0.0001[m/s]

Competition cannot occur when HP is less than 15%, and will end if HP is reduced to below 5%.

Conserve Power/Release

The trainee must have base power + skills bonus greater than 1200 to conserve power. The following is mostly speculation: Every 1.5 seconds (possibly scaling with course length?), the trainee checks her state to increase or decrease conserved power.

Modes that increase conserved power:

  • ID 1. Position Keep Pace Down (6.7)
  • ID 2. Position Keep Normal Mode (4.2)

Modes that decrease conserved power:

  • ID 3. Lead Competition (0.95)
  • ID 4. Rushed (0.8)

When conserved power is decreased, the following 2 categories of skill ability type seem to also play an unknown role:

  • Lane Move Speed Up (28)
  • Speed Up (27, 31, 21, 22)

If there is enough conserved power, acceleration is increased at the start of the last spurt.
Accel=sqrt((PowerStat1200)*130)*0.001*StrategyDistanceCoefficient*ActivityCoefficient

The power stat is base power (not halved over 1200) + skill bonus.

Strategy Distance Coefficient
Short Mile Medium Long
Front Runner 1.0 1.0 1.0 1.0
Pace Chaser 0.7 0.8 0.8 0.8
Late Surger 0.75 0.7 0.875 1.0
End Closer 0.7 0.75 0.86 0.9
Runaway ? ? ? ?

The activity coefficient is:

  • ID 3. Lead competition, 0.98
  • ID 4. Rushed, 0.8

The duration of the acceleration is unclear, but may depend on how much power has been conserved. It lasts about 3 seconds based on observation. The following coefficients seem to be related:
ActivityTimeCoef=1450

Distance ActivityTimeDistanceTypeCoef
Short 0.45
Mile 1.0
Medium 0.875
Long 0.8
Compete Before Spurt

Competing before spurt occurs between section 11 and 15 of the race. Every 2 seconds, a check is performed to see if she is too far from the first place (scaling with wit), or has other trainees nearby (scaling with guts, number of nearby trainees, number of nearby trainees with the same strategy). If the check succeeds, she enters a competition mode.

The exact condition is unclear. It involves the following threshold and a number of other parameters:

  • Distance from the lead threshold (should scale with course distance)
Strategy Distance
Front Runner 0
Pace Chaser 2.5
Late Surger 5
End Closer 10
Runaway 0

If the competition mode is activated, the trainee speeds up at the cost of stamina for 2 seconds, then enters a cooldown of 1 second.
TargetSpeedIncrease=((Power/1500)0.5*2.0+(Guts/3000)0.2)*0.1*StrategyCoefficient

Strategy Strategy Coefficient
Front Runner 0.8
Pace Chaser 1.0
Late Surger 1.0
End Closer 1.0
Runaway 0.2

StaminaConsumption=20*(StrategyCoefficient*DistanceCoefficient+NearFactor)

Stamina consumption strategy coefficient

Strategy Stamina Consumption Coefficient
Front Runner 1.2
Pace Chaser 1.0
Late Surger 1.0
End Closer 1.0
Runaway 1.5

Stamina consumption course distance coefficient:

  • Distance < 1401m, 0.3x
  • Distance < 1801m, 0.3x [sic]
  • Distance < 2101m, 0.5x
  • Distance < 2201m, 0.8x
  • Distance < 2401m, 1.0x
  • Distance < 2601m, 1.1x
  • Distance >= 2601m, 1.2x

Near factor of 0.5 is applied if the trainee is NOT far from the first place. In other words, the mode is activated due to having the trainee nearby alone.

If a Front Runner trainee does not have another trainee with the same strategy within 10m, her bonus is further multiplied by the following factor. (There is an unexplained 20% threshold for this bonus.)

Strategy Strategy Coefficient
Front Runner 1.1
Runaway 2.0
Secure Lead

Secure lead can occur between section 11 and 15 of the race. It occurs when the trainee's lead against another trainee, who should be further behind according to their strategy, is less than desirable. Every 2 seconds, if the lead is less than desirable, there is a 20% chance (should scale with wit, but the mechanics is unknown) for the trainee to attempt to secure the lead.

DesirableLead=StrategyCoefficient+0.0003*(CourseDistance+1000)[m]

Desirable lead strategy coefficient

Front Runner Pace Chaser Late Surger End Closer
Runaway 2.0 7.0 8.0 8.0
Front Runner 4.0 8.0 8.0
Pace Chaser 5.0 6.0
Late Surger 3.0

The trainee speeds up for 2 seconds at the cost of stamina, then enters a cooldown of 1 second.
TargetSpeedIncrease=(Guts/2000)0.5*0.3*StrategyCoefficient[m/s]

Strategy Strategy Coefficient
Runaway 0.2
Front Runner 1.0
Pace Chaser 1.0
Late Surger 0.8

StaminaConsumption=20*StrategyCoefficient*CourseDistanceCoefficient

Stamina consumption strategy coefficient

Strategy Stamina Consumption Coefficient
Runaway 1.2
Front Runner 1.0
Pace Chaser 0.8
Late Surger 0.8

Stamina consumption course distance coefficient:

  • Distance < 1401m, 0.3x
  • Distance < 1801m, 0.3x [sic]
  • Distance < 2101m, 0.5x
  • Distance < 2201m, 0.8x
  • Distance < 2401m, 1.0x
  • Distance < 2601m, 1.1x
  • Distance >= 2601m, 1.2x

If a Front Runner trainee does not have another trainee with the same strategy within 10m, her bonus is further multiplied by the following factor. (There is an unexplained 20% threshold for this bonus.)

Strategy Strategy Coefficient
Runaway 7.0
Front Runner 2.0
Stamina Keep

The trainee will try to conserve a random amount of HP that is 1.035x to 1.04x the required amount to finish the race. Every 2 seconds, the trainee checks if she has enough HP left. If she does not have enough HP, there is a chance of 30%*(wit/1000+wit0.03) for her to notice and enter stamina keep mode. During stamina keep mode, the trainee will not participate in the competition.

(The activation chance formula is highly speculative. We know that there are 3 parameters: 30%, 1000 as a divisor, and 0.03 as an exponent. Packet capture testing has yielded 93/100 immediate activations with 1000 wit, which is higher than what the current formula predicts.)

Activating a HP recovery skill will reset the stamina keeping state, allowing for the competition to activate if HP is now sufficient.

Stamina Limit Break

If the trainee's base stamina + skills bonus is higher than 1200, she will gain an additional target speed buff upon reaching max spurt speed. The buff lasts till the end of the race.
TargetSpeedBuff=sqrt(StaminaStat1200)*0.0085*DistanceFactor*RandomFactor[m/s]

Distance Factor is determined by the racecourse distance:

  • Distance < 2101m, 0.0x
  • Distance < 2201m, 0.5x
  • Distance < 2401m, 1.0x
  • Distance < 2601m, 1.2x
  • Distance >= 2601m, 1.5x

It is unclear how the Random Factor is calculated. The parameter file lists "TargetSpeedRandomTableChangeProbabilityByPower": 500 and the following table.

Table Type Probability Strategy
0 500000 0.98-1.00
1 300000 0.95-0.98
2 200000 1.00-1.02

Skills

Skill Activation Chance

Many skills need to pass a wit check BEFORE the race.
ActivationChance=max(1009000/BaseWit,20)%

Examples:

  • 300 Wit, 70.0%
  • 600 Wit, 85.0%
  • 900 Wit, 90.0%
  • 1200 Wit, 92.5%

Note that base wit stat is used here. As a result, the activation chance is NOT affected by strategy proficiency or skills.

Skill Ability

Current Speed

There are two variables for a trainee's current speed: Actual Speed (LastSpeed in code) and Current Speed (LastSelfSpeed in code).

Current speed is the direct result after acceleration calculations. It is fed into the next round of acceleration calculation. Current Speed is also used to calculate HP consumption per second.

Actual speed is current speed with current speed modifiers applied. Current speed modifiers are effective immediately without the need to accelerate or decelerate, unlike target speed, due to them being applied after acceleration calculation. Actual speed is used to compute distance traveled, as well as various calculations involving relative speed between two trainees (blocking, overtaking, etc.).

Current Speed With Natural Deceleration

This ability is composed of 2 parts. A modifier that increases actual speed (functionally identical to CurrentSpeed). Once the first modifier expires, add a one-time modifier of equal magnitude that increases current speed.

Skill Duration

Many skills have a base duration. The actual duration of a skill scales with course distance.
Duration=BaseDuration*CourseDistance[m]/1000

Skill Cooldown

Many skills have a base cooldown time. The actual cooldown time of a skill scales with course distance.
Cooldown=BaseCooldown*CourseDistance[m]/1000

Skill Conditions

Random Skills

Skills with random activation randomly pick a 10m segment before a race starts, and activate when all other conditions are fulfilled while the trainee is on the selected segment.

straight_random

Skills that activate on random straights first randomly pick a straight segment to activate on, then randomly pick a 10m segment. The chance of each straight segment to be selected is equal regardless of their length.

corner_random

If the race goes through the same corner multiple times, the skill will activate on the last lap.

all_corner_random

Up to 4 triggers are placed in the race, and the condition is fulfilled if the trainee is within one of the triggers. The triggers are distributed via the following procedure:

  1. All corners in the race start as candidate corners.
  2. Out of all candidate corners, randomly select one of them. The chance of each candidate to be chosen is equal regardless of their length.
  3. Within the corner, randomly select a 10m-long segment, and place a trigger there. (In practicality, this means distribution is uniform, but the latest trigger starting point is EndOfCorner10m)
  4. If there is at least 10m remaining from the end of the trigger to the end of that corner, the candidate is replaced by this remaining length. Otherwise the candidate is discarded.
  5. Remove all candidate corners before the one selected.
  6. Go to step 2, repeat until 4 triggers are placed, or no candidate remains.

remain_distance

The remaining distance condition is calculated by subtracting the course distance (an integer) by the trainee's current position rounded down. So remaindistance>=399 can actually trigger at remaindistance>=398.000001.

order_rate, order_rate_inXX_continue

Order rate condition is converted to order condition, rounding to the nearest. For example, consider orderrate>50 in a 9-trainee race. 9*50%=4.55. The condition is then converted to order>5 and can only trigger when 6th place or below.

order_rate_inXX_continue requires a trainee to remain in top XX% until skill activation. The first 5 seconds in the race do not count.

near_count

A trainee is considered near if:
abs(DistanceGap)<3m
abs(LaneGap)<3HorseLane

is_surrounded

A trainee is considered surrounded if, for all 3 of the following directions, another trainee can be found. The same trainee can fulfill more than 1 direction.

  • Out: abs(DistanceGap)<1.5m;0<LaneGap<3HorseLane
  • Front: 0<DistanceGap<3.0m;abs(LaneGap)<1.5HorseLane
  • Behind: 3.0m<DistanceGap<0;abs(LaneGap)<1.5HorseLane

behind_near_lane_time, infront_near_lane_time

A trainee is considered closely behind if:
abs(DistanceGap)<2.5m
abs(LaneGap)<1HorseLane

This check is performed to the trainee 1 place ahead/behind the trainee in question. Skills use a timer of how long this condition has been continuously fulfilled as a trigger. The timers reset if the trainee's placement changes.

Skill Target

As far as targeting is concerned, skills do not distinguish friend and foe. This means teammates can trigger and be targeted by skills, and count towards a skill's maximum target.

Teammates are excluded from the effect of debuffs.

Skill Level

Skills with levels gain extra effectiveness based on their effect type.

Skill Levels
Level Target Speed Accel Stat Everything Else -

Recovery, Current Speed, Lane move

1 1.0 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

Value Scaling, Ability Value Usage

Direct

No scaling.

MultiplySkillNum

ScaledValue=min(1+0.01*NumSkill,1.2)

Unity Skills

The effectiveness of Unity Cup skills (Burning Spirit SPD, Burning Spirit STA, etc.) scales with your team's total base stats.

  • Total < 1200, 0.8x
    • 1200 <= Total < 1800, 0.9x
    • 1800 <= Total < 2600, 1.0x
    • 2600 <= Total < 3600, 1.1x
    • 3600 <= Total, 1.2x

Multiply Random

Type 1 (ID=8) and Type 2 (ID=9) are identical.

  • 60%, 0.0x
  • 30%, 0.02x
  • 10%, 0.04x

Climax Skills

The effectiveness of climax skills scales with the number of races won during training.

  • Races won < 6, 0.8x
    • 6 <= Races won < 14, 0.9x
    • 14 <= Races won < 18, 1.0x
    • 18 <= Races won < 25, 1.1x
    • 25 <= Races won, 1.2x

MultiplyMaximumRawStatus

The effectiveness scales with the maximum raw stat of all 5 stats.

  • Stat < 600, 0.8x
    • 600 <= Stat < 800, 0.9x
    • 800 <= Stat < 1000, 1.0x
    • 1000 <= Stat < 1100, 1.1x
    • 1100 <= Stat, 1.2x

MultiplyActivateSpecificTagSkillCount

The effectiveness scales with the number of green skills (skill tag 601-615) activated during the race.

  • 0-2 skills, 0.0x
  • 3-4 skills, 1.0x
  • 5 skills, 2.0x
  • 6+ skills, 3.0x

AddDistanceDiffTop

Adds a flat amount of effectiveness when far enough away from the first place.
Distance<20m,+0.0
Distance>=20m,+0.1

MultiplyBlockedSideMaxContinueTimePhaseMiddleRun

Scales with the max duration the trainee is blocked on either side during the middle leg phase. The duration of the longest occurrence of blockage is used. For each blockage, the timer is reset when both sides of the trainee are clear from blocking. It is not reset when the blocking trainee changes, or blocked from different sides from the beginning.

Type 1 (ID=20):

  • Blocked < 2s, 1.0x
  • Blocked < 4s, 2.0x
  • Blocked < 6s, 3.0x
  • Blocked >= 6s, 4.0x

Type 2 (ID=21) is not implemented yet.

MultiplySpeed

Scales with the trainee's final speed stat. This includes raw stat, mood modifier, ground modifier, racecourse modifier, and skills.

Type 1 (ID=22):

  • Speed < 1700, 0.0x
    • 1700 <= Speed < 1800, 1.0x
    • 1800 <= Speed < 1900, 2.0x
    • 1900 <= Speed < 2000, 3.0x
    • 2000 <= Speed, 4.0x

Type 2 (ID=23):

  • Speed < 1400, 1.0x
    • 1400 <= Speed < 1600, 2.0x
    • 1600 <= Speed, 3.0x

MultiplyArcGlobalPotentialLevel

Scales with the trainee's total level of global potential in the L'arc scenario.

  • Lv < 10, 1.0x
    • 10 <= Lv < 20, 1.1x
    • 20 <= Lv, 1.2x

MultiplyTopLeadAmount

Scales with the trainee's maximum lead achieved between 0% and 66.6% of the course distance.

  • Lead < 10m, 1.0x
    • 10m <= Lead < 25m, 1.4x
    • 25m <= Lead, 1.8x

Duration Scaling, Ability Time Usage

Direct

No scaling.

MultiplyDistanceDiffTop

ScaledDuration=BaseDuration*min(0.8+DistanceFromTop/62.5m,1.6)

MultiplyRemainHp

The duration scales with the remaining HP at the time of skill activation. Type 1, for Mejiro Bright, Mejiro McQueen (ID=3):

  • HP < 2000, 1.0x
    • 2000 <= HP < 2400, 1.5x
    • 2400 <= HP < 2600, 2.0x
    • 2600 <= HP < 2800, 2.2x
    • 2800 <= HP < 3000, 2.5x
    • 3000 <= HP < 3200, 3.0x
    • 3200 <= HP < 3500, 3.5x
    • 3500 <= HP, 4.0x

Type 2, for Matikanetannhauser (ID=7):

  • HP < 1500, 1.0x
    • 1500 <= HP < 1800, 1.5x
    • 1800 <= HP < 2000, 2.0x
    • 2000 <= HP < 2100, 2.5x
    • 2100 <= HP, 3.0x

IncrementOrderUp

The duration increases by 1 second for each time the trainee successfully overtakes while the skill is active, for up to 3 times. The increased duration applies to all modifiers applied by the skill. The additional duration also scales with course distance in the same way as base duration (see Skill Duration).

MultiplyBlockedSideMaxContinueTimePhaseMiddleRun

The same logic as the ability value counterpart (see MultiplyBlockedSideMaxContinueTimePhaseMiddleRun). Type 1 (ID=5):

  • Blocked < 2s, 1.0x
  • Blocked < 4s, 2.0x
  • Blocked < 6s, 3.0x
  • Blocked >= 6s, 4.0x

Type 2 (ID=6) is not implemented yet.

Additional Activate

If an ability is labeled as additional activation, it does nothing on skill activation. Instead, the effect is applied when a certain condition is achieved while the skill is active, for the remaining skill duration. This effect can trigger multiple times.

OrderUp

Triggered each time the trainee successfully overtakes, up to 3 times. This used to be AbilityValueUsage=19.

AdditionalActivateActivateAnySkill

Triggered each time the trainee activates another skill.

  • Type 1 (ID=2) up to 3 times.
  • Type 2 (ID=3) up to 2 times.

Uphills/Downhills

Slope Modifier

Slope modifier is applied when a trainee is running on uphill or downhill.

When running uphill, a trainee loses target speed equal to SlopePer*200/PowerStat. When running downhill, there is a chance of WitStat*0.04% per second to enter downhill accel mode that increases target speed by 0.3+SlopePer/10[m/s] and reduces HP consumption by 60%. Each second the downhill accel mode ends with a chance of 20% per second.

Hidden Stat Requirements

Some racecourses have 1-2 stats as threshold stats. Having base stat that exceeds threshold provides a bonus to adjusted speed.

  • Stat <= 300, +0.05x
    • 300 < Stat <= 600, +0.1x
    • 600 < Stat <= 900, +0.15x
    • 900 < Stat, +0.2x

The final modifier is the average of modifiers for all threshold stats. Therefore, the maximum bonus achievable is +0.2x.

Credits

Credit to @KuromiAK on Discord who made the original mechanics document that much of this information was pulled from, and @umamusu_reveng, @kak_eng, and @hoffe_3 who reverse engineered and discovered much of this information.