Posted by & filed under 12=12, Blog.

Christophe has developed the 12=12 game prototype with Unity3D. In our first publishing meeting for the game we’re decided to port it to Stage3D (Flash/AIR).

The reasoning was: on a game with limited 3D complexity the performance drop from Unity to Stage3D (on mobile) will be compensated by easier 2D integration and the better experience we have with advanced topics in Flash (ad integration, social …etc). Oh and there’s the money thing: Unity3D isn’t cheap with iOS and Android build capabilities (around 4k€).

Having decided that we were in the market for a Stage3D engine. We’ve checked 4 of them, still we missed some (Alternativa comes to mind). We don’t have enough time to be exhaustive anyway. Here are my opinions on them:

DISCLAIMER: This article stirs up controversies with the engine’s providers. We’ve only tested each engine for half a day to a full day. The tests were centered about our specific needs: to display 200 chamfered cubes (color+texture), each one pickable by mouse, plus a 2D interface at great framerates on mobile targets. This is not a full review of the engines, and I can be very wrong or frustrated.

stage3_1
  • Zest3D: I only heard of it at the Stage3D Online Conference last week. Lots of speed promised. Christophe’s comment after testing: “It’s very incomplete. And broken”. Ok perhaps next time.

    Update: as a pre-release, being incomplete and broken is quite expected and it doesn’t say anything about the potential of the engine. We’ll test again Zest3D for our next Stage3D game.

stage3_2
  • Away3D: the oldest engine is alive and kicking. It’s easy to grasp for an AS3 developer. As a (very) open-source engine it’s naturally biased for capabilities over performance. The performance is somewhat worrying for mobile, even if on initial testing it was in the same ballpark figures as Flare3D. 2D integration is possible with starling. There’s tutorials and support everywhere of the web, probably too much beginners questions and outdated tutorials. I don’t know if the IDE (Prefab3D) really helps: for Away3D 3.x projects it was not, and only experience could tell if that changed.
stage3_3
  • Minko: it’s still a mystery to me. It seems elegantly done, and speedy. However each time we try to do something with it, we’re lost.
    • It begins with the engine itself. What branch to download on github. Should we take the subprojects too (minko-lighting .. etc)? Nope, turns out they’re deprecated. Support is sprinkled over various sites, blogs, forums.. etc. You never know what’s still valid. It’s a mess. Perhaps there’s a 2D system somewhere in it. Or a way to shared a Context3D with starling. Who knows.
    • Then there’s a great studio/editor tool. Which exports .mk files. But the .mk parser is not included with the engine (I solved this one).
    • The materials situation is also enraging. I understand it’s able to do great shaders with a combinations of AS3 and perhaps the shaderlab. But how can I do simple things? What we wanted was a parametric color multiplied with a (greyscale) texture, perhaps with a bit of lighting. We’ve really tried to find a way, without doing the shader ourselves. And failed.
    • Finally there’s the syntax. The MVC elegance escapes me. I want things named after what they do. Not controllers and proxies. Because having to check tutorials or docs to find what’s the name of the property for anything will always be 100x slower than autocompletion.
    • Technically it’s probably the best engine. To the Minko team: you should stop working on the engine for 2 weeks. Produce internal communication and documentation guidelines. Imagine yourself as a first time user. Or better yet: do focus groups. Then clean everything, remove all deprecated stuff from the web and publish a centralized source of info.

    Update: follow-up on @promethe42‘s remarks:

    Update #2: My conclusion still is: currently it’s probably the best engine (on the inside) but I think the engine and its communication are not taylored for me, a generalist rich-media developper.

stage3_4
  • Flare3D: still my favourite
    • Like Away3D, the paradigm is easy to get for an AS3 dev. Starling integration is easy from version 2.5. The IDE is very usable. Materials are composed from filters and it just works. Base performance is so-so (I know it uses a lot of foreach iterators on Vectors, I want to cry).
    • The tutorials are great, lots of topics covered. For example this one helped me to overcome our particular perfomance problem by merging surfaces.
    • Being a closed source engine means you regularly hit non-solvable problems. I often have to use a decompiler to check the source code and find myself a solution. After using the above tutorial, you can’t use mouse collisions with meshes created with that method anymore. But by decompiling I know how to overcome this (by filling the polys vector). To Flare3D guys: you should publish your source code. You can retain ownership of the code, or even keep some key classes to yourselves if you’re paranoid. But your engine would be more usable (and popular) with source files included.
    • FLSL (the shader language) is a welcome addition, but the documentation and support is not as good as the engine’s. For starters the entire AS3 side is missing (how to feed a texture to a shader…etc).
    • Removing the watermark cost 400€ a year per seat. It’s not that much compared to Unity but the prestations are not comparable. Flare3D promised the 2.5 version nearly a year ago and it’s still only available as a beta.