During last year, I started working seriously on a Unity project, spending much time learning best practices, as well as hundreds of dollars on assets. However, I don’t feel like investing any longer into Unity’s platform. Facing all developers’ anger, it’s likely that Unity will change their fees policy again. But even if they change the way they collect fees, the sole removal of the Plus tier is definitely a showstopper to me. As a small indie dev, spending $2000 on a yearly Pro license begins to get expensive (I think I would have not chosen Unity if it had been the case when I chose a game engine).
So I spent the last few days having a look at other alternatives, visiting their websites and trying to figure out what makes them attractive. An article really baffled me: https://www.gamedeveloper.com/blogs/the-generous-space-of-alternative-game-engines-a-curation- Despite the fact the author herself admits she loved the Flash era and still uses AIR (up to the point she would be “devastated” if AIR disappeared), AIR + Starling are not listed in her curated game engines list. Go figure… I wonder: is AIR such a bad solution for game dev that she didn’t dare to promote an SDK she obviously loves?
So I decided to see if it’s the case, in an honest approach to list our strong and weak points. I listed most game engines features that are advertised on other alternatives. I’m not really familiar with Starling though (I generally use GPU with classic display list, which is quite capable for non-resource -intensive projects). That’s where I’d need your help: could you please give your feedback on the technical solutions you used for the various points listed below, and see if AIR can compete?
Note: let’s try to only give solutions that are REALLY applicable, not just in theory, but actually usable. I can see sites advertising features that look cool on paper (for example native extensions), and then when you dig a bit more, you realize that their extensions ecosystem is really poor, and you have to do all the work yourself.
Here are the features generally important for a game engine:
1) 2D features
AIR and Starling are definitely a solid option regarding 2D management, and the display list is really a great and flexible system. I don’t see much features lacking here.
2) 3D Features
Away3D (https://github.com/away3d) is your best option, even if it's not maintained any longer. AIR and Starling a definitely more 2D oriented, but some people achieved amazing 3D results too (https://brokenranks.com/en/)
3) Text
Nice Text solutions, both bitmap and vector-based. Native StageText input on mobile.
4) Animation
With the Flash origins, AIR has very strong professional tools like Animate that can create complex animations. For 2D skeletal animations, you can use Spine (https://github.com/EsotericSoftware/spine-runtimes/tree/4.0) and Dragonbones (https://dragonbones.github.io/en/download.html)
5) Easy UI design
We have the awesome Feathers UI library. Starling builder seems nice too, but never used it.
6) Assets management
Yes.
7) Cameras
???
8) Colliders
???
9) Tilemaps
Included in Starling, but are they usable for big maps?
10) Shaders
Yes, through proprietary AGAL shader language : https://airsdk.dev/docs/development/appendixes/adobe-graphics-assembly-language-agal
11) Particles system
There are several options, but didn’t test any of them. Any feedback, for those who tried them?
Flint - Particle Engine for Flash and Flex.
Desuade Partigen - Desuade Partigen particle generation system (github).
Angulex - Particle Designer for the Starling framework (ActionScript 3).
SAP - Particle System for Starling.
Starling-Particles - Particle system for the Starling framework, compatible with the "Particle Designer" from 71squared.com.
MotionParticleSprite - Design motion paths in Flash Pro and use it to guide Starling particles.
Other particle tools:
Particle Designer - https://www.71squared.com/particledesigner
Stardust Particles - https://github.com/matyasf/stardust-library-plumbee
12) Hardware acceleration
Yes with Starling. Even native GPU mode with standard display list runs well for some projects.
13) Input handling (keyboard, mouse, touch gestures)
Yes.
14) Gamepad support
Yes, but is it working well on all platforms? Does this ANE work well: https://github.com/StackAndHeap/joystick-ane
15) Screen management support (fullscreen, vsync, 144hz or gsync)
???
16) Cross-platform
One of the strongest points of AIR, in my opinion. The mobile support especially feels very good to me. The fact that you can build iOS apps on Windows is a very rare and awesome feature! It should definitely be advertised more, as I didn’t see it anywhere else, and is simply awesome for Windows developers.
17) Sound and music management
Good features, but I don’t know if some latency is not present on some platforms?
18) Physics
Nape physics: https://joecreates.github.io/napephys/
Box2D: https://github.com/crossbridge-community/crossbridge-swc-box2d
19) Networking
As a Web tech, Flash had some very nice network features. So the basic layer is here. Don’t know about Multiplayer libs though.
20) Native extensions
Certainly another very strong point of this SDK. The ANEs current offer is awesome, thanks to the amazing support by Distriqt. I can see many engines advertising native support, but when you check their ecosystem, only very basic extensions are available (basically In App purchase and a few others). Any serious app developer knows how those libraries are crucial though, and require heavy maintenance. So we are very lucky to have them!
21) VR
???
22) Overall performance
Runs well for small projects. Never really pushed the Starling engine though. Feedback is welcome.
23) Available IDE
I still think FlashDevelop is a very capable IDE, despite the fact it is not maintained any longer. There are other good IDEs available though, including Visual Studio Code, IntelliJ IDEA and Moonshine.
24) Levels building tools
“Tiled” for tilemaps.
25) External libraries and tools
Great Tweenlite tweening library. Many other libraries available (https://github.com/robinrodricks/awesome-actionscript3) . We definitely benefit from the long Flash history where code is reusable.
26) Community
Small but very friendly community. Two good forums to ask for help and discuss:
https://github.com/airsdk/Adobe-Runtime-Support/discussions
https://forum.starling-framework.org/
OK this post is till very rough and incomplete, and will be updated with your feedback over time. If we can get a nice document, I'll convert it to a page for the AIRSDK website. Please let’s try to keep it technical only (no discussions about strategies or marketing, or we will quickly digress 😉). Cheers!