Flash Games: You’re saving them wrong

Seirade
BlueMaxima’s Flashpoint
7 min readOct 7, 2020

We’re just under 3 months away from Adobe Flash support being dropped like a hot potato, and a lot of people are scrambling to figure out how to save their favorite content so that it can be cherished for the foreseeable future.

Unfortunately, it’s not always quite as straightforward are you’re led to believe. Yes, Flash content comes in the form of SWF files, but there are many scenarios where that one file is not enough. It’s not as simple as saving a single MP3 for a song. It’s closer to having just a webpage’s HTML. If you forgot to save all of the Javascript (JS) files, stylesheets (CSS), as well as any images on the page, it would look horribly broken.

Luckily, BlueMaxima’s Flashpoint has solved just about every obstacle you may come across in its almost 3 years of operation. The TL;DR for this article is to just use that. However, for you wild lone wolves out there who don’t know what you’re up against, but still want to try anyway, I’ll describe a few obstacles you may encounter. I wrote about this on Reddit not too long ago, but I figured a standalone article that can be easily shared would be a much better use of time, especially as this becomes a more common question. If you see anyone asking how to save Flash content, feel free to point them here.

The first bit of advice you’ll see is that “all you need to do” is to save the SWF file and then grab a standalone Adobe Flash Projector. Keep in mind that those will probably be taken down at some point. In fact, back in June, they pulled the archived downloads for older versions (and some games will only work with older ones). Also, recent versions now come with some code which displays a warning after 2020. This discovery was made by one of our members setting their system clock forward and observing it. It’s remains to be seen whether or not this is a “time bomb” or “kill switch,” so you may want a version such as 32.0.0.142 or older, which doesn’t appear to have that… feature. This will work most of the time. It’s not bad advice, but as you’ll see, Flash content can be a little more tricky sometimes.

And no, you can’t just magically “convert” SWFs to another language such as HTML5. That’s not how it works. It’d be like asking to “convert” your lungs into gills when the world will be underwater tomorrow. In this analogy, emulation would be like wearing scuba gear. You’re not breathing underwater, you’re just doing what you did before in a different environment with some compromises, while achieving the same result (not drowning). This is why programmers have jobs! :)

Multi-Assets

In order to keep light on bandwidth (especially during the dial-up days), Flash content isn’t loaded all up-front. Sometimes, you’ll be met with a preloader SWF which then grabs the actual game SWF file. After that, the game itself could be split into several sub-SWF files. Usually, this would be done for things like different levels (like level1.swf, level2.swf, and so on). However, it won’t always be that predictable. Instead, it could be a list like: jungle.swf, underwater.swf, desert.swf, etc. Levels may not even be in SWF format, but maybe a text format (XML, JSON) or even loaded from a database, in the case of large games like Happy Wheels.

An example of externally loaded level data. If the file is missing or malformed, parts of the game begin to look broken.

Not only that, but heavier assets like sprites (graphics) and music/sound effects could be stored externally. Music was especially better to keep external, because when streamed, it won’t have to suffer from the SWF compression (albeit, losing some of that signature nostalgic charm of crappy audio quality). If all you have is the preloader SWF, you might think you have the full game. To be certain, try playing the game with your internet connection disabled and clear your cache. This is to ensure that it doesn’t actually fetch the other assets online. If your game suddenly breaks or something looks off, chances are that you’re missing a piece of it.

Sitelocks

Flash games were not immune to piracy or content theft. As a result, developers would often write sitelocks into their games. The way they worked is that before starting the game, some code would first check to see the URL that the game is being played on, such as ArmorGames.com. If it didn’t match, you would sometimes see a screen demanding that you play it at the proper location, revealing that whatever site you were on, like CoolFreeGames.com (I just made that up) shamelessly stole the game without permission and tried to make some ad revenue from all the visitors they attracted with that game. So then, what happens if a game is sitelocked to a dead site? Wouldn’t that make the game unplayable? Well, yes, without the proper workarounds.

The game is locked, and clicking on Play causes the “play now on Ninja Kiwi” badge to pop up.

In order to beat a sitelock, there are a couple of options. The first is to hack the game. This requires using a decompiler, such as JPEXS Free Flash Decompiler (FFDec). However, beware, as this can often corrupt the rest of the game’s code if you’re not careful. The much safer and preferable option is to do what Flashpoint does: Use a local web server and place the game’s files in a directory structure which mirrors the original location. So if a game was at https://example.com/puzzle/page3/game.swf, you’d make a folder called “example.com”, then make a folder inside of that one called “puzzle”, and so on, then place the SWF inside of the last folder. You’ll still need to redirect web traffic to that local server, and you can do this either by setting the system proxy settings or just use a browser like Basilisk (a Firefox fork which will continue to support Flash, made by the same developer behind Pale Moon) and set the proxy settings in the configuration options.

Authentication (Facebook)

Here’s where your options begin to run out. Some games require you to log into a service with an account, such as Facebook. These games are usually very tied into the system (Invite a friend! Share your score!) to the point that it’s basically impossible to play the game without it. It would take a talented and dedicated person to get them up and running again, as it would require tinkering with the game’s files in order to replicate all of that service’s functionality or remove it altogether. That way, rather than features allowing you to invite a friend, the game will attempt to do so, but that invite just gets sent into an empty void. Why? Remember, getting these games to work again means they have to be played on a digital deserted island. No Facebook = no friends to invite or no wall to share your scores onto, so those features can’t work by nature (unless you also create a Facebook replacement and get all your friends to use that). Much easier said than done!

This also means no account, meaning all of your progress is gone and you’d have to start from scratch. Unless you managed to note down everything you had (take plenty of pictures!). Hacking a game means you’d be in full control, so you could technically just give yourself everything you had before and then continue normally.

Due to these games being extra difficult to save, the average person’s best hope is that they were remade into an app or rewritten to something else such as HTML5, and that the developers give you an option to migrate all of your progress over. Otherwise, we’re going to be seeing a lot more announcements like the one recently made about FarmVille being shut down.

Online Games

These can be a mixed bag. What you may think of “online” games can actually be one of the above already mentioned scenarios or a combination. This section is specifically for Flash-based online multiplayer games. In order to save these games, a tremendous amount of work needs to go into reverse engineering the server. The server is what handles player-to-player communication, account management, even game logic such as cheat prevention. Sometimes, parts of these games can be played standalone, but other times you might not be as lucky. Fortunately, online games tend to be very popular, and with popular games comes dedicated fans. If a particular game was big enough, such as Club Penguin, chances are that there’s already an organized effort focusing on just that (see: CPPS Emulator, Auroris/Club Penguin Rewritten, Luna).

These are just four pitfalls that you may encounter when trying to save Flash games. Like I mentioned earlier, Flashpoint has already solved all of them where it can, so why reinvent the wheel? The project has many talented people willing to lend a hand, so come check out our Discord server!

--

--