I am a web developer. I am used to work with technologies like nodeJS, AngularJS, jQuery and DOM.
As a lot of other devs not in the gaming industry, I always wanted to create games too. The kid in me never let go of this dream so I decided it was finally the time to investigate this area. But, after looking around, I can say I am pretty much stuck: so many choices of frameworks, technologies, languages, devices, licenses!!!
I can limit all these somewhat, based on my previous experience and personal preferences but still, there are plenty of frameworks left to pick from.
So I decided I should try and implement the same game in different frameworks and see what I like and what I dislike about each and maybe find The ONE along the way.
I tend to favor frameworks that allow packing the game as a native app for various OSes but being able to play the game in a browser is equally important.
Also, since I am a JS guy, I will look into frameworks that work with JS. Learning a framework can be quite hard at times, I don't want to learn a new language too (not yet anyway).
I will open source the code for the game on github once I clean it up a bit (should be after the 2nd or 3rd tested framework).
If you want me to test a certain framework, let me know in the comments below and I will look into it.
The game logic is pretty simple: a locomotive needs to go from Start to Finish over a random grid of railroad tiles. You need to move the railroad tiles around to create a track that connects the start and finish points for the locomotive to be able to move. You have a limited amount of time before the locomotive leaves the Start station so you need to think quick.
This is not going to be a comparison matrix for the various frameworks I test but rather notes I take while I learn them - what I like and what I dislike about each.
Tested version: 0.1.45
This was the first framework I created the game with and I got as far as making the game logic. No menus, buttons or anything else. As soon as the game was launched, it went to the game screen, the countdown timer would start and then the locomotive would start moving. Score would increment at the end of a level, immediately start the next level or the locomotive would explode and then start the same level.
On the plus side:
- stellar documentation. I rarely needed to search for how to do some things and when I did the results that helped were from their site anyway. Every class and method is properly described, each UI element and framework feature has examples. There are also a few example games.
- sweet separation of classes into their own files, much like nodejs. I get it that when working on small projects it might be easier to have everything together in 1 file but as soon as my projects get over a couple hundred lines of code, I feel the need to separate things and not scroll like crazy inside the 1 file to find where some function is.
- file(class) importing, just like require() in node - goes hand in hand with the multi-file separation.
- lots of examples. Unfortunately they don't always work, however, it's not a problem with the code itself but rather with their emulator.
- built in GridView widget. An UI component that helps placing tiles in a grid, moving the tiles around by just setting the row/column properties, autoscaling the tiles in the grid, etc. Other frameworks might have something similar too but it's a nice thing to have, nevertheless.
- very easy to use animation module. You can queue up animations, run code once an animation finished running or start an animation right away.
On the minus side:
- a lot of examples aren't working.
- buggy/not working emulators/simulators. I believe that the examples aren't working because of the bugs in the emulators. But it was a show stopper when I couldn't test my own game in anything else but the Iphone 3 emulator.
- sound in emulators wasn't always working. Not sure if this was the browser's fault or devkit's though.
- support is bad - irc response is 1 response per day.
- latest news on their site is from 2012 (we're in 2014 now).
- latest commit on github was 3 months ago.
- no community? With a team of 26 and $12 million series A round, you'd expect things to be much more active.
- the build process for native could be explained better - I struggled there as a beginner and only my previous general linux experience helped me get past the problems.
- I am using webstorm as my IDE and it doesn't understand the
classconstruct or anything that's not standard js. With ES6 overlapping so much with their jsio addittions to the JS language, they should switch to the ES6 syntax.
- no idea how to do vibration on mobile or make use of the gyroscope
There were also some question marks for me regarding the license - They mention 2 types of licenses but they both point to MPL. I am not sure if this license refers to changes I do to their devkit app or to my own game. I also have no idea if I must use their provided splash screen or I can change to mine...one of the example games had a readme which said they were required but nothing on their site / on their license page about this.
Not bad for a start, working with GameClosure was quite fun, which is probably the most important thing. Unfortunately, when I found myself trying to fix their emulator because the bugs were too annoying, I knew I had to move to another framework.
I feel that if they switched to ES6, fixed their examples and simulators and were more active on github, I'd gladly give this another try.