Key Concepts:

Development images vs. runtime images

What are the two types of Unreal Engine container images and how do they differ?

Key points:

  • Development images are used for tasks that require the Editor, such as building and packaging projects or plugins. They contain the Unreal Engine build tools and Editor, and there are strict EULA restrictions that govern their distribution.

  • Runtime images are used for running packaged projects. They contain only packaged Unreal projects and their runtime dependencies, and can be distributed more freely than development images.

  • Different use cases require may either one or both of these types of container images.

Contents

Container image types

When discussing container images in general, it is helpful to distinguish between two distinct types of images: development images and runtime images. The fundamental difference between these image types is that development images are used for building software, whereas runtime images are used for running built software. This distinction is quite common when dealing with compiled programming languages, since the tools required to build software are often quite large, but it is desirable that container images for running built software be as small as possible. The Docker multi-stage build feature was created to make it easy for developers to use larger development container images to build their software and then copy the built files into a smaller runtime container image for deployment.

Here are some examples of programming languages and frameworks that provide separate development and runtime container images:

Is important to note that using one container image type does not force you to use the other type. Development images can be used to build software that will run outside of a container, and runtime images can be used to run software that has been built outside of a container. Although it is often convenient to use development and runtime container images together (typically in the form of a Docker multi-stage build), it is never mandatory.

Unreal Engine container image types

Unreal Engine container images are divided into development images and runtime images in much the same manner as other frameworks for compiled programming languages. Unreal Engine development images contain the Engine build tools and Editor, whereas Unreal Engine runtime images contain only packaged Unreal projects and their runtime dependencies. The nature of the Unreal Engine actually makes this distinction even more important than it is for other programming frameworks, for two key reasons:

It is critical that all Unreal Engine licensees who are using Unreal Engine containers are aware of the legal differences between development images and runtime images. For this reason, it is strongly recommended that you ensure you have read and understood the entirety of the Unreal Engine EULA Restrictions page.

Development images

Interested in building or obtaining a development image? Take a look at the available sources of development images.

Unreal Engine development images are used for tasks that require the Unreal Editor, such as building and packaging Unreal projects or plugins, invoking command-line features such as commandlets or cinematic renders, and running automation workflows. They contain the following:

You need to use a development image if you want to perform any of the following tasks:

You do not need to use a development image if you want to do any of the following:

Runtime images

Interested in building or obtaining a runtime image? Take a look at the available sources of runtime images.

Unreal Engine runtime images are used for running packaged Unreal projects. These images are typically base images, which means they are designed to act as a foundation that is then extended by developers who build other container images atop them. (In the case of Unreal Engine runtime images specifically, this extension takes the form of providing the files for the packaged Unreal project that you want to run in a container.) They contain the following:

You need to use a runtime image if you want to perform any of the following tasks:

You do not need to use a runtime image if you want to do any of the following: