Help with player map in verse not saving value

I’m having a tough time figuring this one out. I have been following some tutorials online for making player UI, and one thing that is used is a player map of the ui widget I made.

Then I have an init function that appears to work correctly. The playerHUDMap Length (or size) before the init function is 0, and after my character spawns with a spawn pad it’s a size of 1, which is correct.

Then in my other function, I’m calling to update the UI. There are two if statements that check if the persistent player data is available (this one succeeds) and the other if statement to try to grab the player hud widget reference (this one fails). This fails because the map is showing a size of 0 at this point. But this function is called after I’m spawned in and it was 1 earlier from the Print functions outputs outside of this Update function.

Any idea of what is happening that the map is getting cleared or not saving the player with their HUD ui widget?

Could you possibly show the print log of running this code?

I can do that next time I’m loaded into and working on it for sure!

Can I ask a general question - do you think there’s a downside to have player spawners in one device (with their own subscribed OnPlayerSpawn functions and init_player functions) and then pass the player object from that device to another device’s function that takes the player data type? Because that’s how I was getting a player from the spawner - it comes from the player stats manager verse device and then goes to the player ui hud verse device.

I don’t think that should be an issue.

1 Like

Hey sorry I’ve been away from this for so long. I have a copy-paste of the output log from the output window while the playtest was running and I ran to collect 2 item boxes, which is expected to update the money value of the player in my map.

[2026.03.06-20.09.14:918][585]LogValkyrieBeacon: [396f] (ValkyrieBeaconClient_3) MinigameStateChanged: EFortMinigameState::WaitingForCameras
[2026.03.06-20.09.15:473][605]LogVerse: :  ---- Player counter conditional device ----
[2026.03.06-20.09.15:478][605]LogVerse: : ----------- TP all players start -----------
[2026.03.06-20.09.15:483][605]LogVerse: : Stage vote - on begin
[2026.03.06-20.09.15:490][605]LogVerse: : item box manager =================== START ==========================================
[2026.03.06-20.09.15:493][605]LogVerse: : -----  default_itemRewardList_normal size of array: 11
[2026.03.06-20.09.15:494][605]LogVerse: : -----  default_itemRewardList_special size of array: 9
[2026.03.06-20.09.15:496][605]LogVerse: : 
 playerStatsManager 💻 ---- init_Spawners() called
[2026.03.06-20.09.15:498][605]LogVerse: : icyArena_gameManager ❄️ - START
[2026.03.06-20.09.15:502][605]LogVerse: : item box manager =================== START ==========================================
[2026.03.06-20.09.15:504][605]LogVerse: : 
 playerStatsManager 💻 - OnPlayerSpawned started 🧍
[2026.03.06-20.09.15:506][605]LogVerse: : 
 playerStatsManager 💻 ---- 🧍‍♂️ init_player called
[2026.03.06-20.09.15:510][605]LogVerse: : 
 playerStatsManager 💻 ---- 💾 init_player_savedData called
[2026.03.06-20.09.15:513][605]LogVerse: customVerse-logger_DEBUG_IB: 
 playerStatsManager  ---- 💾 Player stats debug output ----
[2026.03.06-20.09.15:515][605]LogVerse: customVerse-logger_DEBUG_IB:    - version: 0
[2026.03.06-20.09.15:516][605]LogVerse: customVerse-logger_DEBUG_IB:    - currency: 616
[2026.03.06-20.09.15:519][605]LogVerse: customVerse-logger_DEBUG_IB: 
   - totalWins: 0
[2026.03.06-20.09.15:522][605]LogVerse: customVerse-logger_DEBUG_IB:    - totalLosses: 0
[2026.03.06-20.09.15:524][605]LogVerse: customVerse-logger_DEBUG_IB: 
   - itemBoxesCollected_normal: 10
[2026.03.06-20.09.15:526][605]LogVerse: customVerse-logger_DEBUG_IB:    - itemBoxesCollected_special: 8
[2026.03.06-20.09.15:528][605]LogVerse: customVerse-logger_DEBUG_IB: 
[2026.03.06-20.09.15:530][605]LogVerse: : 
 player_ui_hud ---- 💻 init_player_UIWidget called
[2026.03.06-20.09.15:531][605]LogValkyrieBeacon: [396f] (ValkyrieBeaconClient_3) MinigameStateChanged: EFortMinigameState::Warmup
[2026.03.06-20.09.15:531][605]LogValkyrieBeacon: [396f] (ValkyrieBeaconClient_3) MinigameStateChanged: EFortMinigameState::InProgress
[2026.03.06-20.09.15:762][613]LogVerse: : 
 player_ui_hud ---- 💻 init_player_UIWidget - playerHUDMap size before = 0
[2026.03.06-20.09.15:764][613]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI called
[2026.03.06-20.09.15:770][613]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- playerData := GetPlayerData[playerRef]? = TRUE
[2026.03.06-20.09.15:777][613]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- widget_hud := playerHUDMap[playerRef] = TRUE
[2026.03.06-20.09.15:783][613]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI - playerHUDMap size = 1
[2026.03.06-20.09.15:784][613]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- updating ui.....
[2026.03.06-20.09.15:786][613]LogVerse: : 
 player_ui_hud ---- 💻 init_player_UIWidget - playerHUDMap size after = 1
[2026.03.06-20.09.16:865][639]LogVerse: : 
 icyArena_gameManager ❄️ - -------- running icy arena game manager --------
[2026.03.06-20.09.16:870][639]LogVerse: : 
pStats 💻 - Set_allPlayerClasses_asActive 🏃‍♀️
[2026.03.06-20.09.16:878][639]LogVerse: : 
 icyArena_gameManager ❄️  Game Manager ---- SINGLE PLAYER MATCH start
[2026.03.06-20.09.18:405][673]LogEOSSDK: LogEOSRTC: TickTracker Ticks have been delayed. TimePeriod=[10.010148s] TickIntervalThreshold=[40ms] MaxTickInterval=[313ms] MaxExecutionTime=[1ms] TicksCount=[37] ExpectedTicksCount=[301]
[2026.03.06-20.09.20:607][725]LogEOSSDK: LogEOSRTC: TickTracker Ticks have been delayed. TimePeriod=[10.031601s] TickIntervalThreshold=[40ms] MaxTickInterval=[315ms] MaxExecutionTime=[1ms] TicksCount=[38] ExpectedTicksCount=[301]
[2026.03.06-20.09.28:523][895]LogEOSSDK: LogEOSRTC: TickTracker Ticks have been delayed. TimePeriod=[10.117834s] TickIntervalThreshold=[40ms] MaxTickInterval=[464ms] MaxExecutionTime=[1ms] TicksCount=[37] ExpectedTicksCount=[304]
[2026.03.06-20.09.30:803][948]LogEOSSDK: LogEOSRTC: TickTracker Ticks have been delayed. TimePeriod=[10.196754s] TickIntervalThreshold=[40ms] MaxTickInterval=[476ms] MaxExecutionTime=[1ms] TicksCount=[37] ExpectedTicksCount=[306]
[2026.03.06-20.09.33:117][  5]LogVerse: : PinPad --- Enter
[2026.03.06-20.09.33:122][  5]LogVerse: : PinPad --- SUCCESS:
[2026.03.06-20.09.33:128][  5]LogVerse: : -------- running item box manager --------
[2026.03.06-20.09.33:133][  5]LogVerse: :  Item Box Manager Stage Select 0 -----------
[2026.03.06-20.09.38:750][132]LogEOSSDK: LogEOSRTC: TickTracker Ticks have been delayed. TimePeriod=[10.228151s] TickIntervalThreshold=[40ms] MaxTickInterval=[295ms] MaxExecutionTime=[1ms] TicksCount=[39] ExpectedTicksCount=[307]
[2026.03.06-20.09.39:484][148]LogEOSSDK: LogEOSPresence: Updating Presence to [Online]. LocalUserId=[df8...d87] RichText=[]
[2026.03.06-20.09.40:445][166]LogVerse: : 
 playerStatsManager  ---- 💰 addCoins from item box function called
[2026.03.06-20.09.40:450][166]LogVerse: : 
 playerStatsManager  ---- 💰 addCoins function called
[2026.03.06-20.09.40:456][166]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI called
[2026.03.06-20.09.40:461][166]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- playerData := GetPlayerData[playerRef]? = TRUE
[2026.03.06-20.09.40:465][166]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI - playerHUDMap size = 0
[2026.03.06-20.09.40:468][166]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- UI UPDATE FAILED
[2026.03.06-20.09.40:471][166]LogVerse: customVerse-logger_DEBUG_IB: 
 playerStatsManager  ---- 💾 Player stats debug output ----
[2026.03.06-20.09.40:474][166]LogVerse: customVerse-logger_DEBUG_IB:    - version: 0
[2026.03.06-20.09.40:476][166]LogVerse: customVerse-logger_DEBUG_IB:    - currency: 624
[2026.03.06-20.09.40:479][166]LogVerse: customVerse-logger_DEBUG_IB: 
   - totalWins: 0
[2026.03.06-20.09.40:482][166]LogVerse: customVerse-logger_DEBUG_IB:    - totalLosses: 0
[2026.03.06-20.09.40:484][166]LogVerse: customVerse-logger_DEBUG_IB: 
   - itemBoxesCollected_normal: 11
[2026.03.06-20.09.40:486][166]LogVerse: customVerse-logger_DEBUG_IB:    - itemBoxesCollected_special: 8
[2026.03.06-20.09.40:488][166]LogVerse: customVerse-logger_DEBUG_IB: 
[2026.03.06-20.09.41:096][177]LogEOSSDK: LogEOSRTC: TickTracker Ticks have been delayed. TimePeriod=[10.292488s] TickIntervalThreshold=[40ms] MaxTickInterval=[338ms] MaxExecutionTime=[1ms] TicksCount=[38] ExpectedTicksCount=[309]


[2026.03.06-20.09.41:350][183]LogVerse: : 
 playerStatsManager  ---- 💰 addCoins from item box function called
[2026.03.06-20.09.41:357][183]LogVerse: : 
 playerStatsManager  ---- 💰 addCoins function called
[2026.03.06-20.09.41:360][183]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI called
[2026.03.06-20.09.41:363][183]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- playerData := GetPlayerData[playerRef]? = TRUE
[2026.03.06-20.09.41:368][183]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI - playerHUDMap size = 0
[2026.03.06-20.09.41:371][183]LogVerse: : 
 player_ui_hud ---- 💻 UpdatePlayerUI --- UI UPDATE FAILED
[2026.03.06-20.09.41:373][183]LogVerse: customVerse-logger_DEBUG_IB: 
 playerStatsManager  ---- 💾 Player stats debug output ----
[2026.03.06-20.09.41:375][183]LogVerse: customVerse-logger_DEBUG_IB:    - version: 0
[2026.03.06-20.09.41:379][183]LogVerse: customVerse-logger_DEBUG_IB:    - currency: 632
[2026.03.06-20.09.41:381][183]LogVerse: customVerse-logger_DEBUG_IB: 
   - totalWins: 0
[2026.03.06-20.09.41:383][183]LogVerse: customVerse-logger_DEBUG_IB:    - totalLosses: 0
[2026.03.06-20.09.41:386][183]LogVerse: customVerse-logger_DEBUG_IB: 
   - itemBoxesCollected_normal: 12
[2026.03.06-20.09.41:388][183]LogVerse: customVerse-logger_DEBUG_IB:    - itemBoxesCollected_special: 8
[2026.03.06-20.09.41:390][183]LogVerse: customVerse-logger_DEBUG_IB: 

To focus on the parts of the Print outputs for the playerHUDMap here are two screenshots A and B for when the game starts a round with my player (A) and after I collected 2 item boxes (B) which would increase the currency counter value in the UI. The issue is the Map seems empty when it started out populated.

I am using multiple verse devices. One for player UI, one for item box system, separate verse file for player stats, a game manager

Ok I figured out one small thing I forgot and now it seems like it’s working AHA.

I had some verse devices involved: a player UI device, a player stats manager device, and an Item box manager device. The player stats has an @editable reference to a player UI device, and the item box manager has an @editable variable of the player stats manager. I was missing that last one, it wasn’t filled in, and I just found it out.

This was empty earlier lol. So that makes sense, because it was like there was no map or info from that device when it tried to call a function to update the UI after an item box is collected. The chain of events was broken in a way.

1 Like

Lol yea it also has happened to me too in the past, I would be digging through the code just to realize the reason it didn’t work was because the devices were never linked :joy:

Happy to see you got it resolved though regardless

1 Like