Commercial Game Deployment Glossary

Multiplatform Builds and Managing Credentials

It is difficult to manage multiplatform builds in Unity, especially when trying to manage credentials for multiple users. 

Signing is difficult to manage for mobile platforms.

EXAMPLE: You want to build a multiplatform mobile game that runs on Android and iOS. It is difficult for you to add on additional team members, because of the complications of setting up a multiplatform development environment, and the credentials required.

CI/CD Pipeline Does Not Have Unity-Specific Integration

You might be using a CI/CD pipeline platform that does not have any Unity-specific integration, so you have to write all of that from scratch.

EXAMPLE: You use Circle CI for your CI/CD pipeline, which does not support Unity. You must then write all of your own job code to create even a basic pipeline for building your game.

Difficulty Managing Build Triggers and Tagging

It is difficult to ensure that your builds are triggering correctly every time, or being tagged with the correct version number, branch, etc.

EXAMPLE: You have a multiplatform application in Unity. You need to maintain major, minor, and build versioning for your application. However, Android and iOS track this information differently, so your CI/CD builds do not keep track of the version number correctly on every platform.

Cost Management Around Build Agents

Maintaining build agents in the cloud for Unity builds can be expensive if not provisioned correctly.

EXAMPLE: You have a cross-platform game in Unity. You need to deploy on Android and iOS, so you create a separate pipeline for each platform. However, to build both simultaneously, you will need to pay for two different agents (which is a waste of money).

Platform Switching To Build Unity

It can be slow to build for multiple platforms in Unity because it takes time for Unity to recompile scripts for each platform. 

EXAMPLE: You have an Android and iOS game. You have been working on Android, and now you want to test it on iOS. You will need to, on base Unity, switch the platform of your project to iOS, and then wait, before you can do anything else, to do a build.

Managing Build Agents For Different Build Platforms

The maintenance around setting up build agents on different platforms (especially with Jenkins) can be difficult/time consuming.

EXAMPLE: Your multiplatform game needs build agents for iOS and Android. Your build agent for iOS needs to be on MacOS, which complicates your entire build process

Maintaining Or Managing Versioning Between Dev Machines and Build Servers

You have to maintain your build server’s Unity in step with your development machines, or else differences in versions will cause build errors.

EXAMPLE: You want to upgrade from Unity 2019.4 to Unity 2021.4 to gain access to some new functionality. You must also upgrade all of your build agents across different environments, and deal with associated issues.

Patching a New Point Release For Build Agents

You’d like to patch your build agents to a new point release but doing so causes problems. There is not a good way to update agents from the terminal/IaC.

EXAMPLE: You need to update your agents to a new minor patch of Unity for security updates. However, to do so, you need to manually open Unity Hub for each agent and update the version of Unity.

Handling Patch Reversion For Build Agents

If you ever need to revert to a previous point version on your agents, it can be difficult.

EXAMPLE: You discover an issue in unity 2019.2.12, so you revert your dev machines to 2019.2.11. You now need to find a way to revert each individual build server to the correct version.

Is your company experiencing any of these challenges?