(Link to video)
Puffle Launch is the biggest minigame Club Penguin made; this version was released by itself on Disney LOL. This movie completes the 36 levels as fast as possible.

Game files

  • cp_pufflelaunch.swf - MD5: 1bfa8ce0761ad65f3682e51bef2a7f70
  • menus.swf - MD5: 29c1ce35198539866bb4de7e43d1b714
I downloaded all files that were hosted on the site but I'm not sure if the others are necessary:

Comments

I've been running Puffle Launch since 2019 as my main speed-game. PASRC got the ball rolling on TASing it last year. I was very keen to TAS the game but encountered some oddities with movement that I couldn't figure out, which put me off it for a while. Eventually I started TASing individual levels again and then put this together.
This game has an unlockable time trials mode, which makes it an obvious target for speedrunning. The challenge is to beat all levels in a combined best time of under 18 minutes, which is considered one of the most difficult stamps in Club Penguin. This TAS has an in-game time of 8 minutes 43 seconds. The sum of all unassisted records is 9:50, and the full-game unassisted run is 15:22.
PASRC initially TASed the first 18 levels, and then I made various improvements and finished off the other levels.

Movement

Early on I discovered that repeatedly tapping an arrow key, rather than holding it, gives very slightly better speed. This saves frames all over the place, and occasionally enables new techniques. The oddity that put me off TASing this for a long time was this, where I inexplicably saved 2 frames on a very short section which I couldn't replicate. I still don't understand the physics and movement in this game nearly as much as I'd like to. Still, the results are quite good.

Levels

In time trials mode, all times are rounded (9.46 becomes 9, 9.5 becomes 10). As such, several of the RTA times are upper bounds as the exact decimal isn't known. The encode is on a modded version that shows in-game time with decimals (syncs the same).
LevelRTATASDiff
1 4.33 4.33 0
2 4.21 4.21 0
3 9 8.96 0.04
4 12.46 12.08 0.38
5 4.46 4.38 0.08
6 10.46 10.42 0.04
7 8.46 8.29 0.17
8 8.33 8.29 0.04
9 9 8.92 0.08
10 22.88 22.29 0.59
11 9.88 9.71 0.17
12 29.46 25.5 3.96
13 8.38 8.33 0.05
14 10.46 10 0.46
15 6.5 6.46 0.04
16 9.46 8.79 0.67
17 7.5 7.42 0.08
18 16.38 15.71 0.67
19 54.46 48.25 6.21
20 21.46 20.54 0.92
21 21.96 20.63 1.33
22 17.46 16.58 0.88
23 13.46 12.29 1.17
24 31.46 21.21 10.25
25 3.75 3.71 0.04
26 5.42 5.25 0.17
27 6.21 6.17 0.04
28 11 10.92 0.08
29 6.75 6.75 0
30 12.88 12.67 0.21
31 10.33 10.25 0.08
32 10.42 10.38 0.04
33 22.46 20.54 1.92
34 27.46 22.92 4.54
35 13.17 13.13 0.04
36 116.46 78.13 38.33

Notable levels

  • 4: The first significant use of tapping out of the green cannon.
  • 5: This was the first level to see an improvement from tapping. It was stuck at 4.5 RTA for a very long time, and this was the key to a 4.
  • 10: The piano at the end of the level moves back and forth on a cycle and limits the possibility of any improvement, otherwise a 21 would definitely be possible.
  • 11: This uses a strategy that was found accidentally by Joshua Kanai. The triple bounce on the balloon is so precise that I was never able to replicate it in real time. It ultimately appears to only saves a few frames.
  • 12: The first boss level. The TAS can hit the crab repeatedly with no breaks.
  • 15: Extremely simple level, but 6.46 requires a level of mashing that hasn't been done in real time yet.
  • 19: Notoriously difficult level with a lot of blind bounces. The small time saves from hitting the edge of balloons adds up throughout for quite a large save.
  • 20: Tapping near the start saves around 2 seconds, as without it the anvil bounce would just barely miss the cannon.
  • 21: The path from the slingshot to the cannon can vary a lot and this seems to be the best one possible. I did make it to the cannon 1 frame faster, but the fan cycle was worse. The balloon bounces at the end are quite precise and save around half a second over RTA.
  • 22: Intentionally lost time towards the start because of the anvil cycles at the end. The precise anvil bounces in that short section save almost a second over RTA.
  • 23: Eventually found the cactus->balloon->cactus bounce to save around 0.7.
  • 24: Normally this level is completely unpredictable due to the spinning anvil. There's a slight difference between this version and the Club Penguin version in the starting position of the puffle.
  • 25-32 are quite unremarkable, couldn't find any significant improvements.
  • 33: Initially had a 21.29 with a clip through the gravity box. I eventually found this to be faster, but some other box clip could be faster still as it's hard to get one even in TAS.
  • 34: Lots of precise box jumps to save a lot of time over RTA. Quite a fun one.
  • 36: This has the most significant version difference with the plants in phase 1 of the boss fight. They should be surrounding the crab to make it harder to hit. This level definitely has some room for improvement, despite being the biggest time save in the run.

PASRC's comments

I started this TAS back in April 2022, but it's finally complete now. Halfway through making this TAS, Randomno discovered the mashing technique. This meant many of the stages I completed needed to be TASed again with this new technique. Fortunately, it was very easy to replace the input from a stage with a new version. There were no desyncs we had to worry about, including across different libTAS and ruffle versions. I'm very glad that Randomno was able to finish the TAS I started.

Conclusion

I've been up for many hours fiddling with encode and I'm not sure what to say at this point. Really happy to finish this. Puffle Launch 100% will be my "ultimate project". <insert joke about ruffle/puffle similarity here>

Info Teddy: Claiming for judging.
Info Teddy: Needs more info as outlined in my forum post.
Info Teddy: I have solved one issue but this still needs more info, refer to my second post.
Info Teddy: The issue was on my end, resuming judgment...
Info Teddy: Decent optimization. Accepting to Standard.

despoa: Processing... As for the other files from the game noted above, they're not required for the movie file to sync but they are required for the game to look correct. Otherwise, logos will be missing and text will have "undefined" placeholders instead.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14881
Location: 127.0.0.1
This topic is for the purpose of discussing #8360: Randomno & PASRC's Flash Puffle Launch in 09:39.71
stick
She/Her
Joined: 1/15/2022
Posts: 1
Location: aotearoa
Amazing work!
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
I am unsure how to obtain a copy of the correct version of the game. I found a website with the game (many search results are about the iOS/Android version of Puffle Launch, which is not what we want), and used browser tools to grab the SWF and related assets. The main game SWF matches the MD5 hash listed in the submission, however the menus.swf file does not, and unfortunately, that results in the movie being unable to sync. The Disney LOL version appears defunct (just redirects to the homepage) and the archived version on the Wayback Machine does not appear to have the necessary assets. All search results for Puffle Launch on archive.org return files for the mobile version of the game.
Joined: 1/9/2023
Posts: 13
Location: Quebec Province
Did you try on Bluemaxima's Flashpoint? They might have the right version in there.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
coolman wrote:
Did you try on Bluemaxima's Flashpoint? They might have the right version in there.
The only result for Puffle Launch links to a dead link and I'm not sure how to download it. Edit: Nevermind, was looking at the wrong link. Edit 2: I have the correct menus.swf now, but it still desyncs the same as before. It's clicking on the "Visit Club Penguin" button instead of "Start Game". Seems to be an issue related to mouse coordinates and window size that affects the entire movie even if I fix the first mouseclick.
Editor, Active player (391)
Joined: 2/11/2018
Posts: 186
I will happily give more info on finding the game files if it doesn't break the site rules.
Info Teddy wrote:
It's clicking on the "Visit Club Penguin" button instead of "Start Game". Seems to be an issue related to mouse coordinates and window size that affects the entire movie even if I fix the first mouseclick.
I don't understand this since they're on opposite sides of the screen. The game is 750x600 which is what I'm running it at. The first mouse coordinate is 550, 530. How does that click the left side of the screen? I have another version for 1500x1200 if that helps. I double checked the ruffle version and the file I uploaded and they're correct.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Randomno wrote:
I will happily give more info on finding the game files if it doesn't break the site rules.
How was the game presented originally? Was it an online embed or something else?
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, Active player (391)
Joined: 2/11/2018
Posts: 186
It was available on the Disney lol site for free. There's a domain check but it's not baked into the swf
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Sounds like linking to this game is fine 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.
Editor, Active player (391)
Joined: 2/11/2018
Posts: 186
The files are from here. I don't think any of the archived versions are different https://web.archive.org/web/*/http://a.dolimg.com/media/en-US/games/clp_spl_puz_pufflelaunch/*
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Randomno wrote:
I don't understand this since they're on opposite sides of the screen. The game is 750x600 which is what I'm running it at. The first mouse coordinate is 550, 530. How does that click the left side of the screen? I have another version for 1500x1200 if that helps. I double checked the ruffle version and the file I uploaded and they're correct.
The window for me opens in 640 x 480, not 750 x 600. Not sure why. I double-checked and the MD5 hashes of the SWF files are the same, and I'm using the same Ruffle nightly version specified in the submission.
Editor, Active player (391)
Joined: 2/11/2018
Posts: 186
Looking at the header in FFDEC they are 750x600. menus.swf is 760x480 but I don't think that matters. I guess use --width and --height to force it then. Also, I forgot but the swfs are still up for now: https://a.dolimg.com/media/en-US/games/clp_spl_puz_pufflelaunch/cp_pufflelaunch.swf
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Turns out it was my fault and I had the virtual screen resolution set to 640 x 480 (in my defense, I didn't think it would persist). If you have the screen resolution set this way, then --width and --height won't work anyway. Edit: The movie syncs fine but my dump has slightly noticeable audio lag compared to the temp encode provided. Not sure where it is coming from. My encode settings are:
  • Video codec: H264
  • Video bitrate (kbps): 4000
  • Audio codec: AAC (Advanced Audio Coding)
  • Audio bitrate (kbps): 128
  • ffmpeg options: -c:v libx264 -b:v 4000k -c:a aac -b:a 128k -crf 0
Is this something you just fixed with video editing?
Editor, Active player (391)
Joined: 2/11/2018
Posts: 186
My encode has audio shifted by -400ms. I'm not sure what the cause of the lag is. Edit: The audio lag seems be present when playing normally. I shifted it to be closer to the official Club Penguin version.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Randomno wrote:
My encode has audio shifted by -400ms. I'm not sure what the cause of the lag is. Edit: The audio lag seems be present when playing normally. I shifted it to be closer to the official Club Penguin version.
Makes sense. Speaking of which, the official Club Penguin version also has background music. Is there any way to get the standalone version playing music too?
Editor, Active player (391)
Joined: 2/11/2018
Posts: 186
I've been looking into that a fair bit. The code for the music calls functions from Club Penguin's shell, which isn't being used when running games on their own. I've tried replicating the shell functions inside the game SWF and tried asking people who know ActionScript better than me but nothing so far :( As a side note, I got the official Club Penguin version working on its own. I thought it was complicated but turns out I just had to change 1 variable. The Disney version is faster though (even though the resolution is wrong, the audio is broken... etc).
Editor, Active player (391)
Joined: 2/11/2018
Posts: 186
1080p 1200p (2*native) Also I would prefer if the audio was shifted by about -400ms, but that's not an emulation issue, it's just how the game is.
Editor, Publisher, Player (46)
Joined: 10/15/2021
Posts: 370
Randomno wrote:
1080p 1200p (2*native) Also I would prefer if the audio was shifted by about -400ms, but that's not an emulation issue, it's just how the game is.
Tested these files out. The first one works while the second one doesn't sync and never dumps for me as it always closes prematurely.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14881
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. ---- [5366] Flash Puffle Launch by Randomno & PASRC in 09:39.71