Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ===== Trackmania Forever stunt score calculation, reverse-engineered by blackq =====
- This is a complete breakdown of stunt score calculation directly extracted from
- the game. It aims at giving you a deeper understanding of stunt mode, clearing up
- common misconceptions and ultimately making you a better stunter.
- === Technical stuff ===
- Decompiled stunt score calculation method: https://pastebin.com/kN3wwrDW
- Human-readable python script for calculating stunt scores: https://pastebin.com/Qr3wTq07
- Example usage:
- $ python -m calculate_stunt_score --help
- $ python -m calculate_stunt_score --figure SPINNING_CHAOS --airtime 15000 --spin 15 --flip 0 --roll 0 --chain 34 --figure-received-points 100 --straight
- 564
- === How the actual stunt is determined ===
- The stunt is purely determined by how much your car rotated around three axes: spin, flip and roll axis.
- Some stunts have very similar axis weight distributions, so the game might give you inaccurate results
- when your car bugs or your airtime is too low. Here are the similar stunts and how they are determined:
- - Spin, Aerial and Alley
- - roll and flip amount close to zero
- - yields a spin if initial flip rotation is below a certain threshold
- - otherwise
- - yields an alley if rotation direction does not match the translation direction
- - otherwise yields an aerial if the opposite of the above happens
- - otherwise yields an alley as a fallback; from my observations, usually
- triggered when aiming for an aerial but turning in too much
- - Backflip, Flip, Rodeo and Corkscrew
- - roll amount close to zero
- - yields a backflip if spin amount close to zero and flip amount is negative
- - otherwise yields a flip if spin amount close to zero and flip amount is positive
- - otherwise yields a rodeo if spin amount lower than flip amount
- - otherwise yields a corkscrew
- - Roll, Twister and Spin Off
- - flip amount close to zero
- - TIP: holding the brake can prevent a flip amount; use for skillfully making twisters and spin offs!!!
- - yields a roll if spin amount close to zero
- - otherwise yields a twister if spin amount lower than roll amount
- - otherwise yields a spin off
- - Free Style and Flip Flap
- - spin amount close to zero
- - yields a freestyle if flip amount lower than roll amount
- - otherwise yields a flipflap
- - Flipping Mix, Spinning Chaos and Rolling Madness
- - fires when at least two of the axes have significant rotation
- - yields a rolling madness if roll axis is sufficiently high enough
- - otherwise
- - yields a flipping mix if spin amount lower than flip amount
- - otherwise yields a spinning chaos
- - Basic Jump and Wrecks
- - if collision detection determined that part of your chassis hit an object, a wreck
- is generated; the wreck type depends on the rotation values
- - otherwise, if no other condition fired, defaults to a basic jump
- === How a straight and master stunt is determined ===
- Your stunt is considered straight if your car is angled in the same way as it was at the beginning of the stunt.
- The combined tolerance for this angle is roughly 15 degrees.
- Your stunt is considered master if it is straight AND you pressed the exact same keys throughout the entire stunt.
- Basic jumps cannot be master and the wrecks can neither be master nor straight.
- === How the base score is calculated ===
- A common misconception among stunt players is that each stunt has a fixed "base point"
- value. That, however, is not true. The base points are a combination of airtime and the
- three axes rotations. Since SC, RM and FM use all three axes, they yield higher scores than
- FF, FS, Rodeo and Corkscrew (which use two axes), which in turn yield higher scores than
- BF, Flip, Spin, Aerial and Alley (which use only one axis).
- The calculation is as follows, where "airtime" is the airtime in milliseconds divided
- by 100 and "xxx_amount" defines the amount of 180 degree rotations:
- > airtime + flip_amount * 15 + (spin_amount + roll_amount * 2) * 10;
- Stunts that influence the base score:
- - alley is hardcoded to have a bonus of 5 points. how generous ;)
- - basic jumps and wrecks halve your points
- What do we learn from this?
- - the more airtime, the more points (in a linear fashion)
- - the game favors flip and roll stunts
- - fixed base points are an illusion!
- === How the straightness and master bonus is calculated ===
- A multiplier times 1.5 for master and times 1.25 for straight stunts.
- Try to master or at least straighten all your stunts.
- === How the chain bonus is calculated ===
- - having any chain adds 0.2 to the multiplier.
- - a chain greater than or equal two adds 0.15 to the multiplier
- - a chain greater than or equal three adds 0.1 to the multiplier
- - a chain greater than or equal four adds 0.05 to the multiplier
- - a chain greater than or equal five adds 0.02 for each additional chain to the multiplier
- Hold your chain, it's essential to getting high scores. And try to have at least a
- single chain before going for any high-scoring stunts.
- === How the stunt repeat malus is calculated ===
- The game stores a table of all points you ever received for all stunts. The higher
- the table entry for any given stunt is, the bigger the penalty.
- > total_points_received * 0.2 / 100.0
- Repeating big stunts is bad.
- === How the final score is calculated ===
- > base_points_with_penalty = round(base_points * (1.0 - malus))
- > bonuses = chain_bonus + straightness_master_bonus
- > final_multiplier = round(base_points_with_penalty * bonuses)
- Hope this document was of use to you.
Advertisement
Add Comment
Please, Sign In to add comment