(Link to video)
Nuclear Throne is Vlambeer's classic top-down shooter roguelike. This movie aims to reach the titular throne and reach the credits as quickly as possible with no additional restrictions.

Setup

Make sure to run the savefile setup movie before running this movie, as well as follow the movie annotations.

Game Mechanics

Feel free to skip the following paragraph if you know how the game works.
The gameplay of NT is fairly self explanatory. You spawn in a randomly generated stage, upon killing all the enemies a portal appears which takes you to the next stage. There's 4 main areas consisting of 3 stages each, and 3 in-between areas which are 1 stage long. The final stage of each main areas features a boss fight. Each stage features a weapon chest, ammo chest and a rad canister, in addition to that enemies can randomly drop weapons, ammo or health packs. Rads are the game's experience points, you collect them from dead enemies or the aforementioned canisters. Each level up grants a choice of 1 of 4 mutations, which are perks that help in the run.

Run Comments

1-1

I open all interactables without killing too many enemies to spawn Big Bandit. This boss usually only appears in 1-3, but spawning him in 1-1 and killing him quickly enough will take me to Oasis, one of the game's secret stages.
The weapon in the red chest is a Crossbow, which is one of the best 1-1 weapons. It deals solid damage and the bolts pierce weaker enemies, allowing me to kill multiple enemies with one shot.
I pick Extra Feet as my mutation, granting me extra movement speed. This speeds up traversal through the future stages.

Oasis

This level features the first use of Reload Cancelling. Picking up a weapon from the ground will instantly reload it, so by constantly swapping weapons I can fire once every 4 frames, with an additional shot of the weapon I'm using to reload cancel with inbetween.

3-3

Clearing Oasis puts me in 3-3, skipping 5 levels. I once again use reload cancelling to quickly kill Big Dog.
Portals only start spawning once the last enemy killed finishes its death animation. Boss animations are usually quite long, so leaving a regular enemy as the last one to die allows me to skip waiting for the boss animation to finish.
I pick Last Wish for my mutation. This perk gives full health and a bunch of ammo which isn't very useful, but it also allows entrance to the next secret stage.

4-1

Here I pick up the Heavy Crossbow, a slower, but stronger version of the regular crossbow. This is the main weapon for most of the run.
I pick Stress, giving me higher fire rate at lower health. This mutation speeds up stage clearing significantly, as the crossbows normally have quite a slow reload speed.

5-1

I offer 4 health to the flower, which spawned thanks to me having picked Last Wish. This instantly finishes the level and takes me to the Jungle. Last Wish is also refunded, so I get to pick another mutation despite not having levelled up.
I pick Bolt Marrow, giving me homing bolts. This is very good for more efficient stage clearing.

Jungle

I drop to 1 health to benefit from Stress as much as possible, not much more of note here.
I pick Scarier Face, which makes enemies have 20% less HP.

5-3

This stage really shows how powerful the combo of Heavy Crossbow and Bolt Marrow is, allowing me to clear multiple enemies with every shot. I do another boss death animation skip on Lil Hunter.

6-1

At this point the regular Crossbow stops being as useful, so I swap to the Auto Shotgun to help clear stray enemies while the Heavy Crossbow is reloading.
I pick Strong Spirit, allowing me to survive one lethal hit. This effect normally refreshes when entering a new stage with full health, but I never take advantage of this, rather just use it to set up Stress again.

7-1

I drop the Auto Shotgun for the Nuke Launcher, a weapon which allows me to shoot rockets which follow the cursor and cause very powerful explosions. I also reload cancel with the Heavy Crossbow to clear all the enemies extremely quickly.

7-2

The Auto Shotgun followed me through to this level, allowing me to once again reload cancel to get rid of most of the enemies right away.
I pick Rabbit Paw here, which doesn't do anything at this point in the run, but I had to pick something.

7-3

The final level, after activating the throne bossfight I stack up 10 Nukes, which when detonated will instantly kill the boss. The game ends upon sitting on the throne after it explodes, however by standing in the correct spot when the explosion happens I both die and sit on the throne at the same time, which still counts as beating the game.
Something to note here is before the big explosion each of the smaller ones is an actual explosion with a hitbox, so I have to avoid them to not die too early.

Special Thanks

Huge thanks goes to -7, who created a tool to search through the seeds, picking out ones with the correct mutations and weapons. This TAS would be much slower without her help.

Possible Improvements

  • As always with roguelikes, better RNG can always be found. While this seed had a very good build, the levels themselves weren't amazing. Especially 6-1 was quite long compared to even the RTA record. I believe a truly optimal run would always be able to reload cancel to clear every enemy on every level.
  • There's also definitely timesave possible in the way I clear each stage, it's very hard to optimise each shot when taking the enemies' random movements into account.
  • Manipulating fewer health drops to maintain Stress better could probably save a handful of frames.
  • It's very possible that another weapon/mutation build could be faster, there are many options in this game and this is just one I thought would work best.

Samsara: fish can roll
Samsara: Dropping due to personal life events preventing me from being able to judge anything with a clear mind.

ikuyo: Claiming for judging.

CasualPokePlayer: Claiming for judging.
CasualPokePlayer: Accepting
fsvgm777: Processing.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14887
Location: 127.0.0.1
This topic is for the purpose of discussing #8633: rythin's Linux Nuclear Throne in 02:43.80
Patashu
He/Him
Joined: 10/2/2005
Posts: 4017
Loved it! Great choice for a TAS.
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 (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
I cannot get the game to launch at all in libTAS (at least on my 64-bit Kubuntu VM). It always crashes on a segfault:
The connection to the game was closed. Exiting
Attempt 1: Connected.

***************************************
*     YoYo Games Linux Runner V1.3    *
***************************************  
CommandLine: -game game.unx
ExeName= /home/fsvgm777/.local/share/Steam/steamapps/common/Nuclear Throne/runner
MemoryManager allocated: 1199304
INI DisplayName=nuclearthrone
SavePrePend /home/fsvgm777/.config/nuclearthrone/ 
GAMEPAD: Initialising Ubuntu support
Attempting to set gamepadcount to 4
Steam being initialised with appId 242680
Steam_Init
Steam - SteamAPI_RestartAppIfNecessary
szCmd: /bin/sh -c '"/home/fsvgm777/.local/share/Steam/steam.sh" "steam://run/242680"' &
Steam - Restart required
Steam_Init
SteamInit failed with no msg
Steam restarting via client
Segmentation fault (core dumped)
steam.sh[4675]: Running Steam on ubuntu 22.04 64-bit
steam.sh[4675]: STEAM_RUNTIME has been set by the user to: /home/fsvgm777/.steam/bin/steam-runtime
setup.sh[4760]: Steam runtime environment up-to-date!
steam.sh[4675]: Steam client's requirements are satisfied
recv() returns 0 -> socket closed
The connection to the game was closed. Exiting
I tried installing libopenal1:i386 libssl1.0.0:i386 libxrandr2:i386 libglu1-mesa:i386 (though libssl1.0.0:i386 left me with a broken APT install, because the libssl1.0.0:i386 package doesn't exist anymore in Ubuntu 22.04) and even running ~/.steam/bin/steam-runtime/run.sh libTAS so that it finds the needed libraries, to no avail. Only times I got it to run was via the run.sh script outside of libTAS after removing the DISPLAY=:0 line.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
rythin
She/Her
Skilled player (1063)
Joined: 11/4/2021
Posts: 45
Are you running the 2021 open beta? (see movie annotations)
fsvgm777
She/Her
Senior Publisher, Player (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
Yeah, I am running the open beta, or at least I should, according to Steam.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
rythin
She/Her
Skilled player (1063)
Joined: 11/4/2021
Posts: 45
Then I have no idea, tried on 2 different PCs running with WSL and it seems to Just Work, in libTAS at least.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
What does launching it with GDB say? (When it segfaults, type backtrace.)
fsvgm777
She/Her
Senior Publisher, Player (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
Outside of libTAS:
Starting program: /home/fsvgm777/.local/share/Steam/steamapps/common/Nuclear Throne/runner 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

***************************************
*     YoYo Games Linux Runner V1.3    *
***************************************  
CommandLine: -game game.unx
ExeName= /home/fsvgm777/.local/share/Steam/steamapps/common/Nuclear Throne/runner
MemoryManager allocated: 1198792
INI DisplayName=nuclearthrone
SavePrePend /home/fsvgm777/.config/nuclearthrone/ 
GAMEPAD: Initialising Ubuntu support
Attempting to set gamepadcount to 4
Steam being initialised with appId 242680
Steam_Init
Steam - SteamAPI_RestartAppIfNecessary
szCmd: /bin/sh -c '"/home/fsvgm777/.local/share/Steam/steam.sh" "steam://run/242680"' &
[Detaching after vfork from child process 2066]
Steam - Restart required
Steam_Init
SteamInit failed with no msg
Steam restarting via client

Program received signal SIGSEGV, Segmentation fault.
0xf77ea806 in XPending () from /lib/i386-linux-gnu/libX11.so.6
(gdb) backtrace
#0  0xf77ea806 in XPending () from /lib/i386-linux-gnu/libX11.so.6
#1  0x082fb607 in ?? ()
#2  0x082fb982 in ?? ()
#3  0xf74a7519 in ?? () from /lib/i386-linux-gnu/libc.so.6
#4  0xf74a75f3 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
#5  0x08051785 in ?? ()
In libTAS:
Starting program: /home/fsvgm777/.local/share/Steam/steamapps/common/Nuclear Throne/runner 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Attempt 1: Connected.

***************************************
*     YoYo Games Linux Runner V1.3    *
***************************************  
CommandLine: -game game.unx
ExeName= /home/fsvgm777/.local/share/Steam/steamapps/common/Nuclear Throne/runner
MemoryManager allocated: 1199304
INI DisplayName=nuclearthrone
SavePrePend /home/fsvgm777/.config/nuclearthrone/ 
GAMEPAD: Initialising Ubuntu support
Attempting to set gamepadcount to 4
Steam being initialised with appId 242680
Steam_Init
Steam - SteamAPI_RestartAppIfNecessary
szCmd: /bin/sh -c '"/home/fsvgm777/.local/share/Steam/steam.sh" "steam://run/242680"' &
[Detaching after vfork from child process 2693]
Steam - Restart required
Steam_Init
SteamInit failed with no msg
Steam restarting via client

Program received signal SIGSEGV, Segmentation fault.
0xf73ebeda in pthread_mutex_lock () from /lib/i386-linux-gnu/libc.so.6
(gdb) backtrace
#0  0xf73ebeda in pthread_mutex_lock () from /lib/i386-linux-gnu/libc.so.6
#1  0xf7f2c47c in ?? () from /usr/bin/libtas32.so
#2  0xf7f2f855 in XPending () from /usr/bin/libtas32.so
#3  0x082fb607 in ?? ()
#4  0x082fb982 in ?? ()
#5  0xf7383519 in ?? () from /lib/i386-linux-gnu/libc.so.6
#6  0xf73835f3 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
#7  0x08051785 in ?? ()
I believe I have come across a few threads stating issues on multi-monitor displays (and xrandr detects 1 connected display and 7 disconnected ones in VMware), but there have been issues getting this game to run on Linux, according to Steam discussion forums.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
fsvgm777
She/Her
Senior Publisher, Player (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
Aight, I booted up my 32-bit Kubuntu 18.04 (!!!) VM, and the game actually runs fine there. So there's some weird incompatibility with it and my 64-bit Kubuntu 22.04 VM. I got it to sync, and I have the TAS already dumped. ...a bit unfortunate that you need it to run at 1200x900, as it doesn't scale nicely (closest would be 1280x960 (2x 640x480), but since the TAS relies on mouse inputs, you're bound to run into a desync without adjusting the input), which is a bit noticeable (to me, at least) when the credits are scrolling.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14887
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. ---- [5729] Linux Nuclear Throne by rythin in 02:43.80