See this guide on how to update your existing project to a new editor release.
Version Released:
Morpheus Platform Release v30
05/11/2024
Latest Binary Version 30.0.0
Please note v30 removes support for any build on v25.0.0 on Pixel Streaming.
Support for multiple unique video streams with Millicast
Although users have been able to create multiple Millicast streams, this feature was experimental and could lead to crashes and low performance due to consuming significant amounts of RAM and VRAM. We've improved this significantly and two simultaneous Millicast streams are fully supported on scales of up to 15000 CCU.
Using more than two Millicast screens is possible and is unlikely to cause out of memory issues, but it is unsupported by MSquared and downstream projects need to test their use case and target hardware.
Support for microphone on Mac
Crowd audio is now fully supported on Mac. The user can now listen to other players, talk with them and configure the input audio device.
This required considerable changes and we are keen to receive feedback on your experience, particularly on audio quality.
Improved Mac performance
We have been focusing on improving Mac performance across the board, focusing on the Mac Studio M2 Ultra (at 5000 CCU) and MacBook Air M2 (at 1000 CCU).
Removed JLR_Plugin_NoFPDependencies
Affected Features: Linting
What’s broken and why?
The firepit linting rule does not do anything, so has now been removed. That means the classes JunoLintRule_Plugin_NoFPDependencies and JLR_Plugin_NoFPDependencies are no longer present. If you have any custom lint rules, the file will be missing.
How to fix it?
There will be a “none” in place of the removed linting rule in any of your custom rule set assets. Remove these. (Or a resave would also be sufficient to stop things complaining)
How to test it?
If your preflights run fine, all is well!
Health in HealthComponent no longer replicated in background
Affected Features: Health Component
What’s broken and why?
The Health variable as part of the HealthComponent is no longer replicated in the background. This is because it was very expensive and could limit the scale of deployments.
How to fix it?
If your project is relying on background health, or the health increased / damage taken callbacks in the background, the game design will need to be adjusted to avoid this.
How to test it?
Check that any health based functionality in your project still works.
Improved Raycastable Crowd Prioritization
Affected Features: Shooting
What’s broken and why?
Raycastable Crowd prioritization is now more configurable from Blueprints.
How to fix it?
Open the RaycastableCrowd asset used by your project’s Animated crowd. This will most likely be in the DA_Pawns asset linked in your Roles Data table.
In the RaycastableCrowd asset, there is a new PriorityCalculation property that exposes multiple prioritization strategies and their configurations.
The default strategies that were in-use before this change were the View Frustum and the Area Of Influence so you will need to enable and configure (based on your project needs) both of these strategies like the following:
Force everyone into LOD1 so they will be using RaycastableCrowd
Shoot at other players and verify they are still receiving damage/interacting.
Removed JM_ModularCharacterComponent and AddedCrowdStaticMeshesOverride
Affected Features: Avatars
What’s broken and why?
In v29 the JM_ModularCharacterComponent was deprecated with the removal of modular characters, and its functions merged into M2M_CharacterAssetComponent. In v30 JM_ModularCharacterComponent has been removed entirely.
JM_CharacterBase::AddedCrowdStaticMeshesOverride and JM_CharacterBase::UpdateDefaultCrowdMemberInitializer have also been removed in favour of the equivalent functions on M2M_CharacterAssetComponent as they’ve been deprecated for several version.
How to fix it?
Anywhere you call a function on JM_ModularCharacterComponent, you should instead call the equivalent function on M2M_CharacterAssetComponent instead. The JM_CharacterBase class has both of these components, so you can get the M2M_CharacterAssetComponent directly from the same actor. v29 had deprecation messages on each function to tell you the equivalent - they are nearly all named exactly the same, except for functions with Interop in the name where this word has been removed.
If you’ve set an asset in JM_ModularCharacterComponent::PostProcessAnimBlueprint you should instead set it in M2M_CharacterAssetComponent::PostProcessAnimBlueprint as this can’t be automatically migrated.
Anywhere you set JM_CharacterBase::AddedCrowdStaticMeshesOverride you should instead set M2M_CharacterAssetComponent::AddedCrowdStaticMeshesOverride. Any call to JM_CharacterBase::UpdateDefaultCrowdMemberInitializer should be replaced by M2M_CharacterAssetComponent::ReloadCharacter.
How to test it?
Blueprints will compile and avatars will behave the same as before.