Submission Text Full Submission Page
Qoosh is a Flash puzzle platformer game developed by Thomas Griffin, where you control a mad scientist's test subject that has warping ability.

Information

  • Emulator used: libTAS v1.4.8 + Ruffle 0.3.0
  • Option: --no-gui -g gl
  • SWF MD5: b01e4981b016a8536615c483d3187d72 (Newgrounds)
  • Applicable tags
    • Heavy glitch abuse
    • Uses intentional deaths
  • RTA WR: 7:43.786 by froline
  • Note: the ending doesn't work properly, as Qoosh (player character) is supposed to be quantumly deconstructed after the scientist finishes talking, but nothing happens. I suspect this is a Ruffle bug. The rest of the game behaves the same as how I remember playing it back in 2013, including glitches.

Basic Mechanism

Movement

Moving and falling has acceleration. Walls reset horizontal speed, and ceilings and grounds reset vertical speed.
Strangely, horizontal speed gets slow when moving away next to a wall. This can be first seen in 0:40 in the temp encode, where I left it in because it didn't lose time. But in many cases it's optimal to do the usual "jump off the cliff" trick on the second possible frame instead of the first.

Warping

Once eaten the warp candy, Qoosh can warp every 40 frames. Warping can also be used to switch places between objects (note that they cannot be pushed, except with a glitch). Warping has limited radius, except from the middle of chamber 12 to the near-end of chamber 13, where the radius is infinitely large.
Warping preserves the velocity. If Qoosh was on the ground prior to warping, it can warp and jump at the same time.

Turret

Turrets periodically fire bullets, but exactly when they start shooting seem to depend on when they entered the screen. This can be manipulated with mouse.
Qoosh can fling a bullet by warping to switch places with it. After that, the bullet moves in the opposite direction of where Qoosh is after warping.

Tricks & Glitches

OoB

You can click out-of-bounds to warp there if it's within the warp radius. In RTA, this is done by dragging from in-bounds to out-of-bounds. In libTAS we can just click it.

Pixel Gap Between Block and Anti-warp Area

Purple areas introduced in chamber 5 disable warping. You can't warp into, out of, or through those areas.
However, there is a 1-pixel gap between the boundary of a purple area and a block, so you can warp into the gap, which pushes you into the purple area due to collision handling.

Corner Collision

Colliding into a block or turret's corner moves it very slightly, which means they can be pushed without using the warp ability, albeit very slowly. Turrets are a bit easier to move this way.

Level-by-level Comments

Chamber 1

You can start warping as soon as eating the warp candy, but you can't move until the animation finishes.

Chamber 3

0:50 - The scientist kills you for no reason. This is unavoidable, so I die at the first pixel that triggers it which seems to minimize the respawn time.
1:00 - Here the scientist would kill you again for no reason, but this one is avoidable. The rough estimate of the trigger is marked red in the picture below:

Chamber 5

The first appearance of anti-warp area, but also the first instance of pixel gap warping, which finishes the level immediately.

Chamber 6

1:39 - Pixel gap again. I tried using corner collision to push the block, but it was slightly slower than the intended method.
There is a plot twist where the scientist says that the blob doesn't actually have a mother, but I went so fast that we don't get to hear it. There are actually a lot of skipped voice lines throughout the run.

Chamber 7

1:48 - OoB warping. Outside the level has no walls, so Qoosh just falls down.
2:00 - The way back up is filled with anti-warp area, so respawning is faster.
2:22 - You're supposed to use 3 switches with good timing, but with some TAS-only pixel shenanigans it can be done a little faster by doing... this. After that, warping back is slightly faster than dying and respawning.
2:29 - This area is actually accessible from the beginning, so it looks like we could've just warped the spike block and broken the switch. However, the scientist kills you if you try to go near that spike block, so that's actually impossible. Why he couldn't just put anti-warp areas around it is beyond me, though.

Chamber 8

2:40 - It's possible to cross the bridge, but there's nothing over there and you'd have to come back here manually.

Chamber 11

3:59 - Corner collision to push the topmost turret onto the spike. This glitch is usually not this fast. I tried to replicate this in 3:41 to push the right turret into the acid, but I wasn't able to make it faster than warping. I guess the ceiling made a difference somehow.

Chamber 12

4:14 - Mr. Smith accidentally disables the warp radius limiter (according to a voice line that we get to skip, again because I'm too fast). The intended gameplay is to warp to near the end of the screen, but actually you can warp anywhere by clicking out-of-bounds, as long as the line of sight doesn't go through anti-warp areas or lines.

Chamber 13

Another OoB super-warping. This one was difficult to figure out because warp-able space is very sparse and you don't get any feedback regarding "how close you were to warping" when you fail to warp. I had to extract the level data from the swf file and write a program to draw all the walls. I also had to double the mouse coordinates for some reason.
Near the end of this chamber, the scientist turns the limiter back on. This trigger gets skipped, but the next chamber still starts with limited radius regardless.

Chamber 14

"It's Qoover..." -- scientist, probably
5:35 - Entering this flashing red box is the end of the game, and in-game achievements related to game completion are also unlocked. Interestingly, the TAS happens to barely get the "Resourceful" achievement by finishing the game in 280 warps or less.
Then Qoosh is supposed to be quantumly deconstructed and then we would see the credits, but the game is bugged? This gets printed to console every frame:
1970-01-01T00:05:39.883333Z ERROR ruffle_core::avm2: Error dispatching event "timer": TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at screens::Game/update()
	at net.flashpunk::Engine/update()
	at net.flashpunk::Engine/onTimer()
	at flash.events::EventDispatcher/dispatchEventInternal()
	at flash.events::EventDispatcher/dispatchEvent()
	at MethodInfo-3597()
I suspect this is a Ruffle bug. I didn't know this would happen until I made the temp encode. This happens regardless of where I end up inside the red box, or when I enter it.
I also tried different versions of the game, but the Kongregate version doesn't even show the main menu, and the Armor Games version desyncs everywhere. Oh well.

Special Thanks

froline for RTA footage, which was a great reference for some speedrun strats. I didn't know about the pixel gap back in 2013.

nymx: Claiming for judging.
nymx: The game play here is superior over all human effoft that I have observed. There are some chambers that this TAS greatly excels over the WR and clearly demonstrates what we are looking for. Excellenbt job on this!
Accepting to "Standard".

McBobX: Processing...


TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 18112
Location: 127.0.0.1
This topic is for the purpose of discussing #10684: synabler's Flash Qoosh in 04:55.983
Sand
He/Him
Editor, Player (168)
Joined: 6/26/2018
Posts: 239
Wow! The movement is amazing.
nymx
He/Him
Editor, Judge, Expert player (3478)
Location: Under the Weather
Joined: 11/14/2014
Posts: 1133
Location: Under the Weather
Here are some comparison videos: Full Length Comparison: Link to video Chamber by Chamber Comparison: Link to video
I recently discovered that if you haven't reached a level of frustration with TASing any game, then you haven't done your due diligence. ---- SOYZA: Are you playing a game? NYMX: I'm not playing a game, I'm TASing. SOYZA: Oh...so its not a game...Its for real? ---- Anybody got a Quantum computer I can borrow for 20 minutes? Nevermind...eien's 64 core machine will do. :) ---- BOTing will be the end of all games. --NYMX

1791761259