Introduction
Why fragmentation across Android hardware pushed him to write an engine from scratch.
Mobile gaming is not something new, but gaming on Android is quite challenging really, because you've got several hardware manufacturers adopting Android OS. It's good for end users, since you've got a large variety of devices to choose from, but on the other hand we developers get to suffer a bit because we have to support multiple hardware specifications in our development.
Unlike the iPhone, Android phones have different screen resolutions, processor speeds and a lot more that will probably concern you as an Android developer. It's even more painful if you are a game developer yourself.
That's why I decided to make a very simple game engine for Android from scratch. Now a lot of people would say: do not reinvent the wheel. I really agree, but I had my reasons when I thought about giving a lot of my time and energy to this matter:
- I couldn't find a decent Android game engine that was easy to use.
- I needed to help fellow developers understand the inners of a very simple game engine easily and free of charge.
- What the hell, I just had the urge to write one from scratch.
I was in the process of making my game Precious Drop. In the very beginning of the project I found that there was a good amount of code I had written that could be extracted as independent modules, and that I was sure I was going to use again in further development. So I figured it was a good idea to name my game engine Precious Engine, since it is the core of the game Precious Drop.
You have to know that I had to neglect and discard a lot of good conventions in programming, because mobile development is different and especially on Android, because of the performance obstacles and because of the programming language. Coming from a decent experience with C++, Java is pretty different and spoiling. You have the garbage collector doing most of the memory management work for you. That's great, but there is a performance hit that comes with it. You have to keep this in mind while going through the code.