# v8.2

### Updates to ODK's project schema

**Date of change:** 02/07/2025

**Affected Features:** Users with existing ODK projects

**What’s broken and why?**

*Currently ODK schema is embedded within the \`ODK\` section within the project.schema. For legacy reasons, the ODK schema was instantiated with each template, rather than stored with the plugin content itself. To ensure you're operating with the latest, correct ODK schema, please integrate the latest schema here into your project.*&#x20;

**How to fix it?**

*Retrieve the latest \`project.schema.json\` from the ODK. Accessible here, or within any v8.2 template. Merge this file with the existing* `project.schema.json` *that lives at* `<project_workspace>\Config\LiveConfig\Schemas`. If you haven't made any local project edits, you can safely just replace the file, otherwise you should merge the content with your local changes.

{% file src="<https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2FTb96WlSAbPIe0Qq84Pc9%2Fproject.schema.json?alt=media&token=d1f5f91e-134f-4cae-8017-60d4bae61160>" %}

### Connect Button on the Dashboard redirects to <https://o7e.dev/> instead of the GFN Stream.

**Date of change:** 30/06/2025

**Affected Features:** Otherside Dashboard and GFN streams.

**What’s broken and why?**

*Due to us needing to authenticatee with Privy we need the Connect button on the dashboard to send the user via the web app rather then the legacy GFN streaming page. This means that users on older versions of the ODK will be unable to launch streams via the dashboard.*

**How to fix it?**

*Upgrade your project to ODK 8.2, this will then ensure that you are using Privy as authentication in your project and the Connect button will work again*

### Bubbles Content Moved

**Date of change:** 27/06/2025

**Affected Features:** Bubbles

**What’s broken and why?**

*The bubbles chat feature has been isolated into it's own template within the ODK ecosystem.*

**How to fix it?**

*If reliant on the bubbles feature, please integrate the Bubbles Template from the ODK Launcher, and migrate the content within to your project.*

### ODK Settings Menu

**Date of change:** 18/06/2025

**Affected Features:** Pause/Settings Menu

**What’s broken and why?**

*The default Pause/Settings menu widget is now set on the PlayerController > `BPC_ODK_PauseMenuControlComponent` and the default widget has been changed from the M2 settings menu to `WBP_ODKSettings`widget that leverages the* [*ODK Base UI*](https://docs.otherside.xyz/odk-documentation/documentation/odk-plugin/odk-widget/odk-base-ui)

**How to fix it?**

If you have previously used a custom settings widget, this should be set on the `BPC_ODK_PauseMenuControlComponent` component.

### Inspector Admin Capability Update

**Date of change:** 12/06/2025

**Affected Features:** Inspector Admin

**What’s broken and why?**

*As part of the class hierarchy rework, the way we determine if you can access the Inspector has been updated.*

**How to fix it?**

*For any role that you want to have access to the Inspector (historically just Director) add the `Capabilities.Morpheus.InspectorEnabled` capability to the `GrantedCapabilities` field within your data table for those roles.*

### Retirement of Avatar Selector

**Date of change:** 11/06/2025

**Affected Features:** Avatar Selector

**What’s broken and why?**

*As we've moved to using the Web UI for more in-game functionality, we've retired the existing avatar selector (`BPC_AvatarSelector` and associated content).*

**How to fix it?**

*If you were previously relying on explicitly triggering the avatar selector during gameplay, instead you should use the Web UI for selecting a player character. To do so call `OpenAvatarOverlay` on the `BP_WebBrowserWorldService` and the web browser will present the user's avatars to them.*

**How to test it?**

*Validate that your users can correctly update their avatars when you trigger the avatar selector.*

####

####

### Crowd Audio Component Change

**Date of change:** 11/06/2025

**Affected Features:** Crowd Audio

**What’s broken and why?**

*We have moved away from the soon to be depreciated crowd audio component and have our own ODK version.*

**How to fix it?**

*Simply switch out the `BPMC_CrowdAudio` component to `BPMC_ODK_CrowdAudioComponent`. They should have the same interface.*

####

####

### Attachments Component&#x20;

**Date of change:** 02/06/2025

**Affected Features:** Attachments

**What’s broken and why?**

*Logic that handled adding attachments to the player has been moved to a new morpheus component: `BPMC_ODK_AttachmentsComponent`. This functionality was moved off `BPM_ODK_PlayerCharacterBase`. This means you may have some bad references in your projects*

**How to fix it?**

*Simply grab the component off your morpheus player character and use that instead of directly interfacing with `BPM_ODK_PlayerCharacterBase`.*

### UI Mode Component&#x20;

**Date of change:** 02/06/2025

Affected Features: UI Mode

What’s broken and why?

The UI mode world service has been moved to a component on the player controller. Some functions that were previously on the player controller have been moved to this component. Additionally, now it supports changing UI mode from anywhere, not just widgets. If you interfaced with the UI mode world service directly, you should now go through the player controller component.&#x20;

How to fix it?

Update you blueprint logic to use the new player controller component.

### **Update to Profile Data Provider class**

Date of change: 23/05/2025

Affected Features: Profiles

What’s broken and why?

With the move to a new authentication backend, we have a new mechanism for retrieving your user's profile infomation.

How to fix it?

1. For any prior levels, you need to manually update the "Profile Data Provider Class" to `BP_ODK_WPProfileDataProvider`<br>

   <figure><img src="https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2FgBKmFJCaWTXWFtza2lwl%2Fimage.png?alt=media&#x26;token=bb553704-a131-4a63-b742-d44c4b19a648" alt=""><figcaption></figcaption></figure>

How to test it?

Log in and validate that your characters are retrieving their player names and other profile information correctly.

### **Moved default emote definition to BPC\_ODK\_EmotesComponent**

**Date of change:** 20/05/2025

**Affected Features:** Emotes

**What’s broken and why?**

*Previously, the default emote array was defined in the roles Data Table, while CoOp emotes were specified in the `BPMC_CoopEmote` component and purchasable emotes in the `BPC_ODK_EmotesComponent`. These separate configurations have now been unified into a single location: the `BPC_ODK_EmotesComponent` on the Player Character.*

*This consolidation simplifies emote management by centralizing all emote definitions—default, purchasable, and CoOp—in one place and enables runtime overrides of the emote list, for both default and CoOp emotes.*

*The current roles data table definitions will still work, but will likely be deprecated in the future and this workflow will no longer be supported.*

**How to fix it?**

*• Remove the emote definition from the roles data table.*\
*• Create a Data Asset of type `PDA_ODKEmoteCollection` with your defined emotes*\
*• On your Player Character, find the `BPC_ODK_EmotesComponent` and assign the Data Asset to the `ODKEmoteCollection` variable*<br>

<figure><img src="https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2FaFznd6NDRTi6iDy0DZZW%2Fimage.png?alt=media&#x26;token=acdc530e-d690-44d3-a527-66623a7fba9f" alt=""><figcaption></figcaption></figure>

**How to test it?**

*Play in editor and bring up your emote wheel. The defined emotes should appear on the wheel.*

### **Koda Lod Level replacement with BPDA\_LODLevelsByAvatar**

**Date of change:** 18/05/2025

**Affected Features:** Avatars

**What’s broken and why?**

*We've modified the way crowd animations are setup per avatar type. If you had previously customized the Koda Lod Levels property on a derived class of `BPM_ODK_PlayerCharacterBase`, you'll need to update your usage.*

**How to fix it?**

1. *Create a new DA from `BPDA_LODLevelsByAvatar`*
2. *Set your existing `BPDA_LODLevels` properties per avatar*
3. *Set your new DA as the default instance on your derived `BPM_ODK_PlayerCharacterBase` class*

**How to test it?**

*Validate that your characters use the correct ABP content when being rendered in the crowd*<br>

### **Editor Sign-in Changes**

**Date of change:** 18/05/2025

**Affected Features:** PIE session

**What’s broken and why?**

*The way you login needs to be updated to use our new authentication system*

**How to fix it?**

*For any existing project, you'll need to modify your authentication settings.*\
*1. Open to Editor Preferences -> General: Sign In Settings*\
*2. Expand Per Client Sign In Settings*\
*3. Modify each client's sign-in settings to: "Custom" : "*[*https://o7e.preview.msquared.io/api/editor/login*](https://o7e.preview.msquared.io/api/editor/login)*"*\
*4. Restart your editor*

**How to test it?**

*Start a PIE session and ensure your client can connect to your local deployment.*

### **Jump Component**

**Date of change:** 15/05/2025

**Affected Features:** Player Character

**What’s broken and why?**

*We moved some of our jump logic inside a component to manage jumping.*

**How to fix it?**

*Interface with the new component to enable and disable jumping.*

### **Text Chat Update**

**Date of change:** 14/05/2025

**Affected Features:** Text Chat

**What’s broken and why?**

*We have updated text chat in the ODK to use a purely unreal base solutions.*&#x20;

**How to fix it?**

*You will need to add `WBP_ODK_TextChat` to your HUD to use the text chat functionality.*

**How to test it?**

**Test the newly added widget works in game.**\ <br>

### **Persistence Update**

**Date of change:** 13/05/2025

**Affected Features:** Persistence

**What’s broken and why?**

*The persistence world service has had it's API updated.*

**How to fix it?**

*Simply update your blueprint logic to use the new API. The biggest change is that now after registering interst in a value, you will not have the callback executed with the current value. You should use the read API after subscribing to get the initial value.*

**How to test it?**

*Ensure your persistence logic is still working.*

### &#x20;**Removal of Vending Machines**

**Date of change:** 02/05/2025

**Affected Features:** Vending Machines

**What’s broken and why?**

*Removed the user collection vending machines. New vending machines should use the overlay rather than in game UI. An example of the overlay vending machine is in the new Boneyard Template.*

**How to fix it?**

*Not necessarily something you can fix. Vending machines would have to be redesigned from scatch.*

### **Asset removals**

**Date of change:** 18/03/2025

**Affected Features:** Various

**What’s broken and why?**

*There are a number of redundant assets in the ODK we are removing. Downstream projects may be using these and could potentially be affected.*

*List of assets:*\
*- BPMC\_PlayerTags*\
*- BPMC\_PickupManager now move to the base template from the ODK plugin*

**How to fix it?**

This probably wont affect anyone. If it does reach out to your Yuga Representative with any problems.

### &#x20; **Interaction Refactor**

**Date of change:** 17/03/2025

**Affected Features:** Interaction System

**What’s broken and why?**

*We wanted to revist the interaction system and make sure it was up to date. Some configuration properties on interactable component may need updating.*

**How to fix it?**

*The only thing that should be broken are the configuration properties on the interactable component.*

**How to test it?**

*Reconfigure the configuration properties on the interactable component if needed.*

### &#x20;**Selfie Camera Refactor**

**Date of change:** 26/02/2025

**Affected Features:** Selfie Camera

**What’s broken and why?**

*Wanted to refactor the selfie cam to make some paths simpler.* \
\
*If you have tinkered with the core selfie cam classes (which you likely have not) you may be affected. How we structure data regarding scanned objects in screenshots has changed. This will affect anyone attempting to read this data.*

**How to fix it?**

Reach out to your Yuga Representative with any problems.

### World Services update

**Date of change:** 21/02/2025

**Affected Features:** Widget Handler and Persistence Manager

**What’s broken and why?**

*We are moving these system over to use the "World Service" pattern that was not available when first created. If you are using `BP_PersistenceManager` or `BPC_ODK_WidgetHandlerComponent` directly, you will run into issue.*

**How to fix it?**

*Instead of using `BP_PersistenceManager`, you can now call `GetPersistenceWorldService` from `BPFL_ODK_PersistenceWorldService`. The returned world service should have the same API as the old `BP_PersistenceManager`.  If you were using `BPC_ODK_WidgetHandlerComponent`, you should instead use `BPFL_ODK_WidgetHandler`. It has a similar API that should be easy to move over.*

### Reparenting of Base Classes

**Date of change:** 26/02/2025

*Affected Features: Core player classes updated to remove `BP_Origin_PlayerCharacter` , `BPM_Origin_PlayerCharacter` , `BP_M2_PlayerCharacterBase` , `BPM_M2_PlayerCharacterBase`, `BP_PlayerController` , `BP_ODK_PlayerControllerBase`, `J_CharacterBase` and `JM_CharacterBase` from our hierarchy.*

**What’s broken and why?**

*To provide a less opinionated, and more streamlined base ODK experience, and in conjunction with M2, we've deprecated some content that was consider superfluous for ODK purposes. For the purposes of this change, these include the player character classes mentioned above. Any class that derives from the `BP_ODK_PlayerCharacterBase` ,`BPM_ODK_PlayerCharacterBase` , `BP_M2_PlayerCharacterBase` , `BPM_M2_PlayerCharacterBase`, `J_CharacterBase` , `JM_CharacterBase` , `BP_ODK_PlayerControllerBase`, `BP_PlayerController`  or interacts with those classes might be impacted. Any content functionality that has been removed from the base hierarchy, you're free to move to your project's character classes.*

**How to fix it?**

*Any components or variables that were resident on the classes listed above, that are still in use by your project, will need to be migrated to your base class version of that class. For example if you were using the `BPMC_ApproachabilityFollowTarget` component in your morpheus actor character class, you'd readd an instance of that component to your project's verison of the class, and then fixup any references. If in doubt, please reach out in support. Any reference to these class needs to be updated. This includes casts and properties.*

**How to test it?**

*Run a linter pass on your Blueprint content that confirms all content compiles as expected. Additionally make sure all your game features work as intended.*
