Developing for Mobile Devices
Developing for Mobile Devices
When considering a platform for a game it is important to consider the constraints and use cases that come with it. When we say “mobile” we are referring to tablets and smartphones.
|Input Type||Mouse + Keyboard||Touch|
|Input Precision||High Precision||Low Precision|
|Screen Distance||1-2 feet||~10 inches|
|Session Length||~30 minutes||~5 minutes|
After choosing the right platform for the game, keep the above in mind while designing the game experience.
Best Practices for Mobile Games
Using the platform constraints above we suggest keeping the below in mind as the game interactions are designed:
- Simple interactions - A player only has two hands, this limits the number of interactions they can do simultaneously. Many successful mobile games limit camera control or character movement to lower the common actions from three to two or one action.
- Minimal HUD interface – The screen space is considerably smaller on mobile devices, which makes what is on screen even more important. Give the player only the most vital information to the game on the screen. If there are additional information or menus, we suggest that those be put on full-screen menus to allow for as much screen visibility while in the action of the game.
- Finger size UI elements – Suggested touch target size is 44-48px square (See Resources below for more UI design guidelines)
- UI should use relative space (not absolute) – Mobile devices have various different screen resolutions, relative space will allow the UI to conform to the different sizes.
- Limit Chat based gameplay – Chatting on mobile is an entirely different experience than on PC. Keep in mind that the keyboard takes up 60-80% of the screen real estate and thus interrupts gameplay for the player. While a chat environment can be nice, it shouldn’t be the central focus of the gaming experience (unless your game mechanic/focus is chatting).
- Memory usage - This is most important to watch for while developing for Mobile, as this is what causes most crashes. Memory usage can increase when a game uses a lot of parts or loads a lot of textures, stores large data structures in Lua, etc. As mobile devices differ, it is impossible to give a particular memory usage to target, but it is important to keep in mind.
- Automated filter of Games - Due to the high crash rate of many of the games (see above) Roblox automatically filters out such games to create a high-quality experience for the App user.
- Optimize level size - All devices are not made the same; phones and tablets are not as powerful as a PC. Large levels can be difficult to run on the smaller devices. Be considerate of this since the game level(s) are designed. Fortunately, if you are trying to keep your mobile game simple and focused, a smaller memory footprint almost always follows.
Universal vs Targeted Platform Games
When developing it’s also good to keep in mind if the game will be on multiple platforms. In fact, it is best to consider what platforms you want your game to run on before you start developing, as this can influence game design. Roblox provides lots of infrastructure to accommodate a wide array of screen sizes and input types, but not every type of game will play well across all of these combinations.
As an example, It is important to note that starting with mobile and adding PC is much easier than the reverse. This is due to the simplicity and restricted space being the starting point, with opportunities to add onto in the PC version. PC is more complicated because getting the same elements to work on such a small screen usually means prioritizing things differently and simplifying the gameplay.
This means there is one Roblox place that is able to morph to work across all platforms supported by Roblox. Gameplay is able to transition and work in all places. Typically takes some specialized code to target different input types and screen resolutions.
This means that there were decisions made to have the game only work for a specific platform(s). Such things could be: input method (gestures), camera controls, player movement, guis, etc.