02/09/2025
Hello everyone! We’re happy to announce the release of the new version 1.10.0 of MultiWorld.
The update is available on Fab for UE5.4, UE5.5 and UE5.6.
# New features
- Input Mode is automatically handled when switching between worlds. The feature is enabled by default and makes the common pattern of setting the Input Mode in the BeginPlay of a Level to work out-of-the-box also with MultiWorld, not requiring any change to existing code and allowing the Level to be tested directly with Play-In-Editor or with a simple OpenLevel.
For advanced scenarios, the feature can be controlled by FMultiWorldLoadParameters::bAutoHandleInputMode and UMultiWorldStatics::SetAutoHandleInputModeForMainWorld(). Read more at "Input Modes" in the documentation.
- Added functions UMultiWorldStatics::EndWorldWithDelegate(), UMultiWorldStatics::EndAllWorldsWithDelegate(), EndWorldAsync BP node,EndAllWorldsAsync BP node.
- Added the function UMultiWorldStatics::GetWorldPtr(), to retrieve a UWorld * given a FMultiWorldHandle.
- Added the property FMultiWorldLoadParameters::URLOptions, it’s an optional string of options like the ones passed to the standard OpenLevel function. For example it can be used to instantiate a custom Game Mode in the loaded Level setting it to "?Game=".
# Bug fixes
- Fixed UMultiWorldManager::LoadWorldAsync() failing to load the same map multiple times.
- Fixed an assert firing when using the World Partition.
- Fixed an assert firing when using the World Composition in PIE.
# Migration notes (from v1.9)
- the new feature "Auto handling of the Input Mode" introduces a breaking change, since it’s enabled by default. We suggest to update your code to take advantage of the new feature, because it simplifies the Worlds’ initialization code and makes them able to work also when launched directly (helpful for testing them).
To use the new feature in normal use-cases, you should simply move your code that configures the InputMode in the Levels’ BeginPlay method, removing the implementation of the IMultiWorldActorInterface interface if no more needed.
If instead you prefer or need to preserve the old behavior: call UMultiWorldStatics::SetAutoHandleInputModeForMainWorld() once passing false during your game initialization; then set FMultiWorldLoadParameters::bAutoHandleInputMode to false on each call of the LoadWorld*() methods.
- Function UMultiWorldStatics::EndWorld() is marked as deprecated and will be removed in a future update. Call UMultiWorldStatics::EndWorldWithDelegate() or the EndAllWorldsAsync BP node instead.