Submission Text Full Submission Page
The World’s Hardest Game is a classic flash rage game, perhaps even the most well-known of its kind. It was first released in december 2007 on the developer’s own site snubbyland, and then in march 2008 on armorgames. The game mechanics are very straight-forward, you control the red square with arrow keys or wasd, and you have to manoeuver from a to b while collecting the yellow circles and avoiding the blue circles.

how game work

Despite having such simple mechanics, this game does have some speedtech, and also emulation inaccuracies. I will explain all of it in excruciating detail.

Hitboxes

There are two separate hitboxes for the player, one of them is just a square, which is used for colliding with coins and checkpoints (so anything yellow and green). The other hitbox, used for enemies and walls, is much more lenient. It consists of only five pixel-sized points, arranged in a plus-shape on the square sprite. All of the corners are effectively invincible, enabling shenanigans. Subsequent installments in the whg series do add four points on the corners, as a much better approximation of a square.
Envisioning the player as a plus sign makes a lot of the tas much easier to follow and understand.

Wall clip

Due to the player not having corners on its hitbox, moving around wall corners is very smooth. Both corners can overlap quite a bit, getting unintentionally ‘stuck’ on a wall is very hard, making for satisfying gameplay. This does lead to a funny little oversight; if you move diagonally into a wall at the corner, and keep going along the wall, one of the player’s points will be inside the wall. The wall attempts to push the player out, but this can be nullified by continuing to hold the direction opposite to the push. It’s a bit like taking the overlap at the corner and extending it to the rest of the wall.
Wall clips are widely applicable, although because of imprecise positions, not every wall clip is the same. For some walls it’s possible to “sink” a lot deeper into them than others, both normally and by clipping. For example, walls on the left or right can generally be clipped a bit further into than walls on the top or bottom.

Cornerboost

Continuing from a wall clip, what happens if you exit the wall on the other side? Well, the player starts to round the corner, and then another point enters the wall and gets pushed out. Since this push is in the same direction as one of the movement directions, it’s added instead of nullified, and the player moves a grand total of six pixels in one direction in one frame instead of the usual three, saving one whole frame in a bunch of places. Obviously not exactly the most groundbreaking tech, although sometimes these single framesaves can compound into entirely new routes becoming possible, saving seconds.

Clicking GO

Every fifth level is preceded with a wall of text giving helpful tips, which has to be advanced by clicking the big GO button at the bottom.
Now for a small bit of background, when coolmathgames hosted the game on their site, they made a few minor changes to the game such as removing the iconic L5 text (and later they also specifically requested the developer to make an HTML version of the game). One of these changes was the added functionality of using the spacebar to advance the GO screens. Since holding the spacebar ahead of time also works, this very quickly became the preferred version to speedrun, and to base every mod off of. Now, when this tas was being converted to libtas, the original version was used, so GO had to be clicked. And this eventually led us to realize that pressing/holding space actually ‘’cost’’ a frame this whole time (and we would’ve easily been able to tell just by looking at the code). This meant that every single tas we created up until this point was improvable by 6 frames, one for each GO. Multiple second barriers, deemed impossible to break, were suddenly shattered. Chaos reigned

Ruffle limitations

Yeah, so basically, there’s a bit more to talk about regarding this game, but it’s not entirely relevant for this tas specifically. Some of the more complex stuff is not currently possible to be implemented (which might be for the best?)

Hitboxes (cont’d)

Time to dive into the actual nitty gritty of flash collision detection. There are two different ways, a point to pixel check and a bounding box check. Coins only use the bounding box check, which means they effectively have a square hitbox. Enemies use both, they first perform a bounding box check to see if they should perform a (more intensive) p2p check. The player will only die if both checks pass on at least one of its five points. We don’t exactly know how flash works, but we suspect that collision detection is done before rendering a new frame. This poses a problem, because a point to pixel check relies on pixels, which are rendered, whereas a bounding box check (as well as the points on the player) use the actual position regardless of what’s rendered. In practice, this means the enemies are disjointed from their own bounding box, and not every pixel is used for collision detection. The more distance they move per frame, the smaller their hitbox is. Because the points on the player are so spread apart, it’s not too uncommon for an enemy to go directly through the player and miss all of the points, which does not lead to a death. This is commonly referred to as an enemy clip, and is one of the core exploits in this game’s speedrun.
If my hitbox explanation is not entirely clear, I have this handy infographic (thrown together in a few minutes)
Notice the “trail” at the back corners of the enemy. While the hitbox becomes more lenient at the front, it also becomes more restrictive at the back. This is much more egregious with rotating enemies, since their bounding box rotates with them and they need to be encased by another bigger box that always has the same orientation (and changes in size).
Ruffle does not emulate this particular quirk of flash, so the enemy hitboxes are always circles. This removes any possibility for clipping through enemies to save time, but it also introduces some new timesaves due to the lack of the trail.

Resolution

Another side effect of hit detection being based on rendering, is that it will in turn be affected by running the game on a different resolution. This is a lot more impactful than you’d think. The majority of levels have different times depending on what resolution you play on. Certain enemy clips become possible, certain walls allow for deeper clips, there’s quite a lot of variance, both minor and major. In some cases, the fastest known time of a level has only been performed on a single resolution, out of approximately 2125 possibilities that we’ve taken into consideration. Some of the bigger timesaves happen to be mutually exclusive, so the main tas that the community uses as a benchmark is a ‘sum of best’ of sorts, a “what if we allow changing the resolution during level transitions” kinda tas. RTA does not currently allow changing resolution during a run, and the optimal resolution used for speedruns has changed multiple times.
Changing resolution can also be taken to the extreme; when the game size gets too small, enemies and walls can no longer be rendered and lose their hitboxes, while coins and checkpoints still work fine. Using this to its full extent would save nearly two minutes in the run. To simplify things we’ve decided to make the default size of 550 by 400 pixels the cutoff point for “legal” resolutions, any size smaller than this is not allowed. Even still, some framesaves have been found that are exclusive to a resolution slightly smaller than default, and as such remain unimplemented.
On ruffle, changing the resolution does not appear to affect collision detection in any way. This massively reduces the routing options and makes optimization at a high level a lot easier. Some of the routes that happen to work on ruffle don’t work on every resolution in flash, most notably L12. There actually exist a bunch of resolutions where flash is slower than ruffle overall.

Ruffle vs Flash

Now that we’ve talked about the differences, time for some raw numbers.
Using the community standard timing that starts at clicking the second play game button, this tas on ruffle has a time of 5:01.633
The flash tas on the default 550 by 400 resolution would be 4:55.900, coincidentally on the lower end of possible times.
The fastest time for any single resolution is 4:54.833, using 603 by 438. The height of 438 is what matters here, the width could be increased arbitrarily (it just adds black bars).
The sum of best individual level tases, with all resolutions above default allowed, is 4:51.800
(and as a sidenote, the slowest resolution we’ve found has a time of 5:03.433)
Here are the original videos for the ruffle tas and the flash tases. Note that these were made with a specialized tas mod, which uses space for the go screens so the times are off by six frames.
And here’s a time comparison for all the levels in ruffle and in the flash sum of best.
LevelRuffle tasFlash tasDifference
13,9003,8330,067
23,8003,8000
33,3673,400-0,033
43,1333,167-0,033
520,86720,4000,467
611,80011,8000
77,7677,4330,333
810,4678,4002,067
99,5677,7331,833
105,8335,5670,267
1112,00012,033-0,033
1212,70012,733-0,033
131,8671,8670
144,0003,8670,133
159,2338,2670,967
167,8007,8000
1716,03316,0000,033
185,6005,5330,067
193,5333,5330
2010,60010,0330,567
216,4336,3330,100
2210,50010,3000,200
237,0677,0670
244,9674,9330,033
256,5676,5330,033
2616,20015,4670,733
2710,0679,6000,467
2810,2338,7331,500
298,0337,9670,067
3013,73313,7000,033
All301,633291,8009,833
Of course, there are many subtle differences not reflected in these times.
As you can see, ruffle saves one frame in four of the levels, due to the aforementioned lack of trail in the enemy hitbox. In L4, L11 and L12 the respective bottlenecks are reduced by one frame, and in L3 a cornerboost is made possible. Of course this timesave pales in comparison to what can be done just by clipping through some enemies, which saves a massive amount of time in for example L8 by making a completely different route possible, and in L28 by making the bottom half much more straight-forward. Though it’s also worth noting that some commonly occurring suboptimal flash level times in for example 5, 20 and 27 are tied with ruffle.
As for L9, oh I nearly forgot to mention-

Hidden coin

There exists a second, invisible, inaudible coin in level 9, inside of a wall. It is possible to collect with a wall clip, but only on certain resolutions. Because the level is coded to require exactly one coin to beat, it’s possible to skip the regular coin by getting the other one. Despite being out of the way of the normal route, collecting the hidden coin still saves a decent amount of time. The best time for L9 with the regular coin is 8.800, so that would still be a timesave of 0,767 over ruffle just from enemy clipping.

Afterword

Anyway, that just about sums up everything related and unrelated to this tas. I suspect whg2 might have a similar thing with ruffle-exclusive framesaves, although the flash tas for that game is much, much more insane. Especially with the added in-game option to change the quality, which only further affects the hitboxes.
As for potential improvements, we’re fairly certain that this tas doesn’t really have any of those under the current circumstances. Maybe someday ruffle will be able to emulate flash hitboxes correctly, and we can submit a new tas utilizing enemy clips. Only time will tell

Credits

Authors of this tas:
GGG502: pretty much everything
Raflikk: saved seven frames across level 21 and 29
Dado: converted inputs to libtas, clicked go
(Fraims: suggested that level 7 might be improvable, does not have any inputs)
Non-exhaustive list of people that have developed tas mods or tases for whg1 in flash:
Pzula, Steev0, Raflikk, GGG502, theme, Hsblue, Vowels, Fraims, Danicker
Special thanks:
Stephen Critoph, for creating this game
Fraims, for writing these submission notes

ikuyo: Claiming for judging.
feos: Fixed formatting.
ikuyo: Delayed while authors work on submission notes


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 16018
Location: 127.0.0.1
Joined: 10 days ago
Posts: 3
Location: europe
hi, world's hardest game series taser here, giving some further context and/or explanation for several years now, the whg community has used their own dedicated tas mods to make tases for these games in order to accurately replicate certain hitbox behavior that ruffle cant so this guy comes in and is like "ok but what about a REAL tas" so we link him our video of the tas we made by running the tas mod in ruffle (which he in turn linked in the submission notes) seeing as that tas already had multiple revisions and turned out fairly optimized, there wasn't really any time left to save, so he kinda just used that tas as a reference to tie it in libtas and put together this run in a few days he did save a total of six frames on the level transitions simply by clicking GO, because the whg community mainly uses a later version of the game where you can hold space to advance past the GO, which turns out to lose a frame each time. This is something we've been overlooking and as such clicking wasn't implemented in any tas mod now, we did ask GGG502 (author of the ruffle tas) if he was okay with this being submitted to tasvideos. He did give permission, but I get the impression he doesnt really care much about tasvideos, even though I kiiinda do. In the past I tried to bring up submitting a whg1 ruffle tas to tasvideos, but nothing really came of it cause I guess no one was interested in basically copying inputs to libtas. I even had a draft for submission notes to go into detail about all the small timesaves in this game, and the differences between flash and ruffle so while GGG is fine with this, I'm very conflicted, to me it feels like someone from outside the community taking credit for "our" work (it's not even my own work idk why I'm all worked up), even though he does give credit in the submission notes. With how quickly this run was put together and submitted, I find myself too indecisive and/or polite to say or do much about this, but I guess it was a push to finally make a tasvideos account. This is also kind of a weird situation that I haven't really seen in other submissions, so I'm kinda wondering what you people think, how would credit/attribution be handled here in a somewhat similar case, there's a whg2 tas on this site by automanager, who is also not part of the whg community. The difference there is that no one in the community had even attempted to make a whg2 tas on ruffle, only flash. Automanager's routes and inputs are almost entirely his own also, if this were accepted I'd suggest the obvious: make the branch name "no enemy clipping" just like that whg2 tas
Samsara
She/They
Site Admin, Expert player (2291)
Joined: 11/13/2006
Posts: 2839
Location: Northern California
Hey, thanks for bringing this to our attention. It's definitely given me a few thoughts about this submission.
Fraims wrote:
for several years now, the whg community has used their own dedicated tas mods to make tases for these games in order to accurately replicate certain hitbox behavior that ruffle cant so this guy comes in and is like "ok but what about a REAL tas"
Immediately, I'm appalled. "A real TAS". I'm so sorry. This is not how TASVideos thinks, and in turn it's not how anyone from this community should think.
so we link him our video of the tas we made by running the tas mod in ruffle (which he in turn linked in the submission notes) seeing as that tas already had multiple revisions and turned out fairly optimized, there wasn't really any time left to save, so he kinda just used that tas as a reference to tie it in libtas and put together this run in a few days
This submission is effectively overlooking years of work done on the game, then. Admittedly, my WHG knowledge is limited to Maximum's video from late 2022, but that just means there's two and a half more years of knowledge and work that had yet to be discovered and done from when that video came out. None of that knowledge made it here. That's such a shame.
he did save a total of six frames on the level transitions simply by clicking GO, because the whg community mainly uses a later version of the game where you can hold space to advance past the GO, which turns out to lose a frame each time. This is something we've been overlooking and as such clicking wasn't implemented in any tas mod
So sort of a cross between a version difference and an "emulation" difference, then. I'd hesitate to even call it an improvement since it's something your community couldn't even find due to the different TAS tool usage.
now, we did ask GGG502 (author of the ruffle tas) if he was okay with this being submitted to tasvideos. He did give permission, but I get the impression he doesnt really care much about tasvideos, even though I kiiinda do. In the past I tried to bring up submitting a whg1 ruffle tas to tasvideos, but nothing really came of it cause I guess no one was interested in basically copying inputs to libtas. I even had a draft for submission notes to go into detail about all the small timesaves in this game, and the differences between flash and ruffle
If you still have that draft, please share it! In an ideal world it would have been provided along with the submission, of course, but you weren't given that opportunity at the time...
so while GGG is fine with this, I'm very conflicted, to me it feels like someone from outside the community taking credit for "our" work (it's not even my own work idk why I'm all worked up), even though he does give credit in the submission notes.
I'd hesitate to even call that "credit", honestly. It feels like GGG's TAS is being completely dismissed in favor of that libTAS-specific 6 frame improvement. There's a condescending tone there that really rubs me the wrong way. There isn't even a thanks. ...If it's not already obvious, I completely agree with you here (except for the parentheses - you have every right to be worked up over a game you've contributed pretty heavily to over the years). There's a key difference between someone taking public knowledge and crafting the best TAS possible by hand, and someone specifically going to an outside community, asking for all of the work, and bringing it to us with their name slapped on it and nothing else but a few snide remarks.
With how quickly this run was put together and submitted, I find myself too indecisive and/or polite to say or do much about this, but I guess it was a push to finally make a tasvideos account. This is also kind of a weird situation that I haven't really seen in other submissions, so I'm kinda wondering what you people think, how would credit/attribution be handled here
One publication comes to mind for me immediately: [4585] PICO8 CELESTE Classic by FlyingPenguin223, RichConnerGMN, cominixo, ikuyo, Meep, Snoo23, gonengazit, Lord Snek, Akliant, Beeb, Warspyking & RoundUpGaming in 01:42.77 This is how we would have wanted this submission to be treated. Celeste's TAS community also uses their own TAS mods, which are currently unsupported on TASVideos (though we're working on it!), meaning that the Celeste submissions we've received have all had to be converted to libTAS's input file format. ikuyo was the one who spearheaded converting the Celeste Classic input to libTAS, and as it shows, everyone who worked on that run in some way was properly credited. The submission text was written by that community and contains all of the information relevant to the run and its creation. I'm starting to think we might need to have a discussion or two on the nature of runs that are produced by outside communities, since I feel our otherwise nebulous co-authorship "standards" are a lot harder to apply to them. The way we handle credit (i.e, "be reasonable", and even that's an unwritten rule) works for a majority of our submissions, but cases like Celeste Classic and now this prove that there are very clearly right and wrong ways to handle runs that are built upon by entire communities. We've had much more blatant actual plagiarism in the past, and at least this submission did the bare minimum to prevent it from being that, but I'd also say it didn't do the bare minimum to be acceptable in its current form. At the very least I feel GGG502 should be credited here for being the main TASer in the linked video. Further credit can and should be decided by the rest of the WHG community.
TASvideos' Third Strongest Site Admin 💙 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, Active player (472)
Joined: 2/11/2018
Posts: 253
Fraims wrote:
so this guy comes in and is like "ok but what about a REAL tas"
Is this what was actually said?
Post subject: Plagiarism
Player (122)
Joined: 7/2/2024
Posts: 2
Location: Serbia
I was curious about The World's Hardest Game TAS, and thought "Is there a TASVideos submission?" so I checked, and it turned out that there was only a submission if the 2nd game. I knew what I had to do, I wanted to make a submission for TASVideos so it can get published to TASVideosChannel. I asked them if perhaps they made a real TAS (when I say a real TAS, I refer to the movie file TASVideos uses) that was unpublished, got a reply to check pinned messages, turned out it was a TAS mod. I got to work, but I knew I had no knowledge of the game, tried my best until level 2, then DimRom sent me GGG502's ruffle TAS, and told me to compare to it and not the flash TASes since ruffle has inaccurate emulation compared to flash player. I essentially "copied" the rest of the levels, but made slight tweaks to make it at least a bit different. When I asked about the credits, they told me to link the original TAS video they made for ruffle using their TAS mod, I did link it, and I thought that it was enough, since I was the one who made the movie file, but after reading Fraims'es post about his mixed feelings about this submission, I felt guilty, since the community had spent years making the TAS tools and optimizing their TASes, and I, a completely random guy just came in their server and basically stole their work, but on an actual emulator instead of the modified sfw. I take full responsibility, and I am sorry for stealing the community's hard work. I am willing to make the things right, either by changing the description of the submission, adding more authors and putting me in the last place, or just taking this submission down completely. And once again, I would like to sincerely and deeply apologize to the WHG's comminity, for essentially plagiarizing their hard work and taking all the credit to myself, I realized it was wrong to make myself an only author, so I added original authors of the ruffle TAS, though I am yet to make more changes to this submission, to make things right. Not sure if I should add the TAS mod makers as authors or just in the submission description, I will discuss about the additional changes with the WHG community. Best regards. -Dado
Joined: 10 days ago
Posts: 3
Location: europe
Alright I believe we have gotten things sorted and this can remain as the submission, after a few more adjustments are made I will be working on proper submission notes now, idk how long that will take, so I guess for now I'll request to set this to Delayed I got GGG502 to create an account so the authorlist can be more accurate, it's a little bit clunky how that's the only way but I'm not sure if this 'edge case' scenario should warrant any site restructuring All in all a very awkward unique situation, probably not as big of a deal as I might have made it seem, but I'll leave that for the staff to judge
Senior Moderator
Joined: 8/4/2005
Posts: 5783
Location: Away
Fraims wrote:
Alright I believe we have gotten things sorted and this can remain as the submission, after a few more adjustments are made
Awesome, glad to hear that! The staff have been following and discussing this situation internally after your first post to ensure the contributors don't get treated unfairly, and this is more or less the optimal scenario we envisioned. This is indeed a unique situation for us as well, so hopefully it sets a good precedent for how it can be resolved if something like this occurs again with different actors involved. (Though hopefully it doesn't.) Please don't hesitate to contact the judge handling the submission (ikuyo) in case you need assistance or something goes sideways somehow. We're here to help.
Joined: 10 days ago
Posts: 3
Location: europe
well I finished much quicker than expected, so should be good to go now!

1743601234