Observer Control singletons no longer default M2 Singletons
What’s broken and why?
As we move to turning off the M2 Deprecated plugin by default, we are removing dependencies on legacy content. Our Observer role is scheduled to be simplified, but currently it is tied to the legacy classes which means it cannot be a default singleton. Specifically the control panels often used in this mode will not be available and you will see the following logs:
LogBlueprintUserMessages: [BP_ObserverPawn_C_0] Observer Camera Control Panel isn't present in the level! Keybinding will not work.
LogBlueprintUserMessages: [BP_ObserverPawn_C_0] Observer HUD Control Panel isn't present in the level! Keybinding will not work.
How to fix it?
The following needs to be done for any map in which you want to use the Observer role.
Navigate to World Settings
Search for Additional Singletons
Add the required Singletons
BPM_ObserverCameraControls
How to test it?
Ensure Observer functions as expected.
USkeletalCrowdMeshStore removed
What’s broken and why?
USkeletalCrowdMeshStore
and UJ_ModularCrowdMeshStore
types have been removed.
These were previously optional but deprecated. This change removes support for them in an effort to clean up and simplify the USkeletalAnimatedCrowdData
.
USkeletalAnimatedCrowdData::DefaultMeshIndices
has also been removed. It was generally unused and no longer makes sense in context.
How to fix it?
Any existing mesh store assets should now be deleted.
USkeletalAnimatedCrowdData
data assets will need updating to specify the USkeleton
used by the crowd, if this hasn’t been done already. See below:
How to test it?
Test that crowd continues to work as before.
Network Level callbacks renamed to Net Relevancy
What’s broken and why?
The OnNetworkLevelChanged
callback has been renamed OnNetRelevancyLevelChanged
.
The NetworkLevel
struct has been renamed NetRelevancyLevel
.
How to fix it?
There are core redirectors so these renames will be automatically be applied in your project, but you should use the new names where possible.
How to test it?
Project compiles.
Made the example map use simplified base classes (e.g. M2M_CharacterBase
instead of JM_CharacterBase
)
What’s broken and why?
As part of our planned simplification work, we are cleaning up the logic in our Example content, removing deprecated features and providing simplified alternatives to core/example features that we are cleaning up.
We have now reparented the example content to new base classes (e.g. M2M_CharacterBase
, instead of JM_CharacterBase
, where the former is a parent of the latter). This means that a bunch of the logic added at the JM_CharacterBase
level or below has been removed.
This includes:
Character resizing (awaiting simplification)
Roles (awaiting simplification)
Capabilities (can be re-added in downstream projects if desired)
Out of bounds auto-respawning (awaiting simplification)
Approachability movement (click to move, etc.)
Sliding & bounce components
over-the-shoulder/topdown cameras
"inhibitor component"/Player capture component
debug command component (looks unused, part of the old live config system?)
If you are using the deprecated character (e.g. basing your character off of BPM_Origin_PlayerCharacter
, or accessing the JM_CharacterBase
directly), there should be no changes. If you are basing your character off of e.g. BPM_M2Example_PlayerCharacter
, some functionality will have been removed.
How to fix it?
If you depend on any of the features removed, get in touch - the features will either be re-added in due time, or are not being supported by MSquared. If any are absolutely essential to your project, you can fall back to using the deprecated Origin
classes for now, but this is not advised in the long run.
How to test it?
Review the removed features, check your core functionality is still as expected.
Deprecation of Juno/M2 Activities and Venue_Orb Map
What’s broken and why?
The legacy Activities system has been deprecated. This was used extensively in the Venue_Orb map. The blueprint facing API has been deprecated and all assets referencing these functions have either been deleted or modified to remove the references, depending on complexity of their connection to this system.
Areas of note:
BP_PlayerController
References to Activity widget removed
BP_OrbUtility
Handle teleport logic removed
BPM_FadeToBack
No longer gated behind a capability that was previously removed from the platform (Capabilities.ActivityControls)
For a full list of affected classes, please refer to ActivityDeprecationCodeChanges.txt
For a full list of affected assets, please refer to ActivityDeprecationChanges.txt
If you have content that was built on the Activities API, you will find the deprecation warnings will cause a warning at compile time for your blueprints. If you use our asset linter, assets using this API will fail the linting rules due to these warnings.
How to fix it?
The general advice here is to remove all references to this system ahead of taking this update. Soon we will remove this functionality altogether, which means anything that is still using it will break entirely.
If you are unsure as to whether or not you have used this, you can do a dry run on taking this update and see if there are any new warnings created when linting your content.
If there are warnings and you are not yet ready to remove the content, you can get the linter to ignore these for the time being. To do this, you’ll need to ensure your linting rules use a modified version of JLR_BP_Compiles
and you need to add the specific strings to be ignored in the “Allowed Blueprint Warnings Regex” array. This will not work once we fully remove the underlying C++, so please plan accordingly.
If your project relies on any content removed as part of this process, you will need to create duplicates of the affected assets and keep them in project-space to avoid unwanted changes. If these assets inherit from Activity related classes, you must anticipate that these classes will also be removed in the near future.
How to test it?
Check all affected content works as expected.