# The Playmode Actor

he Playmode actor is the central brain of your interactive experience. Once you drag it into your level, it automatically handles player controls, navigation modes, and the main user interface (UI).

While it works perfectly out-of-the-box, you can customize its behavior extensively through the **Details** panel to tailor the experience to your specific project needs, target hardware, and user comfort settings.

**How to Use:**

1. Find the **BP\_Playmode** Blueprint Actor in your Content Browser.
2. Drag and drop it anywhere into your level. You only need one **BP\_Playmode** actor per level.
3. Select the **Playmode** actor in your level to access all the settings described in the tabs below.<br>

{% tabs %}
{% tab title="Default" %}
This tab contains the primary, high-level settings that define the project's core behavior and technical requirements.

<figure><img src="/files/QxIjtHb5DyaZwU18JkUu" alt=""><figcaption></figcaption></figure>

* **Is This Project Packaging for VR?**
  * **When to use:** Check this box **only** if your final project is intended for a standalone VR headset (e.g., Meta Quest) and you are packaging it as an .apk file.
  * **What it does:** When true (checked), it disables many dynamic and performance-intensive features of the plugin. This is crucial for optimizing performance on mobile VR hardware.
  * **Important:** Keep this false (unchecked) for all PC and PC-VR projects.
* **Are You Using Build Light?**
  * **When to use:** Check this box if your project uses pre-baked, static lighting (Build Light) instead of real-time dynamic lighting. This is a common workflow for projects targeting lower-end PCs that cannot handle dynamic lighting well.
  * **What it does:** When true (checked), it automatically disables or hides UI features that are not compatible with static lighting. For example, the real-time **Sun Control** slider will be removed from the UI, as baked lighting cannot be changed in real-time.
* **Main Widget:** This dropdown selects the primary User Interface (UI) that is displayed when the game first starts. By default, it is set to our pre-built HomePage widget, which provides basic navigation options.

<figure><img src="/files/KlpDpqdAaI4dWH2RBfca" alt=""><figcaption><p>HomePage Widget</p></figcaption></figure>

You have full flexibility to customize this starting UI:

1. **(Easiest) Redesign Our Widget:** You can open the existing HomePage widget and modify its design to match your brand.
2. **(Advanced) Use Your Own Widget:** You can create and select your own custom widget from scratch.

* **⚠️&#x20;**<mark style="color:orange;">**Important:**</mark> If you create your own widget, you **must** replicate the core button logic to switch between navigation modes. You can do this by getting a reference to the Playmode actor in your widget's graph and calling its functions, as shown in the logic below:

<figure><img src="/files/wni0hqrNgH0mVbBCLS75" alt=""><figcaption><p>On Click Button Logic</p></figcaption></figure>

* **Render Level:** **(Extremely Important!)** This is where you specify which level map should be used by the Movie Render Queue for in-game video rendering. If you do not assign a level here, the "Render Video" button in the UI **will not work**.
* **Check Vr Mode:** This powerful checkbox is a **simulation tool for testing VR interactions directly within the PC editor**, even without a VR headset.

  * It is designed for developers who may not have a VR headset connected at all times, allowing them to confidently set up and check how interactions will behave in VR.
  * When this is **true (checked)**, targeting an interactive actor with your mouse will simulate the VR interaction UI, giving you an accurate preview of how it will look and feel for a VR user.
  * When it is **false (unchecked)**, the project will display standard PC interaction prompts.

  **Startup Graphics:** Allows you to set a default graphics quality level (e.g., Low, Medium, High, Epic) that will be applied when the application starts.
  {% endtab %}

{% tab title="Setup Top View Mode" %}

This entire category is dedicated to configuring the powerful **Top View Mode**, a bird's-eye navigation system that works with your **Points of Interest (POI)**.

<figure><img src="/files/elKdq4ReimxhqkJfqLRa" alt=""><figcaption></figcaption></figure>

**Top View Default**

* **Camera Distance:**
  * **What it does:** Controls how far the camera is from the central focus point. Technically, this adjusts the Target Arm Length of the camera's Spring Arm.
  * **How to use:** Increase this value to zoom out, and decrease it to zoom in.
* **Camera Angle:**
  * **What it does:** Sets the initial pitch (Y-axis rotation) of the camera when Top View Mode is activated.
  * **How to use:** A value of -90 would be a direct top-down view. The default of -65 provides a more pleasing angled perspective.
* **Camera Rotation Speed:**
  * **What it does:** Controls the smoothness of the camera's rotation. Technically, this adjusts the Camera Rotation Lag Speed of the Spring Arm.
  * **How to use:** Lower values will make the camera rotation feel smoother and more delayed, while higher values will make it more responsive and sharp.
* **Focus Point Location:**
  * **What it does:** **(Extremely Important!)** This determines the world-space coordinates (X, Y, Z) where the Top View Mode pawn will spawn and what point the camera will orbit around.
  * **Best Practice:** For the best experience, this should be set to the center of your 3D model.
    1. Switch to the **Top** viewport in the Unreal Editor.
    2. Visually identify the center of your model and place an object (like an empty actor) there to read its **X and Y Location** values.
    3. For the **Z value**, use the location of your floor or ground plane.
    4. Copy these X, Y, and Z values into this Focus Point Location field.

**Static Mesh Visibility**

* **Hide Mesh:**
  * **What it does:** This powerful feature allows you to automatically hide specific meshes only when Top View Mode is active. This is perfect for hiding roofs, ceilings, or walls to reveal the interior layout of a building from above.
  * **How to use:**
    1. Check the **Hide Mesh** box (true).
    2. In the **Select Static Mesh** array below, click the **+** icon to add slots.
    3. Use the eyedropper tool or dropdown menu to assign all the static mesh actors from your level that you want to hide in this mode.
       {% endtab %}

{% tab title="VR Locomotion & Teleport" %}
This section is dedicated to fine-tuning the VR movement experience for maximum user comfort.

<figure><img src="/files/OZ7B71aS27nDJJmyMjNN" alt=""><figcaption></figcaption></figure>

* **VRMovement Speed:** Controls the walking speed when using smooth locomotion in VR. You can adjust this value to increase or decrease how fast the player moves.
* **VRTurn Speed:** Controls the speed of smooth turning (snap-turn is not affected) in VR. Adjust this to match user comfort levels.
* **Adjust Nav Mesh Cell Height:** **(Extremely Important for Teleportation!)** This setting is crucial for a smooth teleport experience.
  * **The Problem:** If a user feels a "jump" or a sudden height change after teleporting, it is because this value does not match your level's RecastNavMesh actor's Cell Height setting.
  * **The Solution:** To fix this, first select the RecastNavMesh-Default actor in your World Outliner. Go to its Details panel and find the Cell Height value. Then, enter that **exact same value** into this Adjust Nav Mesh Cell Height field.
    {% endtab %}

{% tab title="License Setup (For Client Delivery)" %}
This section allows you to package your project with a time-based trial period for your clients.

<figure><img src="/files/91JsXLoofRHkhj6NKfmT" alt=""><figcaption></figcaption></figure>

* **License Key:** Enter a unique license key for the project. (Note: This is for controlling the packaged project, not for your ShikorDriftXR plugin license).
* **Trial Period Day:** Set the number of days the packaged application will be usable (e.g., 20.0 for 20 days). After this period, the application will no longer run.
  {% endtab %}

{% tab title="Branding" %}
This section gives you control over your brand's visibility in the UI.

<figure><img src="/files/dsGbWzgCVRBlSjyCVbIY" alt=""><figcaption></figcaption></figure>

* **Logo:** Upload your company or project logo texture here.
* **Logo be Displayed in Walking Mode? & Logo be Displayed in VR Mode?:** These checkboxes give you granular control over where your logo appears. For example, you can choose to show the logo in the PC UI but hide it in the more immersive VR UI to reduce clutter.
* **Have Any Website?:** Check this box to enable the "Visit Our Website" button in the main UI.
* **URL:** If the above box is checked, enter the full website address that the button should link to.
  {% endtab %}

{% tab title="Spawn Actor" %}
This powerful new category acts as a quick-launch palette to dramatically speed up your level design workflow.

<figure><img src="/files/eaWzM9MIfM9nTgIbZfRQ" alt=""><figcaption></figcaption></figure>

* **What it does:** Instead of searching through the Content Browser, you can now spawn any of our core interactive actors directly into your level by clicking the corresponding button in this panel.
* **How to use:** Simply click a button (e.g., "Auto Directional", "TV", "Material") and the actor will be spawned at a convenient location in your scene, ready to be configured. This is a massive time-saver
  {% endtab %}
  {% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://shikorviz.gitbook.io/shikordriftxr/the-playmode-actor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
