Are You Ready for the End of the Flash Browser Plug-In in 2020?

Filed under: Web — Simon Walklate

The End is Nigh

It's been on the cards for a number of years now, with Adobe essentially giving up on getting the Flash plug-in onto mobile devices some time ago and embracing HTML5. In fact it seems like forever since we've created any Flash based content for the web. But now the deadline of the end of 2020 has been announced. After this date Flash content will cease to work in the web browser.

The major browser vendors are also following this same timeline, in phasing out access to Flash content. Even the ones that have incorporated Flash technology directly into their browsers (removing the need for a plug-in installation) are not exempt. So there will be no continued support for Flash beyond 2020 in Google Chrome either, despite there being no need for the Flash plugin-in there.

This really is the end of the road for web based Flash. No web based Flash content will work after the cut-off.

That gives you three short years to plan and execute the conversion of your Flash based content to HTML5. Either convert it, or lose it after Flash is gone.

What Content is Affected?

Short answer is anything on the web that requires the installation of the Adobe Flash plugin.

Any remaining Flash content you care about is likely to be anything you consider "evergreen". It'll still get enough traffic/use to justify it's existence and ultimately the time, effort and budget to convert and keep it. This could be:

  • Marketing content - Any web based multimedia content that helps drive traffic or get links/social shares. This could be anything from a simple interactive widget to a complex web based game.
  • Training/e-learning content - Web based multimedia content either for conducting training programmes as part of your business needs to be addressed.

Basically, any Flash content that is useful/entertaining to your users, that isn't time specific and still provides value to your business, should be prioritised. Especially if you have lots of content that you need to keep, starting to audit and planning for content update and replacement is essential now.

The End of Flash Games

This will also mean the end of an era in web games development. Any web based games built in Flash will need to be converted and replaced or taken down before the deadline.

This might not sound like a huge big deal, but it is. Most of the big games companies on Facebook are still to this day using Flash based versions of their games for desktop computer users. These will need to go through the potentially expensive and time consuming process of being converted to HTML5, or taken down.

This doesn't just apply to big games companies though. If you've had any Flash based games developed in the past now is the perfect time to start planning to get them converted. Building a brand new version using modern web standards also gives you a great opportunity for an update/redesign to raise the quality of any dated games.

A Great Opportunity to Finally Go Mobile Compatible

If you've been putting off the conversion process, now is a great time to think again. Converting Flash content to HTML5 will future-proof it for years to come and finally allow mobile users to access your content on their devices. This will further increase the reach and ultimately value of your content.

Budget and Time

Obviously, the more Flash content you want to keep, after the deadline, the more time and budget you're going to need. This is why you must start assessing and planning now. If you have lots of content to convert, it could be a monumental task. Don't put it off until 6 months before, because there may not be time then to get the work done. Also, if you start now, you've got three years to spread the cost over.

Does This Affect Adobe AIR?

There's been a fair amount of confusion over the name Flash in relation to the development tools and the web based deployment platform. Because of this Adobe even rebranded the tools from "Adobe Flash Pro" to "Adobe Animate" recently. The tools will continue to exist long after Flash is gone from the web. (In fact we still use Flash Pro tools to help with animation and visual asset creation for our HTML5 games).

The Adobe AIR platform for building mobile and desktop PC apps will still exist and be updated and supported by Adobe. You'll still essentially be able to use "Flash" technology to create stand-alone application builds for computers and mobile devices. No existing Adobe AIR based apps will be effected. It's just the web based component that will no longer exist.

Should I Stop Creating New Flash Content?

There's no easy answer to this. In general though (with a few exceptions), I would say you need to steer away from creating new Flash content for the Flash web player, if you haven't already.

There are some limited instances where Flash content may still make sense in the short term though. For instance if you're creating content with a relatively short shelf life (e.g. for a marketing campaign and needs to be accessible to older, HTML5 incompatible browsers on desktop computers only). These instances will be few and far between at this point though. So 9 times out of 10 you should use HTML5 for all new content going forward, in order to future-proof it.

What Now?

We'd highly recommended that you start thinking about and auditing any Flash content you may have ASAP. Prioritise your most valuable assets and start allocating budget to convert any critical Flash based content (that you know will definitely still be valuable to you in three years time).

Three years sounds like a long time, but it really isn't. Especially if you have lots of Flash content, the conversion process can be extremely time consuming. So start now.

Never Use Online Game Scores to Award Competition Prizes

Filed under: Branded Games — Simon Walklate

We get asked a lot by clients if we can incorporate a competition into a branded online game. This isn't a problem in itself and obviously many clients want to use a competition as a way of increasing interest. What is a problem however is running competitions where prizes are given based on the highest scores (or other game outcomes) and this is usually what they want to do. It doesn't help that clearly inexperienced developers are doing just that for their clients, so other people assume it's ok.

Only yesterday I discovered another Facebook game that included a competition based on players' scores. And as expected the scoreboard was full of scores that were impossible to attain in normal gameplay. This is the fundamental problem with doing this, players can cheat to win prizes and any experienced developer, quite frankly, should have known better.

I'm not going to go into too much of the technical side but I am going to explain the two main methods players use to cheat in order to win prizes.

It's unfortunately unavoidable, although there are some limited precautions we can take to help prevent cheating, if players are determined enough they will get around them. And it goes without saying that the more worthwhile you make it for them (the bigger and better the prizes they can win), the more likely you are to attract some serious hacking attempts. For this reason we always strongly recommend to our clients not to base in-game competitions on high scores.

Scoreboard Hacking

This is one of the most common method used to cheat, in order to win competition prizes. Global scoreboards have to be implemented by using a remote server-side script to send the score data to a data file or database.

If the player knows where this server side script resides (and it's fairly easy to find out by checking the calls from the browser) they can fake the act of sending a new high score. So they can effectively add whatever score they want to the scoreboard, without having to even play at all.

Another method involves changing the score as it's stored in memory, during runtime. There are freely available programs written specifically to do this. These types of hacks are generally how you end up with scoreboards full of impossibly high scores into tens or hundreds of millions.

There are limited methods to combat this. In the case of hacking the script call, verifying scores as they're submitted and discarding impossibly high ones is one solution. This won't stop people finding the limits of that range though and filling up the scoreboard with equal, highest possible scores in a attempt to win.

It's also possible to use something called a cryptographic hash to send the data. This adds a basic level of security to the data you send, which means in order to cheat you'd need to crack the code first.

To help combat memory hacks, it's also possible to apply some encryption to the score data in memory. These types of methods can make it much more difficult, but not impossible to hack and as I said before, make it worth their while and they will hack it.

It's also worth mentioning that this isn't something that's technology specific whether your online game is Flash, HTML5 or something else, the risk of cheating to win competition prizes applies to all web based technologies. However, HTML5 is potentially the easiest to hack because the code is viewable by anyone with a web browser.

Cheating on Timed Games by Altering Frame Rate

This will involve a bit of techy explanation, so I'll try to keep it as simple as possible.

Game timers can be implemented in one of two ways:

Tie It Into the Main Game Loop

This has the disadvantage of only having accuracy based on the frame rate. A game running at 30 frames per second (which is the frame rate we usually use) will be able to count the timer in steps of 1/30th second. This is usually fine (and preferable) for games where the timer just counts down a limited gameplay time, such as in a timed puzzle. Although this can cause it's own problems (which I won't go into here), the timer is not independent of frame rate. If the game slows down or speeds up, the timer slows down and speeds up with it.

Tie It Into the Computer Clock

This has the advantage of much greater accuracy, allowing timers accurate to thousandths of a second. If the player's score is directly tied to the timer, e.g. a racing game where the quickest time is the highest score, this is usually essential. Without this sort of accuracy, there's just not enough to separate the scores of players and you'd end up with too many players getting the exact same time. The problem with this though is the timer is independent of the frame rate, so regardless of whether the game runs at 30 frames per second or 60 frames per second the timer will run in the same "real" time.

This opens the opportunity to cheat to win prizes, if your competition is based on high scores. Programs are freely available that enable the player to change the frame rate of a game as they see fit. So, if for instance you have a timed race game, the player could potentially double the frame rate, which would make the race happen twice as fast, but the timer would still run the same as it would at the normal frame rate. This could allow the player to halve their time and get a much better score and was likely the exact method used to cheat on the Facebook competition I mentioned earlier.

Again verifying the times and throwing out impossibly fast ones before sending to the scoreboard is a partial solution, but not a particularly great one and certainly won't prevent cheating altogether. Another possible solution (which I won't go into too much) is using something called delta time in the main loop. This is used in lots of commercial games to get around variable frame rates (usually caused by hardware performance, or lack of it) but has a number of disadvantages for small scale retro/2D games.

The Solution

Obviously none of these hacking issues are too much of a problem if there aren't competition prizes at stake. With no incentive to "hack" to win a competition, players are far less likely to try and even if they do, there's no harm done. Plus, any good developer should be aware of these issues (although in practice it seems very few are) and take appropriate, limited security steps to make it harder to cheat, as we always do.

The problem comes when prizes are at stake. But this doesn't mean you have to ditch the idea of including a competition in your game altogether, there's a simple solution. Don't tie the awarding of prizes to scores achieved, or other game outcomes. Instead, run a free entry prize draw competition.

This gives you complete control over the awarding of competition prizes and removes the incentive to cheat, because the reward is only a chance to win a prize, not a guarantee they'll win. You can also help combat obvious cheating through your terms and conditions, enabling you to put a limit on number of entries per person and exclude entirely players who might hack to gain many entries.

Overall, it's a much safer solution and allows you to incorporate a competition in your game, without risking the whole thing being rendered null and void by casual hackers.