Play and Develop anywhere with Stadia
Since Stadia's launch in November 2019, we have been delivering on a vision of enabling gamers to play their games on virtually any screen. But what about game developers?
Until recently, the core development loop has been limited to the Test Client, a web-based client similar to stadia.com, that developers use to stream games on their workstation. The Test Client is more than just a streaming client; it also contains several tools that allow developers to understand how their game will react to changing conditions, such as when a user switches to a screen with different capabilities, or plugs in a different gamepad, or even when network conditions change.
There are situations where it is desirable to iterate on a player client where end-user gamers ultimately will be playing. Examples include debugging a game crash that only reproduces on a particular client, evaluating usability on different screen sizes, or debugging game interactions with platform overlays such as unlocking an achievement or completing in-game purchases. Developers have always been able to publish games internally, and play them on player clients (such as Chromecast, Google TV, mobile, and stadia.com). Unfortunately this process requires developers to upload a full build of their game, which is not convenient when rapidly iterating on code or assets.
We wanted to reach a point where developers can rapidly iterate on player clients, while at the same time providing all of Test Client’s debugging tools. Developers should be able to use their familiar tools, including Microsoft Visual Studio, to start a game on any player client.
Enabling developer iteration on player clients required a fundamental redesign of Stadia’s game launch flow. Replacing the services which support Stadia’s most critical user journey could be a blog topic on its own, but we will focus on the key changes that enabled developer iteration on player clients:
1) Decouple the game launch configuration from actually starting the stream
The new system, which we have referred to internally as Launch Anywhere, allows developer tools to initialize the game launch and allows the developer to start streaming on any player client where the developer is signed in.
|Developer tools have an option to select the player client|
For example, a developer makes a code change to their game. To test their code change the developer starts the game from Microsoft Visual Studio with the option “All player endpoints”. The developer happens to have Stadia open on both their Chromecast and their mobile device so a notification appears on both of these player clients that there is a pending developer launch. The developer uses their Chromecast to complete the launch and stream the game to their Chromecast, where they are now able to validate the experience.
|Launching a game directly to a player client|
This has a number of benefits:
- Player clients don’t need to be aware of the many configurable launch options available to developers. This includes the binary name, parameters, environment variables, asset sources, configuration for additional tooling, etc.
- Developer tools don’t need to be aware of the different player clients / devices and how to communicate with each one. For example, developers can launch on any player client with a debugger attached.
- The configuration of the current game launch is available to other developer tools used for monitoring game sessions. We will cover this in the next section of this article.
This allows us to add new developer tools and player clients without changes to existing tools and clients.
2) Enable developer tools to monitor and control the game regardless of player client
Player clients do not have the same developer-focused tooling built into Test Client, so it was important to enable developers to monitor and control the game regardless of which player client they use. To this end we introduced a new tool which we call Test Hub, a web portal designed to monitor and control developer sessions independent of the player client.
|Monitoring a game run in Test Hub|
Test Hub puts all of the details of the game at the developer’s fingertips, including game session details, game logs, improved feedback when a game ends unexpectedly, real time performance monitoring, and calculators to help verify that the game meets platform requirements. This analysis happens automatically in the cloud, without the need to use specialized software on a local device.
The monitoring tools are already available for Stadia developers to help ensure the game will meet Stadia technical requirements when submitted for certification. We’re now working to expand Test Hub to include many of the developer tools found in Test Client such as network emulation, forcing 4K rendering, simulating different gamepads, and graphics debugging. A future blog post will dive deeper into Test Hub.
Launch Anywhere and Test Hub deliver on one part of a bold vision for cloud development. Every screen is now a development kit, instead of a separate configuration that is only tested when preparing for certification. We have made it easier for developers to develop and certify their games on the same player clients that gamers enjoy, improving the quality of the experience, and making it easier to bring content to the platform.
-- Yadhav Balakrishnan, Senior Software Developer
-- Bryan Coutch, Senior Software Developer
-- Anton Markov, Senior Software Developer
Microsoft and Visual Studio are trademarks of the Microsoft group of companies.