Reference ID
e002d298-406c-94e2-4890-75bdfa831590
Please select what you are reporting on:
Verse
What Type of Bug are you experiencing?
Devices
Summary
Hello,
There is an issue with these 3 methods in the “tracker_device” :
SetTitleText
SetDescriptionText
SetTarget
Context :
I have a player (A) who is already in the game (before we start the game with the “Start Game” button)
I have a player (B) who joined the game after it started
When the game starts, I set a custom title, description, and a target value on verse.
When I assign the tracker to all the players in the game :
A will have the tracker with the new title, description, and target value set on verse
B will have the tracker with the default title, description, and target value set in the editor.
If I try to set the title, description, and target again with the same value as for A, nothing will happen (Because I’m trying to set the same values as in the server so the modification won’t be applied to the clients). But if I set different values, the modifications will be applied (Because it will be different from the server).
To sum up the bug, if the values (Title, Description, and target value) of a tracker device and a player joins the game in progress, the new player won’t have the updated version.
Steps to Reproduce
Start the game with the player ‘A’
In a verse device with the function ‘OnBegin’, modify the title, description, and target value of the tracker device.
Join the game with the player ‘B’
When ‘B’ has joined, assign the tracker to all players
Expected Result
Both players must have the tracker assigned with the title, description, and target value corresponding to those set from the verse code.
Observed Result
‘A’ will have the tracker with the new title, description, and target value set on verse
‘B’ will have the tracker with the default title, description, and target value set in the editor.
Platform(s)
windows
Additional Notes
Tracker Setup :
My verse device :
# Built-In Verse Modules :
using {/Fortnite.com/Devices}
using {/Fortnite.com/Playspaces}
using {/Verse.org/Simulation}
using {/Verse.org/Random}
# Custom Modules :
using {Scripts.Modules.Debug}
# Custom Extensions :
using {Scripts.Extensions.ArrayExt}
using {Scripts.Extensions.FortPlayspaceExt}
using {Scripts.Extensions.TrackerExt}
# Custom Tags :
debug_game_manager_device_tag <public> := class(meta4_device_tag) {}
# Custom Log Channel :
debug_game_manager_device_log_channel <internal> := class(meta4_device_log_channel) {}
# A Verse-authored creative device that can be placed in a level
debug_game_manager_device := class(creative_device) {
# ==============================[Protected Properties]============================== #
@editable
Tracker : tracker_device = tracker_device {}
@editable
TitleFromVerse : string = "This is the title set from verse"
@editable
DescriptionFromVerse : string = "This is the tracker description set from verse"
@editable
TargetValueFromVerse : int = 100
@editable
bUpdateTrackerOnPlayerAdded : logic = false
@editable
AssignAllTrackerButton : button_device = button_device {}
@editable
AssignToAgentTrackerButton : button_device = button_device {}
@editable
RemoveAllTrackerButton : button_device = button_device {}
@editable
RemoveToAgentTrackerButton : button_device = button_device {}
@editable
IncrementingButton : button_device = button_device {}
@editable
DecrementingButton : button_device = button_device {}
@editable
IncreaseTargetValueButton : button_device = button_device {}
@editable
DecreaseTargetValueButton : button_device = button_device {}
@editable
RandomTrackerTextButton : button_device = button_device {}
@editable
ForceInitialzeTrackerButton : button_device = button_device {}
# ==============================[Public Methods]============================== #
OnBegin <override> () <suspends> : void = {
Playspace : fort_playspace = GetPlayspace()
# Devices Initializations
InitializeTracker()
# Subscriptions
AssignAllTrackerButton.InteractedWithEvent.Subscribe(OnAssignAllTrackerButtonInteracted)
AssignToAgentTrackerButton.InteractedWithEvent.Subscribe(OnAssignToAgentTrackerButtonInteracted)
RemoveAllTrackerButton.InteractedWithEvent.Subscribe(OnRemoveAllTrackerButtonInteracted)
RemoveToAgentTrackerButton.InteractedWithEvent.Subscribe(OnRemoveToAgentTrackerButtonInteracted)
IncrementingButton.InteractedWithEvent.Subscribe(OnIncrementingButtonInteracted)
DecrementingButton.InteractedWithEvent.Subscribe(OnDecrementingButtonInteracted)
IncreaseTargetValueButton.InteractedWithEvent.Subscribe(OnIncreaseTargetValueButtonInteracted)
DecreaseTargetValueButton.InteractedWithEvent.Subscribe(OnDecreaseTargetValueButtonInteracted)
RandomTrackerTextButton.InteractedWithEvent.Subscribe(OnRandomTrackerTextButtonInteracted)
ForceInitialzeTrackerButton.InteractedWithEvent.Subscribe(OnForceInitialzeTrackerButtonInteracted)
Playspace.PlayerAddedEvent().Subscribe(OnPlayerAdded)
Log("[OnBegin]")
}
# ==============================[Protected Methods]============================== #
InitializeTrackerRandomText <protected> () : void = {
RandomTitle := GenerateRandomString(GetRandomInt(5,10))
RandomDescription := GenerateRandomString(GetRandomInt(15,25))
Tracker.SetText(RandomTitle, RandomDescription)
}
InitializeTrackerRandomTarget <protected> () : void = {
Tracker.SetTarget(GetRandomInt(15,20))
}
InitializeTrackerRandom <protected> () : void = {
InitializeTrackerRandomText()
InitializeTrackerRandomTarget()
}
InitializeTracker <protected> () : void = {
Tracker.SetText(TitleFromVerse, DescriptionFromVerse)
Tracker.SetTarget(TargetValueFromVerse)
}
# ==============================[Private Methods]============================== #
OnRandomTrackerTextButtonInteracted <private> (Agent : agent) : void = {
Log("[InitializeTrackerText]", debug_game_manager_device_log_channel)
InitializeTrackerRandomText()
}
OnAssignAllTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnAssignAllTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.AssignToAll()
}
OnAssignToAgentTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnAssignToAgentTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.Assign(Agent)
}
OnRemoveAllTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnRemoveAllTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.RemoveFromAll()
}
OnRemoveToAgentTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnRemoveToAgentTrackerButtonInteracted] : ", debug_game_manager_device_log_channel)
Tracker.Remove(Agent)
}
OnIncrementingButtonInteracted <private> (Agent : agent) : void = {
CurrentValue := Tracker.GetValue()
NewValue := Tracker.GetValue() + 1
Log("[OnIncrementingButtonInteracted] : CurrentTarget = {CurrentValue} | NewTarget = {NewValue}", debug_game_manager_device_log_channel)
Tracker.SetValue(NewValue)
}
OnDecrementingButtonInteracted <private> (Agent : agent) : void = {
CurrentValue := Tracker.GetValue()
NewValue := Tracker.GetValue() - 1
Log("[OnDecrementingButtonInteracted] : CurrentTarget = {CurrentValue} | NewTarget = {NewValue}", debug_game_manager_device_log_channel)
Tracker.SetValue(NewValue)
}
OnIncreaseTargetValueButtonInteracted <private> (Agent : agent) : void = {
CurrentTarget := Tracker.GetTarget()
NewTarget := Tracker.GetTarget() + 1
Log("[OnIncreaseTargetValueButtonInteracted] : CurrentTarget = {CurrentTarget} | NewTarget = {NewTarget}", debug_game_manager_device_log_channel)
Tracker.SetTarget(NewTarget)
}
OnDecreaseTargetValueButtonInteracted <private> (Agent : agent) : void = {
CurrentTarget := Tracker.GetTarget()
NewTarget := Tracker.GetTarget() - 1
Log("[OnDecreaseTargetValueButtonInteracted] : CurrentTarget = {CurrentTarget} | NewTarget = {NewTarget}", debug_game_manager_device_log_channel)
Tracker.SetTarget(NewTarget)
}
OnPlayerAdded <private> (Player : player) : void = {
bUpdateTrackerOnPlayerAddedStr := if (bUpdateTrackerOnPlayerAdded?) then "True" else "False"
Log("[OnPlayerAdded] : bUpdateTrackerOnPlayerAdded = {bUpdateTrackerOnPlayerAddedStr}", debug_game_manager_device_log_channel)
if (bUpdateTrackerOnPlayerAdded?) :
UpdateTrackerOnPlayerAdded()
}
OnForceInitialzeTrackerButtonInteracted <private> (Agent : agent) : void = {
Log("[OnForceInitialzeTrackerButtonInteracted]", debug_game_manager_device_log_channel)
InitializeTracker()
}
UpdateTrackerOnPlayerAdded <private> () : void = {
Log("[UpdateTrackerOnPlayerAdded]", debug_game_manager_device_log_channel)
InitializeTracker()
}
}
GenerateRandomString <public> (Length : int) : string = {
Chars := "abcdefghijklmnopqrstuvwxyz"
var Result : string = ""
for (Index := 0 .. Length) :
if (RandomChar := Chars.GetRandom[]) :
set Result += array {RandomChar}
return Result
}
Player ‘A’ in the game when launched :
Joining Player ‘B’ POV :
3 Likes
The status of UCB-1008 incident has been moved from ‘Needs Triage’ to ‘Closed’.
bozzr1
(bozzr)
December 9, 2023, 6:29am
4
Also experiencing this issue with updating tracker details via Verse for players who join in progress, they only get assigned the default configuration of the tracker.
OP has already provided a fantastic amount of info already, but thought I should reply as the Bug-Reporter response seems to indicate that the issue is closed/resolved - which isn’t the case, this problem is still occuring.
Can confirm this is Still happening as of 29.40 Patch!