10 Tips to choose a gaming framework
How to chooseThe first thing that a new developer considers while trying to choose a framework is does it work on the platform that they have. So if you have a windows Netbook or a laptop, the frameworks that run on Mac alone are useless, unless you have the dough to consider facilitating the platform to run a particular framework. If this be the case, then the rest of the article would not be very useful for you.
The next thing would generally be the cost. It is typically human nature to consider the Free options over a paid option.
The third would be the choice of language used.
The fourth factor would be the auxiliary tools that were made available along with the framework
These are the most common parameters that generally determine the choice of a framework, I would like to highlight a couple more.
The additional factors
There is no such thing as a free lunch. I could never understand the sentence, Free as in "Free Beer". There is no such thing as Free Beer, is that what it means? If any framework offers their work for Free, there has to be a catch, not necessarily a bad one, but some clause. Mainly, the frameworks insist that the app will display a "Made with ..." splash screen in exchange for allowing you to use the Free license.
On the other hand if it is paid, you need to consider the licensing model. A one time cost vs a subscription cost. Think of it as you purchase a word processing software as a subscription, then you use it to write a letter to your family and friends. After that you did not really have the need to write a letter and you might have written an odd assignment here and there. Now comes the same time of the year again, an you find that the subscription has to be renewed or else... you cannot do anything, as you own nothing, it is only when you have the subscription active that you can use the software. In contrast, if you buy Microsoft Word, even if you do not upgrade to the latest version, you can work with a document at any time, you have purchased a license for the product. It is only when the product cannot be used on new hardware that you have no other choice but to discard it and get a new license.
Now this would not sound like such a big issue, but if you look at the computer industry, things change and they change fast. It was just two decades ago that Basic was the language on most home computers. It changed and programming became all about C/C++, it changed to Java. Pascal got reduced to be taught in academic settings. Basic came back in the form of Visual Basic and then butchered in the form of VisualBasic.net then there was Python, Ruby, Lua and others. So keeping up with technology is never going to be easy. When you choose a framework, you have to remember that it is like the MFC(Microsoft Foundation Class) and OWL(Object Windows Library) both were C++ classes that allowed users to write C++ apps for the Windows platforms. MFC was available with Visual Studio and OWL with the Borland C++ compiler. Borland brought in Delphi, their attempt at Visual Pascal, which was supposed to steal the thunder from Visual Basic 3.0 and Visual C++ 1.0 Long story short, if you bet on the wrong horse, you loose. If you spend time learning a particular framework and language, you can very well be stuck. You need to see if the skills that you acquire are useful elsewhere or not. You also need to see the long term viability of the language. What's the point in learning a language that you cannot use if you move away from the framework?
3. Ease of use
This is also very important and cannot be looked into in isolation, it should be considered in conjunction with the other options as mentioned above. There could be a very easy framework or language to work with, but will it be able to create/fulfill your developmental needs? If you use a Mac, you will be aware that you have the choice of using Apple Script as a language to create an app amongst other offerings like Ruby, Python, etc Now AppleScript is easier to use in comparison to Objective-C but also equally limited. Though many new frameworks are lua based and hence easy to use, it is important to note the expandability that they offer.
Also note that there is flip side to this, if the Marketing dept. of the framework's company has created a hype on the Ease of use but it falls short of the real expectations, it will bring you more grief than you can imagine.
As a developer there is always that one more thing that you might want to add to your app and in 99 times out of 100 you will find what you want in the framework of your choice, but there is that 1% time when you do not find what you want, so as a developer you set out to write it yourself. If the framework is not flexible and will not allow expansions or extensions, The framework would become useless. So flexibility is quite important in terms of the power the framework allows for modifying and expanding the core code.
5. Community support
It is quite very important to note if there is an active community or not. If there are no animals near a water hole, there is definitely an issue with the water hole. Communities form quite fast these days. Another thing to notice in the communities and forums is the tone of the messages, a growing community will be reflected with "How do I" type questions, the community that has peaked will have the "Framework cannot do this" and "You have been promising this for a while now" type statements. If the community has not formed, you will be greeted with practically no questions. Another thing to notice is the tone and attitude of the people answering. There are some users that overpower and overshadow, like some do on the Apple Forums. You will gain nothing on such forums but be traumatised with the experience. Lastly, you need to check how the owners/employees of the framework company conduct themselves on the forums.
You need to also note if the community support is the only form of documentation available or is there official documentation available from the framework developers.
It is important to note what you get for the money you spend. Do you have an IDE, a decent editor, Simulator and so on. A good framework will have most of the tools available for the same. However it is important to note that if you have to spend on each and every tool, it can add to to quite a bit even before you get started.
Though you might dismiss this as you are not buying the shares of this company and hence this is hardly an issue, it is not the case. It is important to know the focus of the company, the tie-ups they have, the false and misleading marketing (if any) are they aiming at money grab or are they working at pleasing the users. The management team and their backgrounds (helps to understand where they are coming from and how they think)
This is perhaps something that is almost always overlooked or is often bundled with other points above. I recollect Microsoft organising the MSN and Technet events, Roadshows and hands on workshops. This helps the average Joe to not only experience the technologies firsthand, but also get an idea of what the ecosystem with that system is/will be.
9. Resources (Code Samples)
This is also equally important as you choose a framework to do a particular task, if you like angry birds and want to make an angry birds clone, you want a framework that will allow you to do so. As this would be a relative new framework, your experience would be limited. The only options left with you would be to search for Code Samples that do what you want. If you cannot achieve that special FX that you are after, you will only get frustrated.
It is also important to note if you will get resources in the form of people later on. If you want an extra pair of hands , would you be able to afford it, would you even find people that can use that technology or have even heard of it.
If you are after a share of the app market riches, then it does help to have the app on multiple platforms. Creating an app for every platform is a near impossible and stupid task. It is not like the late 80's computer game market, where as a game developer you had to create a version for the C=64, one for the ZX Spectrum, one for the Amstrad CPC, then for the Amiga and the Atari ST and so on. Having a single code base and multiple platforms is good, that is what C was preferred as a development platform. C or C++ is as you know, not exactly the language of choice with beginners.
You have this list that details what to look for in a framework before tying yourself to that for a long time to come.
Some of the frameworks that come to mind that you can put through the sieve with these 10 guidelines are
- Moai - Free, Lua based, requires splash screen and/or Acknowledgment in About/Credits, Multiplatform
- Gideros - Free, Lua based, requires splash screen for free version, Multiplatform
- CoronaSDK - $149/$349, Lua based, Free version cannot upload to non-development device, Multiplatform
- Kobold2D - Free, Lua based, Cocos 2D based
- Cocos2D - Free, Objective-C based, (I think requires "made with" splash screen), Multiplatform
- Stencyl - Objective-C, Java, Scratch based language
- AGK Game Maker Studio/Kit
- Then there are some HTML5 based frameworks that allow for creating mobile cross platform games/apps.
If you are a developer that has a fair idea of C++ and Graphics, you can write your own framework based on a language of your choice and liking.
I have not mentioned Unity in this and other articles is due to the fact that although it can help develop apps on both the Windows and the Macs, it uses C# as the language of choice. C# is not native to non windows platforms and fill this gap with MonoTouch (which is a very expensive software license from Novel) and it has been found to be buggy as compared to on the Windows Platform. So these intermediate frameworks might overpower and be unfair to the powerful feature set of unity.
Our suggestions/thoughtsWhile as a user you are free to choose the framework that suits your purpose with the guidelines above, we have personally found CoronaSDK from Ansca Mobile to be like a narcotic, easy to get hooked on to and eventually it destroys you while making it's peddlers rich.
The easy to use is the part that many people, including clients base their preferences on while choosing CoronaSDK. As a developer I can but advice a client after that it is all their responsibility on the platform of choice. I have had a client that wanted a simple app (don't they all say that) but wanted to add all of the iPad features like Pinch and Zoom, sliding and zooming like the Photo Album, Sliding views for every screen. It was an overkill but then that's what they wanted. It was later in the lifecycle of the project that they mentioned that they wanted all of those features. They had specifically wanted to use CoronaSDk as in their opinion it was the easiest platform. AT the end of the project, they have gotten a beautiful app that solves their issues but it was due to the limitations and issues with CoronaSDK that I could have lost the client at that stage. For the features that they finally wanted, I would have chosen the Objective-C with xCode option.
The community is still helpful, but there are very little veterans left on the forums, which translates to the cool tips and tricks are no longer available, it is the plain mediocre stuff of displaying an image and moving it, over and over again.
The kind of forum posts are mostly Ansca not fulfilling their promises, like instead of integrating iAds, they went ahead and made deals with other companies, but still no iAds. Some of these partners have short changed users to the tunes of $1000 and upwards. In fact according to Ansca themselves they were done by their own partners Papaya mobile.
There are no reliable tools in the official package, most of the tools need to be purchased separately, thereby increasing the TCO (total cost of ownership) Lastly, many new developers learn Lua and the CoronaSDK API's with a lot of difficulty, if they choose to leave, they would have lost that time as the CoronaSDK API's do not work with other frameworks and has differences and definitely with CoronaSDK, you would not have learned any structured way of development.
There are other issues like the spyware that is compiled into the app that can and has caused app rejections for some users. There is also the issue of on-line compiling, where the only way you can compile is with an on-line connection, no offline support.
The focus and emphasis of the company is to get into your pockets. Users buy a license only to find it falling short to their expectations, and the promised components are never added.
It has sadly transformed into the kids framework, one that any 10-12 year old should pick up to learn development. When it comes to real stuff, it just starts to fall apart. Carlos has publicly quite rudely and firmly asserted that there will be no Windows 8 support in CoronaSDK EVER. What would a developer want to pay for? Learning an API that has little or no documentation? Release a game on a framework that shall start to suck an annual amount of them if it is to be updated every so often. One that does not work on Android and has bugs on iOS and shall NEVER work on other platforms. So what is it that Ansca is really offering? I fail to understand.
Unless you are a developer that has a very successful application like "the Lost City" that is raking in the millions or are having 100,000+ downloads, you might let your Ansca subscription lapse thereby making all of your IP (Code) useless till you buy the subscription and compile an update for your app. Which ever way you look at it, there are other options that work equally well. Moai is a low level framework, where as Rapanui is a high level library that allows Moai to be used like CoronaSDK, in a few lines of code. And both Moai and Rapanui are Free. Gideros allows the user to extend the functionality by creating plug-ins for both the iOS and the Android. among other features and has a FREE option.