For those who'd like a slowed-down version to see what's going on without running in the emulator:
This TAS completes the F-Zero X Death Race as quickly as possible, with a time of 5.866s. This improves the prior published TAS time of 8.927 by Katsukawa Sojuro aka Xenos (Xenos reports an unpublished time of 6.993s by throwing the car off the side as this TAS does).
The unassisted world-record is 24.745s by Daniel, played in PAL (20.621s converted to NTSC). There's no video of that time, but this video [dead link removed] by the same author is almost as fast.
I used Mupen64 0.5 re-recording v8, with "Memory Hacking Software" to find and view memory addresses. For information about the game and some of its techniques see my Jack-Cup TAS comments.

Goal Choice

The Death Race is a standalone challenge within F-Zero X, so a standalone movie seemed the only way to present it. The goal is simple: destroy the other 29 ships as quickly as possible, aiming for in-game time.
This movie choice has been brought up in the forums a couple of times, but never really drew direct commentary either way since 2007. In my view, though, this movie demonstrates feats clearly only possible with TAS (destroying on average 4.9 cars per second; 5.1 if you include the player's car). For comparison, the unassisted world-record is 24.745 (played on PAL but time adjusted to NTSC).

Damage-Boosting

One key technique is to boost off dead ships by crashing into them at the right angle after they bounce off a wall. This can be quite tricky as you don't get the boost if you're in the middle of a side-attack (aka DT-R or DT-L) when the ships collide, and essentially all steering uses side-attacks (it's the only way to turn quickly enough). Finally, both the rotation and relative position of the colliding ships affects the path the destroyed ship will take; the closing speed of the collision affects how fast the destroyed ship will careen away - so all of those factors have to be controlled for to arrange the optimal boost.

Enemy Manipulation

I tried to preserve the ships in their original line-ups and swing through them for maximum efficiency. When ships would get out of position I'd try to use other ships to adjust them, using the same techniques used in setting up damage-boosts. This was very meticulously done in setting up the "endgame", where the lead ship was forced to slow down by hitting a dead car, and then killed simultaneously with another ship. At that point I slow down as fast as possible and kill the remaining 4 ships, which I'd managed to bunch together very tightly, at the same time generating speed to fly off the edge and stop the timer.

Car Choice

The movement of the first two cars destroyed seems driven entirely by which ship you choose. There are only 3 or 4 patterns; Golden Fox gives the best pattern where both cars break immediately to the middle. Crazy Bear, Mighty Hurricane and Great Star (heavier high boost cars) give bad patterns. Also, GF is heavy enough to kill easily, and lighter weight = faster steering - obviously important for this challenge!

Misc

I use the wide-angle view because it's easier (for me and viewers) to see what's going on. And quite a bit is going on - ships get flung everywhere when they die and can interact with both the player and other ships, making planning, patience and experimentation crucial.
Finally, you can save a couple of seconds by throwing the car off the side at the end, which stops the timer earlier.

feos: Cool run, great feedback. Accepting to Moons. And publishing.


Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
Extremely short, but fast, technical, fun and fresh. Voting yes :D
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
After trying something like this in GX (casual), I realize it's NOT easy to do something like this.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
I've done this several times in realtime on F-Zero: GP Legend (for GBA); I usually fail, and it normally takes me several laps. In other words, it's not easy at all. For people who don't understand what's going on: the aim is to collide with all the other vehicles hard enough to either break them outright, or to knock them off the track. Doing that normally requires carefully lining up with each one in order to get perfect hits on them, or else to repeatedly grind them down with repeated small hits. This TAS is accurate enough to break several enemy vehicles per second.
Joined: 7/2/2007
Posts: 3960
In particular it's interesting how every single tap by the player's machine, no matter how slight, seems to provoke the other machine to explode. It is possible to one-hit-kill other machines in this game, but in unassisted play you won't ever do it so casually. I'd be curious to hear more about exactly what the mechanics are for "combat".
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Lord_Tom
He/Him
Expert player (3143)
Joined: 5/25/2007
Posts: 399
Location: New England
Derakon wrote:
In particular it's interesting how every single tap by the player's machine, no matter how slight, seems to provoke the other machine to explode. It is possible to one-hit-kill other machines in this game, but in unassisted play you won't ever do it so casually. I'd be curious to hear more about exactly what the mechanics are for "combat".
Based on my observations, I'd speculate that when 2 ships collide, damage is calculated separately for velocity differences along each axis, with a small bonus/multiplier for vehicle weight and a large multiplier for being in a side-attack/spin-attack. This explains why when I lightly sideswipe the first car it gets destroyed - I'm barely moving towards it left to right, but I'm moving down the track much faster than the other car since I'm using turbo-boost. In amateur real-time play (the only type I can comment on), it's hard to kill cars because the tendency is to pull up next to it, matching velocity in all 3 axes, then try to veer into the other car. This often doesn't result in a kill because the closing speed is minimal accounting for all 3 axes, and a side-attack only lasts 16 frames so there's a good chance the collision happens after it's over. This is all just my speculation/suspicions based on the TASs I've done so far, I haven't done any rigorous testing. Good to see it's getting mainly positive feedback - thanks!
Post subject: Re: #4088: Lord Tom's N64 F-Zero X "Death Race" in 00:29.55
Joined: 10/20/2006
Posts: 1248
Lord Tom wrote:
xenos wrote:
The movement of the cars is determined by random factors other than the car choice. I managed some good results with Twin Norita but never finished that run. The lighter cars get faster boosts from collisions but don't seem to be handicapped in killing other racers in a TAS.
I'd be interested to see that demonstrated regarding the movement of the first two cars. I tried adjusting everything I could think of and their movement was always the same for a given car. I thought in my testing that lighter cars get penalized, but only slightly. I adjusted the submission text to report your time of 6.993.
Hm, this has sparked my interest, so I searched for the RNG in memory. It seems the number it generates is stored at 800cd170, 6 bytes long. Wasting a few frames on the "push start" screen seems to be an easy method to start death race with a different seed and (maybe) a more optimal car.
CJ
Joined: 9/16/2013
Posts: 15
Location: Las Vegas, NV
That was the best thirty seconds of my day. Easy yes vote.
Spacecow
He/Him
Joined: 6/21/2004
Posts: 247
Location: New Hampshire
Very nice!
Player (146)
Joined: 7/16/2009
Posts: 686
Lord Tom wrote:
Derakon wrote:
In particular it's interesting how every single tap by the player's machine, no matter how slight, seems to provoke the other machine to explode. It is possible to one-hit-kill other machines in this game, but in unassisted play you won't ever do it so casually. I'd be curious to hear more about exactly what the mechanics are for "combat".
Based on my observations, I'd speculate that when 2 ships collide, damage is calculated separately for velocity differences along each axis, with a small bonus/multiplier for vehicle weight and a large multiplier for being in a side-attack/spin-attack. This explains why when I lightly sideswipe the first car it gets destroyed - I'm barely moving towards it left to right, but I'm moving down the track much faster than the other car since I'm using turbo-boost. In amateur real-time play (the only type I can comment on), it's hard to kill cars because the tendency is to pull up next to it, matching velocity in all 3 axes, then try to veer into the other car. This often doesn't result in a kill because the closing speed is minimal accounting for all 3 axes, and a side-attack only lasts 16 frames so there's a good chance the collision happens after it's over. This is all just my speculation/suspicions based on the TASs I've done so far, I haven't done any rigorous testing. Good to see it's getting mainly positive feedback - thanks!
This sounds fairly accurate. I've almost beaten the WR a few times (I managed sub-30 on a somewhat regular base) and the best way to destroy enemy vehicles seemed to be to side attack while boosting past. This is a seriously great movie, your F-Zero X TASing skills are amazing. I hope this gets published, as I feel it's a valid game mode on its own (despite how short it is when TASed).
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15583
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [2467] N64 F-Zero X "Death Race" by Lord Tom in 00:29.55
Post subject: Re: #4088: Lord Tom's N64 F-Zero X "Death Race" in 00:29.55
Joined: 10/20/2006
Posts: 1248
Kuwaga wrote:
Lord Tom wrote:
xenos wrote:
The movement of the cars is determined by random factors other than the car choice. I managed some good results with Twin Norita but never finished that run. The lighter cars get faster boosts from collisions but don't seem to be handicapped in killing other racers in a TAS.
I'd be interested to see that demonstrated regarding the movement of the first two cars. I tried adjusting everything I could think of and their movement was always the same for a given car. I thought in my testing that lighter cars get penalized, but only slightly. I adjusted the submission text to report your time of 6.993.
Hm, this has sparked my interest, so I searched for the RNG in memory. It seems the number it generates is stored at 800cd170, 6 bytes long. Wasting a few frames on the "push start" screen seems to be an easy method to start death race with a different seed and (maybe) a more optimal car.
I wonder why this didn't get any replies. From my testing waiting on the car selection screen or the select game mode screen doesn't changed the RNG seed, but waiting on the push start screen does. So wasn't this oversight what caused the run to pick a suboptimal car?
Post subject: Re: #4088: Lord Tom's N64 F-Zero X "Death Race" in 00:29.55
Lord_Tom
He/Him
Expert player (3143)
Joined: 5/25/2007
Posts: 399
Location: New England
Kuwaga wrote:
I wonder why this didn't get any replies. From my testing waiting on the car selection screen or the select game mode screen doesn't changed the RNG seed, but waiting on the push start screen does. So wasn't this oversight what caused the run to pick a suboptimal car?
Sorry I didn't reply earlier. That was a good and unexpected find - thanks for looking into it. I think it's an open question which car is the best option and which car properties are weighted to what extent. So I don't think it's established that Golden Fox is suboptimal - though there may be a better car. I suspect overall that car choice effects are minimal for this run now that the enemy manipulation aspect has been separated.
Joined: 10/20/2006
Posts: 1248
Thanks, replying makes me know that my message has been read, so I can rest easy now. ;p