Team Rotation causes a desync between device "Current Team" states and Verse GetTeamCollection()

Summary

During Round 1, when players are on their original teams, Verse and Fortnite devices are perfectly synced. However, in Round 2, when Team Rotation switches the players to new teams, a desynchronization occurs. Fortnite devices correctly detect the new teams, but Verse incorrectly treats the players as if they are still on their Round 1 teams. This creates a loop where the two systems desync every other round, only syncing back up when players are rotated back to their original starting teams.

Please select what you are reporting on:

Creative

What Type of Bug are you experiencing?

Assets

Steps to Reproduce

  1. Enable team rotation and have 2 teams
  2. Do functions for both teams through Fortnite devices and Verse. For example, tracking team size (player counter, verse tracking), teleporting them etc.

Expected Result

Verse and Fortnite devices are in sync

Observed Result

Verse and Fortnite devices are desynced every other round

Platform(s)

All platforms

Getting this over to the team.

This is just a confusion caused by Team Rotation (which is not the same as Player Rotation or Team Shuffle) related to how it works and how verse gives it to us (as arrays). I see many people confusing with this that I already helped on the past…

I agree that for beginners it may cause confusion, but after checking in depth, nothing is wrong with it (not really a bug, besides the complex details)…

The teams in verse are class references, stored on playspace as an Array type.
On a array, the Index 1 will always be Index 1, same with Index 0, 5, etc. When the teams rotate, if you are checking them in verse by the array index, you for sure will think they are off-sync. Due to this, You can query `Teams[4]on round 1 with it being the Team 5 of playspace, but on round 3 querying the sameTeams[4]` it being the Team 7 of playspace. This is completely normal, and other features (such as Team Visuals, Colors, Names) may follow arround this (when they are shared properties).

If you want to ensure the teams are the same across every rounds, you should compare the teams by their classes, and not by their positions on the Array.
Also, depending on other island settings, the Teams list may get shuffled (ex. 1, 2, 3, 4 turns into 4, 2, 1, 3) before the players get assigned to them at the beginning of the game, and on other cases it gets shifted/rotated (ex. 1, 2, 3, 4 turns into 2, 3, 4, 1) like described above (Both behaviors exist depending on other configurations set on island settings).

If you want to rely on verse array for the team configuration, I would suggest you to disable the team shuffle/rotation on island settings, and configure a proper ballancer device to split and configure the player teams through verse, so you have total control over it without needing to deal with these consufing/complex details, this is what most devs choose to do.
The island options are still useful but more used for other purposes where teams shuffle/rotation are required on the game but not important on the verse logic (ex. splitting groups, defining visuals or so on), on these cases the dev can abstract most of these confusing details that you commented about

This is not really a bug, but I agree with you that it is annoying, specially for people that don’t understand these aspects (mostly due to the lack of explanation and documentations on the epic docs… We only discover how these works exactly usually due to extensive testing on many different cases and scenarios haha)

1 Like

I think in the future we will receive teams in verse implemented as agent_groups, which would make everything much easier :folded_hands:

FORT-1113888 has been added to our ‘To Do’ list. Someone’s been assigned this task.