Loading a session is taking a long time (10-15mins) and is very frequently failing with a matchmaking error. When it fails, the error is presented sometimes within UEFN and usually within the Fortnite client.
Error from UEFN:
Failed to find a server through matchmaking: Error: match.session_unavailable.402
Your backend is: Fortnite
Your Build is: ++Fornite+Release-36.20-CL-44118662
Region: NAW
BuildIdOverride is: 43385645
Please select what you are reporting on:
Unreal Editor for Fortnite
What Type of Bug are you experiencing?
Stability
Steps to Reproduce
Launch Session
Expected Result
Session loads successfully and in a reasonable amount of time
Observed Result
Session takes a long time to load and often fails with a matchmaking error.
Platform(s)
PC
Island Code
Unreleased
Additional Notes
Seems to be unique to a specific island. This island is relatively large, has a lot of custom assets, and is using scene graph. We enabled scene graph on this island last night and it was loading fine, and then after the new patch this morning we have been running into this issue.
Further testing has revealed that a particular scene graph component of our own was causing the game to fail to load. Removing this component allows the game to load successfully. I’ll update the thread title to reflect this discovery.
Below is the problematic component. Unfortunately, this relies on some existing libraries we have that I won’t be able to share. (Epic) Please feel free to reach out if you need access to these, and I’ll be happy to share them privately.
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
using { /Fortnite.com/Devices }
using { /Fortnite.com/Game }
using { /Verse.org/SpatialMath }
using { /Fortnite.com/Playspaces }
using { Snowfall.Devices }
using { Snowfall.Util }
using { Snowfall.Classes }
purchaseable_component<public> := class<final_super>(interactable_component):
Logger<protected> : snowfall_logger = snowfall_logger { LogName := "purchaseable_component", LogLevel := snowfall_log_level.Info }
@editable
CoinCost : int = 1000
var AgentInteractMessage : [agent]message = map{}
OnBeginSimulation<override>():void=
(super:)OnBeginSimulation()
Logger.LogInfo("OnBeginSimulation")
if (Transform := Entity.GetComponent[transform_component]):
Logger.LogInfo("Transform: {Transform.LocalTransform.Translation}")
if:
FortRoundManager := Entity.GetFortRoundManager[]
then:
FortRoundManager.SubscribeRoundStarted(OnRoundStarted)
OnRoundStarted():void=
Logger.LogInfo("OnRoundStarted")
Global().EventBus.Subscribe(OnEvent)
if (Playspace := Entity.GetPlayspaceForEntity[]):
for (Player : Playspace.GetPlayers()):
Message := "{CoinCost} Purchase".ToMessage()
logic { set AgentInteractMessage[Player] = Message }
OnEvent(MaybeAgent: ?agent, Payload: payload):void=
Logger.LogInfo("OnEvent")
InteractMessage<override>(Agent:agent)<reads><decides> : message=
if (AgentMessage := AgentInteractMessage[Agent]):
return AgentMessage
else:
return EmptyMessage