weak_map / Playspace is broken in 28.30

Reference ID

dd026f8f-4c1b-63e5-3a11-c4b97624fad5

Please select what you are reporting on:

Verse

What Type of Bug are you experiencing?

Verse

Summary

weak_map is now broken as of 28.30 for join in progress players

Steps to Reproduce

Use a weak_map and session to store global player data
When players join the game, try and add them to the map
They can’t be properly added

Further investigation has revealed that GetSession and GetPlayspace are not properly working for join in progress

Expected Result

Session and weak_map should work and not go out of memory or reset

Observed Result

weak_map stops working for join in progress players

Platform(s)

windows

CODE:

using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

var GlobalData : weak_map(session, [player]game_player) = map{}

GamePlayers()<transacts>:[player]game_player=
    var Players : [player]game_player = map{}
    
    if (PlayerData:= GlobalData[GetSession()], set Players = PlayerData) {}
    Players

More info surrounding the problem:

Would you be willing to share your island code? Feel free to DM me.

EDIT: Nevermind - have it from elsewhere.

1 Like

Are you seeing this when using UEFN to launch the session? If so, can you search your Output Log after enabling LogMatchmakingServiceClient (Filters → Filters → click the checkbox by LogMatchmakingServiceClient) for something along the lines of

LogMatchmakingServiceClient: Verbose: HandleWebSocketMessage - Received message:

with reference to a sessionId later in the log message? Would you mind DM’ing me this log message if you’re able to find it (I really only need the value corresponding to sessionId)? If the issue only occurs when running outside of UEFN, that would also be useful information.

1 Like

I found the exact issue. Not what I originally thought.

It’s class_and_team_selector_device

28.30 introduced a Verse crash when assigning a class to a player that is not active (eliminated).

Reproduction Steps:

  1. Eliminate a player
  2. While they are eliminated (Fort.IsActive fails) change the class
  3. Verse crashes for ALL players in the server and never recovers

Specifically in our game Super Red vs Blue (2786-2114-8349),
It happens when a player spins our super power wheel. Before the wheel finishes, another player eliminates the player who was spinning.

Then the wheel stops, but the player to be assigned isn’t “active” and Verse crashes the server for everyone.

This did NOT happen before 28.30

1 Like

The repro you gave led directly to finding the source of the bug, and it is currently being fixed. However, I can’t say in what release the fix will go out.

4 Likes

Any update on this? Still seems to be an issue in 29.30

+1, still experiencing this.

Is the issue you’re seeing related to class_and_team_selector_device use or weak_map(session, ...) use?

The class selector device.

1 Like

Hey @voldexfn, Is this still occurring in 30.00?

FORT-739333 has been ‘Closed’. This issue won’t be fixed—please see examples of why this may be the case.