Archive for March, 2011

Published by Hue on 20 Mar 2011

The Current Top Ten Android Games

This months list of Top Ten hot Android games.     I’m amazed at the look and depth that some of these games have playing on such a small platform.

Crusade of Destiny by Dvide Arts

b_250_200_16777215_0___images_stories_news_DvideArts_cod003.jpgAndroid’s first full 3D RPG game as well as Android’s first game made with the Shiva3D gaming engine. This game was great, especially for people wanting to play a WoW-like game on their phone, minus the multiplayer part of it all. This also showed that full 3D RPG games are welcome in the Android gaming community and were needed.

Along with this game it also showed that if the game is worth it, file size doesn’t matter to Android gamers and that even though it wasn’t ‘huge’ it was still big in size but received a pretty warm welcome on the Android Market.


Dungeon Defenders: First Wave by Trendy Entertainment

b_250_200_16777215_0___images_stories_news_dungeondefendersunreal_DunDefWallpaper2.jpgThis massive launch of this fantastic game really put the ‘we don’t care about file sizes if the game is good’ out there. It also marks Android’s first Unreal Engine 3 developed game as well as the first game that truly needed minimum system requirements. It also offers up some of the most unique gaming currently available for Android with it being a mesh of MMORPG/Action/Tower Defense gaming genres.

With upcoming updates which will include online multiplayer PvP and the ability for players to create their own Mods for the game, Dungeon Defenders: First Wave will be a winner throughout 2011 as well.


Zenonia by Gamevil

b_250_200_16777215_0___images_stories_news_Zenonia_zenonia2.jpgZenonia came out and was one of the first major full fledged RPG releases for Android. Developed by Gamevil, Zenonia had a slew of features including day/night variations in the game, huge amount of quests, various equipment levels (normal/rare/magic/epic etc), equipment combining, huge amount of quests, passive/active skills and a whole lot more.

It also sported 40+ hours of gameplay to complete the game but you could grind your character up to level 99 if you wanted to after that. Gamevil was quick to update it after release with multitouch support as well. It was a great game, and still is, with a great storyline and witty dialog. This is a must have for RPG fans.


Reckless Racing by Polarbit

b_250_200_16777215_0___images_stories_news_recklessracing_reckless-racing-android-game_1.jpgReckless Racing was released later in the year and featured some great 3D top-down racing, hillbilly music and just generally fun gameplay. While there are a bunch of good racing games for Android, this was one that had been waited on by many gamers for quite some time. The release of the game came with a pirating issue and the servers having problems because of it but within a few days Polarbit had it cured.

The game has great replay value and you can race your friends online through multiplayer mode, download ghost cars with their own racing style and more.


Angry Birds (normal + seasons) by Rovio

b_250_200_16777215_0___images_stories_news_angrybirds_abxmas_pikkunosto.jpgWhat can I say about Angry Birds that hasn’t been said already many timeson other sites. Both the normal version and the ‘Seasons’ edition have been massively popular not just on Android but mobile in general. Very few games have the replay value that Angry Birds offers and the straight up fun you can have while playing this game.



N.O.V.A by Gameloft

b_250_200_16777215_0___images_stories_news_gameloft_nova.jpgN.O.V.A shows us that FPS (First-Person Shooter) games can be done for the Android platform and done well. Between the great 3D graphics and the enjoyment of actually having a great FPS game to play, this should be making most Top 10 lists. Even without the ability to play multiplayer, this is a great game to play.

We are definitely looking forward to N.O.V.A 2 hitting the Android platform in the near future. (hopefully with the multiplayer!!!!!)



Guns N’ Glory by HandyGames

b_250_200_16777215_0___images_stories_reviews_gunsglory_gunsnglory_android_3.pngGuns N’ Glory is probably the most unique Tower Defense type of game to come out for Android up until the release late this month of Dungeon Defenders: First Wave. This game offered players the typical Tower Defense style game but with the twist of being able to move your ‘towers’ at any point during the game.

The cool western theme, being bandits instead of good guys and robbing the innocent and more maps coming out make this another game most Android gamers should try. Best of all it was offered free on the market with a paid version only if you didn’t want the ads the free version had.


Pocket Legends by Spacetime Studios

b_250_200_16777215_0___images_stories_news_pocketlegends_PL_Android_Cheer.jpgPocket Legends blazed onto the Android gaming scene after much success over on the iOS platform. Considered the ‘WoW of mobile gaming’, Pocket Legends sports millions of players, a free 3D MMORPG to play and the ability to buy in-game items. This is also considered Android’s first full MMORPG and even though Runes was out before it, Runes is still in beta phase of development.

Pretty much everyone who enjoys playing online PC games in some capacity wanted to play Pocket Legends on their Android device. The release of this game also further enforced the idea that full sized games can be very successful on Android.


Prism 3D by Hyperbees

b_250_200_16777215_0___images_stories_news_prism3d_3.pngAnother unique game that really doesn’t fit into a genre of gaming. Perhaps strategy, platform, casual or puzzle would work, perhaps all of them together. Featuring a top-down view of your playing field you need to bounce your ball to the finish line, get points along the way, avoid traps, get power-ups and much more.

Including a level editor in Prism 3D was another feature rarely seen in any Android games up until then and the game itself still offers plenty of replay value and fun, even if you’ve had the game for awhile now.




Everlands by Hexage

b_250_200_16777215_0___images_stories_news_everlands_everlands_2.pngEverlands is a great strategy game featuring animals with unique abilities, health and directional attacks. All on a hexagonal spaced board, you would have to conquer the majority of the board over your enemy in order to win that stage and proceed onto the next. It proved that even a cute looking game can be enjoyable for everyone and challenging enough for most gamers to play.





Game Dev Story by KAIROSOFT


Bringing the idea of gaming to another level, Game Dev Story is a simulation game where you start from the ground and build your indie game company up, hopefully to success. Of course if you fail you are riddled with dept and no one likes your products. This is pretty much a game about every gamers dream, making the ultimate game and hitting it big. Who could ask for more in a sim game?





Published by Hue on 18 Mar 2011

So, you’re thinking about making a Android game?

If you’re interested in developing a game for the Android platform, there is a lot you need to know. I’m the developer of FireDrake: The legend of the Black Dragons, Zombieplexia, Trek Trivia and The Tomb of the Undead which are currently available on the Android Market. I’ve developed games before but Firedrake was my first Android application and I learned quite a bit about writing Android games that I’d like to share with everyone.
If you have previous experience with game development, moving over to the mobile platform won’t be all that difficult. You will mostly just need to learn the architecture and API. If you’re new to game development, I have assembled a list of must-knows for getting started. They apply to many different types of games, including action, strategy, simulation and puzzle.

Android is a Java-based environment. This is nice for new developers as Java is widely accepted as a much easier language to get started in than C++, which is the norm for mobile development and is what I use now. Google has also done an excellent job with documenting the API and providing examples to use. There is an example to show functionality for almost 100% of the API, called API Demos. If you’re familiar with Java and have already used Eclipse (the Development authoring environment) getting your first app working should be fairly simple.
If you’ve never coded anything in your life before, you will have a lot to absorb as you move forward, but don’t get discouraged. I was never a “real” programmer, but did most of the work of developing Functional specs, Art assests, doing level design , sound effects and managing the day to day procees of the Software Developmnet Lifecycle. I never really had an interest in programming until recently and I picked it up in short order. You can too!

Get the SDK

The first step in getting started with the Android platform is to get the Android SDK (Software Development Kit). The SDK has the core libraries, an emulator, tools and sample code. I highly recommend using Eclipse and the android eclipse plugin. Eclipse IDE for Java Developers is fine if you are just doing Android. If this is your first Java development project, you will want to download the full Java SE Development Kit (JDK) as it contains tools you will need for signing and deploying your application.

Learn the application architecture

As tempting as it may seem to just dive right in, it’s very important to understand the android application architecture. If you don’t learn it, you may design things in such a way that will make it very difficult to fix problems with your game down the line. You will want to understand Applications, Activities, Intents and how they are all related to each other. Google has provided good information on the architecture here. The really important thing is to understand why your game may need to consist of more than one Activity and what that means to designing a game with good user experience. This is where things tie in to the Activity lifecycle.

Learn the activity lifecycle

The activity lifecycle is managed by the Android OS. Your activity will be created, resumed, paused and destroyed as the OS dictates. Handling these events correctly is very important to having an application that behaves well and does what the user perceives as correct. It’s very good to know how all of this works before you start designing your game because you will save yourself debugging time and costly redesign time later on. For most applications, the default settings will work but for games, you may want to consider turning the SingleInstance flag on. When set as default, android will create new instances of the activity as it sees fit. For a game, you may only want to have 1 instance of the game activity. This has some implications for how you need to manage the state of things but for me it solved some resource management issues and it should be considered.

The main loop

Depending on what type of game you are writing, you may or may not have a main loop. If your game is not time-dependent or if it only responds to what the user does and will wait forever for user input without making any kind of visual changes, you may not need a main loop. If you are writing an action game or a game that has animations, timers or any kind of automation, you should seriously consider using a main loop.

The main loop of a game is the part that “ticks” sub systems in a specific order and usually as many times per second as possible. Your main loop will need to run on its own thread. The reason for this is that Android has a main UI thread and if you don’t run your own thread, the UI thread will be blocked by your game which will cause the Android OS to not be able to handle any of its normal update tasks. The order of execution is usually as follows: State, Input, AI, Physics, Animation, Sound and Video.

Updating State means to manage state transitions, such as a game over, character select or next level. Often times you will want to wait a few seconds on a state and the State management is the part that should handle this delay and setting the next state after the time has passed.

Input is any key, scroll or touch from the user. It’s important to handle this before processing Physics because often times input will affect the physics so processing input first will make the game more responsive. In Android, the input events come in from the main UI thread and so you must code to buffer the input so that your main loop can pick it up when the time comes. This is not a difficult task. Defining a field for the next user input and having the onKeyPressed or onTouchEvent set the next user action into that field is all that will be required. All the Input update needs to do at that point is determine if it is valid input given the state of the game and let the Physics side handle responding to it.

The AI (Artificial intelligence) update is analogous to a user deciding what they are going to “press” next. Learning how to write AI is out of the scope of this article but the general idea is that the AI will press buttons just like the user does. This will also be picked up and responded to by the Physics update.

The Physics update may or may not be actual physics. For action games, the point of it is to take into account the last time it was updated, the current time it is being updated at, the user input and the AI input and determine where everything needs to be and whether any collisions have occured. For a game where you visually grab pieces and slide them around, it will be the part that is sliding the piece or letting it drop into place. For a trivia game, it would be the part deciding if the answer is right or wrong. You may name yours something else, but every game has a part that is the red meat of the game engine and for this article, I’m referring to it as Physics.

Animations aren’t as simple as just putting an animated gif into your game. You will need to have the game draw each frame at the right time. It’s not as difficult as it sounds. Keeping state fields like isDancing, danceFrame and lastDanceFrameTime allows for the Animation update to determine if its time to switch to the next frame. That’s all the animation update really does. Actually displaying the change of animation is handled by the video update.

The Sound update handles triggering sounds, stopping sounds, changing volumes and changing the pitch of sounds. Normally when writing a game, the sound update would actually produce a stream of bytes to be delivered to the sound buffer but Android manages its own sounds so your options for games are to use SoundPool or MediaPlayer. They are both a little sensitive but know that because of some low level implementation details, small, low bitrate OGGs will yield the best performance results and the best stability.

The Video update takes into account the state of the game, the positions of players, scores, statuses, etc and draws everything to screen. If using a main loop, you will want to use the SurfaceView and do a “push” draw. With other views, the view itself will call the draw operation and the main loop won’t have to do it. SurfaceView gives the highest frames per second and is the most appropriate for games with animation or moving parts on screen. All the video update should do is take the state of the game and draw it for this instance in time. Any other automation is better handled by a different update task.

What’s this code look like? Here’s an example.
public void run() {
while (isRunning) {
while (isPaused && isRunning) {

private void update() {

3D or 2D?

Before you start on your game, you need to decide if you’re going to go 3D or 2D. 2D games have a much lower learning curve and generally are easier to get good performance on. 3D games require much more in-depth math skills and may have performance issues if you are not very careful. They also require the ability to use modeling tools like 3D Studio and Maya if you intend to have shapes more complex than Boxes and Circles. Android supports OpenGL for 3D programming and there are many good tutorials on OpenGL that one can find to learn it.

Build simple, high quality methods

When getting started, make sure that you avoid writing one big long monolithic method that is “the game.” If you follow the main loop pattern that I described above, this should be fairly easy. Each method you write should accomplish one very specific task and it should do so error-free. For example, if you need to shuffle a deck of cards, you should have a method called “shuffleCards” and that should be all it does.

This is a coding practice that applies to all software development but it’s particularly important in game development. Debugging can get very difficult in a stateful, real-time system. Keep your methods small and the general rule of thumb is that each method should have 1 and only 1 purpose. If you’re going to programatically draw a background for a scene, you may want a method called “drawBackground.” Things like that will make it so that you develop your game in terms of building blocks and you will continue to be able to add what you need without making it too complex to understand.

It’s all about efficiency!

Performance is a major issue for any game. The goal is to make the game as responsive as possible and to also look as smooth as possible. Certain methods like Canvas.drawLine are going to be slow. Also drawing an entire screen-sized bitmap onto the main canvas every frame will also be costly. Balancing things like that is necessary to achieve the best performance. Make sure to manage your resources well and use tricks to use the least amount of CPU to achieve your task. Even the best game will not be very fun if it can’t perform well. People in general have little tolerance for choppiness or poor response.

Tips and Tricks

Take a look at the example for LunarLander in the SDK. It uses a SurfaceView and that would be the appropriate view to use for a game that needs the highest number of frames per second possible. If you’re going 3D, take a look at GLSurfaceView. It takes care of the OpenGL device initialization and provides a mechanism for rendering. For LightRacer, I had to optimize the way I have everything drawn or else the framerate would be drastically lower. I drew the background to a Bitmap only once which was when the view is initialized. The light trails are in their own bitmap which gets updated as the racers move. Those two bitmaps are drawn to the main canvas every frame with the racers drawn on top and then finally an explosion. This technique made the game run at a playable rate.

It’s also a good practice to have your bitmaps be the exact size you intend to draw them on screen, if applicable. This makes it so that no scaling is needed and will save some CPU.

Use a consistent Bitmap Configuration (like RGBA8888) throughout the game. This will save the graphics library CPU in having to translate the different formats.

If you’re determined to develop a 3D game but have no 3D knowledge, you will want to pick up a book or two on 3D game programming and study up on linear algebra. At a bare minimum, you must understand dot products, cross products, vectors, unit vectors, normals, matrixes and translation. The best book I have come across for this math is called Mathematics for 3D Game Programming and Computer Graphics. But really. This should be more about your third game. I started out in 3d game development back when the DOOM II ray-caster engine was all the rage and there is A LOT that goes into designing a 3d engine. It may just be a tad out of scope for your first project.

Keep the sound small and at a low bitrate. The less there is to load, the faster loading times will be and the less memory the game will use.

Use OGGs for sound, PNGs for graphics.

Make sure to release all media players and null out all of your resources when the activity is destroyed. This will ensure that the garbage collector gets to everything and that you don’t have any memory leaks between launches of the game.

Join the Android Google group and find community support. There will be people that can help you along the way.

Above all, spend time testing and retesting and making sure that every little thing works exactly the way you would expect it to. Polishing the game up is the longest and hardest part of development. If you rush it out to market, you will probably have a disappointed crowd and blood thirsty reviews You may feel that all your hard work is wasted. It’s not possible to have 100% of people love what you write but you should at least try to put out the highest quality work that you can.


Published by Hue on 18 Mar 2011

Android marketplace announces new stat tools!

Great news! More stats for better Business Intelligence! The marketplace is coming a long way!


Application Statistics is a new type of dashboard in the Market Developer Console that gives you an overview of the installation performance of your apps. It provides charts and tables that summarize each app’s active installation trend over time, as well as its distribution across key dimensions such as Android platform versions, devices, user countries, and user languages. For additional context, the dashboard also shows the comparable aggregate distribution for all app installs from Android Market (numbering in the billions). You could use this data to observe how your app performs relative to the rest of Market or decide what to develop next.


Published by Hue on 18 Mar 2011

New Interface for Mobile Devices


The huesgfx Tech and Digital Blog is now formatted with a mobile theme for visitors on Apple iPhone / iPod touch, Google Android, Blackberry Storm and Torch, Palm Pre

It works by automatically detecting supported devices like iPhones, iPads, Android & Blackberry  and serving its optimized theme instead of our regular desktop theme. 

Visitors can always switch back to your desktop theme if they choose.