Design Tips When Porting Mobile to Console
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
The Ouya game console officially launches June 4th, but has already been sending out Kickstarter backer versions. The game store itself is live. I've had a dev kit console for some time and have been working on an original game for it called Pig Eat Ball. I'm interested in this console, am making a game for it, and want it to do well. It's a low cost console, but doesn't need to come off as cheap. What can make it look cheap and neglected? Quick ports.
|Let's turn those shoddy port faces upside down.|
Obviously since the Ouya is Android-based many developers have ported their existing games from mobile over to the Ouya. This is fine and many of these games are very polished like Knightmare Tower, Beast Boxing Turbo, and Gun Slugs.
After playing lots of games currently on the Ouya store, I've been seeing a trend in which a few irksome issues keep cropping up. Here is a simple checklist for developers to consider before releasing games to console. This in general could apply to all mobile-to-console, but I'm specifically thinking of the Ouya (could be for GameStick, others too).
- Analog controller sticks require a dead zone. Many, many, many games I've played on the Ouya store have a 'drift' in their controls. It's extremely annoying, especially considering most games on the system currently are action games requiring precision input.
- It usually manifests by tapping the left analog stick to move, and after releasing the stick, the character/cursor/etc continues to move in that same direction.
- This is easy to fix--in the code, when you get the X,Y back from the left analog stick, measure the distance of this vector and if it's less than a certain amount, disregard the stick press.
- I'm pretty sure there's even example code on the Ouya dev site, but I'll present some here just in case.
- static private float stickMag(float axisX, float axisY
float stickMag = (float) Math.sqrt(axisX * axisX + axisY * axisY);
- The float returned from the stickMag function will tell you the length of the vector made by the left stick input. It should be between 0 and 1.0f. The Ouya controllers are pretty gummy, so try making the dead zone fairly large like 0.35f. That is, all input lower than 0.35 in length is ignored.
- For a more detailed and nuanced approach to handling deadzones see this article here.
- Make a selected menu option >>obviously<< different from the other options. Being presented with two options such as an in-game store "Buy" "Cancel" and seeing one yellow and one white is not helpful. Some games will say yellow is the selection and some will say white. Simple color coding is not intuitive and it's easy to fix.
- There are many simple ways to show something is the current menu option that is selected.
- Drastically increase the size of the text.
- Put a special background behind the selected text
- Put a special pointer graphic off to the left
- Pulse the scale of the selected text
- Put some simple particle effects on the selected text
- Support both analog stick and d-pad input for character movement and menus. Especially on menus but also in the game. It's just common courtesy to allow for input for both. Some people like to play with the left stick and some like the dpad. I've played games that for some reason only allow d-pad input on the menus. I've also seen games that would work fine with d-pad in the game, but only allow the left analog stick on menus (in games where the choice of stick/d-pad really didn't matter. Yes I understand it's possible it could important in a game, but it's very common that the game would be fine with either input).
- Remove mentions of touch/mobile controls. Seeing things like "Tap the screen to continue" or "Press here to continue" when that function is not supported anymore in your game looks rushed and sloppy. Remove all "tap", "swipe" terminology from your game unless it's actually using the mini-touch-pad as the only input.
Please don't make us do this.
- Even if it *is* supported to allow the player to tap a portion of the screen to continue on a menu, the touch pad is a chore to use. Support button input, and show button tool-tips.
- Remove HUD graphics that are obviously just left over from the mobile version. Based on real examples I've played: When the O button on the Ouya makes the main character shoot, don't leave a big button on the HUD, taking up space, that lets you shoot if you manage to click on it via the touch pad. Sure it's technically possible to click on the button to shoot, but it's very ineffective and the game already has a button on the controller dedicated to that action. It's just wasting screen space, and again looks sloppy.
- Don't leave the || (pause button) on the screen as *the* way to pause the game via the touch pad. It's terribly slow to try to pause like that. Use the Ouya system button or another face button.
- Please put an Exit option in the game. Yes the Ouya system button can do this, but you can just as easily present the player with a simple option to turn off the game if they'd like to do so.
- Remove unused manifest settings. This may be an Ouya system issue, but I've seen some games that when installed prompt that they may need to make phone calls. I'm pretty sure the Ouya can't make phone calls, but if it can, is your game really making calls? The ones I saw with this requested never made calls. If it's not needed, just remove it--it looks sloppy.
|Quick--save her! But do you have the right one selected?|
First and foremost--please, PLEASE use a dead zone on your left analog stick input. If you've taken anything from this article, go to your code now, and implement a dead zone. Now. This is really bad, as it's making your play experience worse.
Everything else on the list is good too. Basically it means you really cared about bringing your awesome game to new people. No one likes a sloppy port. No one wants to see "Press Start" in their PC games when they don't support controller input, and no one wants "Tap Screen to Continue" in their console games.
They want to think the neat, new game they are considering purchasing was made special just for their system, just for them. You worked really hard on your game. Ports are annoying--I know from experience. Put in that extra effort, clean up your game some more, and make it a AAA port. Good luck! Gamers will thank you.