Designing for NVIDIA SHIELD
NVIDIA® SHIELD™ is a high performance Android gaming device with a powerful NVIDIA® Tegra® 4 processor containing a quad-core ARM Cortex A15 and an advanced 72-core ULP NVIDIA GeForce® GPU. Housing a 5-inch 720p retinal quality display and console-grade game controller, SHIELD can be used as a handheld device or connected to a TV via HDMI or wirelessly via Miracast. It is anticipated that many similar devices will become available in the near future. Developing for these devices is a little different to regular Android development.
- Form factor affects game design, particularly using the controller as the primary input device.
- Customers are looking for broader deeper experiences.
- Exploiting the hardware including the programmable graphics pipeline can require native application development in C++ rather than Java.
Game Design Considerations
The most popular games today for phones and tablets take advantage of the spatial characteristics of the touch screen. Touch is great for some games however it is not ideal for intense gaming where the player needs to interact precisely without looking at their fingers and obscuring the screen. For this reason console style controllers with dual analog sticks are popular. Another option for controls is via motion with the acceleromter and gyroscope. Aside from the SHIELD form factor, use cases such as connecting a Bluetooth game controller with a tablet or phone are becoming more popular. Therefore, considerations for controller based controls should be made for all Android game developers. Note that designers should be mindful to allow the controller to interact with the user interface as well as for the main game controls.
This image shows the layout and buttons on SHIELD.
For more information on using game controllers see the Tegra Android Documemtation.
SHIELD also contains a GPS and has 3 Axis Gyro and a 3 Axis Accelerometer allowing tilt determination for game play. A forward facing mic is avaliable in SHIELD for voice recognition based input.
Small Screen / Large Screen
A UI designed to look and work well on a 5" touchscreen may be a little overwhelming on a 72" television. With the HDMI out support, developers should consider various resolutions and screen sizes when designing their game. SHIELD supports up to 4k video via the HDMI out.
App Design Considerations
SHIELD is designed primarily for landscape orientation use with its 720p, 5" screen. For these reasons all Android apps should be developed to supporting landscape orientation. This includes support for landscape orientation in log-in screens and start up animations. Do not assume the device is a phone (and default to portrait orientation) when a 5" physical screen is detected. Additionally, many Android devices have the option of connecting to a TV via HDMI which is typically setup in a landscape orientation in most households.
The Android Lifecycle
Android applications have to obey certain rules in order to cooperate well with the operating system. These requirements are similar to console development but may seem strange to PC developers. NVIDIA provides documentation and sample code that function details best practices and can be used as a great starting point for developers.
Measure and Understand Performance
With any platform understanding the performance is key. Profile early and often to ensure you understand how your product is performing on the target. NVIDIA provides profiling tools and native debugging tools that integrate right into Visual Studio or Eclipse for ease of use. These tools are available bundled with the Tegra Android Development Pack (TADP).
Native Development (NDK)
The standard Android Java development environment may be sufficient for fixed function only or 2D games, but in most cases, developers will need to make use of Android's "native" environment for the best performance. Setting up a project for native development can be a little tricky. NVIDIA provides the Tegra Android Development Pack (TADP) to make things simpler for Tegra developers. The development pack includes development tools and a variety of useful samples that will allow developers dynamically pick and choose the tools they need for their development environment, from the Android SDK to Tegra Android Operating System images, minimizing the time spent hunting for the right software versions and files to download.
OpenGL E.S 2.0 for Graphics
OpenGL is an open standard for 2D and 3D graphics programming. It continues to evolve to support the newest features and techniques in computer graphics. OpenGL ES (the E.S. stands for Embedded Standard) is a version designed especially for mobile embbeded devices. You can learn about OpenGL at http://www.opengl.org/
Most devices available today contain at least 2 CPU cores. The Tegra 4 processor powering NVIDIA SHIELD is equipped with a 4+1 core ARM Cortex A15 processor and can have up to four CPUs running simultaineously. If your game runs in a single thread, you can never exploit more than ¼ of Tegra's potential horsepower. By making intelligent use of multithreading you can achieve higher performance splitting tasks across multiple cores. Typically games will have game logic, scene update and render threads that run on different cores. PhysX and other engines also get to exploit the parallelism inherent in Tegra's multicore system.
When developing for a range of devices with different performance profiles, developers should take scabability into account. Unfortunately, some features are harder to scale than others. For instance particle counts and post processing steps are areas where more powerful devices can shine whilst providing the same in a lower powered device will hinder performance. One strategy would be to pick a device as the minimum spec and ensure performance is adequate on this device and scale up from there.
NVIDIA works with all the major game engine and tools providers to ensure the best possible performance on SHIELD and Tegra products. Additionally, if there is a custom library or tool that you would like for your game and it supports Android, using it on SHIELD should work out of the box as SHIELD is a fully compliant Android device.
SHIELD devices are available now for developers and the general public in North America! To get your hands on one, check the SHIELD website. If you can't wait for delivery and want to get to grips with Android development straight away, you can get underway with almost any Android device using a Bluetooth or USB game controller. These are available online and in stores where video games are sold.