A short cheat sheet for evaluating libraries, frameworks, engines and SDKs and picking the best
- Libraries, frameworks, engines SDKs and so on are tools which are
intended to solve problems for you or assist you to solve problems
and meet certain requirements.
- Evaluating means figuring out which one meets the most requirements.
Therefore before you even start evaluating you need to be clear in which scenario you are and which requirements you have/want to have because this are the questions which should be answered by the evaluation.
The scenario defines where the requirements come from (who decides what is an requirement and what isn't).
Typical scenarios are:
The hobbiest project scenario
You on your own or together with some friends want to create your (maybe first) game. Perfect, you can decide everything on your own and you are only limited to basic technical desicions and technical requirements (should it be a mobile game, a PC game, a console game, a web game,....). You can decide whatever you want.
Implicit requirements will be that you may want to learn something specific (a language, a specific framework/engine)
The student scenario
Requirements may come from your teacher. Typical requirements I had in that case: the game needs to have some physics elements and multiplayer network support. Or it has to be written in C++.
So evaluating becomes easy. You are looking for a game engine which lets you code in c++ and may already include a network and physics engine.
A more evil (real life) requirement: everything has to be written from scratch (but using libraries is allowed). So no editor is allowed (e.g. Unity3D). So you are not looking for engines/sdks but for libraries.
The indie game scenario
You want to make money with the game later on. Therefor you will need to sell it somehow which brings you to check which requiremnts come from the store you want to sell your game on.
Does it allow Java games, HTML5 games,....)
Does it require you to include specific libraries (if yes, in which languages are those libraries available)
The Google Playstore will require you to write your game as Android game, Apple AppStore will require you to write your game as iOS app. Or you have the requirement to pick a multiplatform engine.
The professional scenario
You do not only have a store providing requirements but most likely a publisher or customer having own immaginations of requirements.
In this scenario you will also have a bigger team of employed developers. Depending on their skill set new requirements arise (our programmers can only write c++ so we can not use a pure Java/Android game engine without them needing (lot of) time to learn something new).
I do not go into detail for this scenario, once you managed to build up a team of employes and find a customer/publisher you already know what you are looking for on evaluating things.
How do I decide what my requiremts are when I am a hobbiest or indi and no one else tells me?
Ask your self questions about your goals and your game?
What should my game be? mobile, pc, web (html/Js), which controllers will I use (touch screen, gyroscope, game pad)
What is new in my game and what does other games also have. Those parts other games also have (rendering, audio, input handling) will be done by the most (game engines) tools you can find or it is easy to bundle up libraries having that functionality in your own game or game engine.
What is the dimension of my project: angry birds or skyrim? Angry Birds can be done in nearly every tool and skyrim would be limited to high performance tools with (assumed) years of additional customization (high performance terrain engines aren't easy)
Is my only goal just to get a game done? yes? perfect, you can use some highly advanced thing like Unity, Unreal,... having a handy editor and a large community providing you with tutorials and answering your questions. It takes away the burden of handling low level tasks like mesh loading, implementing your own math functions,....
Is my goal to learn something specific? yes? what do you want to learn?
Which language should I choose? If the goal is still just to get your game done pick the one you/your team knows best? If you want to learn a specific language you will pick a tool in that language.
Will tool X have enough performance for my game? Maybe, you will never know. Even in large productions the optimization and polishing phase takes a long time and is a huge affort to get it done. Start caring about performance when you hit performance issues. You do not know how the tool will perform unless to reached its limits. Everything on the web site of the tools developer is just a rough guess. After years of evaluating tools I stoped beliving anything from the developers website.
Answering such questions brings you to the requirements. The evaluation is finding a list of tools and TESTING (not just reading the homepage) what the tool can provide or can't.
Requirements are not cut into stone but are dynamic. They will come and go during development. If the game needs physics or not for example depends on the design. If the design changes the requirement can change too.
Take the requirements you have and get started. Changing requirements are the daily bread of the suffering, ahm, happy developers independent of project size and experience level.