This Guidance helps you set up a complete game production environment for the Unreal Engine that is highly available and delivered with reduced latency to users. It also accelerates compute-heavy tasks by distributing work to other machines on demand through a high-performance virtual workstation and a centralized version control system. The sample code shows you how to set up this game production environment for your team.
Please note: [Disclaimer]
[Architecture diagram description]
The GPU-based virtual workstation hosts a NICE DCV server, providing end-to-end security between the remote client and the EC2 instance. The virtual workstation can access private resources, such as the Perforce Helix Core version control system through the Amazon Virtual Private Cloud (Amazon VPC).
The NAT gateway allows resources in the private subnet to access resources over the public internet, such as license and update services.
The Unreal Engine Swarm coordinator, which is responsible for distributing build tasks, is a private resource, available only to resources in the Amazon VPC. The Swarm coordinator has its own EC2 instance, isolating it from any downtime in other instances and creating a microservices environment.
Unreal Engine Swarm Agents are responsible for using system resources to complete jobs assigned by the Swarm Coordinator. Instances hosting the agents are placed in an Amazon EC2 Auto Scaling group which allows Swarm Agents to be added or removed as workload demands change.
The version control system (Perforce) is in its own instance, following the microservice pattern. This isolates it from any downtime in other instances and facilitates more complex repository structures if required.
The AWS Well-Architected Framework helps you understand the pros and cons of the decisions you make when building systems in the cloud. The six pillars of the Framework allow you to learn architectural best practices for designing and operating reliable, secure, efficient, cost-effective, and sustainable systems. Using the AWS Well-Architected Tool, available at no charge in the AWS Management Console, you can review your workloads against these best practices by answering a set of questions for each pillar.
The architecture diagram above is an example of a Solution created with Well-Architected best practices in mind. To be fully Well-Architected, you should follow as many Well-Architected best practices as possible.
AWS Cloud Development Kit (AWS CDK) allows for consistent, repeatable deployments of the development environment elements. This removes sources of error during deployment, which improves security and reliability and reduces cost. Amazon CloudWatch provides operational metrics and logging for development environment resources. Automated, consistent, repeatable deployments through AWS CDK logging with CloudWatch allows application components of the development environment to have a single location to log, no matter how many resources have been scaled up. Operational and health metrics also scale and are on by default for all services in this Guidance.
NICE DCV secures both pixels and end-user inputs using end-to-end AES-256 encryption between the client and server. It also requires authentication from the client before allowing a connection. Since the workstation is in a public subnet, it’s important that communication between the workstation remote service and client is secure and that clients without authentication credentials are unable to access the workstation.
Amazon VPC allows separation of concerns. Its “private by default” policy adds security to resources that don’t need to be exposed to the public internet. Most of the resources in the development environment have no need to be exposed to the public internet and are placed in private subnets in the Amazon VPC that can only be accessed by other resources in the Amazon VPC.
Amazon Elastic Block Store (Amazon EBS) decouples storage from the instance. Amazon EC2 allows deployment to multiple isolated Availability Zones within an AWS Region, which maximizes availability of the application and provides robust disaster recovery. Amazon EBS allows Workspace, Perforce, and Unreal Swarm Coordinator instances to fail while preserving data and allowing easy snapshots for backups.
Amazon EC2 Auto Scaling allows build resources in the development environment to scale out on demand. Specifically, Unreal Engine Swarm and Incredibuild agents can scale up when there are large build tasks or a large number of build tasks, thereby decreasing build times and increasing iteration times. Amazon EC2 allows you to deploy to AWS Regions or AWS Local Zones that are geographically close to users, helping reduce latency between local clients and remote servers and optimize the virtual workstation experience. NICE DCV provides optimized protocols to minimize the amount of data that needs to be transferred between the client and server, allowing higher frames-per-second rendering and less perceptible latency between inputs and display.
Amazon EC2 allows you to choose a variety of instance types and payment models to optimize costs for their specific workloads. This helps you match workloads with lower cost options. Additionally, on-demand instances minimize the need to pay for servers that aren’t in use.
Amazon EC2 Auto Scaling and Amazon EC2 instance types help you provision the minimum required resources to match workload needs. Minimizing resources to fit workloads—whether through scaling or choice of instance types—allows you to build efficient services that minimize the environmental impact of your workload.
The sample code; software libraries; command line tools; proofs of concept; templates; or other related technology (including any of the foregoing that are provided by our personnel) is provided to you as AWS Content under the AWS Customer Agreement, or the relevant written agreement between you and AWS (whichever applies). You should not use this AWS Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the AWS Content, such as sample code, as appropriate for production grade use based on your specific quality control practices and standards. Deploying AWS Content may incur AWS charges for creating or using AWS chargeable resources, such as running Amazon EC2 instances or using Amazon S3 storage.
References to third-party services or organizations in this Guidance do not imply an endorsement, sponsorship, or affiliation between Amazon or AWS and the third party. Guidance from AWS is a technical starting point, and you can customize your integration with third-party services when you deploy the architecture.