> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diversion.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Engine Plugin

> Use Diversion without leaving the Unreal Engine editor

If you want to use Source Control but don't want the hassle of installing and using multiple software, and you're using Unreal Engine, then this is for you.

## Installation

### Prerequisites

Before installing the plugin, you'll need to have the Diversion installed and signed in to. If you haven't done that yet, check out the [Quickstart](/quickstart) guide.

### Installing the plugin

[//]: #

[//]: # "<Steps>"

[//]: # "    <Step title=\"Download the plugin\">"

[//]: # "    Download the plugin for your Unreal Engine version:"

[//]: # "    - Unreal Engine 5.3: [https://get.diversion.dev/ue-plugin/Diversion-v0.1.4-ue5.3.zip](https://get.diversion.dev/ue-plugin/Diversion-v0.1.4-ue5.3.zip)."

[//]: # "    - Unreal Engine 5.4: [https://get.diversion.dev/ue-plugin/Diversion-v0.1.4-ue5.4.zip](https://get.diversion.dev/ue-plugin/Diversion-v0.1.4-ue5.4.zip)."

[//]: # "    </Step>"

[//]: # "    <Step title=\"Copy the plugin\">"

[//]: # "    Unzip it, and copy the `Diversion` folder (the folder and all of its contents, not just the folder) into the `Marketplace` folder inside Unreal Engine's `Plugins` folder. Depending on your engine's version and where you installed it, it should look something like this: `C:\Program Files\Epic Games\UE_5.3\Engine\Plugins\Marketplace`."

[//]: # "    Create the `Marketplace` folder in case it doesn't exist."

[//]: # "    </Step>"

[//]: # "</Steps>"

[//]: # "The plugin will also be available in the Unreal Engine Marketplace in the near future."

<Steps>
  <Step title="Get the plugin from FAB">
    Search for `Diversion` in the <a href="https://www.fab.com/listings/59d591f2-4026-4e8f-9128-9c8ef1ff9bab">Fab Marketplace</a>,
    then click on the `Add to My Library` button to add the plugin to your account.

    <img alt="Add plugin to library on FAB" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-add-to-library.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=306b1d9f00ea4d6cd50fa8ac41f7b386" width="403" height="140" data-path="images/unreal-plugin-add-to-library.png" />

    Then, click on the `Download` button and click on the `Epic Games Launcher` link to go to your engine assets library.

    <img alt="Download and open in Launcher" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-open-launcher.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=765b0231f35ef66e5ae6fa69f8eb6e73" width="624" height="335" data-path="images/unreal-plugin-open-launcher.png" />

    Alternatively, you can simply click <a href="com.epicgames.launcher://ue/library">here to open the Epic Games Launcher</a>.

    <Note>
      The plugin is downloaded via FAB but must be **installed from the Epic Games Launcher**. After adding it to your library on FAB, you need to switch to the Launcher to complete the installation (next step).
    </Note>
  </Step>

  <Step title="Install the plugin from the Epic Games Launcher">
    Open the Epic Games Launcher and navigate to your engine assets library (under `Library` > `Fab Library`). At the bottom, locate the Diversion plugin and click `Install to Engine`.

    <img alt="Install plugin from Launcher" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-install-to-engine.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=2ba1dc31bd4e8ed2a99cf5c41b874845" width="331" height="93" data-path="images/unreal-plugin-install-to-engine.png" />

    Choose the correct version of the Unreal Engine you want to install the plugin to and click `Install`.

    <img alt="Select engine version and install" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/install-diversion-plugin.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=e1c3355fd1be7605d8e9a87d33a5c84d" width="686" height="143" data-path="images/install-diversion-plugin.png" />
  </Step>

  <Step title="Alternative: Build plugin from source">
    In case you would like to manually add the plugin to your UE project, instead of downloading it from the marketplace,
    you can get the source code from the following links:

    * Unreal Engine 5.3: [Diversion-v2.0.17-ue5.3.0.zip](https://get.diversion.dev/ue-plugin/Diversion-v2.0.17-ue5.3.0-nobin.zip)
    * Unreal Engine 5.4: [Diversion-v2.0.17-ue5.4.0.zip](https://get.diversion.dev/ue-plugin/Diversion-v2.0.17-ue5.4.0-nobin.zip)
    * Unreal Engine 5.5: [Diversion-v2.0.17-ue5.5.0.zip](https://get.diversion.dev/ue-plugin/Diversion-v2.0.17-ue5.5.0-nobin.zip)
    * Unreal Engine 5.6: [Diversion-v2.0.17-ue5.6.0.zip](https://get.diversion.dev/ue-plugin/Diversion-v2.0.17-ue5.6.0-nobin.zip)
    * Unreal Engine 5.7: [Diversion-v2.0.17-ue5.7.0.zip](https://get.diversion.dev/ue-plugin/Diversion-v2.0.17-ue5.7.0-nobin.zip)

    <Card title="Warning!" icon="triangle-exclamation" iconType="duotone" color="#ca8b04">
      Choosing this options will require you to build the plugin from source and maintain the versions manually
      in order to keep up with the latest features and improvements.
    </Card>
  </Step>
</Steps>

## Configuration

After installing the plugin, you'll need to configure it for each project to use Diversion as your source control provider.

<Steps>
  <Step title="Activate the plugin">
    In the editor, go to `Edit` > `Plugins`. Search for `Diversion` and click on the checkbox to activate the plugin. If you're prompted to restart the editor, please do.

    <img alt="Enable plugin" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/tgHOXPild1lTdU_m/images/enable-diversion-plugin.png?fit=max&auto=format&n=tgHOXPild1lTdU_m&q=85&s=1e41059754a53ef1e62edb1305d19948" width="1566" height="896" data-path="images/enable-diversion-plugin.png" />
  </Step>

  <Step title="Enable revision control">
    With the plugin enabled, click on `Revision Control -> Connect to Revision Control` on the bottom-right.

    <img alt="Revision control button" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-engine-revision-control-button.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=ffa45d6293cc2107bd4de7041b736ae9" width="285" height="162" data-path="images/unreal-engine-revision-control-button.png" />
  </Step>

  <Step title="Choose provider">
    In the window that appears, choose `Diversion` from the provider drop-down list.

    <img alt="Choose Diversion provider" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-choose-provider.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=cd81abae76294986b8ee5fa254cfab20" width="502" height="221" data-path="images/unreal-plugin-choose-provider.png" />
  </Step>

  <Step title="Make sure you're logged in to Diversion">
    The next step won't work if you're not. Check out [Quickstart](/quickstart) if you're not sure how to do that.
  </Step>

  <Step title="Set up Diversion Revision Control">
    <Accordion title="I want to create a new repo">
      If your project's folder is not a Diversion repository, you'll be prompted to initialize it.
      Click on `Initialize project with Diversion` and the plugin will do the rest. If it looks like nothing happened, make sure you're logged in and try re-selecting Diversion from the provider drop-down list.
      The plugin will recognize the root of the repository and your Diversion installation.

      <img alt="Initialize repository" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-diversion-plugin-initialize-repository.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=974d829311ac053693a9a6e6057ac1fe" width="574" height="284" data-path="images/unreal-diversion-plugin-initialize-repository.png" />

      After initialization, you'll see this screen,

      <img alt="Initialized repository" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-diversion-plugin-initialized-repository.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=2940b5de59d9192c9ef4d83d170ee8af" width="518" height="218" data-path="images/unreal-diversion-plugin-initialized-repository.png" />

      click on `Accept Settings` and you're good to go!
    </Accordion>

    <Accordion title="I’m connecting to an existing repo">
      If your project is already a Diversion repository, like in the case of cloning a repo, just click on `Accept Settings` and you're good to go!

      <img alt="Initialized repository" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-diversion-plugin-initialized-repository.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=2940b5de59d9192c9ef4d83d170ee8af" width="518" height="218" data-path="images/unreal-diversion-plugin-initialized-repository.png" />
    </Accordion>
  </Step>
</Steps>

## Usage

Let's go over a common workflow using the plugin.

For this, we'll be using a clean Unreal project with the plugin already installed and configured.

### Make a change

This project will one day be our Multiplayer Open World Survival RPG With Crafting and Building Mechanics™.

For that, we'll need a character. Let's create one. In your `Content Browser`, right-click and choose `Blueprint Class`.

In the window that appears, choose `Character` and name it `MyCharacter`.

You'll notice that the new file might not be what you're used to - it now has a yellow question mark on it. This is because Unreal Engine just created the file in-memory, and hasn't saved it to the disk yet, so Diversion doesn't know about it.

<img alt="Character created" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-my-character-created.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=bd366fa348634d66697d82d0a3833a7d" width="269" height="318" data-path="images/unreal-plugin-my-character-created.png" />

Let's fix that - double-click on the file to open it, and then click on the `Save` button on the top-left. Alternatively, you can press `Ctrl + S` while the file is selected in the Content Browser to save the file.

The question mark will now be gone, and instead we have a green plus sign. This means that the file is now being tracked by Diversion, and it recognizes that this is a newly added file.

<img alt="Character saved" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-my-character-saved.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=6c8f69d4332b86945798a284f95a9bb4" width="301" height="340" data-path="images/unreal-plugin-my-character-saved.png" />

### Commit the change

We want to save this change to our repository, to have it backed up and to be able to share it with our team.

Click again on the `Revision Control` button on the bottom-right, and then click on `Submit Content`.

<img alt="Submit content" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-engine-revision-control-submit-changes-button.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=802dad16af0a5abce7b57d418b067d71" width="271" height="160" data-path="images/unreal-engine-revision-control-submit-changes-button.png" />

In the window that appears, you'll see a list of all the files that have changed since the last commit. In this case, you'll see `MyCharacter` with a green plus sign next to it. You will also see your `.uproject` file, since Diversion recognizes this as a new file as well.

In the text box labeled `Changelist Description`, write a brief description of the changes you're committing. In this case, you could write `Added MyCharacter`.

<img alt="Changelist description" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-changelist-description.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=ec254fadbab181e98776e3cbdf824e56" width="622" height="457" data-path="images/unreal-plugin-changelist-description.png" />

<Card title="Warning!" icon="triangle-exclamation" iconType="duotone" color="#ca8b04">
  Diversion does not endorse or encourage the use of vague, ambiguous, or laconic commit messages. This is for demonstration purposes only. Please write meaningful commit messages.
</Card>

Click on the `Submit` button, and the green plus on `MyCharacter` will disappear, meaning that Diversion has committed the file.

<img alt="Character committed" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-my-character-committed.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=02a7dff4d9c679c9a8b225f043a2fc32" width="288" height="333" data-path="images/unreal-plugin-my-character-committed.png" />

### Let's see this in the Web UI

Open your browser and go to [your dashboard](https://app.diversion.dev). Select your repository (via the All Repositories card's `View Repo`, or the top-left repo selector). It should have the same name as your project's folder.

You'll see the commit you just made, with the description you wrote, and the file you added. Open the **Commits** view from the left navigation rail to see your commit.

<img alt="Commit list" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/UZ43CqMpCXHHcPfk/images/unreal-plugin-commit-list-in-browser.png?fit=max&auto=format&n=UZ43CqMpCXHHcPfk&q=85&s=eb8f42bac08084f7c9e173fafcf2248d" width="808" height="405" data-path="images/unreal-plugin-commit-list-in-browser.png" />

### Make another change

Our character is just an empty collider right now, so let's add a placeholder mesh so that we can see it.

In the `MyCharacter` blueprint, click on the `Add Component` button on the top-left, and then search for `Cube` and add it. Now we can see our character.

<img alt="Character cube" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-add-cube-component.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=be135a629699edba3ee2305f17787509" width="284" height="212" data-path="images/unreal-plugin-add-cube-component.png" />

But our character doesn't do anything. In your character's `Event Graph`, add a `Print String` node and connect it to the `Event Begin Play` node. Now our character has some basic functionality.

<img alt="Character print" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-add-print-begin-play.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=8b1aa57ac4eb4b74d15be9ee4b23266a" width="622" height="294" data-path="images/unreal-plugin-add-print-begin-play.png" />

Compile and save the file. Open your `Content Browser` and you'll see that `MyCharacter` now has a red checkmark next to it. This means that Diversion recognizes that the file has changed.

<img alt="Character modified" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-my-character-modified.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=bb851e7e73045c39011ee1687a56e486" width="286" height="328" data-path="images/unreal-plugin-my-character-modified.png" />

### Make another commit

Just like before, click on the `Revision Control` button on the bottom-right, and then click on `Submit Content`.
You'll see the `MyCharacter` file with a red checkmark next to it.

<img alt="Changelist description 2" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-changelist-description-2.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=1169f7de20e438f314374c18d47a03d2" width="629" height="457" data-path="images/unreal-plugin-changelist-description-2.png" />

Double click the file to see the changes you've made in Unreal's diff tool.

In this window, you can see the difference between your revision on the right, and the last committed revision on the left. You should see an entry called `Event Graph` in the list on the left.
Clicking it will show you the changes you've made to the blueprint, and you you should see the `Print String` node you added.

<img alt="Blueprint diff tool" style={{width: '90%', borderRadius: '1.5rem', border: '.3rem solid #555', boxShadow: '0 0 1rem #888' }} src="https://mintcdn.com/diversion-2/HhHa-PhS49hu7GIa/images/unreal-plugin-bp-difftool.png?fit=max&auto=format&n=HhHa-PhS49hu7GIa&q=85&s=67fb94b8b5b49a3317cf27c420f10b52" width="2568" height="1440" data-path="images/unreal-plugin-bp-difftool.png" />

After reviewing your hard work, again, write a description of the changes you're committing. In this case, you could write `Adding placeholder mesh and basic functionality to MyCharacter`.

Click on the `Submit` button and the red checkmark will disappear, meaning that Diversion has committed the file.

### Disable soft lock warnings

Diversion's soft lock feature warns you when files are being edited by other team members, helping you avoid potential merge conflicts. When you attempt to open a file that's being worked on by others, you'll see a warning message.

If you'd like to disable these warnings, follow these steps:

<Steps>
  <Step title="Open your project settings">
    Click on `Edit` in the top menu bar and select `Project Settings`.

    <img alt="Select project settings" src="https://mintcdn.com/diversion-2/ai4kqKiZ3HX_quvc/images/unreal-project-settings.png?fit=max&auto=format&n=ai4kqKiZ3HX_quvc&q=85&s=8e33c589cca2e45bb3bb623334e242b7" width="480" height="329" data-path="images/unreal-project-settings.png" />
  </Step>

  <Step title="Disable soft lock confirmations">
    Search for "soft lock" and **uncheck** the field `Enable Diversion Auto Soft Lock Confirmations`.

    <img alt="Disable soft lock" src="https://mintcdn.com/diversion-2/QuoGq8WKvsiDjWZD/images/disable-soft-lock-unreal.png?fit=max&auto=format&n=QuoGq8WKvsiDjWZD&q=85&s=f2c2c1b1ef00132f3c2b754e7346af8e" width="2147" height="352" data-path="images/disable-soft-lock-unreal.png" />
  </Step>

  <Step title="Apply changes">
    Close the settings window and restart the editor for the changes to take effect.
  </Step>
</Steps>

<Note>
  **Important:** Disabling soft lock warnings modifies your project's configuration file. If you commit this change to your repository, it will affect the entire team. Consider either avoiding committing this configuration file or adding it to your [ignore list](/basic/dvignore) if you want this to be a personal preference rather than a team-wide setting.
</Note>
