Some time ago I bought a license of Construct 2, the HTML5 game engine by Scirra. I bought it even before using it, because I liked their project and I wanted to fund it somehow, before even actually trying it. I then decided to give it a try and develop a simple classic game for understanding how does the engine works: that game is Constructris (a Tetris clone) and creating it was an interesting activity. In this short post I’ll give you my opinion about Construct 2; this is not an in depth review, it’s just my point of view on the current state of the tool.
I was a bit skeptical in beginning, because I’m used to programming and using a tool where you can’t write down actual code sounded bad to me. It turns out it’s not that bad, since the event editor of Construct 2 (simply “C2″ from now on) is a sort of code editor re-skinned to make it look simpler and less scary for non coders. There are some shortcomings in the system, because sometimes you have to spend more time moving and snapping around blocks than “writing” them down, but the overall functionality is not bad at all.
I have doubts about how good such a system would scale for a very big game; in Constructris I tried to be as rational as possible, putting all the constants and globals and the functions in separate event sheets and importing them when needed, organizing the logic blocks, commenting whenever it was wise. Commenting isn’t very practical since you can just add whole lines above or below the “code” you are referring to and so you can’t add a comment on side of an instruction; that’s because the logic blocks are filling the whole width of the event editor.
C2 has a lot of pre-made behaviors and effects, so you can actually build a simple game quite fast if you want. This is not a good thing in my opinion, because it gives the false feeling that creating a game is easy. Simple drag & drop tools are bringing us a lot of very similar and unfinished games with no defined ideas, and the creators are not learning about what they do. You can luckily ignore pre-made stuff and try to lay down things on your own, though I saw few people is actually ditching the platform behavior (for instance) and building his/her own version of it.
Why I dropped Construct 2
This is not a review though, so I’ll skip to what made me drop C2; yes, I won’t be using it anymore. I don’t regret buying the license because I’m all for funding people with ideas and that puts efforts into them. The fact that I don’t appreciate C2 doesn’t mean it is bad for everyone or that what Scirra is doing is not worth time and money.
The first issue with C2 is the exporting of your games: they publicize the engine as capable of exporting for 14 platforms, and this isn’t actually true. You develop with a single target, that is HTML5: a wrapper is then added to the game, so that various platforms can make it run. This is problematic because Scirra is not making these wrappers, so different platforms will have to face different bugs, wrapper limitations and so on. The situation is especially terrible when it comes to Android and iOS, where CocoonJS and Direct Canvas are used.
Performance of exported Android games is also terrible if you use particles or WebGL effects; Constructris only has 3 particles for deleted block, a line is made of 10 blocks, so you get 30 particles per erased line, lasting 1 second and half on screen.. and still it lags on my Galaxy Note 2. This is unacceptable. The issue is simple: HTML5 isn’t mature yet in terms of support. The technology is promising and exciting but it depend on how the various platforms implement it, and that implementation is lacking optimization, standardization and stability. As I said C2 uses third party wrappers to make the HTML5 game appear as a native game, but what the game will support and how it will run depends on the wrapper, not on C2. This means that C2 isn’t supporting any platform except HTML5 being repackaged and wrapped for being available in various platforms.
Developing with C2 means knowing that unless you target the latest Chrome and desktop you will have to forget about most of the WebGL effects; you have lots of cool stuff but you just shouldn’t be using it. If you target the mobile you also must be aware of performance as I said, and of issues with sound lag and other stuff. If you target desktop you’re actually wrapping node-webkit around your game, so that my 2MB Constructris becomes a 60MB monster; I suggested approaching some delivery system for downloadable games, something that could split the game environment + launcher and the game itself, but I was told it’s not an issue and players are too dumb to deal with a client that let’s them download and play games. I guess no one alerted Valve about that.
So when is Construct 2 useful?
I think at the moment C2 is useful in these cases:
- if you’re an hobbist & creating games isn’t something you want do for paying bills
- if you’re making a casual game and/or a game that is not very big in scope
- if you target Chrome or if you don’t need most of the fancy WebGL stuff
- if performance and fancy stuff aren’t a priority in the mobile versions
Things could change in future, who knows. What I think is that the big players are still not playing when it comes to HTML5 game and app engines, and this allows a tool like C2 to exist. But when HTML5 support will be more mature we’ll probably see companies like Adobe producing their own game engine, and that could really change the scenario. In meantime I wish the guys at Scirra the best, and I also wish them to be more clear about what their tools is offering (take a look at the home page and see what I mean with slightly deceptive marketing).
Conclusion and current choices
What about our gamedev then? After dropping HTML5 we gave Game Maker Studio a try, and we feel it offers much more than C2; it costs more but it actually supports the platforms you pay for, instead of just taking a third party wrapper and putting it on top of the HMTL5 game, leaving you to deal with countless issues.
That being said and after lots of testing we think we’ll also stop using GMS and go for Unity; it’s the most robust solution out there, it uses technology and skills you can then use on other kind of projects and job activities, it truly supports all kind of platforms. The free version is very useful and the paid one (though expensive) is not impossible to buy if you wanna do business.
Some people will say that Unity is too complicated, and this makes me feel sad; I remember the 90s demo scene was filled with teens doing awesome things in asm, creating pixel art and music using tools that required technical knowledge and patience; now a tool like Unity and it’s scripting are seen as too difficult to learn.. something went wrong.