Just how good is Flash? If you've been following its updates you may know that starting with version 11.0 it can work with the graphics card and from 11.4 it supports multi-threading (11.5 is the current one). Here's a fine example of a GPU game.
But you can't really see anyone using these features, at least not on Newgrounds. If you wanted to make the best browser game ever, how good would it be? Here's my guess:
Or games from ~2006, that sort of thing.
So why doesn't every developer suddenly go and use these features? Well, they're not really easy to implement, that's one thing, but there's another problem: Compatibility.
Sometimes it just does not start. Really. It's not a mistake on the programmer's part, in fact there's one single function to use: Stage3D.requestContext3D(). If it returns a Context3D in render mode "software", you're pretty much fucked. A processor can't render complicated 3D scenes at faster rate than 2-3 fps. How do you tell the viewer? Let's be honest here, the average attention span of people on the internet is around 3 seconds. I've tried. What happens here is that once you know the GPU rendering is in fact not GPU rendering, you can only show a "sorry, you can't play this game" dialog box. Or ask the player to refresh the page. Which may or may not help, as software rendering is a result of either bad luck or GPU incompatibility.
There are also different GPU profiles in Flash. Baseline, baseline_constrained and baseline_extended (present in 11.6 beta). Again, if you wanted it to have the best graphics ever, you would immediatelly jump upon the baseline_extended profile as it comes with lots of new texture types, multiple target rendering and other cool stuff that separates good-looking games from super-realistic-looking games. And guess what, THIS. If you chose the normal profile over the constrained profile, you make the game unplayable for 1/4 of the audience. I wonder how low is the percentage for the extended profile.
Next thing: Multi-threading. It's 2013, so let's assume everyone has at least dual-core processor, people who do care about performance have bought a quad-core. This means that building the game in a concurrent way increases the amount of code processed by 100%-300%. Now that's a lot, knowing how hard it is to fit all the code into a ~33ms cycle this kind of boost is awesome. But if a game is for everyone, it must run even on the lowest spec hardware. That is, one where multi-threading does not work.
Standalone Flash Player does support multi-threading. So does Adobe AIR and installed programs built in AIR. Mobile devices do not. Firefox and IE do, Chrome does not.
You can change game's graphics, sure. Model complexity, texture quality, shaders, post-processing effect etc. But how do you scale its core functions? Controls, updating health/mana/etc, A.I., physics. You can't. And if it does work on a single-core, what are going to do with the additional processing power anyway?
One of many benefits of using Flash for developing games has always been its compatibility. You could build a demo for Newgrounds and sell the game for both desktop AND mobile devices, because it runs everywhere. Mobile devices do not allow multi-threading in Flash(yet), so even though there are quad-core 1.5 GHz beasts like HTC One X, the power is not really accessible for Flash developers. Okay then, now we only want to make the game run on desktop. There should be no problem with AIR, so let's check the browsers. CHROME! The best browser ever and it's the only one causing problems. In fact there are two Flash Players in Google Chrome, just go to "chrome://plugins/". They are a few minor versions apart. The older can not run ActionScript Workers, the newer one can. I hope this changes with 11.6. The newer one is disabled by default... really!?
If you went for the 'best case scenario', Flash is an incredibly powerful platform that can run far, far better games than those we see now. But they would not work for a not-so-small percentage of people and a large part of the audience would have to refresh the page, manually update Flash Player, maybe check their drivers etc in order to run it. And this is the internet, everything is supposed to work by clicking one button. Do you want to see incredible games available for everyone to play? Well they won't come through the Newgrounds portal, as they would get a score of 0 by 1/3 of viewers. Maybe if we changed the mindset, maybe if somehow people KNEW the game is GOOD and actually put out some EFFORT to play it instead of the "entertain me, you've got 15 seconds or zero". I don't know, I guess I'm talking about a permanent frontpage feature like Madness: Project Nexus or something.
The reason I wrote this all is obvious - I'm trying to make such game, but my experiences with presenting projects using these technologies are quite bitter, so I don't know whether I should keep on trying to make a Flash game revolution or just say goodbye to y'all and switch to C++.
Thanks for reading, feedback is appreciated.