Faster Iteration, Smarter Playtesting: Code Wizards' GameLift Manager
When any of Code Wizards' tech partners launch shiny new tech, our Marketing Wizard gets all excited and starts pestering his colleagues for information on what it all means - for us, for them, for the industry.
So imagine his delight and surprise when, in the wake of the announcement of Amazon GameLift Streams, he finds that not only have the Wizards developed a complementary web app, but they've written a whole article about it!
Here it is - app and article written by Curt Anderson , Jon K. and Carl Ind . Enjoy! (I'm off to see what other aspects of my job the engineers can do for me...)
GameLift Stream and Studios in the Cloud
So, what’s the problem then?
The scenario is one seen the whole world over: a Studio Director has a 40GB build, a mostly hybrid workforce—Gabe love 'em—in 3 different time zones, a nightly build, and a dozen testing branches.
At least 50% of the time, they have no idea which build they will need to use until the day before a playtest, and home internet isn't the same speed for everyone, meaning getting everyone on the same page quickly and consistently is a real challenge in such a fast-moving environment.
What can they do about it?
Leave it to the Wizards!
With the release of Amazon GameLift Streams on AWS, we can now push our client builds to remote, privately accessed infrastructure.
When combined with the freshly renamed Amazon GameLift Servers, this new tech opens up many possibilities for remote playtesting and speedier development iteration. In eager anticipation of this launch, we've been squirrelling away creating a "Studio-in-the-Cloud" platform for studios looking for this sort of thing (something we’re seeing more and more of).
In short, with some clever engineering, we now have pipelines to push multiple client & server builds to remote-access-anywhere services, maintaining secure access through VPN and SSO systems.
The audit system provides detailed information about each user's GameLift Stream session, such as exact build versions used, stream session length, and what session logs are accessed and downloaded.
The GameLift Manager uses a backend server to facilitate user authentication and action auditing. Each login, option change, and stream session is tracked and securely stored so that users have a reliable and accurate record of each test iteration run through the GameLift Manager. The amount of customisation both GameLift Servers and Streams offer makes understanding what changes are made and how long features are used important, not just from a user experience perspective but also from a security standpoint.
How does it work?
You build your game client and server through your build method of choice.
You tag (e.g. folder) each build with a build ID and push them to an S3 bucket. The S3 is the ingestion point for automatic deployments to both GameLift Servers and GameLift Streams. Pipelines then create new fleets for servers and new Stream groups for the client.
Recommended by LinkedIn
All these deployments are tracked, and each has a half-life unless otherwise specified. This means automatic cleanup after each user session! Sweet, sweet cleanup.
From an interface perspective, we are targeting power users here and not necessarily just engineers, so what we've put together sits between the Stream and Servers services, seamlessly integrating them into one single package.
This results in a user-friendly CICD pipeline with automatic compatibility for both client and server builds.
The GameLift Manager platform utilises an in-house GameLift Server wrapper that allows us to wrap any game with a GameLift-compatible coating, allowing us to call server functions like starting or terminating without the need to change any code directly.
This solution also allows us to maintain a minimum number of fleet instances, saving a tonne of spin-up time. Download Manager, an application that runs on an EC2 server, helps provide this functionality. It automatically downloads the latest builds as they become available and places them directly into the running fleet without any need for restarting.
From the GameLift Manager app, we can select our desired build from the downloaded collection and boot it directly, making deployments quick, easy, and efficient.
The app frontend is a single-page application that seamlessly integrates GameLift Servers and Streams into a single interactive package, allowing for rapid iterative testing with just the click of a button.
Users can select which specific server-side and client-side builds they want to use on any fleet and set any arguments or properties for each before launching a session. They can also customise the GameLift Servers and Streams properties associated with each fleet! No more manual configuration!
Launch the game client from the integrated GameLift Streams interface, and the service will automatically start a session placement on the build-appropriate fleet, retrieve the IP and Port for the placement and automatically connect to it on the client.
Once the user is happy with the parameters and options set, just one click of the Stream button will allow the GameLift Manager to spin up the selected server and connect the client, finally opening a GameLift Stream connection, allowing the user to test the game instantly and all within the browser.
When testing has concluded, the stream can be closed, and any associated server-side or client-side logs from the stream session can be downloaded directly from GameLift's services.
The result?
Playtesting, iteration, and build management made simple.
Right now, our GameLift Build Manager is the art of what's possible. Get in touch to see how we could build or integrate something exclusively for you!
A big shoutout to Carl Prescott 🔜 GDC for his insight and assistance on this project.
exciting opportunity Code Wizards
Cool! Good job CW team!
Jon K. pictured