(Link to video)
Submission Text Full Submission Page
UPDATE: Unfortunately, I have decided to cancel this submission. The reason for this is that the game does not appear to work correctly in the latest release version of libTAS. I had used an interim build, since I was unable to install the v1.3.4 release build on Ubuntu 19.04, which was the version I had installed on my computer at the time. I assumed that it was still going to work in the release build anyway, and that turned out to be my biggest mistake when considering this submission.
After multiple people, including the judge, reported that the game would crash or not work at all in libTAS, I decided to downgrade to Ubuntu 18.04.3 LTS, which is the last Ubuntu version where the dependencies for the libTAS release build can be satisfied, and got to testing the game in libTAS myself. What I found out is that the specific issue in the latest libTAS release build is that the game does run, but any interaction with it at all after the first frame causes the game to crash. This includes having the window on focus and sending inputs. Every libTAS setting I tried tweaking didn't help; although enabling Native events fixes the problem, it causes the game to not process the movie's inputs, so it still doesn't help (if you somehow get the game to work correctly in libTAS release v1.3.4, please tell me ASAP with the steps you took).
Running this game from the latest interim commit works just fine, however. So what's the issue? Well, according to the site rules, a Linux TAS submission still can and will be rejected if the movie cannot be played back on the latest release build of libTAS. Given the wording, I don't think an exception for this scenario can be made either.
Therefore, at this point in time, I believe it to be impossible for this submission to pass. If you still wish to play back this TAS, install the latest libTAS master commit from the GitHub page and compile it. Also I recommend downloading the movie I linked in the Comments section of this submission.
I am definitely going to get around to resubmitting this once a new libTAS release build with the interim's bugfix for this game comes out. Might make a few improvements in the meantime, or something. I deeply apologize for the inconvenience caused by these events.
You Have to Win the Game is a short but sweet PC metroidvania platformer game that pays a homage to the 1980s computer gaming era, where the player controls a kid with a hat put on backwards (or a cat, if you prefer). This movie beats the game in 4:58 IGT with fast movement, clever routing and death warps, and exploiting a few quirks regarding the jumping mechanism and spike hitboxes.

Game objectives

  • Emulator used: libTAS 1.3.4
  • Game version used: DRM-free v1.01
  • Aims for fastest completion and in-game time
  • Uses death to save time

Comments

Important note: If the submission file provided desyncs right at the title screen, set the in-game resolution to 800x600 and use this movie file instead. Update: This file should sync on any resolution by using the Return key instead of mouse presses. However, I had to sacrifice the cat due to the way the title menu works, but the regular player character has the exact same hitbox anyway.
This movie aims to beat the game's original campaign in normal difficulty, instead of hardest difficulty. The reason for this is that the only difference between normal difficulty and hardest difficulty (that being YOLO Mode, which I shall refer to as from now on) is that the former has checkpoints whereas the latter does not, and the checkpoints are required in order to do death warps effectively and minimize backtracking.
This movie plays as the cat (which has 9 lives), but playing the movie as the regular character would yield the exact same results.
The v1.01 DRM-free version of the game is used, which features a password room for the player to input through warps at the end. Old, pre-Steam release builds of the game require the player to input the password through the terminal, an otherwise officially undocumented debug feature, in order to beat the game. Having to input a command through the terminal to beat the game is discouraged by the site rules, which is why this build is used instead.
Note: While I TASed on an amd64 Linux distro, installing the 32-bit libraries, both stable and dev, is required for the game to be able to play in libTAS, as the game only has a i386 executable. Also, attempting to play the movie in the Steam version of the game will give an md5 error, so it must be played on the DRM-free version. I also have to note that I played back this TAS with the EGA color settings on, however it should play back on the default settings (CRT simulation & 3-color graphics) just fine.

Techniques employed

Routing & death warps

This movie collects the Cerulean Aura first, and the Crimson Aura second, because the time saved from the death warps ultimately makes it faster than collecting the Crimson Aura first. The reason death warps work is because dying after getting an upgrade does not strip you of it even if a checkpoint wasn't hit after the fact. This is done twice in the run.

Triple jump glitch

After getting the gloves powerup, walking off a floor and then quickly jumping off the wall immediately below it will give the player an additional jump. This, in combination with the double jump powerup, allows for the player to get up to 3 jumps. This is used right after getting the Spider Gloves powerup in order to be able to get back up to the left without having to walljump, and when going back to the You Have to Start the Game room in order to get up to the Exit Strategy room more optimally.

Spike hitbox

The spike hitbox is not a perfect square, in fact it's slightly less wide than what it looks. There is a 1-pixel window on both sides of the spike that the hitbox does not cover. This allows us to ledge-jump off these pixel windows and it's a requirement to get to the Exit Strategy room significantly faster as opposed to the intended route.

Other comments

Getting this movie to sync is tough. The game handles moving enemy/platform hitboxes slightly inconsistently, which may become an issue in the rooms Don't Get Snippy With Me, The Crab Cake is a Lie and Hardcore Prawn (Hollow King can also desync but it happens more rarely). It is still possible for the movie to play at full sync in a one-sitting attempt without having to save and load savestates at the offending parts until they sync, but it may take several attempts until it works. It should eventually work, though, as it did on my case.

Screenshot suggestion

Hardcore Prawn. (14871)

feos: Judging...

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14772
Location: 127.0.0.1
This topic is for the purpose of discussing #6528: letcreate123's Linux You Have to Win the Game in 05:00.17
Active player (324)
Joined: 2/23/2005
Posts: 786
At 3:40, if you climb up the wall and go to the left, it's a shortcut back to the beginning. Did you check to see if that's faster?
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
CtrlAltDestroy wrote:
At 3:40, if you climb up the wall and go to the left, it's a shortcut back to the beginning. Did you check to see if that's faster?
I checked, that's actually about 2 seconds slower, mostly due to the fact that more time is spent wall-jumping up there, plus having to climb up again in the Not All Those Who Wander Are Lost room, than it is spent just climbing up from the Which Path Will I Take? room.
CoolHandMike
He/Him
Editor, Experienced player, Reviewer (634)
Joined: 3/9/2019
Posts: 562
Nice jumps... Especially those ones in between the bullets and near the spikes. Made this look easy when casually I found this to be a pretty hard platformer.
discord: CoolHandMike#0352
Post subject: Re: #6528: letcreate123's Linux You Have to Win the Game in 05:00.17
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
TASVideoAgent wrote:
Having to input a command through the terminal to beat the game is unpreffered,
Unpreferred by whom? And why? Either way: nice run, and 3:54 would be nice screenshot.
Post subject: Re: #6528: letcreate123's Linux You Have to Win the Game in 05:00.17
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
Radiant wrote:
TASVideoAgent wrote:
Having to input a command through the terminal to beat the game is unpreffered,
Unpreferred by whom? And why?
What I mean by this is that the Movie Rules discourage utilizing debug features to get to the end. I asked in the Ask a Judge thread about this and, after some deliberation, was ultimately told that in this particular scenario, TASing on builds with the password room is preffered over TASing on builds where the terminal is required to beat the game.
Post subject: Re: #6528: letcreate123's Linux You Have to Win the Game in 05:00.17
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
letcreate123 wrote:
Radiant wrote:
Unpreferred by whom? And why?
What I mean by this is that the Movie Rules discourage utilizing debug features to get to the end.
Yeah, that makes sense to me. I remember playing this game and getting stuck in the penultimate room with only some obtuse hints. I finally googled how to proceed and thought it was poor game design to use an undocumented debug mode like that... ...and lo and behold, the designers were convinced of the same, and took it out in the next build :D
Ford
He/Him
Joined: 3/5/2013
Posts: 183
Location: California
Those were some stellar wall jumps near the end.
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
To whoever claims this for judging, please replace my movie file with this one: User movie #58507208325132488 Ever since I first submitted my TAS I learnt of a slightly faster strat in the Before the Crash room saving 11 frames over the currently submitted run.
Snodeca
She/Her
Player (128)
Joined: 9/27/2015
Posts: 104
A simple game, but yet very satisfying to watch IMO. Yes vote.
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
I'm surprised that the cat would have a bigger hitbox.
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
Update: I just tried playing back this TAS but with the default player character selected instead of the cat and it yields the exact same results, even with all the precise jumps done throughout the run. I may have been wrong about the cat having a larger hitbox than the default character, so I'd like to apologize for that. I am however keeping the TAS as the cat character, because, let's be honest, it's more amusing that way. :^)
upthorn
He/Him
Active player, Emulator Coder (387)
Joined: 3/24/2006
Posts: 1802
Not bad! Any plans for 100%?
How fleeting are all human passions compared with the massive continuity of ducks.
g0goTBC
He/Him
Experienced player (752)
Joined: 6/11/2018
Posts: 110
Some of these jumps were incredible, awesome job!
Banjo-Tooie runner, DTC 8, 9, 10, and 11 winner, but more importantly, "When's GR?" Current projects: Banjo-Kazooie: Grunty's Revenge - 100% (50 minutes) Mario Party 1 - All Boards (est: 4-6 hours) Mario Party 3 - All Minigames (est: 40-50 minutes, not sure) "Ooooh, I saved some more subpixels. Look at those sweet subpixels. You can't look at them, because they're subpixels, but they look so good." - The8bitbeast "It's as if I knew what was going to happen. It's as if I had the plan written in front of me and I was reading it. I mean, I do have it in front of me, but I'm not reading it." -garagedooropener
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
Please list the exact steps that are needed to make this game run in libTAS (aside from OS installation itself).
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.
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
I just updated my submission with the movie file specifying the library dependencies and the configuration steps. I linked it in the submission just now but I'll link it here just in case. Aside from the added steps, I decided to take steps to make the movie sync in any resolution by utilizing the Return key to get through the menu instead of the mouse button. Unfortunately it meant I had to sacrifice the cat due to the way the game handles the menu, but the default character has the same hitbox anyway.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
We need "full installation steps" for dependencies to prevent any future confusion with replaying the movie. What command did you use to install those libs?
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.
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
feos wrote:
We need "full installation steps" for dependencies to prevent any future confusion with replaying the movie. What command did you use to install those libs?
To be honest, most if not all of these libraries installed automatically as dependencies for other libraries I was setting up in Ubuntu, so I'm not completely sure. But if I remember correctly I used both the sudo apt-get install command and the Synaptic package manager to install the packages. Either should work. (If sudo apt-get install does not work then you may have to add the respective repositories for them, but I believe Ubuntu has most if not all of them added by default) EDIT: So I just learned that these were actually contents of other packages. The packages themselves are libc6, lib64gcc1 and libstdc++. Invoke sudo apt-get install libc6 lib64gcc1 libstdc++ in the terminal in order to acquire the dependencies required to run YHtWtG. Sorry for the confusion.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
If I launch the game from libtas without a movie, and start paused, then the game keeps working when I unpause. But when I start it with a movie, it closes after frame 1.
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.
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
feos wrote:
If I launch the game from libtas without a movie, and start paused, then the game keeps working when I unpause. But when I start it with a movie, it closes after frame 1.
The game must be run at least once by itself, without libTAS, in order for it to run in libTAS without closing on the second frame. Once you do that it should run correctly. I specified as much in the movie annotations. If that still doesn't work, then do you mind telling me what specific error you're getting in the log?
fsvgm777
She/Her
Player, Senior Publisher (221)
Joined: 5/28/2009
Posts: 1180
Location: Luxembourg
I, myself, can't get the game to run at all inside libTAS on my 32-bit Kubuntu VM. It works just fine outside of libTAS. Trying to invoke sudo apt-get install libstdc++ causes the terminal window to spit out a ton of errors about package conflicts. The rest were either already installed or were installing just fine (NB: I used libgcc1, not lib64gcc1, as I was already on 32-bit, not sure if that makes any difference). The error message in the terminal is just a non-descript "Got unknown message!!!". I should note that other games run just fine inside libTAS.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
Post subject: libTAS crash solution?
letcreate123
He/Him
Player (199)
Joined: 11/16/2012
Posts: 42
Location: Chile
Tried reproducing the issue and I found out it was caused by the game starting up in fullscreen. libTAS doesn't seem to handle attempting to put fullscreen into a window well with this game so it crashes almost as soon as it boots up. The solution I found is pretty simple; while on the title screen, go to Options > Video and set Windowing to Windowed. This should hopefully put the whole issue to rest once and for all. Apologies for the lack of foresight on my part.
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
All my problems were after I set it to windowed outside libTAS.
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.
fsvgm777
She/Her
Player, Senior Publisher (221)
Joined: 5/28/2009
Posts: 1180
Location: Luxembourg
feos wrote:
All my problems were after I set it to windowed outside libTAS.
Yeah, same here. It can't be because I'm on a Kubuntu 18.04 VM, can it? EDIT: So I tried running with gdb attached, and it revealed the following:
Thread 1 "TheGame_NFML" received signal SIGSEGV, Segmentation fault.
0xb78ca186 in XFilterEvent () from /usr/lib/i386-linux-gnu/libX11.so.6
I should point out I don't have that issue with any other games I run on libTAS.
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
Getting the same error on my Lubuntu 32-bit VM. I could run the game fine on current libTAS interim version.