I haven't gone through the games they have, but it makes sense to preserve ALL games for future generations. I'd even go so far as to offer games in an original variant; but also in modified variants, aka one being mostly focused on fixing bugs and doing modest upgrades (simplifying playability and SLIGHT improvements to the user interface), as well as slightly more aggressive upgrades, including UI, making them visually beautiful but retaining the spirit of the game. For instance, of all the simcities, the first one was IMO the best. The graphics lateron were much better of course, but playability wise I found the first one the most addictive; similar with colonization, first one was quite good. The last 3 releases had better graphics, but playability wise it felt like 100 steps back.
What I would love to see is that we retain old flash games too. HTML5 was promoted as "making flash obsolete", but they never fulfilled that promise. Many flash-games simply died and there was no replacement in HTML; similar with some java applet games. Or at the least I could not find a replacement (that's also a problem - with google search having become nearly useless, finding things is super-hard; and of course old websites tend to die, that is also a problem).
Just an aside, but I've recently taken up Age of Empires 2: Definitive Edition. To a large extent it's the same game I played as a kid. But with lots of quality-of-life improvements. Like better queuing of actions. But also modernized with better graphics, animations, matchmaking where the original servers of course are gone etc. But under the hood, it's the same engine and game, not just a reimplementation that's similar.
Great way of reviving a game. Because it's those small things that make it hard to go back to older games. Old graphics I can live with, but it often looks weird if made for crt. And the interface breaking on bigger screens etc is hard. But mainly it's often the nicer mechanics and QoL things one miss.
I think the interface breaking on newer screens is a key point - AOE2 definite edition looks great on a 4k screen now, but when I tried one of the other variants beforehand the UI didn't scale properly and so all the elements were tiny to the point of being unplayable without adjusting the resolution
I play lots of old games, but the thing I have the hardest time with is playing in 4:3 on a 16:9 monitor. I didn't6 know why... Maybe I need to try an actual 4:3 monitor and see how I feel.
God bless the Ruffle project, but it's so frustrating that they've covered almost everything in AS3 except the NetConnection class (and the .connect() call).
Lots of wonderful single player games were made in Flash, and it's awesome that there's a way to play them again. But almost all of my work was multiplayer or relied on amfphp or other Flash versions of XHR to draw in data for levels, multiplayer, music or graphics after my engine loads. I still have all the server code... but all we can resurrect still are games that are entirely self-contained. That's still alright but it relegates Flash to a museum.
Hi, one of Ruffle maintainers here. AFAIK, we do have most of NetConnection API implemented; but direct socket connections are just impossible in browsers. The games should (hopefully) work and connect when run via the desktop player. We also implemented socket emulation in the browser via WebSockets, so they should also start working there if you put a WebSockify proxy on your server (no need to touch the game server code).
Hi! You have done amazing work, and I'm ever grateful to your team for keeping AS3 alive!
I used sockets in some of my multiplayer games, but that's not where I ran into problems with Ruffle. Since those games only upgraded to sockets after an initial HTTPS connection, I haven't even gotten to the point of trying sockets yet. I mainly just used NetConnection.connect() for routine API calls, not to open a socket. AFAIK .connect() didn't open a socket, although I guess it had some two-way capabilities with Flash Media Server, but that's not how I used it. I just used it to initialize the NetConnection instance with the URI of a server endpoint that could receive AMF messages (usually translated on the backend with AMFPHP). I don't think it really left any sort of connection open. After that, you'd just make RESTful calls over that connection using netconnection.call(...args), and could send complex objects - even SQL result sets - back and forth without going through JSON or XML. But it was just a bunch of HTTP calls sending that data in Flash's own serialized format. You'd listen for NetStatusEvent or SecurityEvent to handle the results or errors. No sockets were involved. In conjunction with AMFPHP it was basically like a URLRequest without any structuring or destructuring needed to parse the results into AS3-friendly data types.
It would be amazing if only the RESTful kinds of NC connections and calls could work again through Ruffle, I think it might be all that's stopping my old games from running!
Also a Ruffle developer here, though less involved with the actual emulation and more with the JS for browser integration. I'll add to Adrian's response that instructions for setting up the websockify proxy (by the webmaster of the site) can be found here: https://github.com/ruffle-rs/ruffle/wiki/Frequently-Asked-Qu....
I assume this is because web API's don't allow such connections.
However with the source code and server code it seems like a perfect task to set an AI agent (IE. Please patch out these API's and replace them with websockets on both client and server, then recompile)
I sometimes watch (in horror) as my nephew uses his Dad's phone to play whatever shallow, glossy muck he finds in the play store. He spends as much time swatting ads, refusing to upgrade to the pro version and hitting 'back' to get out of the play store than playing the games. It's amazing to watch a 6 year old develop muscle memory on these things. I see him swat away an ad almost before I've even noticed that it wasn't part of the game. He has effectively learned to be an ad / upgrade swatting machine. That is the game. Because he has absolutely no "sticking power" with any game. It's the play store / game / ad version of doomscrolling.
I've realised that giving him a reduced hand-picked library of games, with no ads, no automatic prompts to try another game, might be a good idea. These flash games are easily as good as most of the junk I see him play anyway.
I don't mean to sound like the old fart that I am, but you keep describing games in terms of "junk" and "as good as [junk]": maybe instead of giving a bundle of ad-free junk, none of which actually captures his attention and all of which amounts to "doomscrolling," you might consider finding something that does get his attention and occupies it more usefully.
Swift Playgrounds was (is?) ad-free and teaches programming. There are music studio apps that let him compose his own music. Plenty of apps let kids create things actively instead of just playing games. There are also all sorts of non-electronic activities that could occupy his time more fruitfully, but I'll skip over that.
I really like flashpoint but I wish there was a plugin for curation / recommendation. I have an index of games in my head from my childhood and so does my SO. Together we can play the games we know, but have little ability to discriminate between trash and gem. There are simply too many to reasonably pick at random. The old flash sites offered some curation.
I'm feel old.. My library of childhood games in my head are from the 80s, for the Spectrum. Dizzy, Jet Set Willy, Operation Wolf, R-Type, and original movie/game conversations for Robocop, Batman etc.
What's odd is the apparent chasm between those games and the earliest flash games, but really it's just a few years. That's just a trick of the mind. When you're a kid, turning into a young adult, a few short years feel like a lifetime. Man, it speeds up after that...
What an amazing feeling to see my flash animations I made when I was 13 on this site. Great project! What a unique era that time on the internet was. Can hardly imagine what my life would be today had it not been for Flash.
I never liked the idea of running Flash inside the web browser, but a single file .swf game format is almost as good as any ROM game dump.
Some games didn't mind running locally from an .swf file, but some others had a "URL protection", presumably to prevent
people from embedding their flash games at other websites, and they didn't make an exception for localhost.
Long time ago I've fixed hundreds of such flash games using RABCDAsm and made them work in standalone Flash Player.
Took a brief look at Flashpoint Archive, it seems their way to fix URL check is to spin up a web server to present an address the game expects.
As a bit of background, flash games were often sponsored. The bigger websites would pay hundreds to thousands of dollars to put their (clickable) logo in the beginning of a game, and sometimes would also have either timed or permanent exclusivity to their website.
Is there a standard patch format for this use case, where you could keep the original files and have a second file that patches them at load time to make them runnable?
A shame that they require a special software download. Do we not have any web-based Flash renderers yet? Seems like WASM should be able to do anything.
I thought the same. But it is necessary for the vast majority of games. It is not just an emulator for the .swf (and other formats) content you need, you often need bespoke proxy servers and server emulators to bypass some of the old DRM.
What I would love to see is that we retain old flash games too. HTML5 was promoted as "making flash obsolete", but they never fulfilled that promise. Many flash-games simply died and there was no replacement in HTML; similar with some java applet games. Or at the least I could not find a replacement (that's also a problem - with google search having become nearly useless, finding things is super-hard; and of course old websites tend to die, that is also a problem).
Great way of reviving a game. Because it's those small things that make it hard to go back to older games. Old graphics I can live with, but it often looks weird if made for crt. And the interface breaking on bigger screens etc is hard. But mainly it's often the nicer mechanics and QoL things one miss.
Deleted Comment
Lots of wonderful single player games were made in Flash, and it's awesome that there's a way to play them again. But almost all of my work was multiplayer or relied on amfphp or other Flash versions of XHR to draw in data for levels, multiplayer, music or graphics after my engine loads. I still have all the server code... but all we can resurrect still are games that are entirely self-contained. That's still alright but it relegates Flash to a museum.
I used sockets in some of my multiplayer games, but that's not where I ran into problems with Ruffle. Since those games only upgraded to sockets after an initial HTTPS connection, I haven't even gotten to the point of trying sockets yet. I mainly just used NetConnection.connect() for routine API calls, not to open a socket. AFAIK .connect() didn't open a socket, although I guess it had some two-way capabilities with Flash Media Server, but that's not how I used it. I just used it to initialize the NetConnection instance with the URI of a server endpoint that could receive AMF messages (usually translated on the backend with AMFPHP). I don't think it really left any sort of connection open. After that, you'd just make RESTful calls over that connection using netconnection.call(...args), and could send complex objects - even SQL result sets - back and forth without going through JSON or XML. But it was just a bunch of HTTP calls sending that data in Flash's own serialized format. You'd listen for NetStatusEvent or SecurityEvent to handle the results or errors. No sockets were involved. In conjunction with AMFPHP it was basically like a URLRequest without any structuring or destructuring needed to parse the results into AS3-friendly data types.
It would be amazing if only the RESTful kinds of NC connections and calls could work again through Ruffle, I think it might be all that's stopping my old games from running!
0: https://flashpointproject.github.io/flashpoint-database/sear...
However with the source code and server code it seems like a perfect task to set an AI agent (IE. Please patch out these API's and replace them with websockets on both client and server, then recompile)
0: https://flashpointproject.github.io/flashpoint-database/sear...
https://flashpointarchive.org/datahub/Curation_Tutorial
I've realised that giving him a reduced hand-picked library of games, with no ads, no automatic prompts to try another game, might be a good idea. These flash games are easily as good as most of the junk I see him play anyway.
Swift Playgrounds was (is?) ad-free and teaches programming. There are music studio apps that let him compose his own music. Plenty of apps let kids create things actively instead of just playing games. There are also all sorts of non-electronic activities that could occupy his time more fruitfully, but I'll skip over that.
And that works until they have 1 conversation with other kids, in school or whatever.
But, the kid wants to play games, not build something.
You can get entertained by both, but doing only one of those things is boring.
What's odd is the apparent chasm between those games and the earliest flash games, but really it's just a few years. That's just a trick of the mind. When you're a kid, turning into a young adult, a few short years feel like a lifetime. Man, it speeds up after that...
Some games didn't mind running locally from an .swf file, but some others had a "URL protection", presumably to prevent people from embedding their flash games at other websites, and they didn't make an exception for localhost.
Long time ago I've fixed hundreds of such flash games using RABCDAsm and made them work in standalone Flash Player.
Took a brief look at Flashpoint Archive, it seems their way to fix URL check is to spin up a web server to present an address the game expects.
https://flashpointproject.github.io/flashpoint-database/sear...
Or you can play it here too https://archive.org/details/homerunderby_en
iirc support is generally good, but some versions of flash/actionscript have issues (at least last time I checked).