# Level configurator

**Level Configurations** are a way for you to add configuration data globally to your main leve&#x6C;*.* The defined configuration UI will show up in your actor menu after being placed.

## Create a configurator dataset

1. In your project's content browser, right click and go to Odyssey -> Odyssey Configurator Dataset<br>

   <figure><img src="https://1654663001-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMLBnx8wypJv4bjM4Pgja%2Fuploads%2Fk4PCJhyG04ZTAqkaKGn7%2Fobraz.png?alt=media&#x26;token=989fcda1-d984-4f99-819c-463722996799" alt="" width="265"><figcaption></figcaption></figure>
2. Find the `OdysseyConfiguratorRegistryActor` instance in your main level (added in [quickstart](https://docs.odyssey.stream/realtime-configurator/quickstart "mention")). In the Details panel, under **Odyssey -> Configurator Dataset,** add your Configurator Dataset asset.<br>

   <figure><img src="https://1654663001-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMLBnx8wypJv4bjM4Pgja%2Fuploads%2FJYf5NrcahCObJ4j6n6OD%2Fobraz.png?alt=media&#x26;token=b63c2e79-75d2-4b06-8868-d6c60a296721" alt=""><figcaption></figcaption></figure>
3. You can now start adding level configurations to your dataset

## Create a configuration property

1. Open your Configurator Dataset asset.
2. &#x20;Add a Configurator key to the Dataset using the Add button:<br>

   <figure><img src="https://files.readme.io/977e050-obraz.png" alt=""><figcaption></figcaption></figure>
3. Fill your configuration data in your newly created row. Each configuration needs a **Display Name, Type,** and a **Default Value.**

   <figure><img src="https://files.readme.io/6e8926d-obraz.png" alt=""><figcaption></figcaption></figure>

## Add configuration logic

{% hint style="info" %}
The following blueprint setup is done within a level blueprint for clarity, but you can use any blueprint class.
{% endhint %}

1. Inside your level blueprint, on **BeginPlay**, grab reference to the **OdysseyConfiguratorWorldSubsystem**:

<figure><img src="https://files.readme.io/33142ec-image.png" alt="" width="375"><figcaption></figcaption></figure>

2. Off of the new Configurator node, create a **Register State Changes Listener** and connect it to your Event BeginPlay:

<figure><img src="https://files.readme.io/8b7f5da-image.png" alt=""><figcaption><p>Register state change events from your configurator</p></figcaption></figure>

3. Create an event delegate binding by dragging out from the **On Event Delegate** pin. Select 'Add Custom Event' when prompted.
4. rom this point you can follow the guide [configurator-blueprint-api](https://docs.odyssey.stream/realtime-configurator/level-and-object-configurator/configurator-blueprint-api "mention") to learn how to set up events and hooks from your configurator properties.
