Tool-assisted game movies
When human skills are just not enough

Submission #6104: keylie's Linux TowerFall Ascension "all trials, 1000 fps" in 03:26.75

Console: Linux
Game name: TowerFall Ascension
Game version: any
ROM filename: towerfall-07212016-bin
Branch: all trials, 1000 fps
Emulator: libTAS v1.3.1
Movie length: 03:26.75
FrameCount: 206753
Re-record count: 6275
Author's real name: Clément Gallet
Author's nickname: keylie
Submitter: keylie
Submitted at: 2018-09-17 18:59:16
Text last edited at: 2018-11-24 19:08:54
Text last edited by: fsvgm777
Download: Download (8597 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list

Version info:

libTAS version: 1.3.1

Annotation info:

Game: Towerfall Ascension + Dark World Expansion v1.3.2.0 DRM-free x86_64 version (taken from Humble Store: https://www.humblebundle.com/store/towerfall-ascension and https://www.humblebundle.com/store/towerfall-dark-world-expansion . Dark World Expansion DRM-free version is noted as Windows only, but works for all systems because it is just an archive of data files to be placed inside the game directory).

OS: Ubuntu 18.04 amd64 with Linux kernel 4.13.0-36-generic, libTAS v1.3.1.

Before the movie can be played, the game must be launched natively and fullscreen mode must be turned off in the options. This is needed because libTAS enforces a windowed mode, and some games like Towerfall does not display correctly if configured in fullscreen mode.

Inside libTAS, fill the Game executable to "/path/to/game/TowerFall.bin.x86_64", then open "File > Executable Options..." and set "Library path" to "/path/to/game/lib64".

Author's comments and explanations:
TowerFall Ascension is a multiplayer arena game first released on the Ouya by the name TowerFall in 2013, then later ported to other consoles and PC. The Dark World expansion pack was released two years later. While focusing on multiplayer, this game features a Trials mode where a single player must shoot targets. The present TAS completes all 48 trials of the game, including ones from Dark World expansion.

(Link to video)

Below the same video slowed down to 0.25x speed (and still 60 fps). Sorry for the crappy audio.

(Link to video)

Game objectives

  • Emulator used: libTAS 1.3.1
  • Completes all 48 trials
  • Aims at fastest in-game time, then fastest real-time
  • Genre: Platform, Fighting


(Most of the tricks described here are taken from http://towerfall.wikidot.com/how-to-play )


A standard ability, but very important for the following tricks. Pressing the Dodge button while ducking executes a Dodge-slide, which is an horizontal Dodge with a higher velocity than a normal Dodge.

Dodge Canceling

The base of most tricks of the game is the ability to cancel a Dodge at any point by pressing the same or another Dodge button (Hyper Dash), or by jumping if the player is on the ground (jump-cancel). When Dodging, the player starts at a high initial speed, then it decreases rapidly. When a Dodge is canceled by another Dodge, the player keeps the Dodge speed, allowing him to move faster than running speed. A Dodge can be canceled on the first frame after the Dodge for the highest speed. A cancelled dodge also enters the cooldown period earlier, allowing the player to execute another Dodge earlier.

Super Jump

A Super Jump combines a dodge-slide with a jump-cancel. The player must perform a dodge-slide immediately followed by a jump-cancel. The added momentum from the dodge-slide will propel the player forward into the air a great distance.

Hyper Jump

A Hyper Jump is a Super Jump combined with a Hyper Dash. It's executed by performing a dodge-slide, followed immediately by a Dodge cancel, and then a jump. This method gives the highest momentum boost to the player allowing for jumps of huge distances. This is the best way to gain massive speed and launch yourself across the map, since slides are faster than dodges and air friction is lower than ground friction.

Hyper Wing

If a player possesses wings they can perform a technique that sees them fly rapidly upwards into the air. It is performed by jumping with wings when airborne followed immediately by an upwards Hyper Dash.

Air Aiming

During a Hyper Jump, holding the arrow button slightly decreases the air friction, but we loose the player control when aiming in the air.

Framerate choice

Because of the Dodge cancel mechanics, the sooner you cancel the Dodge, the higher speed you gain. As a consequence, a higher framerate gives access to higher speed. The game does not lock the framerate, it depends either on your monitor refresh rate when vsync is on, or your computer processing power when vsync is off. The game engine supports high framerates without any problem. As an example, at a very high framerate (1000 fps), a Hyper Jump gives a velocity 15% higher than at 60 fps. So I decided to record this TAS at a framerate of 1000 fps. This value was chosen for multiple reasons. First, the increased velocity is negligible after around 300 fps. Also, the in-game timer is precise to the millisecond, and behaves correctly regarding frame advancing (advancing one frame always increases the timer by exactly one millisecond). This allows us to complete stages at the best precision displayed by the game.

Edit: I conducted more research on the framerate dependent speed. I took Twilight Spire II stage because you can do an hyper jump across the whole screen. For each framerate value, I performed an hyper jump to the right, using the following inputs: down+right+dash1, right+dash2, right+jump, then I hold these last inputs until getting to the right wall. Before touching the right wall, I released and pressed jump again to buffer a wall jump. Then, I write down the in-game time of first frame of the wall jump animation. The obtained values are:

Framerate (Hz) WJ time
30 1,533
35 1,314
40 1,15
45 1,022
50 0,92
55 0,836
60 0,766
70 0,742
80 0,725
90 0,711
100 0,700
110 0,700
120 0,691
140 0,678
160 0,668
180 0,666
200 0,660
250 0,652
300 0,646
350 0,642
400 0,640
450 0,637
500 0,636
600 0,633
700 0,630
800 0,628
900 0,627
1000 0,627
1500 0,624
2000 0,622
3000 0,621
5000 0,619
10000 0,619

The distance traveled is 28 tiles and 6 pixels (so 28.6 tiles because one tile is 10 pixels), so by plotting the character speed in tiles/s over the frame length (in seconds, inverse of the above framerate), we obtain the following graph:

Individual times

Stage Time
Sacred Ground I 1.151
Sacred Ground II 1.542
Sacred Ground III 1.082
Twilight Spire I 0.770
Twilight Spire II 0.812
Twilight Spire III 1.392
Backfire I 1.307
Backfire II 1.144
Backfire III 2.106
Flight I 1.375
Flight II 2.618
Flight III 2.002
Mirage I 1.180
Mirage II 1.726
Mirage III 1.678
Thornwood I 1.359
Thornwood II 1.739
Thornwood III 2.036
Frostfang Keep I 1.745
Frostfang Keep II 1.688
Frostfang Keep III 1.602
King's Court I 1.761
King's Court II 1.701
King's Court III 1.210
Sunken City I 1.392
Sunken City II 2.066
Sunken City III 1.387
Moonstone I 1.641
Moonstone II 1.648
Moonstone III 1.365
TowerForge I 0.620
TowerForge II 1.529
TowerForge III 0.762
Ascension I 2.305
Ascension II 2.227
Ascension III 1.562
The Amaranth I 1.128
The Amaranth II 1.900
The Amaranth III 1.448
Dreadwood I 1.360
Dreadwood II 1.534
Dreadwood III 2.201
Darkfang I 1.259
Darkfang II 1.382
Darkfang III 1.637
Cataclysm I 1.384
Cataclysm II 1.602
Cataclysm III 1.777
Total 1:13.842

Suggested screenshot: 135663

feos: Submissions with questionable settings need me. Judging...

feos: Replaced with a movie that uses a code to unlock all the trials. Verified sync on version of the game.

feos: Set the branch label that makes it obvious that this movie forces the OS to V-Sync at 1000 frames per second - a value that an original target OS for this game doesn't offer. libTAS intercepts the time functions of the OS and makes the game think that it runs at this framerate, while in reality it's not an option.

feos: We found out "1000 fps" is the most correct spelling.

feos: Finally, the actual judgment.

This movie's goal is completing all the 48 trials the game has, including the locked ones, it unlocks them by using a cheat code, and here's the screen it reaches in the end, showing the results: https://i.imgur.com/JPFchgP.png

I don't think this goal can be considered full completion, because there is also a Quest mode of the main game and of the Dark World DLC. I don't know if it makes sense to beat all Quest levels and all trials in a single movie, this would need some discussion whether we count that as full completion or not.

This movie also happens to abuse the environment in a way not expected by the developers. This is similar to inserting an NTSC-only game into a PAL console and abusing the resulting glitches.

Why is this comparable?

Because the authentic environment the game is developed for is a part of the challenge that the game is. For consoles it just happens to be locked and sealed, and we do not allow to break its integrity. Simply because you can not casually modify your console and then expect legitimacy for your speedrun that abuses these tweaks.

But why do we allow it here?

Because IMB PC officially has open architecture, and one is expected to build their own PC using whatever compatible (or incompatible!) components they can afford.

Yet this obviously doesn't mean that every game can run just fine on any architecture. Quite the opposite: games are usually developed and tested only against a limited set of hardware and software configurations. Those configurations are then announced as minimal, supported, and/or recommended computer specs the game is designed to work on. And on some others (or even some of the intended ones) it may glitch out and become unplayable.

So we allow this to some extent, if it can be proven that a game was designed for some configuration, and it was used. But when one uses configuration not even expected by the developers, we try to limit this approach as not entirely legitimate when it comes to blatantly clear speedrun records. We do not allow abusing unintended environment for Vault. And most importantly: we do not encourage anyone to abuse unintended environment at all. This means a movie doing it may be obsoleted by the one that avoids it if there are gameplay improvements otherwise.

Here's the post speaking of all the aspects of this problem, and here's what our updated Rules say on that matter.

Now, why 1000 fps exactly?

The author provided insight on how this game engine works at higher framerates. After some relatively high framerate value, the trick this movie abuses starts saving less and less time, and its usefulness caps out at around 500 fps.

This movie also aims for in-game time over real time, and milliseconds are the most precise unit of time measurement its timer can work with. So using higher framerate won't affect the in-game timer, because there's no more speedrun benefit for the trick that needs high framerate.

This is still quite arbitrary, but the feedback of this movie is quite positive, so with the about clause on obsoletion, we can allow it here.

Accepting to Moons.

fsvgm777: Processing.

Similar submissions (by title and categories where applicable):