With the in-development support for containers and container image in Unreal Engine, developers are entering a new realm of possibilities for cloud deployments and workflows. This will remove a ton of burden and overhead from cloud deployments, making them more accessible to artists who aren’t familiar with the ins and outs of cloud automation technologies like terraform or Ansible. In this blog post, we will explore containers, what’s exciting about them, what kinds are coming, and how they’ll be useful for Unreal Engine experiences.
Why are containers important?
Containers are an important technology when it comes to web apps and enterprise infrastructure. A container can be thought of like a virtual machine, except that it has less overhead and is built to still communicate with the host and with other running containers. Where you might create a virtual machine because you want to create a whole separate operating system environment that isn’t that connected with what’s going on around it, containers are more built to be portable holders of applications and dependencies that can be quickly spun up and down on many different types of hosts. Containers traditionally communicate a lot with each other to create more complex application stacks out of smaller individual apps running in containers.
Web apps and enterprise apps take advantage of the benefits that containerization can provide
- Hugely portable development environment that can be migrated with a few clicks and very little manual setup
- Easy to create template setups/systems (or download templates!) made by other pros (perhaps setups tuned for performance or permanent installations)
- Package an app so code/framework dependencies don’t conflict with other apps / frameworks on the system (folks who’ve worked with machine learning apps will likely rejoice at this!)
Containers have the opportunity to really change how we work with and deploy Unreal Engine, but it should be noted it’s currently beta feature that is being tested until it’s ready for heavy production work.
What to expect from Unreal Engine containers?
If you’ve ever tried to virtualize heavy media apps you know this can be a pain. Even running these GPU intensive apps on raw cloud infrastructures like AWS EC2 can be a bit of a pain, which is why platforms like Paperspace gained a lot of popularity. With Unreal bringing native implementations and workflows for containers means that there will likely be specific services that will help us spin up official Unreal Engine containers quickly and easily. Going through the documentation on these beta features here’s a handful of standout things to look for:
Development vs deployment images
Unreal Engine will have many different types of images shipped from Epic (more of them below). Two of the main types of images will be development images and deployment images. Development images will feel more like a normal installation of Unreal Engine and includes the editor, build tools, and everything that comes with a normal installation of Unreal Engine. For many folks, I think the development images will be the standard images used.
The other main type of image is the deployment or runtime image. This has basically everything stripped out of it except for the necessary libraries and frameworks required to run an Unreal project and generate it’s output. This means runtime images do not contain the editor, build tools for compiling your app, or anything else you might need to make changes to your project. It’s just meant for optimizing your deployment process and making a super lightweight image for running your final project.
Different operating systems
The documentation already mentions that most of the containers will use Linux as their underlying operating system, as is common with containers, but a Windows OS version will be available as well. Even though Unreal Engine is working on macOS now, because of Apple’s history of not being terribly friendly to people virtualizing it, it is unlikely we’ll see macOS containers.
Speciality types applications
One of my favourite notes in the documentation is the foresight Epic has in regards to how people are using Unreal Engine now. Even from the beta stage there are versions of the containers images made for:
- general usage for likely gaming, architectural visualizations, or any run-of-the-mill Unreal Engine application
- Pixel streaming, which is a very cool pipeline that Unreal supports natively for running Unreal Engine in the cloud as a sort of real-time renderer for local web-based clients
- Collaboration/remote working setups in the cloud through the use of Unreal’s Multi-user editing systems
These different types of containers being available even during the beta stage makes me hopeful that more types of speciality servers will be created AND that Epic Games is likely in this for the long term.
Get Our 7 Core TouchDesigner Templates, FREE
We’re making our 7 core project file templates available – for free.
These templates shed light into the most useful and sometimes obtuse features of TouchDesigner.
They’re designed to be immediately applicable for the complete TouchDesigner beginner, while also providing inspiration for the advanced user.
How can I use use containers?
There are tons of ways you can be creative and use containers to your benefit. Here’s a handful of ones that seem like they’ll be extremely popular:
- Using Unreal Engine as a cloud rendering server with a high-powered system that is streaming frames back to low-powered systems connected to projectors on-site
- Creating multi-user experiences in the web with Unreal Engine using the power of being able to spin up/down images dynamically based on the number of users connecting to your service
- Create more cost-effective ways of having remote development boxes that you can spin up only for a short period of time that are high-powered and great for testing your application with high-end specs. This is especially useful for folks that travel a lot for work or primarily work on laptops and not high-powered desktops
- AI / ML workflows based in Unreal can be setup to run in the cloud with streaming inputs and outputs back to your main project system
- Running containers as a way to create permanent installation development/deployment environments so you don’t have to spend too much time configuring the specific installation of Windows (everyone’s favourite activity!)
This is just the start of a short list of what’s possible. If this keeps getting developed, it could really change how we think about physical installations and their associated hardware.
How to get started?
If it’s the first time you’re working with containers, you’ll want to download Docker and go through a short example of using it in general:
https://www.docker.com/products/docker-desktop/
Then you can head over to the great set of documentation Epic Games have made for this and check out their overview of the stack:
https://docs.unrealengine.com/5.3/en-US/overview-of-containers-in-unreal-engine/
Then you can get into Epic’s quick start guide for working with Unreal containers:
There is also a great set of use case examples and some short instructions/tips on certain aspects of them here:
https://unrealcontainers.com/docs/use-cases/
Wrap up
Whether it’s your first time thinking about new media servers in the cloud or it’s something you’ve been experimenting with for a while, it’s amazing to see first-party support for them in our industry. For years, using cloud services felt hacky and time consuming to setup on our own, but maybe not for much longer! Enjoy!