Wednesday, July 9, 2014

BobEngine: the Power behind Plane Popper

I have finally finished and released my first Android game: Plane Popper. If you haven't already, you can get from the Play Store. It is free, of course :)

Now that my game is finished, I wanted to take the time to tap out a little description of my custom game engine that I designed when writing Plane Popper. I will refer to my engine as "BobEngine". If I ever decide to release BobEngine (which I am really considering) look for it under this name. BobEngine is not currently a finished project and needs to be more generalized before it can be used for general game creation. My next project will be to work on generalizing BobEngine. Terminology within BobEngine may change between now and the time of its release. Be sure to check back here regularly for updated information.

The purpose of BobEngine is to create a very simple way to make 2D Android games. I aim to simplify and streamline the process as much as I can. To get an idea of what BobEngine will be able to do, download and play Plane Popper from the Play Store.


Features


Basic Organization of Objects on Screen


BobEngine aims to create a similar structure to that of the programs Game Maker, DS Game Maker, and many other game creation software products that use objects inside rooms or scenes. In BobEngine, there are GameObjects which preside inside Rooms. GameObjects are objects that appear on the screen. They can either be for decoration or they can allow the user to interact with them. Rooms are a collection of GameObjects that are meant to appear in the same space. BobEngine will allow the programmer to create any number of Rooms needed and any number of GameObjects. The programmer will be able to switch the current Room at any time as well as reset the current Room to its default state at any time. BobEngine can even handle updating and rendering several Rooms at once, one layered on top of the other.

Rendering, Textures, and Animations


Rendering is handled very efficiently in BobEngine using openGL ES 1.1. GameObject textures should be grouped together onto texture sheets to improve performance. The programmer will be able to specify the location, size, and number of frames for a specific texture on a sheet. BobEngine will provide simple methods to change animation frames and loop through a range of frames at a given rate. BobEngine is able to render thousands of small quads (such as the dots that make up the tails of the firework sparks in Plane Popper) before taking a performance hit. Small particle effects should be easily achievable in BobEngine.

Input


BobEngine will support multi-touch input from the touch screen. The programmer will be able to track three states of input for each touch (newpress, held, released) as well as the (x, y) positions of the touch inputs. There will also be simple methods such as isAreaTouched(x1, y1, x2, y2). Keypad and controller support may also be implemented somewhere down the line.

Sound


BobEngine implements Android's SoundPool for easy handling of sound effects and music. SoundPool operations are handled with simple play(sound), pause(sound), and stop(sound) methods as well as overloaded methods that give the programmer more options when handling sound.


Conclusion


I will continue to post information regarding BobEngine on my blog and on my Twitter feed during the coming months. Be sure to continue checking back here for more information. If the demand is strong enough, I may even open-source BobEngine but I will not make any promises in that regard. Upon release, I will provide proper documentation and sample projects for BobEngine.

Also, stayed tuned for more information about the success or lack-thereof of Plane Popper! I will be posting reports regarding revenue and userbase as well as commenting on the experience of releasing an Android game for the first time. My next post will likely be about what a new programmer should expect when he or she releases their first game on the Play Store. Stay tuned!


Benjamin Blaszczak
aka Bobby Lou Jo

No comments:

Post a Comment