Amazon Game Tech Blog

Crucible, behind the curtain

An alien creature is firing a weapon at two human characters. One of the characters is running and has a sword at her side. The other is firing a weapon back at the creature.

Hi I’m Louis Castle, head of Relentless Studios, an Amazon Games development studio. I’m beyond excited to talk about the launch of our latest game, Crucible. Crucible is a free-to-play team-based action shooter that goes live on May 20, 2020, just a few days from today.

Release day is always both exciting and terrifying. It’s when players first see the fruit of years dedicated to a labor of love. We’ve mitigated a bit of that terror by building a robust backend. This backend helps ensure that the multiplayer experience is ready for players logging in on launch day. One thing we want to avoid is players dealing with hiccups when they get their first taste of our new game. If demand exceeds expectations, we’ll be able to scale up much more quickly than if we were running our own physical servers. How did we achieve this?

Games and serverless technology, a match forged in the Crucible

Crucible’s backend platform service is built entirely on AWS serverless technologies. This reduces our operational load considerably. With no persistent API servers in our backend, we don’t need someone up at 1 AM to reboot a box or manage certificates. We don’t have to think about the underlying system, and there’s nothing to patch or update except the code we wrote ourselves. And, scaling is automatic, with no intervention or configuration required from us.

The game servers themselves are hosted on Amazon GameLift, which offers dedicated, global, low-cost game server hosting. GameLift’s FlexMatch is a big deal for us as it makes a very complex problem simple by providing a robust match making system driven by our own rules. GameLift’s turn-key multi-region queue support is also a win. It means that game server fleets become globally distributed, and this just works. Also, as we add players, scaling is handled by GameLift automatically, again just with some simple rules set by us. Along with the serverless backend, this allows massive scale if we need it, without any additional planning. All of this saved us valuable developer time so we could focus on the needs of our game, not the needs of a service.

We also use WebSockets extensively to send notifications between the game client and the backend. This allows real-time updates for things like matchmaking, party changes, and more. Amazon API Gateway’s WebSocket technology, frankly, is fantastic to work with. If you’re a services person, you don’t care if players are coming over HTTP, WebSockets, it doesn’t matter. It’s very powerful and runs at scale.

Here’s a look at our backend architecture:

An architecture diagram of Crucible. There are four main components: a distribution platform service, a game build pipeline, a client machine and a service stage. Only the client machine and service stage have additional detail. The client machine shows a two way communication with the distribution platform service. Enclosed in the client machine is a distibution platform client which sends data to a distribution platform integration in the game client. In the service stage, there is API Gateway, Game Lift (which encapsulates a game server), Kinesis, a Lambda titled "Analytics Processor", an S3 bucket, and a Lambda titled "Crucible Game Services." The game client has a one directional connection to Kinesis labeled "Client Metrics." The game client has a two directional connection to the game server labeled Gameplay Data. The game cient had a two directional connection to API Gateway labeled "Websocket & HTTP". API Gateway has a two directional connection to GameLift. Game server has a one directional connection to Kinesis labeled "Server Metrics." API Gateway has two directional connections to game server and the Crucible Game Services Lambda. Kinesis has a one directional connection to the Analytics Processor Lambda, which then has a one directional connection to the S3 bucket. The game build pipe line has one directonal connections to the game server, labeled "Game Server Build" and to the Distribution Platform Service labeled "Game Client Build". The Distribution Platform Service has a two directional connection to both API Gateway and the Distribution Platform Client.

Gameplay, leveled up by technology

Of course a robust backend is not much use without a great game to go along with it. Though the soul of the game comes from an amazing gameplay design, appropriate use of new and advanced technologies can amplify that design. We hope to surprise and delight you with a few elements you’ve never experienced before in a game.

Crucible is built using the Amazon Lumberyard game engine. We’ve taken advantage of the fully customizable, modular nature of Lumberyard to make many game specific changes to the engine for Crucible. This includes a cutting edge lighting system, which provides stunning, performant graphics. In addition, we custom built an authoritative game server technology that provides both latency mitigation and cheat prevention.

One of the more offbeat, interesting features that we’ve added to the game is the voice of one character, Bugg, which is synthetically generated. This was made possible using Amazon Polly, a text-to-speech service. Bugg’s synthetic voice is featured along with traditional human voice actors. We initially used Amazon Polly to generated placeholder voiceovers for early testing. However, our team loved it so much we decided to actually voice a character with Amazon Polly.

A coincidence?

As it turns out, AWS Game Tech has been planning an online event called the Digital Download that happens on the same day we release Crucible. This is just a happy coincidence, I promise. If you’d like to find out more about the technologies we used to deliver Crucible, attending this event would be a great way to learn more about them and start using them yourself. Of course, you’ll have to tear yourself away from playing Crucible for a little while!

Register for AWS Game Tech: The Digital Download