SHIELD Streaming Tips for Developers
One of the new and innovative features of NVIDIA SHIELD™ family is the ability to stream games. Games can be streamed wirelessly from your GeForce® GTX-powered PC or across the internet using the GRID™ Game Service.
This document highlights some of the tips and tricks game developers can use to ensure a flawless streaming experience for the gamer, in approximate order of importance:
Fully Support Game Controllers through XInput
NVIDIA SHIELD is a portable Android gaming and entertainment device built around a console-grade game controller, so it is crucial that your game works completely with controllers, and all interaction with the controller should be through the XInput API.
Many games support controllers for gameplay, but you should keep the following issues in mind to ensure a flawless streaming experience:
- In-game menus and dialogs must be navigable by controller.
- Any pre-game splash screens or options dialogs must either be skippable via command-line setting (for example “-streaming” – see below section on “Streaming mode”) or navigable by controller.
- While all of the in-game controller interaction is driven through XInput, some parts (such as initialization or enumeration) may be driven through a different API (like HIDClass or DirectInput). To work flawlessly with SHIELD streaming, the game must use XInput exclusively.
- Refer to the NvGamepad library, a C++ library that provides an cross-platform gamepad abstraction layer for Windows and Android.
Interoperate with GeForce Experience
PC to SHIELD streaming relies on GeForce Experience on your PC to control and manage the streaming, including setting streaming-optimal settings for your game to provide an optimal quality and low latency experience when streamed to SHIELD. For this reason, it is critical that your game support GeForce Experience in modifying the settings for your game, such as resolution, other graphics settings, and input settings.
This can be done by either providing a straightforward plaintext settings file that GeForce Experience can modify or by using our upcoming GFE API for developers.
Please refer to the GeForce Experience Settings API for more details.
Avoid Tiny On-Screen Elements
SHIELD is a mobile device that has a smaller screen than your average desktop or laptop. SHIELD devices can also connect to a HDTV. Excessively tiny text or on-screen elements may be difficult to read on both small screens (5 to 8 inches) and big HDTV (10ft viewing distance), so including options to scale these up where they are critical to gameplay would be useful.
Add a Pause API
When streaming, there are certain situations where the game needs to be paused on the PC - for example, when the user hits the Android home button, or closes the lid of the device. The game should include an API to pause the game so the user can pick up right where they left off.
Include “Streaming mode” in your Game
If your game interoperates flawlessly with GeForce Experience, it will launch from the SHIELD device and start streaming optimally. However the user can still potentially go into the in-game menu settings from a SHIELD device and change settings so the game is no longer playable via streaming. Examples of this include disabling the controller input or changing the video setting. For this reason, we recommend including a “Streaming mode” (accessible by a command-line parameter, say “-streaming”, or an API you define) which prevents the user from modifying certain settings that can disable the streaming experience, such as controller input and graphics settings. Additionally, a “Streaming mode” is also a good place to include other streaming-friendly features to allow disabling of start-up launchers and options dialogs.
Additional Recommendations
- For the GRID Streaming Service, a DRM-free version of the PC Game will be required in order to run on the service.
- Games should be able to run at 60fps for minimal latency and judder free gaming.