Tuesday, January 28, 2014

Game consoles are built with only one goal in mind, and that is to create an awesome gaming experience for gamers.

Serious gamers are mostly to be found playing console games and the rest almost exclusively use personal computers to play games. In the past, if one wished for a portable gaming device, then their options were limited to portable game consoles such as the Nintendo DS or Sony’s PSP.

However, smartphones and tablets have been steadily gaining ground as gaming platforms due to their portability, ubiquity, increasing processing power, better and bigger screens and an army of developers with the requisite skills to create games for the various mobile devices like the Android and Windows Phones. Of course, iPhone app development is included in the mix.

This means that you as a game developer/publisher have to decide which platform/s to target first when creating your game. If you, however, decide to target the console market, you would probably want to ‘transfer’ or port the game eventually to mobile operating systems due to their widespread use and potential market. There are, however, things you will need to do and challenges to take into consideration before you can successfully deploy your game on smartphones.

Challenges in Porting Games

One of the challenges to overcome is the difference in hardware. Smartphones have grown more powerful each year yet when you compare them with game consoles, they are way less powerful. Game consoles also have very powerful GPUs and thus handle graphics better. This means that a game that placed minimum strain on game consoles would not run at all in most smartphones and strain most tablets if they were placed under similar computing needs. This means that your game must be re-designed and re-worked, taking into consideration the target devices’ capabilities.

If you are porting your game so as to target mobile devices, you must also take into consideration the various hardware capabilities available on mobile devices but not on games controllers, such as the ability to control game play via a touchscreen.

Games targeted at mobile devices much also allow for the different functional purpose between mobile devices and game consoles: while a game can hog all resources on the game console assured it has all computing resources to itself, on mobile operating systems the game has to ‘play nice’ with other apps installed on the mobile devices. Given that no one would ever play your game again if it were the reason they missed an important interview or a deal fell through because a phone call was made but the game was using the CPU or speaker, you must change your game so that gives some activities (like incoming calls) priority, and resume gaming when the user returns.

You must also factor in the differences between the controllers for a game console and a mobile device. Most game controllers have some input devices such as joysticks not available to mobile devices, which similarly will have different controls such as swiping for mobile devices with touchscreens. Telling a gamer using a touchscreen smartphone to move the joystick to the left does not inspire much confidence in your game and shows lack of attention at best on the side of the game developer.

You may and probably will have to change the way the gamer interacts with your game, for example, by substituting touch motions for key presses. Another motivation for changing the interactivity mode and intensity of play not only due to computing resources required and controllers used is the target audience. Most game titles for home consoles are targeted towards hard-core gamers who will create time in their schedule for gaming and end up not sticking to it after they start playing, while most mobile devices games are for casual gamers catching a break in between classes or work. Thus, they need to be hooked to the game the first few times they play it and it must have shorter playtime.

Languages for the devices may also vary, requiring automatic code conversion and tweaking or a complete rewrite in the language supported.