You Have to Win the Game is a freeware video game made by J. Kyle Pittman and released by his company Minor Key Games. This game features an aesthetic reminiscent of computer games from the 1980s, multiple campaigns, and has the player collect upgrades as they explore the world in order to make progress. This TAS aims to beat the game's original campaign in record time.

Game objectives

  • Emulator used: libTAS 1.3.5
  • Aims for fastest time
  • Uses death to save time
  • Genre: Platform
  • Genre: Adventure

Comments

This is a resubmission of my cancelled submission that I'd originally done using a libTAS interim build, but didn't work on the latest release build at the time. Since then, libTAS has received a release update which implements the changes in the interim builds that allow the game to properly in libTAS. You may want to take a look at the old submission for reference on the techniques employed, since this movie is mostly the same. However there are various improvements I've implemented that I will describe in the sections below (side note: this movie uses the default player character instead of the cat as they share the same hitbox).
Edit: I forgot to mention in the movie annotations that the Steam version of the game should work as well, but it will require copying the game's libsteam_api.so file to /usr/lib32 in order to run outside of the Steam launcher. libTAS will throw a checksum mismatch error but will play the movie just fine anyway.

Improvements from cancelled submission

Hollow King skip

The intended way to get the Cerulean Aura is to drop down in the Covert Operators room, then get to the Hollow King room, wait for the platform and jump to the Cerulean Area room. However, by jumping at the very last possible frame of coyote time after walking off the ledge, it's possible to just barely make it to the other side and directly reach the Cerulean Aura room, skipping the entire Hollow King room. This is not only frame perfect, but also pixel perfect, requiring a very specific X position. This is why I briefly hug one of the steps on the stairs, in order to set my X position for coyote time just right. This results in a 766 frame improvement overall, or over 12 seconds.

Password room

I saved over 10 frames on the password room through cleaner walljumping overall.

Sync friendliness

I felt that the previous submission desynced far too often to the point where reliably playing back the movie was a nightmare, so I had to sacrifice a few frames in order to make the movie playback more reliable. In the Don't Get Snippy With Me room, I stop for two frames, this is to avoid the potential for desyncs on the first crab. This actually resulted in another frame loss later on due to a worse subpixel value. In The Crab Cake Is a Lie, I stop for a frame before jumping on the crab platform and I slightly changed my movement around the crab. In the Hardcore Prawn room, I stop for a frame after landing on the ground before jumping again in order to avoid another desync on one of the bullets.

Screenshot suggestion

Dire Crab (5187)

feos: Let's resume judging this.
feos: Updating the movie with proper annotations.
feos: Not much to say about this movie, the route is the same as in the real-time record, just more optimal and with one extra shortcut. Gameplay is rather simplistic and there's not a lot of room to be overly creative. This, together with the lack of music and incredibly annoying constant jumping sound, caused me to find this movie very boring. However the audience largely disagrees, especially in the previous submission thread. Probably all those people completely disappear when the movie is published, and all it gets is a bunch of 3's, bu maybe I'm just too strict. Either way this movie is vaultable, so we can have it in Moons for now. Accepting.
Dacicus: Processing...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15582
Location: 127.0.0.1
This topic is for the purpose of discussing #6564: letcreate123's Linux You Have to Win the Game in 04:46.58
EZGames69
He/They
Publisher, Reviewer, Expert player (4460)
Joined: 5/29/2017
Posts: 2762
ngl, when I saw the thumbnail for your temp encode, I thought you were recording your tas with your phone camera. (yes vote)
[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
Post subject: Re: #6564: letcreate123's Linux You Have to Win the Game in 04:46.58
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Either way: nice run, and 3:54 would be nice screenshot.
g0goTBC
He/Him
Experienced player (752)
Joined: 6/11/2018
Posts: 110
Just like for the first time, it's a yes from me
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 (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Still crashes after frame 1, with libTAS 1.3.5 i386, on 64bit Ubuntu.
Attempt 1: Connected.
[libTAS f:0] Thread 1250 (main) OpenGL vendor: VMware, Inc.
[libTAS f:0] Thread 1250 (main) OpenGL renderer: llvmpipe (LLVM 8.0, 256 bits)
[libTAS f:1] Thread 1250 (main) ERROR: Could not import symbol swr_alloc
Got unknown message!!!
Made it run by going to /usr/lib/i386-linux-gnu and executing
Language: shell

sudo ln -s libswresample.so.2 libswresample.so
Getting this spam though:
Language: shell

[libTAS f:1] Thread 1356 (main) ERROR: Could not import symbol av_opt_set_int [libTAS f:1] Thread 1356 (main) ERROR: Could not import symbol av_opt_set_sample_fmt
I'm getting this error when trying to dump a video:
Language: shell

Error while decoding stream #0:1: Invalid argument [rawvideo @ 0x5555557de100] Invalid buffer size, packet size 1224898 < expected frame_size 1228800 Error while decoding stream #0:0: Invalid argument Finishing stream 0:0 without any data written to it.
I used these game settings to make it look bearable too (doesn't affect the dumping error): https://i.imgur.com/58czpho.png For direct manips, the game folder is in /home/you/.local/share/Minor Key Games/You Have to Win 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.
fsvgm777
She/Her
Senior Publisher, Player (226)
Joined: 5/28/2009
Posts: 1213
Location: Luxembourg
feos wrote:
Getting this spam though:
Language: shell

[libTAS f:1] Thread 1356 (main) ERROR: Could not import symbol av_opt_set_int [libTAS f:1] Thread 1356 (main) ERROR: Could not import symbol av_opt_set_sample_fmt
I'm getting this error when trying to dump a video:
Language: shell

Error while decoding stream #0:1: Invalid argument [rawvideo @ 0x5555557de100] Invalid buffer size, packet size 1224898 < expected frame_size 1228800 Error while decoding stream #0:0: Invalid argument Finishing stream 0:0 without any data written to it.
That can be fixed by simply running the following from /usr/lib/i386-linux-gnu (suggested by keylie on Discord, confirmed to work):
Language: shell

sudo ln -s libavutil.so.55 libavutil.so
That also fixes the two errors that popped up every frame.
Steam Community page - Bluesky profile Oh, I'm just a concerned observer.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
This should be added to movie annotations then.
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 (210)
Joined: 11/16/2012
Posts: 42
Location: Chile
fsvgm777 wrote:
That can be fixed by simply running the following from /usr/lib/i386-linux-gnu (suggested by keylie on Discord, confirmed to work):
Language: shell

sudo ln -s libavutil.so.55 libavutil.so
That also fixes the two errors that popped up every frame.
Thanks. I never ran into this issue when testing my TAS on my native (non-VM) Linux Mint environment, so I never knew it was a thing, but I tested this on my Kubuntu Virtualbox VM on Windows, ran into the same error as feos, then did as fsvgm777 suggested and the TAS played properly from that point on. I will post the movie file with updated annotations shortly. EDIT: Here it is. EDIT 2: Link that actually works.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I get "Downloading: TheGame_NFML.ltm" that never gives me the actual file. Use this instead http://tasvideos.org/userfiles/my#uploadfile
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.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Dump: if anyone wants to publish this: https://yadi.sk/d/G5QgpwIOlKPUKA
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.
Editor, Expert player (2073)
Joined: 6/15/2005
Posts: 3282
Pretty fun and short speed game. I tried it out for myself and even got a couple deathless runs, though nowhere near RTA speed. You managed to work out the desync problems, which is cool (but why are there even desync problems in the first place? I thought libTAS was invented to play back computer game TASes in a deterministic manner). Certainly I wouldn't have the patience to stick around if desyncs were going to be a problem.
EZGames69 wrote:
ngl, when I saw the thumbnail for your temp encode, I thought you were recording your tas with your phone camera.
Same here! I wonder what the average time was so far for the viewer to figure this out.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15582
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. ---- [4087] Linux You Have to Win the Game by letcreate123 in 04:46.58
Joined: 11/22/2004
Posts: 1468
Location: Rotterdam, The Netherlands
Hi everyone. I have a question about the encode. I noticed that the pixels aren't all the same size—I think they've been point upscaled by a float value rather than an integer value. So some lines are 3 physical pixels in size, and others 2. Is this intended? Judging by the frequency of the larger pixels (one every two lines) it seems the game is 320x180 (16:9) and was point upscaled to 320x240. I get that this is designed to be displayed at 4:3 since it's designed as a late 80s game (although I'm sure the 320x180 size was also intentional to be able to nicely fill today's TVs and monitors) but wouldn't it be preferable to physically upscale it to 2560x1440 and then down to the final dimensions? It's been a long time since I encoded anything for this site, so I apologize for barging in and asking this question. :) I'm just confused because back then it was considered important to always keep the pixels square physically and use meta-info to force it to a specific aspect ratio if that was desirable.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
The game renders a 640x480 screen, and its weird pixel sizes seem to be intended.
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.
Joined: 11/22/2004
Posts: 1468
Location: Rotterdam, The Netherlands
I don't think that's the case. When you look at official screenshots using the CRT emulation mode, you can tell it doesn't have different sized pixels. It's visible even without zooming in. Besides, that would be an extremely weird creative decision anyway. No game from the 80s ever had anything like this. The game seems to simply set a convenient, compatible resolution and then scales to that resolution. 640x480 is a common and compatible resolution, but 640x400 or even 640x360 are not. This also happens in the browser version. Setting the canvas to 320x200 causes the game to have square pixels. Anything else that isn't a multiple of that and the pixels are not square. If you set it to a high resolution 4:3 size, the pixels naturally look much more even. Just to clarify, I'm not saying someone has to go and immediately redo this encode. But it seems clear to me that the game was meant to be rendered as square pixels, then scaled to 4:3.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
If you get the linux release and configure it to show all square pixels without any filters, I'll agree.
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.