Race Mechanics

Majority of the information we know about racing logic comes from reverse engineering done by @umamusu_reveng, who has stopped their activity, @kak_eng and @hoffe_33. None of the information here is guaranteed to be correct, though most has been verified by in-game observation.

The developers have stopped including new race mechanics in the client application. So most new mechanics after the 1st anniversary described are speculations based on the game's parameter file, packet captures of the race replay data, and manual testing. Skill related information is still accurate to my knowledge.

Concepts

Frame Rate

Section

Phase

Bashin, Horse Length

Stats

Raw Stats

Base Stats

Motivation Coefficient

Adjusted Stats

Ground Modifier

Strategy Proficiency Modifier

Race Course Modifier

Single Mode Modifier

Speed

Target Speed

Slope Modifier

Base Speed

Base Target Speed

Strategy Phase Coefficient

Distance Proficiency Modifier

Randomness Per Section

Last Spurt

Starting Speed

Minimum Speed

Blocking

Current Speed

Acceleration

Base Acceleration

Strategy phase coefficient

Ground type proficiency modifier

Distance proficiency modifier

Start Dash

Deceleration

HP

Stamina

Strategy Coefficient

HP Consumption

HP Recovery Skills

Out of HP

Skills

Skill Activation Chance

Skill Ability

CurrentSpeed (21)

CurrentSpeedWithNaturalDeceleration (22)

Skill Duration

Skill Cooldown

Skill Conditions

x_random

straight_random

corner_random

all_corner_random

order_rate, order_rate_inXX_continue

near_count

is_surrounded

behind_near_lane_time, infront_near_lane_time

Skill Target

Skill Level

Value Scaling, Ability Value Usage

Direct (1)

MultiplySkillNum (2)

Aoharu Skills (3-7)

Multiply Random (8, 9)

Climax Skills (10)

MultiplyMaximumRawStatus (13)

MultiplyActivateSpecificTagSkillCount (14)

AddDistanceDiffTop (19)

MultiplyBlockedSideMaxContinueTimePhaseMiddleRun (20, 21)

MultiplySpeed (22, 23)

MultiplyArcGlobalPotentialLevel (24)

MultiplyTopLeadAmount (25)

Duration Scaling, Ability Time Usage

Direct (1)

MultiplyDistanceDiffTop (2)

MultiplyRemainHp (3, 7)

IncrementOrderUp (4)

MultiplyBlockedSideMaxContinueTimePhaseMiddleRun (5, 6)

Additional Activate

OrderUp (1)

AdditionalActivateActivateAnySkill (2, 3)

Lane

Lane Change Speed

Target Lane

Overtake Targets

Normal Mode

Overtake Mode

Fixed Mode

Extra Move Lane (Final Corner Lane)

Blocking

Front Blocking

Side Blocking

Overlapping

Vision

Start Delay, Late Start

Position Keeping

Pacemaker

Runner Modes

Speed up mode

Overtake mode

Non-Runner Modes

Pace up mode

Pace down mode

Pace Up Ex Mode

Kakari, Temptation

Lead Competition 位置取り争い

Compete Fight 追い比べ

Conserve Power / Release 足を貯める / 脚色十分

Compete Before Spurt 位置取り調整

Stamina Keep 持久力温存

Secure Lead リード確保

Stamina Limit Break スタミナ勝負

Race Time

Race Courses

Position, World Transform

Course Distance to World Transform

Slope (Outdated)

Course Events

Misc Notes

Initialization

Frame

Concepts

Frame Rate

The races are simulated at 0.0666s per tick (about 15 frames per second).

For the purpose of replay, the game records uma’s position each frame within 1 second of race start, or when a uma is within 25m before goal. Otherwise positions are recorded at 1 second intervals.

(There used to be a visual bug where the winner seemed to lose in replay due to low accuracy recording. The 25m before goal part was introduced then as a fix.)

Section

A race course is divided into 24 sections of equal distance. Sections are numbered from 1 to 24.

Phase

A race is divided into 4 phases. Phases affect a uma’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.

Bashin, Horse Length

Bashin (horse length) is a unit of distance.

Stats

Each stat is clamped between 1 and 2000.

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 motivation. This number is used sometimes instead of the final stat, most notably by skill activation chance.

Base stat is clamped between 1 and 2000.

Motivation Coefficient

絶好調

好調

普通

不調

絶不調

1.04

1.02

1.0

0.98

0.96

Adjusted Stats

Each adjusted stat is clamped between 1 and 2000.

Ground Modifier

Ground modifier for speed

稍重

不良

Turf

0

0

0

-50

Dirt

0

0

0

-50

Ground modifier for power

稍重

不良

Turf

0

-50

-50

-50

Dirt

-100

-50

-100

-100

Strategy Proficiency Modifier

S

A

B

C

D

E

F

G

1.1

1.0

0.85

0.75

0.6

0.4

0.2

0.1

Race Course Modifier

Some race courses 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.

Single Mode Modifier

In single mode (a.k.a. training), all uma gain 400 adjusted stats.

Speed

Target Speed

Target speed is the speed a uma will trend towards. When below the target speed, a uma will accelerate. When above the target speed, a uma will decelerate. Target speed cannot go below minimum speed or exceed 30 m/s.


Position keeping coefficient is covered in its own section.

Force-in modifier is applied in the opening leg when an uma 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.

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 an uma is affected by a skill that modifies lane move speed, and has performed lane movement in the previous frame.

Slope Modifier

Slope modifier is applied when a uma is running on uphill or downhill, see Course Events.

When running uphill, a uma loses target speed equal to . When running downhill, there is a chance of  per second to enter downhill accel mode that increases target speed by  and reduces HP consumption by 60%. Each second the downhill accel mode ends with a chance of 20% per second.

Base Speed

A race’s base speed is determined by race course distance.

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,

Worth noting that target speed is NOT affected by speed stat in opening leg and middle leg.

During final leg and last spurt,

Strategy Phase Coefficient

Strategy

Opening Leg

Middle Leg

Final Leg &

Last Spurt

Runner

1.0

0.98

0.962

Leader

0.978

0.991

0.975

Betweener

0.938

0.998

0.994

Chaser

0.931

1.0

1.0

Oonige

1.063

0.962

0.95

Distance Proficiency Modifier

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 wisdom stat. This randomness does not affect the last spurt calculation.


Examples:

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

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.

Upon entering the final leg, if the uma 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  chance to be accepted. If all candidates are exhausted without passing the wisdom 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.

Starting Speed

The speed at race start is 3m/s.

Minimum Speed

A uma’s minimum speed is affected by her guts.

Minimum speed is the target speed when a uma is out of HP.

Minimum speed comes into effect after the start dash. After each frame’s acceleration calculation, if a uma has less than minimum speed, her speed is instantly raised to match the minimum speed.

Blocking

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

Current Speed

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.

Acceleration



Base Acceleration

Normally, .

When running uphill,  instead.

Strategy phase coefficient

Strategy

Opening Leg

Middle Leg

Final Leg &

Last Spurt

Runner

1.0

1.0

0.996

Leader

0.985

1.0

0.996

Betweener

0.975

1.0

1.0

Chaser

0.945

1.0

0.997

Oonige

1.17

0.94

0.956

Ground type 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, an uma gains  additional acceleration. Start dash ends when her speed reaches .

There used to be a bug related to this acceleration. As a fix, speed is capped at  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 uma is usually unable to accelerate to minimum speed within 1 frame. As a result her speed would be raised to minimum speed.

Deceleration

Deceleration is determined by phase

  • Opening leg:
  • Middle leg:
  • Final leg:
  • Pace Down mode (overriding all above):
  • Out of HP (overriding all above):

HP

Stamina

Stamina is converted to HP at the start of a race.

Strategy Coefficient

Runner

Leader

Betweener

Chaser

Oonige

0.95

0.89

1.0

0.995

0.86

HP Consumption

HP is consumed each second

Status modifier is as follows (multiplicative):

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

Ground modifier is affected by the track condition.

稍重

不良

Turf

1

1

1.02

1.02

Dirt

1

1

1.01

1.02

In the final leg and last spurt, HP consumption is multiplied by guts modifier.

Examples:

  • 200 Guts, 1.577x
  • 400 Guts, 1.408x
  • 600 Guts, 1.333x

HP Recovery Skills

HP can be recovered by skills. All skills that restore HP instantly restore a percentage of max HP. HP that goes over the max is wasted. All skills that restore HP functions identically outside their trigger condition and amount.

Out of HP

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

Skills

See https://gametora.com/umamusume/skills for the list of skills and their conditions.

Skill Activation Chance

Many skills need to pass a wisdom check BEFORE the race.

Examples:

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

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

Skill Ability

CurrentSpeed (21)

There are two variables for a uma’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 uma - blocking, overtaking, etc.

CurrentSpeedWithNaturalDeceleration (22)

This ability is composed of 2 parts.

  1. A modifier that increases actual speed - functionally identical to CurrentSpeed.
  2. 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.

Skill Cooldown

Many skills have a cooldown time. The actual cooldown time of a skill scales with course distance.

Skill Conditions

x_random

Skills with random activation randomly pick a 10m segment before a race starts, and activate when all other conditions are fulfilled while the uma 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 uma 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.
    (Practically, this means distribution is uniform, but the latest trigger starting point is
    )
  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 uma’s current position rounded down. So remain_distance>=399 can actually trigger at remain_distance>=398.000001.

order_rate, order_rate_inXX_continue

Order rate condition is converted to order condition, rounding to the nearest.

For example, consider order_rate>50 in a 9-uma race. . The condition is then converted to order>5 and can only trigger when 6th place or below.

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

near_count

A uma is considered near if

is_surrounded

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

Out:

Front:

Behind:

behind_near_lane_time, infront_near_lane_time

A uma is considered closely behind if

This check is performed to the uma 1 place ahead/behind the uma in question. Skills use a timer of how long this condition has been continuously fulfilled as a trigger. The timers reset if the uma’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.

Level

Target Speed

Accel

Stat

Everything Else -
Recovery,
Current Speed,
Lane move

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

Value Scaling, Ability Value Usage

Direct (1)

No scaling.

MultiplySkillNum (2)

Aoharu Skills (3-7)

The effectiveness of aoharu skills 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 (8, 9)

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

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

Climax Skills (10)

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 (13)

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 (14)

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 (19)

Adds a flat amount of effectiveness when far enough away from the first place.

  • Distance < 20m, +0.0
  • Distance >= 20m, +0.1

MultiplyBlockedSideMaxContinueTimePhaseMiddleRun (20, 21)

Scales with the max duration the uma 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 uma are clear from blocking. It is not reset when the blocking uma 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 (22, 23)

Scales with the uma’s final speed stat. This includes raw stat, motivation modifier, ground modifier, race course 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 (24)

Scales with the uma’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 (25)

Scales with the uma’s maximum lead achieved between 0-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 (1)

No scaling.

MultiplyDistanceDiffTop (2)

MultiplyRemainHp (3, 7)

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 Matikane Tannhauser (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 (4)

The duration increases by 1 second for each time the uma 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 (5, 6)

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 (1)

Triggered each time the uma successfully overtakes. Up to 3 times.

This used to be AbilityValueUsage = 19.

AdditionalActivateActivateAnySkill (2, 3)

Triggered each time the uma activates another skill.

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

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

Lane

A uma’s lane is measured by distance from the inner fence. The unit used in calculation is course width. 1 course width = 11.25m. The game also uses the unit “horse lane” to measure relative distance, where 1 horse lane = 1/18 course width.

The minimum lane distance is 0. The maximum is different per race course. The widest race course 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 whether this would affect a race at all.

A uma’s initial lane is  where the adjustor is:

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

Lane Change Speed

Lane move speed has 3 components: actual speed, current speed, and target speed.

First move lane point modifier is applied in the opening and middle leg, before the move lane point.

Order modifier is applied in the final leg and last spurt.

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.

Actual speed accounts for skills and is faster when moving in.

Direction modifier is 1 when moving out. And affected by lane distance when moving in.

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

Target Lane

The target lane of a uma refers to the lane they try to move to. It is updated when a uma 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 uma between 1-20 m 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 uma blocking in front is also automatically an overtake target.

Normal Mode

Normal mode is used when there are no overtake targets, or when uma 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 uma, set target lane to 2.0 horse lane away from inside uma.
  6. Otherwise keep straight.

Overtake Mode

Overtake mode on the other hand is used when there are overtake targets. When all overtake targets are lost, the uma stays in overtake mode for an additional 1.5s before moving back to normal mode.

Overtake mode starts by making a list of overtake candidates. For each overtake target, find the innermost and outermost uma of the crowd they belong to. The specific condition is this:

For each inner/outermost uma, the lane +/-1 horse lane is a candidate. The candidate is considered for next step if there is no visible uma within

There is an additional candidate unrelated to overtake targets. If the phase is the opening leg or middle leg, and the uma 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.

If the uma 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.

Phase coefficient differs by 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 uma is not blocked from moving towards it.

Extra Move Lane (Final Corner Lane)

Upon entering final corner, the extra move lane is set to

Blocking

Front Blocking

The condition for a uma to block in front is

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

While blocked in the front, uma’s speed is limited to
.

Side Blocking

The condition for a uma to block on either side is

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

Certain skills require being blocked on “all” sides. It means being blocked in front and on at least one side.

Overlapping

Two uma are considered overlapping if

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

Vision

A uma is visible if

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.

Start Delay, Late Start

When the race starts, a uma starts running after a random delay of up to 0.1s. The delay is NOT affected by wisdom. 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:

  • アタシに指図しないで!!(0.085)
  • 超遊び癖(0.1)

The following skills multiply the start delay:

  • コンセントレーション 0.4x
  • 集中力 0.9x
  • ゲート難 1.5x

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

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

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 wisdom check. Uma 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 oonige; 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.

Pacemaker

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 uma 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: uma is first place and less than 4.5m (12.5m if she is the only runner, 17.5m for oonige) ahead of the uma behind. Pass the wisdom check.

Exit condition: uma is 4.5m (12.5m if she is the only runner, 17.5m for oonige) ahead of the second place.

Overtake mode

Not to be confused with overtake target lane mode.

Target speed modifier: 1.05x

Entry condition: uma is not first place within the same strategy. Pass the wisdom check.

Exit condition: uma is 10m (27.5m for oonige) ahead of second place among uma who has the same strategy.

Non-Runner Modes

Non-runners try to maintain their distance with the pacemaker between 2 distance thresholds. The distance thresholds are:

Leader:                

Betweener:                

Chaser:                

Pace up mode

Target speed modifier: 1.04x

Entry condition: uma’s distance from the 1st place is above the maximum distance. Pass the wisdom check.

Exit condition: uma’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: uma’s distance from the 1st place is below the minimum distance. No target speed or current speed up skill effect is active.

Exit condition: uma’s distance from the 1st place is above a random value between the thresholds. If in middle leg, the maximum distance is replaced with  before rolling the random value. Or when uma 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 uma whose strategy should be behind is ahead of the uma.

Entry condition for others: pacemaker’s strategy should be behind the uma.

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

This mode is prioritized over all other position keep modes.

Kakari, Temptation

Each uma rolls for kakari before the race starts. The chance is affected by wisdom.

Examples:

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

自制心 reduces the chance by flat 3%. i.e. 19% to 16%.

If a uma were to enter kakari, she would do so in a random section between 2 to 9. She will enter kakari as soon as she enters the section.

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

  • Runners will enter speed up mode
  • Leaders will become runners
  • Betweeners have a 75% chance to become runners, 25% chance to become leaders.
  • Chasers have a 70% chance to become runners, 20% chance to become leaders, 10% chance to become betweeners.

Every 3 seconds in kakari, the uma has a 55% chance to snap out of it. Kakari ends if the uma is still affected after 12 seconds. Kakari debuffs extend the kakari timer by 5 seconds, this effect can be applied multiple times.

Lead Competition 位置取り争い

Note: Info in this section is inferred from the game’s parameter file, which is less concretely confirmed as results from reverse engineering. In the code, this mechanic is referred to as CompeteTop.

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

For runners, their relative position must be:

For oonige, their relative position must be        :

Runners may compete with each other, oonige may compete with each other, but a regular runner does not compete with an oonige.

During lead competition, the runners gain additional speed based on their guts stat.

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:

  • Runner: 1.4x
  • Runner + Kakari: 3.6x
  • Oonige: 3.5x
  • Oonige + Kakari: 7.7x

Compete Fight 追い比べ

Note: Info in this section is inferred from the game’s parameter file, which is less concretely confirmed as results from reverse engineering.

On the final straight of a race, competition may occur when multiple uma are close to each other.

A uma is considered another uma’s competition target if

If the competition target remains a target for more than 2 seconds, is top 50% in placement, and , a competition is triggered. The uma gains speed and acceleration based on her guts stat.

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

Conserve Power / Release 足を貯める / 脚色十分

Note: Info in this section is inferred from the game’s parameter file, which is less concretely confirmed as results from reverse engineering.

The uma must have base power + skills bonus greater than 1200 to conserve power.

The following are mostly speculation:

Every 1.5 seconds (possibly scaling with course length?), the uma checks its 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. Kakari (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.

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

The strategy-distance coefficient is

Short

Mile

Mid

Long

Runner

1.0

1.0

1.0

1.0

Leader

0.7

0.8

0.9

0.9

Betweener

0.75

0.7

0.875

1.0

Chaser

0.7

0.75

0.86

0.9

The activity coefficient is

  • ID 3. Lead competition, 0.98
  • ID 4. Kakari, 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:

Distance

ActivityTimeDistanceTypeCoef

Short

0.45

Mile

1.0

Mid

0.875

Long

0.8

Compete Before Spurt 位置取り調整

Note: Info in this section is inferred from the game’s parameter file, which is less concretely confirmed as results from reverse engineering. The details are still under investigation.


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 wisdom), or has other umas nearby (scaling with guts, number of nearby uma, number of nearby uma 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

Oonige

0.0

Nige

0.0

Senkou

2.5

Sashi

5.0

Oikomi

10.0

If the competition mode is activated, the uma speeds up at the cost of stamina for 2 seconds, then enters a cooldown of 1 second.

Strategy

Strategy Coefficient

Oonige

0.2

Nige

0.8

Senkou

1.0

Sashi

1.0

Oikomi

1.0

Stamina consumption strategy coefficient

Strategy

Stamina Consumption Coefficient

Oonige

1.5

Nige

1.2

Senkou

1.0

Sashi

1.0

Oikomi

1.0

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 uma is NOT far from the first place. In other words the mode is activated due to having uma nearby alone.

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

Strategy

Strategy Coefficient

Oonige

2.0

Nige

1.1

Stamina Keep 持久力温存

The uma will try to conserve a random amount of HP that is 1.035-1.04x the required amount to finish the race. Every 2 seconds, the uma checks if she has enough HP left. If she does not have enough HP, there is a chance of  for her to notice and enter stamina keep mode. During stamina keep mode, the uma 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 wisdom, 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.

Secure Lead リード確保

Note: Info in this section is inferred from the game’s parameter file, which is less concretely confirmed as results from reverse engineering. The details are still under investigation.

Secure lead can occur between section 11 and 15 of the race. It occurs when the uma’s lead against another uma 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 wisdom, but the mechanics is unknown) for the uma to attempt to secure the lead.

Desirable lead strategy coefficient

Nige

Senkou

Sashi

Oikomi

Oonige

2.0

7.0

8.0

8.0

Nige

4.0

8.0

8.0

Senkou

5.0

6.0

Sashi

3.0

The uma speeds up for 2 seconds at the cost of stamina, then enters a cooldown of 1 second.

Strategy

Strategy Coefficient

Oonige

0.2

Nige

1.0

Senkou

1.0

Sashi

0.8

Stamina consumption strategy coefficient

Strategy

Stamina Consumption Coefficient

Oonige

1.2

Nige

1.0

Senkou

0.8

Sashi

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 nige uma does not have another uma with the same strategy within 10m, their bonus is further multiplied by the following factor. (There is an unexplained 20% threshold for this bonus.)

Strategy

Strategy Coefficient

Oonige

7.0

Nige

2.0

Stamina Limit Break スタミナ勝負

Note: Info in this section is inferred from the game’s parameter file, which is less concretely confirmed as results from reverse engineering. The details are still under investigation.

If the uma’s base stamina + skills bonus is higher than 1200, they will gain an additional target speed buff upon reaching max spurt speed. The buff lasts till the end of the race.

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

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

Table Type

Probability

Coefficient

0

500000

0.98-1.00

1

300000

0.95-0.98

2

200000

1.00-1.02

Race Time

The race time displayed on the scoreboard is different from the actual race time used for internal calculation or animation.

There is a lower bound to each race’s display time. For example, 2400m Tokyo turf races have a lower bound of 2m21s6. Should a uma break the lower bound, the displayed time will be the lower bound plus up to 1 second. There is an upper bound too.

Race Courses

Information in this section is likely useless to anyone other than a data miner who wants to build a race simulator. The only takeaway for casual readers is that running on an outside lane causes your uma to travel additional distances.

Position, World Transform

Each race course consists of 1001 “keyframes”, corresponding to 1000 equally distanced segments. Each keyframe consists of a 3D coordinate, and a rotation quaternion. Given course distance traveled, the position and rotation at  is calculated by linearly interpolating between keyframes. Then the lane distance is taken into account by moving outside - to the left of the current rotation if course is clockwise, or to the right if counter-clockwise - by 11.25m per course width.

Course Distance to World Transform

The distance on the xz (horizontal) plane between two world transforms, divided by the difference in course distance, is the ratio of course distance to world transform.

The ratio between 0m and 1m travelled, at lane origin, is used as the base ratio for the race course. The base ratio ranges from 0.96 to 1.06 among race courses that are currently implemented.

Each frame’s ratio of course distance to world transform is also calculated. The course distance traveled being added at each frame is reduced if the ratio from the previous frame is greater than base ratio.

In practice this means running on the outside lane while cornering, or moving lanes, would result in travelling additional distance, modeled by less distance traveled.

Slope (Outdated)

This section is outdated by the 1st anniversary update. For current effect, see Course Events.

A uma’s rotation is converted to euler angle to determine the slope at any point of the race.

A slope is considered uphill if , or downhill if .

Course Events

Some parameters of a race course are defined as events that happen during a course. Each event is defined by its trigger location, with some having additional attributes.

ID

Name

Additional Attribute

Notes

0

Corner

Corner Number (1-4); Distance

1

Ground Change

Change of ground type from turf to dirt.

2

Straight

Start or End; Front Type (Front=1, Across=2, False Straight=3)

Each straight is defined by 2 events, the start and the end location.

3

Lane Max Change

New value

Change of the max lane value.

4

First BGM Landscape

Events of the same type ID existed before landscape mode was introduced, but their previous purpose is unknown.

5

Second BGM Landscape

6

Jikkyo Trigger

Unused

7

Move Lane Point

In races without this parameter, the entry point of the initial corner is used. Only seen in Niigata 1000m.

8

First BGM

9

Second BGM

10

Event Crowd

Unused

11

Slope

SlopePer; Length

Misc Notes

Information in this section are just notes for my own reference.

Initialization

During race initialization, the following calculations are done in the listed order:

  1. (Before initialization) Calculate base stats
  2. Calculate skill activation chance and determine whether skills can activate
  3. Activate all skills that would activate out of gate
  4. Use item (an unimplemented item could prevent late start)
  5. Set starting location based off gate number
  6. Calculate start delay
  7. Calculate adjusted stats
  8. Convert stamina to HP
  9. Set starting speed
  10. Determine kakari

Frame

Each frame, the following calculations are done in the listed order: (not complete list)

  1. Pre-Update
  1. Check end of corner
  1. Update
  1. Activate skills
  2. Recover HP by skills
  3. Update last spurt state
  4. Update target speed
  5. Calculate acceleration
  6. Update phase
  7. Calculate distance and position
  8. Check for slope
  1. Post-Update
  2. Events
  1. Check start of corner