Mobile Game Development
My Buddy and I have begun creating a Mobile game from (mostly) scratch. We looked into various engines that targeted mobile, such as Unity, UDK, Shiva Engine, OGRE3D and others. We finally decided on Irrlicht. The others, while a little more robust, were either too expensive, or too bulky.
Things to Look for in a Game Engine
Our game is a very simple idea, and has a very simple game mechanic. When we were looking for a 3D Game Engine, we didn't want it to be overly bulky (OGRE 3D was 50MB for the demo app on Android) and since this is our first project, and we are wanting to target as many Mobile Platforms as we can, Unity was off the table as being very expensive to do a mobile release. ($400 for each mobile platform).
Irrlicht has bindings for iOS, Android, and Windows Phone 8/RT. It is open source, and very lightweight. It is also feature rich, for what we are wanting to do. It doesn't contain Network Code, Physics interactions (which we actually don't need) or some other features that the other game engines contained, but for our purposes it would work great, and as such would offer us the best solution.
Our first steps were making sure we could actually get it to compile and work on at least 1 mobile device. Our first targeted platform is Android, though we will do all of our development and prototyping using a PC, we needed to make sure it would work on a mobile device.
Following various tutorials around the web and piecing together different parts, we got a working demo of Irrlicht running on an Android 2.3 phone, an Android 4.0 tablet, and an Android 4.0 phone.
Once we were sure that Irrlicht would work on the mobile devices, I set to work creating the Engine over the Engine. In game development I have learned that Abstraction is wonderful when targeting multiple platforms. My solution is setup into 3 projects. The 3D Engine (Irrlicht), the Engine (a DLL, or Static Lib) and the Game (an EXE for PC, Static Lib/DLL for other Platforms).
While we were figuring out the engine details, we started a shared Google doc and started listing out features. When I first began game development I had reached out to Gabe Newell from Valve for some advice, he had 2 very important points in his email.
"One useful exercise is to write out five minutes of gameplay in as much detail as possible. What exactly is the player doing, what keystrokes are they using, what decisions they are making, what they are thinking about. "
"Another useful thing is to get the absolute minimum of the game up and running - use generic models, generic textures, etc... but get the game playable."
These two areas of advice have been key in my game development ever since. It is amazing how much more rapidly you can develop if you start by getting the game up and running as soon as possible, instead of spending countless hours figuring out everything beforehand. The easiest way to know if something will work is to try it.
Gabe really summed it up at the end of his email:
"It's much easier to add details to a working game than it is to imagine a working game that will come into existence 18 months from now while you finish the last pixels on all the art."
In future posts I will detail out how the engine is structured, and why I went about structuring it the way I did. I will detail out the Game Loop, and my approach to getting systems to play nice with each other.
We haven't decided if we will release the engine when it is complete, but I'm hoping we can, nothing would be better than having a high quality, open source game engine that can target multiple mobile platforms easily, and have it be well documented and easy to get started.Comments