Morpheus Platform Release v35
See this guide on how to update your existing project to a new editor release.
Version Released: 20/02/2025
Nameplate simplification
Nameplates have been simplified, allowing for a Blueprint-only implementation. An example has been provided in M2 Example.
AI State Tree support for bots

AI State Trees can now be used and MSquared-specific documentation is available here: https://docs.msquared.io/creation/unreal-development/features-and-tutorials/bots#using-state-tree
SkeletalCrowd supports dynamic addition of meshes at runtime
What’s broken and why?
- SkeletalCrowdMeshStoremesh list is now ignored - meshes are now processed and useable by- SkeletalCrowdComponenton demand at runtime. This shouldn’t break anything, but may mean processing of meshes is happening at a different time in the fame.
- This change in turn has simplified a lot of setup required to get meshes added during - BeginPlay, and means we can remove the- ISkeletalCrowdMeshProviderInterfaceand all uses of it
- All code related to avatars and attachments has been updated to handle this 
How to fix it?
ISkeletalCrowdMeshProviderInterface is removed. If code/BP was previously using this it can now be removed. When creating an FAnimatedCrowdMemberInitializer using one of these (formerly) provided meshes:
- For skeletal meshes there is nothing to do 
- For static meshes, previously the crowd got its attachment information from the mesh store data, which in turn was supplied from the mesh provider interface. This no longer exists. Therefore it must be passed in using the new - StaticMeshSocketand- StaticMeshTransformmembers on the- FAnimatedCrowdMemberInitializer.
Similarly, CharacterAssetComponent’s AddedCrowdStaticMeshesOverride array has changed type. It is no longer a list of static meshes, but a list of M2_StaticMeshAttachment types (including socket, transform and custom data as well). Code / BP usage of this array will need fixing up, or ideally, changing to use the AddAttachment function which is the preferred path.
Carnival Model Component
What’s broken and why?
Blueprint functions to manually add and remove carnival meshes.
How to fix it?
To manually add a mesh (e.g. attachment) to a Carnival model, you can use the UJ_ModularCharacterComponent as usual.
How to test it?
Carnival characters and attachments should work as usual.
Made the example map use new simplified character classes
What’s broken and why?
The base classes used by the example map, and the example plugin have been reparented, so that they use less of the deprecated content (e.g. the interaction system). The example map’s functionality should remain largely unchanged, but any classes extending off the M2Example bases that depend on features in M2Deprecated may not work.
The changes to the example content are as follows:
- The ExampleMap now uses its own - BP_M2Example_BotBehaviorStore, instead of the default one- This uses a different chat behavior 
 
- WBP_M2Example_TextChathas been retargeted to use the- BPMC_M2Example_TextChatComponentinstead of the deprecated text chat component. If you are using this widget without using the other example classes, this may fail.
- BPM_Example_PlayerCharacterhas been reparented to a simplified base class. This removes some functionality, such as the deprecated interaction system
- BP_Example_PlayerCharacterhas been reparented to- BP_M2_PlayerCharacter. This replaces some features, such as nameplates, and removes some deprecated functionality
NOTE: This change does not affect users exclusively using the content in M2Deprecated, e.g. WBP_Origin_HUD and BP_Origin_PlayerCharacter, only those using content in the M2Example plugin.
How to fix it?
If you have assets extending example content, but that depends on deprecated content, you will need to either migrate away from using the deprecated content, or reparent your assets onto the deprecated base classes, e.g. BP_Origin_PlayerCharacter.
How to test it?
Check whether your core classes extend any of the following:
- BP_M2_PlayerCharacter
- BP_Example_PlayerCharacter
- BPM_Example_PlayerCharacter
And check whether your UI includes WBP_M2Example_TextChat. If these are true, you may need to update their usage, if there are any compile errors, or deprecated features stop working.
Made M2_WorldBuilderUXSubsystem::bUpdateRequired read only
What’s broken and why?
UpdateRequired was previously BlueprintReadWrite, but is not intended to be modified externally in blueprints. It has therefore now been made BlueprintReadOnly. Any downstream uses where it was set should be removed.

Change to Persistence Subsystem Read Query
What’s broken and why?
The response after reading from the KVStore has been minorly adapted to also return information about whether a key exists within the store. Instead of a map of key and value strings, it’s replaced with a struct that also contains a success boolean that indicates whether that key exists.
This means that the On Persistent Value Query Complete delegate will execute for both successfully found keys and non-successfully found keys.
How to fix it?
If you’re relying on the above delegate to execute only for successfully found keys, you will need to use Get Session Value String in your custom event to add an additional check for whether the key exists or not, before continuing with any logic.
How to test it?
Persistence systems should operate as normal.
Last updated
Was this helpful?

