Android Game Development - WHAT TO CHOOSE
Canvas or OpenGL or LibGDX or Game Engines!!
Developing games on android is not straight forward. You need to be very specific about what you are going to develop, what are the content of it and what are the requirement for it. Game can be developed from all these but everyone has its own limitation.
As I am a java and android developer and developed some games in java and android with simple logic(Graphics lib. for java and Canvas for android) I had concluded some points.
- If graphics are heavy than your game FPS may jitter even though you have proper architecture, but can be solved from accurate and efficient algorithm.
- Rendering too much graphics can be tedious task.
- There should be proper architecture of everything.
- Efficient and best algorithm should be there.
- Application manageability depends on how you develop it.
Canvas
It is a predefined class in android sdk. Android application can draw things on screen using this class.
java.lang.Object
| |
↳ | android.graphics.Canvas |
means Object class is the parent class of canvas class. This class hold the "draw" calls. It can draw anything like rectangle, circle, bitmap image, etc. To draw anything some basic components is needed which are mentioned below:-
- Paint object(to give color and style to drawing)
- Bitmap to hold the pixels
- Canvas to receive draw calls(drawing on Bitmap)
- Drawing primitive(path, text, etc.)
How to use it please check android developer documentation.
OpenGL
It is the environment to develop 2D and 3D graphics. It gives the high visual quality and performance. It is cross platform environment.
OpenGl can process image data as well as geometric data.
LibGDX
It is the free game development framework, also it is open source. It is written in Java programming language with some components written in C and C++ to increase the performance. It is the cross platform framework. It can be used desktop application and also for android also.
However this framework is written in java, so the compiled bytecode is language dependent and can be used in any JVM. It main focus was to ease the simplicity and increase the performance.
Game Engine
It is the tool for fast development of the 2D and 3D games. It is the software framework to develop the mobile and desktop games. The core functionality of the game engine are:-
- rendering(for 2D and 3D graphics)
- Physics(collision detection)
- Sounds
- Artificial Intelligence
- Networking
- Memory management and many more.....
It makes the portability and reusability of the code. There are so many game engines in the market right now, one can choose as per its convenience. Some popular Game Engines are:-
- UNITY
- UNREAL
- RENDERWARE
- X-RAY
WHAT TO CHOOSE!!
The choice is based on some factors like how much time is available, availability of resources, quality of product and many more. after considering all these points one should choose accordingly.
But my personal advice would be Game Engine as you can do so much in less time and no heavy programming skill is needed. Not because of less programming but the quality of content is far more good and manageability is easy. If one wants to develop the game from basic logic, one can to understand how things happen but if they want to build heavy game with simple libraries it will be surely very difficult. So, it is better to choose game engine.
I personally prefer the UNITY game engine as it is easy to learn and implement. Others are also good but I hadn't used them. Tutorials for all these are available online.