Why we still use Flash™

Flash is said to be dead for a long time now. But we are still using it everyday for a lot of different things. This post will try to explain why with simple rational/objective points. I am not a dumb fanboy but I am tired to read so much crap about it. I run a small studio that makes 2D games. We have been using Flash since 1998. Using the same tool (or its evolutions) for 16 years is exceptional.

Flash is still widely used for many different things

• Facebook games: all (?) the top Facebook games played on computers are still using Flash (Zynga seems to try a lot of different alternative solutions, not really what a small team can do… Time spent not working on gameplays anyways…).• Cartoons: lots of animated series or films are made with Flash. I know many more as we have done many games based on Flash cartoons.• Pro/business apps: salesmen apps, display kiosks, training, educational…• Museums: we did one “game maker” app for a games expo (using Flash, well AIR, which is an app made with Flash). When the man in charge of the very large French Science Museum took me for a tour in all the expos I did ask everytime what tool was used for all the apps. The answer was “AIR” 90% of the time.• Console games UIs: more than 1,000 AAA titles licensed Scaleform which uses Flash files.• Some PC/Steam games: a list was made recently.• Mobile games: lots of games are made with AIR, even a recent one by Ubisoft (no link/ad ^-^).

These are facts. AIR apps have been installed 1 billion times in the last year (version 3.8 was out in Sept 2013). Why so many people still rely on Flash? It seems to just work ^-^. It has all the common features you would expect from a middleware (great consistency accross platforms, great community, extendability with ANEs, great updates, great support). After using it for a long time and having done some native to AIR mobile apps ports I even have discovered some core exclusive features I haven’t found in any other tool.

Flash/AIR exclusive features

• vector graphics: with so many screen resolutions, having assets that are independant of screen size/resolution is key. In our latest game, all the graphics + animations assets for 30 minigames weight 8MB (average of 300KB per game including some bitmaps). Now that the iPhone 6 is out with 2 new higher resolutions we don’t have to do anything special other than update the AIR middleware and compile to upscale our graphics to the new resolutions.

• runtime raterization: vector graphics are great for scalability and small file sizes but are more complex to render on screens and thus slower to compute. Bad for 60fps games. That’s why we rasterize all the vector assets at the current screen resolution (from 320x480 to 2208x1242 or any 4k value) at runtime on the device. It’s fast to process (even on a mobile) and then the games use regular bitmaps that are much faster to move on screen. We have our own code, similar to DMT for example.

• text engine: our latest game is available in 11 languages including Japanese, Chinese, Korean, Russian and Turkish. There is not a single pre-rendered text, not even the translated game logo. Everything uses device fonts (good for file size too) plus some code for filters etc. Adding any language with any alphabet can be done just with an external XML file. Recently we also used the TLF feature, allowing right to left text and support for nice font features.

• package of iOS apps from a Windows PC: it’s not very well known but you can package an iOS app (debug, ad-hoc, release) completely from a Windows PC. I have always been a Mac user but the rest of the team is on PCs. No need to have one Mac for every PC just to finish the compilation in Xcode.

• AIR is 100% free for PC, Mac, Linux (AIR 2.6), iOS, Android, Ouya, Oculus Rift, Google Glasses, a few set top boxes (TiVo) etc… No Windows Phone 8 (but runs on Windows 8 tablets). And let’s not forget Flash also allows to publish on the web too! No mobile web but this might change soon (see below).

• IDEs: Flash Pro (to draw/animate vector and non vector graphics/UIs) is not free but the great code IDE FlashDevelop is 100% free.

3 recent other uses of Flash™

• App Store images: when you release an iOS app you have to upload 5 images x 5 resolutions x as many languages (11 for us so we had to make 275 images)! We made an AIR app that outputs all the images. See the result in Japanese, Chinese, Korean, Russian etc...

• Trailer: we did the trailer in Flash and used the video export feature.

• Animated minisite with mobile compatibility: we converted some animations from the game with the great Google Swiffy tool and voilà!

A few words about the future (thanks for asking)

• Updates/features: we think theupdates rhythm is great. Regarding the features my opinion is that we could keep using the current versions for a long time (there are even still some hidden gems in the features). What is key is the support for iOS or Android updates and the updates for these are on time everytime. Regarding the web, Google Swiffy or Mozilla Shumway (read this and this also) are already very interesting. Logically they should add WebGL rendering soon.

• Performances: we do simple 2D arcade/casual/kids games. We very rarely hit a performance bottleneck in Flash/AIR, even on mobile (it doesn’t mean we don’t do optimizations to reach 60fps). We use the simple renderMode GPU (regular Flash Display List). We rasterize for maximum performance but the GPU render mode is very good even for 100% vector graphics games. Our test devices are the iPad 1 and 2, iPod 4th and 5th generation and some Android devices too (including a $60 one). Whenever I try anything on a more recent device I can see it’s so incredibly powerful I am not worried about performances at all. And if we ever needed more performances we could use Genome2D.

To conclude Flash and AIR have been our tools of choice for 16 years and we are really happy to keep using these tools everyday for lots of different purposes. Our philosophy is that all the time you spend (I did not say lose) in tech/tools is time you don’t spend doing new games or polishing the ones in development ^-^.