(Link to video)
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.
Below the same video slowed down to 0.25x speed (and still 60 fps). Sorry for the crappy audio.

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

Tricks

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

Dodge-slide

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
301,533
351,314
401,15
451,022
500,92
550,836
600,766
700,742
800,725
900,711
1000,700
1100,700
1200,691
1400,678
1600,668
1800,666
2000,660
2500,652
3000,646
3500,642
4000,640
4500,637
5000,636
6000,633
7000,630
8000,628
9000,627
10000,627
15000,624
20000,622
30000,621
50000,619
100000,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

StageTime
Sacred Ground I1.151
Sacred Ground II1.542
Sacred Ground III1.082
Twilight Spire I0.770
Twilight Spire II0.812
Twilight Spire III1.392
Backfire I1.307
Backfire II1.144
Backfire III2.106
Flight I1.375
Flight II2.618
Flight III2.002
Mirage I1.180
Mirage II1.726
Mirage III1.678
Thornwood I1.359
Thornwood II1.739
Thornwood III2.036
Frostfang Keep I1.745
Frostfang Keep II1.688
Frostfang Keep III1.602
King's Court I1.761
King's Court II1.701
King's Court III1.210
Sunken City I1.392
Sunken City II2.066
Sunken City III1.387
Moonstone I1.641
Moonstone II1.648
Moonstone III1.365
TowerForge I0.620
TowerForge II1.529
TowerForge III0.762
Ascension I2.305
Ascension II2.227
Ascension III1.562
The Amaranth I1.128
The Amaranth II1.900
The Amaranth III1.448
Dreadwood I1.360
Dreadwood II1.534
Dreadwood III2.201
Darkfang I1.259
Darkfang II1.382
Darkfang III1.637
Cataclysm I1.384
Cataclysm II1.602
Cataclysm III1.777
Total1: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 1.3.3.1 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 IBM 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.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14776
Location: 127.0.0.1
Patashu
He/Him
Joined: 10/2/2005
Posts: 3999
Is this the first 1000fps TAS on TASVideos?
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Editor, Player (132)
Joined: 4/7/2015
Posts: 328
Location: Porto Alegre, RS, Brazil
I'm very glad to start seeing "libTASes" here! And it was a real surprise seeing one of my favourite games of all time being TASed. Great usage of the techniques, and it looks amazing played that fast. Of course a yes, and already my vote for Speedy TAS of 2018"
Games are basically math with a visual representation of this math, that's why I make the scripts, to re-see games as math. My things: YouTube, GitHub, Pastebin, Twitter
Active player (372)
Joined: 9/25/2011
Posts: 652
Technically, this submission breaks the Movie Rules:
No tampering with the files the game is composed of Some systems, such as DOS, exposes the separate parts of the operating system and/or the game to the user. You are not allowed to manipulate these files except as is normally necessary to play the game, such as "installing" it. That means no renaming/copying/deleting/replacing/editing files that affect game-play.
Voted yes anyway. I foresee a clarification of the rules on the horizon.
fsvgm777
She/Her
Player, Senior Publisher (221)
Joined: 5/28/2009
Posts: 1180
Location: Luxembourg
c-square wrote:
Technically, this submission breaks the Movie Rules:
No tampering with the files the game is composed of Some systems, such as DOS, exposes the separate parts of the operating system and/or the game to the user. You are not allowed to manipulate these files except as is normally necessary to play the game, such as "installing" it. That means no renaming/copying/deleting/replacing/editing files that affect game-play.
Actually, the four areas (Sunken City, Moonstone, Towerforge and Ascension) need to be unlocked first, which means it breaks a different rule:
We do not allow save-anchored movies We want a standard starting point for movies (power-on). Saves introduce an infinite amount of possible variation that may cause the game to behave differently compared to starting from power-on. They also can be hacked, allowing nearly transparent cheating. However, there are certain games with unlockable modes, second quests, or other things of interest that can only be accessed if a save file (or an otherwise "dirty" SRAM) is present. If you really wish to submit a movie made on such a mode, you will need a verification movie made and provided alongside it. Any input file that starts from power-on (for example, a previously submitted movie for that game) and creates the exact circumstances for your submission to sync will generally do. Note that you don't have to optimize the verification movie: it only serves as a save or SRAM generator that makes it possible to claim the legitimacy of your effort. This submission is a good example. In any case, ensure a run of your unlocked mode provides meaningful content over a fresh game. For example, if the unlocked mode features all new bosses, but your run triggers the endgame sequence before meeting any of them, and this same glitch exists in a fresh game as well, then there is no benefit to unlocking this mode.
As there's no verification movie present, this sadly puts this submission in a bad state as of now.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
I can build a verification movie to unlock the four chapters.
Active player (372)
Joined: 9/25/2011
Posts: 652
From my reading of the submission, I don't see this starting from a save state. This TAS does start from power on as it should. keylie then alters a config file to unlock the areas that should otherwise be locked, and that's what's against the rules. One method to get around the issue would be to create a verification movie unlocking the four chapters and saving, and then start the movie from that save state, but that would require at least some reworking of the TAS to start from the save state instead of power on. I don't know how easy it is to transplant the run from one to the other, but if it's not much effort that would be a good way to go. Otherwise, I think we should discuss how to change the rule on altering game files.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
There is a cheat code to unlock everything, that is inputed in the credit screen. I modified the movie to do the cheat code and then complete the trials, so there is no need to modify the savefile: User movie #49970788659983989
Active player (372)
Joined: 9/25/2011
Posts: 652
Sweet. That gets around the whole issue quite nicely.
Editor, Player (132)
Joined: 4/7/2015
Posts: 328
Location: Porto Alegre, RS, Brazil
I agree with this workaround. Tho, I'd love to see a full "Quest mode" TAS, on Hardcore difficulty. The only problem is unlocking Moonstone, since:
Towerfall Wiki wrote:
Moonstone can be unlocked in Versus mode. After playing Versus on every starter tower, return to Sacred Ground where on any level where the moon is clearly visible an event will trigger which unlocks Moonstone for play.
I'm not sure if just starting the level is enough to set the flags or you have to finish the battles. Anyways, that's a debate for another time, in a [future] dedicated TowerFall thread.
Games are basically math with a visual representation of this math, that's why I make the scripts, to re-see games as math. My things: YouTube, GitHub, Pastebin, Twitter
Patashu
He/Him
Joined: 10/2/2005
Posts: 3999
Since feos is looking for thoughts on how variable FPS games should be handled in the rules, here are my thoughts: * It should not be required to run the game above whatever its default FPS is (or a reasonable default if the game doesn't specify one, such as 60), even if running it faster makes the run faster. * If a TAS is submitted at a certain FPS, and later an improved TAS is submitted at a higher FPS, the second TAS should only be accepted if it has improvements that are not related to simply increasing the FPS and following an identical route. (This is similar to how improvements based entirely on non gameplay frame saves like improved loading times are not considered valid.) * Conversely, if an improved TAS is submitted at a lower FPS, and it only loses time to the FPS being lower, and is otherwise faster due to new tricks/routing, it should be acceptable. (If a trick is only possible at higher FPSes and the trick is now foregone causing a time loss, though, I think -that- should count as being suboptimal and cause a rejection. So the FPS must be at least high enough for all fastest tricks in the run to be possible, and as long as the run optimization/quality increases agnostic to the chosen FPS besides that, the improvement is acceptable.) * The above points all assume the game gets asymptotically faster with higher FPS. If it gets faster with no bound with higher FPS, then allowing TASes to use whatever FPS is obviously absurd - it would be like DOS TASing at arbitrary CPU cycles. In such cases, increasing FPS above the reasonable default (60 or whatever) should be banned. (Side question - does this now mean judges are obliged to research how FPS affects all mechanics and tricks of the game, or should the submitter's research be considered good enough?)
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
I agree with your first 3 points, Patashu. I think the first point is really important to not force TASers to run at ridiculously high fps. About the last point, I think that it the game becomes faster with no bound when increasing the fps, it can be considered as a serious game glitch. Therefore, I suggest that people may submit a run taking advantage of this, but it will fall into a specific category. There is one example of such case in Super Meat Boy: the first boss is an autoscroller where you have to wait until the boss reaches the end of the screen. Due to poor programming, the boss speed is tied with the framerate, so the higher the framerate is, the faster the boss is going.
Active player (372)
Joined: 9/25/2011
Posts: 652
Patashu wrote:
* The above points all assume the game gets asymptotically faster with higher FPS. If it gets faster with no bound with higher FPS, then allowing TASes to use whatever FPS is obviously absurd - it would be like DOS TASing at arbitrary CPU cycles.
I was curious as to how this might relate to DOS CPU cycle settings. The CPU cycle limit rule was brought into place to make sure emulator speed settings were not set above what a normal human would be playing at when the game was released. Similarly, I think FPS settings shouldn't be allowed to be set higher than the hardware limitations of the video devices available when the game was released. If it was possible to for a normal human to play at 1,000 FPS (with the appropriate hardware) when the game was released, then this should be allowed. If this is something that can only be done because of the emulator or because better technology came out later, then it should not.
fsvgm777
She/Her
Player, Senior Publisher (221)
Joined: 5/28/2009
Posts: 1180
Location: Luxembourg
On my Windows 10 host, if I disable vsync in-game, TowerFall runs at 2000 FPS on average, but it doesn't actually run any faster. Since the LTM forces it to run at 1000 FPS, it will effectively dump 1000 frames per second to AVI. Here's a GIF of Twilight Spire II, slowed down to 15 FPS (no way am I embedding that, it's over 10 MB!). As you can see, since libTAS forces it to run at 1000 FPS, it will effectively dump 1000 frames per second to AVI. If you look closely at the timer, you'll notice that every millisecond is present, due to the AVI dump being at 1000 FPS.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
Patashu
He/Him
Joined: 10/2/2005
Posts: 3999
c-square wrote:
Patashu wrote:
* The above points all assume the game gets asymptotically faster with higher FPS. If it gets faster with no bound with higher FPS, then allowing TASes to use whatever FPS is obviously absurd - it would be like DOS TASing at arbitrary CPU cycles.
I was curious as to how this might relate to DOS CPU cycle settings. The CPU cycle limit rule was brought into place to make sure emulator speed settings were not set above what a normal human would be playing at when the game was released. Similarly, I think FPS settings shouldn't be allowed to be set higher than the hardware limitations of the video devices available when the game was released. If it was possible to for a normal human to play at 1,000 FPS (with the appropriate hardware) when the game was released, then this should be allowed. If this is something that can only be done because of the emulator or because better technology came out later, then it should not.
I think another thing to consider here is that most DOS games get arbitrarily (as opposed to asymptotically) fast as you increase their FPS, rather than having things happen at about the same speed, but smoother and responding to input more often. Because nothing interesting happens from a TAS perspective when you speed a DOS game up faster than it would 'reasonably' be played at, this motivates the rule to cap DOS CPU cycle settings at a 'reasonable' value. The argument of using hardware limitations is an interesting one though, and worth considering.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
Does the game provide any documented options to adjust framerate? I see framerate=1000 in the config file of the movie. How is this option forwarded to the game?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
No, the game does not offer an option to adjust framerate, there is just the vsync option. It is uncommon for games to offer a framerate setting, generally they run as fast as possible when vsync is off, or at the monitor framerate when vsync is on. The way the framerate setting works is by letting the game think that each screen draw takes exactly 1/fps duration. It corresponds to a different real-time situation if the vsync option is on or off, but the result is the same. If vsync is on, it's the same as saying that you plugged a monitor that has a refresh rate of the framerate setting. If vsync is off, it's the same as saying that your computer has a certain processing power so that it runs the game exactly at this framerate.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
Okay, and the game itself has fixed speed for all its movements? Or that also changes?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
The game physics take into account the time between two screen draws, whatever that is. So everything behave the same for any framerate value. This also applies for non-gameplay sections like the intro or the menus, they take the same time (in seconds) whatever the framerate is. Of course, a higher framerate gives more precision in inputs, so menus may be a little bit faster because of this.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
When the rules for DOS movie were created, the main point was that the movie should be using PC specs the game was released for. For example, games that expect slow CPU and are tied to CPU speed, which was common when CPUs were slow, must be TASed with such slow CPU specs. Games that have arbitrarily fast CPU in mind and rely on monitor refresh rate instead, may use as high specs as JPC-RR allows. Does 1000fps setting relate to any real world device this game might be targeting? This number feels fairly arbitrary. If we allow literally anything, the next movie might be forcing 9999999999999999999999999999fps.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
Like fsvgm777 said, when you run this game with vsync off, you are getting a framerate of a few thousands, so yes, it is definitively close to what real-world computers are getting. This particular value was chosen because the in-game timer is precise to the thousandth of a second, so any framerate value higher than 1000 would (almost) not affect the obtained in-game time.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
Does the game actually render all those 1000fps frames? Maybe the game engine is supposed to support it just fine, and input polling work at that rate, but video rate sounds way overkill.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
Yes, the game renders all frames. The in-game timer shows every single thousandth of a second.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
Sorry for all these questions, this case is really crazy. libTAS seems to be limited to 100k fps. Where does that number come from?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
keylie
He/Him
Editor, Emulator Coder, Expert player (2822)
Joined: 3/17/2013
Posts: 391
It is the limit from the GUI integer field (it requires some limit). I just chose an arbitrary high number there, not thinking people will test very high numbers someday :). The theoretical maximum is 1000M fps because time is stored in a struct containing the number of seconds and the number of nanoseconds since 1 Jan 1970. Although, depending on how the game fetched the system time, it can be truncated to a precision of a microsecond (so 1M fps) or even a precision of a milisecond (1k fps) in the case of VVVVVV for exemple.