FTL: Faster Than Light is a strategy roguelike game released in 2012. This TAS completes a single run with the starting ship (Kestrel A) with the advanced edition and hard mode.
The above video contains commentaries as subtitles.
To be able to follow the map, inventory and upgrades, you can watch the video below:

Game objectives

  • Emulator used: libTAS v1.4.0
  • Finish the game with the starting ship from a clean savefile
  • Uses hardest difficulty
  • Aims for fastest real time
  • Takes damage to save time
  • Ends inputs early
  • Heavy luck manipulation
  • Genre: Strategy

Game version

This TAS was performed on a former version (1.5.13) of the game. The first reason is that libTAS does not support later versions of the game. The second reason is that starting 1.6 version, the game uses its own PRNG. Before that, the game uses the system's native PRNG ("rand()/srand()" in the case of Linux version). This was much more easy to track these calls in libTAS for making the TAS.
There are only minor differences between these versions, none of which were abused in the present TAS.

Retro-engineering

About 95% of the work was the retro-engineering of the whole sector generation. I used the savefile editor work from ComaToes and Vhati as a framework, and implemented the sector generation inside it. All game data are stored inside a package that can be decompressed. Data files are xml files, so they can be read and parsed easily.
At the beginning of a run, the sector tree and sector 1 map are generated. Then, each subsequent sector map is generated when entering it.
So, the entire sector map is generated at once. It consists on:
  • sector layout. There are maximum 24 beacons on a grid of 4 rows and 6 columns. Some beacons may be randomly be skipped, making a minimum of 16 beacons. Each beacon is shifted from its grid position by a random horizontal and vertical offset
  • starting and ending beacons. The starting beacon is randomly chosen from the first beacon column. The ending beacon is randomly chosen from the two last columns, except for the last sector.
  • each beacon event. All random parameters of an event are resolved (random events from a list, reward type and quantity, crew race, name and stats, etc.). If the event involves a fight, the game does not generate all the random parameters of the hostile ship layout, but stores a random number that will be used as a seed for when we will enter this beacon.
The only thing that is generated when entering a beacon is the content of stores.

Luck manipulation

The game uses the system time at startup to seed the PRNG, so we can easily manipulate the sector 1 map. For the other sectors, the game pulls random numbers during idle time (20 numbers every 15 frames). To get a finer precision, we can use the crew stances. When a crew is manning an active system (weapons, engine, pilot, doors, camera or shields), it switches from one stance to a random one about 4 times per second. So, by moving crew, activating or deactivating systems, we can make the game pull more or less random numbers.

Routing

Sector layout

The goal of the game is to go through seven sectors, and fight the flagship in the eighth sector. The minimum number of jumps to go through a sector is four. The reason is that you can only jump between two beacons if they are from consecutive rows or columns. Because the starting beacon is on column 0, and ending beacon is on columns 4 or 5, it makes a minimum of four jumps.
For the first seven sectors, the strict minimum is to manipulate the layout so that we can reach the ending beacon in four jumps, without any fight or boarders.
The last sector is more complex: the starting beacon is on column 0, the federation base is on column 3 or 4 (hard only, 2 or 3 on normal and easy) and the flagship is on column 4 or 5. Moreover, it must take the flagship between 3 and 5 jumps to reach the federation base. It takes the flagship two turns to jump from one beacon to another.
In the optimal layout, it takes only 3 jumps to each the flagship:
  • turn 1: we jump to column 1, flagship prepares to jump
  • turn 2: we jump to column 2, flagship jumps to column 3
  • turn 3: we jump to column 3
To reach that layout, the optimal path for the flagship to the federation base must start with a jump to column 3, which is rather rare. So there are much more constraints on optimal sector 8 compared to other sectors.

Flagship fight

The last fight consists of three phases. The ship has 4 shields. The relevant differences between the phases are:
  • phase 1 starts with a clocking, that cannot be skipped. Ship has 20 hp
  • phase 2 has 22 hp
  • phase 3 starts with a Zoltan shield of 12 hp, and the ship has 20 hp
The most damaging weapons in this game are the beams. When all the shields are down, the most damage you can deal against this ship are:
  • Glaive Beam: 15 damage, and requires 4 power bars
  • Halberd Beam: 10 damage, and requires 3 power bars
  • Hull Beam: 8-9 damage, and requires 2 power bars
We need a weapon to take out the shields. The best weapons to take out shields are the flaks. Flak 2 fires seven projectiles and only requires 3 power bars. The chosen weapons are Flak 2 and two Hull Beam, for a total of 7 power bars (saving the cost of an eighth bar).
Moreover, we need the Weapon Pre-igniter augment that charges all weapons at the beginning of every fight. No other augment offered by the game would save any time in the run.
Because the credits start after the last phase, without any additional input, we can end inputs early by using the auto-fire feature. I move around crew at the end of phase 2 to manipulate randomness, then I deactivate and reactivate the Flak 2 at the beginning of phase 3 to synchronize the weapons when the Zoltan shield is taken down.

Reward manipulation

Because the first sector can be manipulated by tweaking the system time, I could get a very lucky layout with no time cost. The two rarest items are the Weapon Pre-igniter (5/5) and the Flak 2 (4/5), I built a script to check every seed value for these two drops (in addition to the four jumps/no fight constraint). There was about 10 matching seeds in the first 1 billion I tested (there are 2147483648 possible seeds). I chose the one with a crew reward, so that I had a higher range for manipulating randomness for the next sectors.
There are much less possible seeds for the other sectors (with loosing much time), so the remaining weapons were obtained in shops. Because shop content is generated when entering the beacon, and the Hull Beam has a rarity of 3/5, it was rather easy to manipulate its presence in a shop.
The rest of the manipulation was for scraps and fuel. I also needed one Drone System and a combat drone for one hit on the second phase of Flagship.

Memory: Judging
Memory: jumps into existence
OK so first off thanks to fsvgm for confirming sync.
jumps into talking about optimization
Optimization here appears fairly good even though it can be hard to tell what's going on.
jumps into talking about entertainment
Speaking of not being able to tell what is going on, that was kind of a huge detriment, for the most part all you see is jumping from one place to the next and then suddenly the final boss. While to some that could be kinda funny, for others it was just boring.
jumps into talking about the ending input early
Ending input early results in a long drawn out last phase of the fight but given that there wasn't much entertainment prior, changing it wouldn't change the reception a ton. The double kill was kinda fun though
jumps into verdict
Accepting for Vault.
gets destroyed at the same time along with this game
fsvgm777: Processing.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15576
Location: 127.0.0.1
This topic is for the purpose of discussing #6787: keylie's Linux FTL: Faster Than Light in 03:11.25
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
~80% of this movie is light speed traveling, which isn't engaging at all to me. I'm voting No on Entertainment.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
EZGames69
He/They
Publisher, Reviewer, Expert player (4460)
Joined: 5/29/2017
Posts: 2761
Spikestuff wrote:
~80% of this movie is light speed traveling.
ackshually, it's faster than light.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
Hilarious final fight, yes vote.
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
fsvgm777
She/Her
Senior Publisher, Player (226)
Joined: 5/28/2009
Posts: 1213
Location: Luxembourg
Okay, in order to get the older version of the game, you'd normally open the Steam console and type in the following:
download_depot 212680 221002 1265710545481316279
However, that's been broken for quite some time (I get a "Depot download failed : Manifest not available" error). However, there's an alternative named Depot Downloader. The pre-requisite for it is that you need to have .NET Core installed (instructions on how to install it in Ubuntu are contained within). Then, from a terminal, run the following command:
./depotdownloader -app 212680 -depot 221002 -manifest 1265710545481316279 -username <Steam_username>
from within the directory Depot Downloader is located. It will then prompt for your Steam password (of course), then it will proceed to download the depot. The downloaded files will be in the "/path/to/DepotDownloader/depots/221002/4710954" directory. However, the executable files are not set to be executable files (at least it wasn't the case for me). To save yourself the hassle, just run "sudo chmod -R 777 *" from within the root of the depot directory. Run it once to make sure you got the correct version.
Steam Community page - Bluesky profile Oh, I'm just a concerned observer.
CoolHandMike
He/Him
Editor, Judge, Experienced player (895)
Joined: 3/9/2019
Posts: 695
Really well done. Anyone that has played this will understand the excessive luck in this run and how it is very obviously a tas. Seeing that last three bars of health at 3:39 is so teasing though, wish there was some way to knock those out then. Like the double KO too. Yes vote.
discord: CoolHandMike#0352
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
The lack of actual gameplay (battles) makes it rather boring, but excellent technical achievement. Great for Vault.
Previous Name: boct1584
upthorn
He/Him
Emulator Coder, Active player (391)
Joined: 3/24/2006
Posts: 1802
There is a lot of boring repetitive stuff before getting to the final battle, but, having played the game, the fuel management is still impressive. I also very much liked the ending. I didn't know it was possible to have a victory with your ship destroyed.
How fleeting are all human passions compared with the massive continuity of ducks.
Blazephlozard
He/Him
Banned User
Joined: 2/27/2013
Posts: 175
Location: Ohio
The technical achievement here is fantastic, but unfortunately the movie itself is just not very entertaining... at least to those unfamiliar with the game. I can see those familiar with the game getting a lot of entertainment out of it, despite the visual content being so simple.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
What would a maximum score run look like, assuming you had fastest time as a secondary goal so as to mitigate grinding? Would you take easy-to-fight encounters or still just skip them?
Previous Name: boct1584
keylie
He/Him
Editor, Emulator Coder, Expert player (2840)
Joined: 3/17/2013
Posts: 392
Score is computed from collected scraps, number of visited beacons and number of destroyed ships. A TAS with highest score would visit as many beacons as possible before the rebel fleet arrives (manipulating nebulas). Then, it would visit every single beacon of the sector again (controlled by rebels), because rebels overwrite each beacon event with a rebel fight, counting toward the number of destroyed ships (and gives 1 fuel). Rebel fights are very hard, but a TAS should be able to fight them unharmed.
upthorn
He/Him
Emulator Coder, Active player (391)
Joined: 3/24/2006
Posts: 1802
That does sound like it would be quite entertaining.
How fleeting are all human passions compared with the massive continuity of ducks.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
According to a friend of mine, Elite Fighters respawn infinitely, so theoretical max score is infinite points in infinite time. So a high score TAS would need subgoals to restrict that. My thought would be either "fastest time," or "does not visit beacons more than once."
Previous Name: boct1584
CoolHandMike
He/Him
Editor, Judge, Experienced player (895)
Joined: 3/9/2019
Posts: 695
I think unlocking all ship types in a first playthrough would be nuts. You cannot get the other versions like B or whatever but that would certainly be impressive.
discord: CoolHandMike#0352
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
The encode isn't a good way to watch the run. Could you produce a transcript, or some similar guide to what events you're hitting and what happened in each of them? There is an exploit that allows you to fire more weapons than you have power for, when you have a Pre-Igniter; it involves leaving the previous beacon with some weapons fully charged but deactivated and other weapons activated (but not necessarily fully charged). When arriving at the new beacon, all the weapons will be fully charged; you can then charge the activated weapons and quickly switch to the deactivated weapons before they lose too much charge. There are several properties of the Flagship that mean it may be hard to save time like this; however, it's worth looking into seeing if this leads to an improvement. (I think it might be possible to set the exploit up against phase 2 and use it against phase 3?) An alternative way to speed up phase 3 would be using either Hacking, or additional drones, to take down the (regular) enemy shields; this would allow four of the Flak shots to damage the hull rather than being spent against the shields. You could also use Zoltan Shield Bypass, along with some cheap-in-power bombs, to bomb the regular shields while your main weapons are taking down the supershield, although I'm not sure if this would give you enough additional damage given the fairly slow reload time of that sort of bomb. Also, on the subject of no other augments being helpful: not even Automated Reloaders? Those should directly save time in any fight that involves multiple volleys (such as your current flagship stage 3 fight).
keylie
He/Him
Editor, Emulator Coder, Expert player (2840)
Joined: 3/17/2013
Posts: 392
There are subtitles if you didn't see them. Otherwise, I guess I could dump all the events I encounter. Regarding pre-igniter glitch, I couldn't use it unfortunately. When entering phase 1, the clocking makes all non-powered weapons to discharge, so that I can't keep charged weapons for the next phases. Phase 3 fight could be speed up, yes, but it won't change the final time which is based on the last input (beginning of the fight).
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
I'm not sure it makes sense to end input early in cases where that causes the use of a suboptimal strategy for the fight. It's delaying the end of the run by a substantial amount, and is saving very little in terms of ending the input (I'm not sure, but most likely it's a few frames of luck manipulation). (I also wonder if sufficient amounts of overkill might make it so that you don't have to resync the Flak, and thus save time when it comes to ending input, too.)
keylie
He/Him
Editor, Emulator Coder, Expert player (2840)
Joined: 3/17/2013
Posts: 392
ais523 wrote:
I'm not sure it makes sense to end input early in cases where that causes the use of a suboptimal strategy for the fight. It's delaying the end of the run by a substantial amount, and is saving very little in terms of ending the input (I'm not sure, but most likely it's a few frames of luck manipulation).
Isn't this the case of most "end input early" cases, to have a suboptimal end? Going for an optimal would need to send the second volley manually, to activate hacking/manipulate luck/drones/etc... which would cost at least 20 seconds (time for the flak 2 to recharge).
ais523 wrote:
(I also wonder if sufficient amounts of overkill might make it so that you don't have to resync the Flak, and thus save time when it comes to ending input, too.)
Sorry, I don't understand what "amounts of overkill" means.
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
By "overkill", I mean having much more damage potential than you need to win the fight, in the hope that the extra damage allows the use of a less precise strategy and therefore allows ending input earlier via just leaving the entire fight on autofire.
dart193
He/Him
Player (35)
Joined: 1/20/2013
Posts: 63
As a fan of this game, I did not expect much of this run, but the final battle was well worth 2 minutes of FTL warping. About early input end: there was a TAS of some Kirby game where the final battle was ended early and the actual boss kill happens 5 minutes after that because helper kills the boss. So for this one, where there is only like 40 seconds, I am pretty sure it is fine. Especially that you need a good RNG for your weapons to hit properly since projectile based ones can miss. Yes vote, although its somewhere between Meh and Yes.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2238)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
There was a point about 10 warps in where I realized "Wow, this is going to be the entire run" and that actually made it more entertaining for me. I love it when complex games are reduced to leisurely strolls like this. Voted Yes, though I admit it's due to my familiarity with the game and me just finding two and a half minutes of warping way too funny. The double kill at the end is also incredibly good.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
I voted No, not because I think the warping is necessarily disqualifying (that's more an issue with the encode than with the run), but because the run looks suboptimal; if it is optimal, it's only because the category has been carefully defined to make it optimal. In particular, I still disagree with the way in which input was ended (which is logically part of the category definition). I'm also not convinced that the correct strategy is being used for the only mandatory battle in the game, even given the chosen category; this is the sort of thing that, being pretty much the only non-autoscroller in the run other than RNG manipulation, should really be optimised right down to the frame level by comparing a range of possible strategies.
keylie
He/Him
Editor, Emulator Coder, Expert player (2840)
Joined: 3/17/2013
Posts: 392
The category is any%, so it is the least arbitrary category chosen for this game, and TAS timing is the default timing method. You didn't describe other strategies that would lead to a better time. You are talking about overkill, but what set of weapons would lead to more damage potential that wouldn't require the fight to be significantly longer? Also, I'm sorry but given the nature of the game (heavily rng dependent), you can't expect it to be optimized to the frame. There are probably a few frames that can be saved with this strategy, but it would need exploring a much larger space of randomness. It may feel like a lame excuse, but I spent a few hours on this last fight alone, getting a better rng may requires 10 times more.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15576
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. ---- [4243] Linux FTL: Faster Than Light by keylie in 03:11.25