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

# Project Setup

> Create the Unreal Engine project, the plugin, and the main map

This module covers everything you need to do before writing a single Blueprint node: create the UE project, create the plugin that will hold your visual's content, add the xRLive SDK to the project, and save the main map in the right place.

<Warning>
  The **project name**, the **plugin name**, and the **map name** must all be **exactly the same**. xRLive uses this name as a unique ID when mounting and loading your visual. Using different names will cause the visual to fail to load.
</Warning>

## 1. Create the Unreal Engine project

Open the **Unreal Project Browser** and create a new project with the following settings:

* **Template:** Blank
* **Project Defaults:** Blueprint (not C++)
* **Target Platform:** Desktop
* **Quality Preset:** Maximum
* **Starter Content:** off (unchecked)
* **Project Name:** the name you want for your visual — for this tutorial, `MyFirstVisual`

<Frame caption="Unreal Project Browser — Blank template selected, project named MyFirstVisual">
  <img src="https://mintcdn.com/xrlive/gfnukV7Tqi_BcboV/images/sdk/first-visual/setup-ue-project-browser.png?fit=max&auto=format&n=gfnukV7Tqi_BcboV&q=85&s=5577d445153d3b51f9c32585803fb19e" alt="Unreal Engine Project Browser showing the Blank template selected with Blueprint and Desktop settings, project name field containing MyFirstVisual" width="1920" height="1032" data-path="images/sdk/first-visual/setup-ue-project-browser.png" />
</Frame>

<Warning>
  The project **must be Blueprint-only**. A C++ project cannot produce a valid `.xrlive` pak — C++ modules and compiled libraries are not included in the package and will cause the visual to fail at runtime.
</Warning>

Click **Create**. Unreal Engine creates the project and opens the editor with an untitled level and an empty Content folder.

## 2. Save a map to the root Content folder

The `.xrlive` packaging pipeline requires at least one map to exist in the project's root **Content** folder (not inside the plugin). This map does not need any content — it just needs to be saved there before packaging.

<Warning>
  This map is **not created automatically** by Unreal Engine. You must save it manually. If it is missing when you package the visual, the generated `.xrlive` file may be empty and fail to load.
</Warning>

Go to **File → Save Level As**. In the dialog:

1. Make sure the folder tree on the left is set to **Content** — the path at the bottom should read `/All/Game`
2. Set the **Name** field to any name you like — the xRLive team uses `DefaultMap` by convention, but you can also leave the name that Unreal suggests by default

<Frame caption="Save Level As — root Content folder selected, ready to save the build map">
  <img src="https://mintcdn.com/xrlive/AZPy2qMwkMnuj7f8/images/sdk/first-visual/setup-save-content-map.png?fit=max&auto=format&n=AZPy2qMwkMnuj7f8&q=85&s=a79f71b5b9956ce4cf6fd456bbee697c" alt="Save Level As dialog with the folder tree showing Content selected and the path set to /All/Game" width="1920" height="1032" data-path="images/sdk/first-visual/setup-save-content-map.png" />
</Frame>

Click **Save**. The map will appear in the Content Browser under **Content**.

<Note>
  This map has no relation to your visual's logic. It is only required by the packaging pipeline. You will not edit it at any point in the tutorial.
</Note>

## 3. Create the plugin

Your visual's content (Blueprints, maps, assets) lives inside a **plugin**, not in the project's main Content folder. This is required by the xRLive pak packaging system.

Open **Edit → Plugins** in the menu bar, then click **+ Add** (or **New Plugin**). In the plugin creation dialog:

* **Template:** Content Only
* **Plugin Name:** use the **exact same name** as your project — `MyFirstVisual`
* Leave all other fields at their defaults

<Frame caption="New Plugin dialog — Content Only template, plugin named MyFirstVisual">
  <img src="https://mintcdn.com/xrlive/gfnukV7Tqi_BcboV/images/sdk/first-visual/setup-new-plugin-dialog.png?fit=max&auto=format&n=gfnukV7Tqi_BcboV&q=85&s=aac21cef970b09b6b368f6f7e7d366f2" alt="New Plugin dialog showing the Content Only template selected and the plugin name field containing MyFirstVisual" width="1920" height="1032" data-path="images/sdk/first-visual/setup-new-plugin-dialog.png" />
</Frame>

Click **Create Plugin**. Unreal adds the plugin and creates three folders inside it: `Blueprints`, `Map`, and `UI`.

<Note>
  The only folder that **must exist** is `Map` — xRLive requires it to locate the main map. All other folders are optional. That said, organizing your content into folders by asset type is strongly recommended as your visual grows:

  | Folder       | Contents                            |
  | ------------ | ----------------------------------- |
  | `Map`        | Main level (required)               |
  | `Blueprints` | Actor Blueprints, components, logic |
  | `UI`         | Widget Blueprints (UMG)             |
  | `Materials`  | Materials and Material Functions    |
  | `Textures`   | Images, icons, and texture assets   |
  | `Data`       | Data Tables and Data Assets         |
  | `Structs`    | Structures and Enumerations         |
</Note>

## 4. Save the main map

The editor opens with an untitled default map. You need to save it with the correct name and **inside the plugin's `Map` folder**.

Go to **File → Save Level As**. In the dialog:

1. In the folder tree on the left, navigate to **Plugins → MyFirstVisual Content → Map**
2. Confirm the **Path** field reads `/All/Plugins/MyFirstVisual/Map`
3. Set the **Name** field to `MyFirstVisual` (same name as the project and plugin)

<Frame caption="Save Level As — navigated to the Map folder inside the plugin, name set to MyFirstVisual">
  <img src="https://mintcdn.com/xrlive/gfnukV7Tqi_BcboV/images/sdk/first-visual/setup-save-map-location.png?fit=max&auto=format&n=gfnukV7Tqi_BcboV&q=85&s=a0128b69799f8bf8fbe587b84792a8f8" alt="Save Level As dialog showing the folder tree navigated to Plugins/MyFirstVisual Content/Map, with the name field set to MyFirstVisual" width="1920" height="1032" data-path="images/sdk/first-visual/setup-save-map-location.png" />
</Frame>

Click **Save**.

<Note>
  The **Map folder must exist** inside your plugin — Unreal creates it automatically when you use the **Content Only** plugin template. The main map (with the same name as the project) **must be inside this folder**. Everything else in the plugin folder structure is optional, but keeping `Blueprints`, `Map`, and `UI` as separate folders is recommended.
</Note>

After saving, the Content Browser confirms the map is in the right place: `Plugins > MyFirstVisual Content > Map`.

<Frame caption="Content Browser after saving — MyFirstVisual map inside the Map folder">
  <img src="https://mintcdn.com/xrlive/gfnukV7Tqi_BcboV/images/sdk/first-visual/setup-map-saved.png?fit=max&auto=format&n=gfnukV7Tqi_BcboV&q=85&s=095606ecb1f3b16b9d5df860e017b02c" alt="Unreal Editor Content Browser showing the Map folder inside MyFirstVisual plugin content, with the MyFirstVisual map asset inside it" width="1920" height="1032" data-path="images/sdk/first-visual/setup-map-saved.png" />
</Frame>

## 5. Add the xRLive SDK to the project

Close Unreal Engine. In Windows Explorer, navigate to your project folder (for example, `C:\Users\YourName\Desktop\MyFirstVisual`). Open the **Plugins** folder — it currently contains only the `MyFirstVisual` plugin folder you just created.

<Frame caption="Plugins folder before adding the SDK — only the MyFirstVisual plugin folder">
  <img src="https://mintcdn.com/xrlive/gfnukV7Tqi_BcboV/images/sdk/first-visual/setup-plugins-before-sdk.png?fit=max&auto=format&n=gfnukV7Tqi_BcboV&q=85&s=1a866e6dbe0033caee9309cfba239288" alt="Windows Explorer showing the Plugins folder inside the MyFirstVisual project, containing only a single folder named MyFirstVisual" width="1920" height="1032" data-path="images/sdk/first-visual/setup-plugins-before-sdk.png" />
</Frame>

Copy the **xrliveSDK** folder into this `Plugins` directory. After the copy completes, the folder should contain exactly two entries: `MyFirstVisual` and `xrliveSDK`.

<Tip>
  If you need the full plugin installation reference — including module details and how to verify the SDK is active — see [Installation](/sdk/installation).
</Tip>

<Frame caption="Plugins folder after adding the SDK — MyFirstVisual and xrliveSDK side by side">
  <img src="https://mintcdn.com/xrlive/gfnukV7Tqi_BcboV/images/sdk/first-visual/setup-plugins-with-sdk.png?fit=max&auto=format&n=gfnukV7Tqi_BcboV&q=85&s=a0d79d1c891b87996735ae8864135ef3" alt="Windows Explorer showing the Plugins folder containing two folders: MyFirstVisual and xrliveSDK" width="1920" height="1032" data-path="images/sdk/first-visual/setup-plugins-with-sdk.png" />
</Frame>

Reopen the project by double-clicking the `.uproject` file. Unreal Engine will detect the new plugin and load it alongside your visual's plugin.

## What you have now

At the end of this step your project has:

* A Blank UE project named `MyFirstVisual`
* A map saved in the root **Content** folder (required by the packaging pipeline)
* A **Content Only plugin** named `MyFirstVisual` with `Blueprints`, `Map`, and `UI` folders
* The main map `MyFirstVisual` saved inside the plugin's `Map` folder
* The `xrliveSDK` plugin present in the project's `Plugins` folder

The project is ready. In the next module you will create the `BP_Settings` actor, add a mesh component, and configure the xRLive UI panel.

<Card title="Plugin & Scene Setup →" icon="arrow-right" href="/sdk/first-visual/scene-setup">
  Create BP\_Settings, add the Cube component, and configure the xrlive\_UIpanel.
</Card>
