Summary
~12% of returning players have no persistable weak_map data for the whole session when they matchmake into our island again after finishing a match (regular matchmaking or portal). If they matchmake again, their data loads normally, so the data is not lost.
Please select what you are reporting on:
Creative
What Type of Bug are you experiencing?
Matchmaking
Steps to Reproduce
- Publish an island that stores player data in a module-scoped persistable:
var PlayerStatsMap : weak_map(player, player_stats_table) = map{} - A player plays a full match on the island until it ends normally.
- From the end of that match, the player matchmakes into the same island again (regular Fortnite matchmaking or a matchmaking portal).
- When the player joins (
PlayerAddedEvent, orGetPlayspace().GetPlayers()inOnBegin), we wait untilPlayer.IsActive[]succeeds, checking every 0.5 seconds for up to 100 attempts. - We then wait until
Player.GetFortCharacter[]andFortCharacter.IsActive[]succeed, checking every 0.5 seconds for up to 100 attempts.
(Steps 4 and 5 were included to try to ensure data was loaded and accesible when we didPlayerStatsMap[Player]) - We check
PlayerStatsMap[Player]every 0.1 seconds for 2.0 seconds. We only read the map here and never write to it. This is the function we use (timing values written in as literals):
var PlayerStatsMap<public> : weak_map(player, player_stats_table) = map{}
GlobalGetPlayerStats<public>(InAgent : agent)<transacts><decides> : player_stats_table =
Player := player[InAgent]
Player.IsActive[]
PlayerStatsMap[Player]
# Called with Seconds = 2.0 on join, and Seconds = 10.0 on every RETRY.
PollForPersistentData(Player : player, Seconds : float)<suspends> : logic =
var Remaining : float = Seconds
loop:
if (not Player.IsActive[]):
return false
if (GlobalGetPlayerStats[Player]):
return true
if (Remaining <= 0.0):
return false
Sleep(0.1)
set Remaining -= 0.1
- If no entry is found, we wait up to 15 seconds for an active
fort_characterand then show the player the “NO SAVED DATA FOUND” dialog - If the player presses RETRY (meaning they are not a new player), we send the
PlayerDataNotFoundanalytics event (only on the first press) and show “Looking for your save…” dialog - While retrying, we call
PollForPersistentData(Player, 10.0), which checksPlayerStatsMap[Player]every 0.1 seconds for 10 seconds. The player can retry up to 5 times. - If the data never arrives, we do NOT write a new entry to
PlayerStatsMap. We show this notice, which closes on its own after 20 seconds, and ask the player to matchmake again - The player leaves and matchmakes into the island again. This time
PlayerStatsMap[Player]returns their full saved data.
Expected Result
When a player who has saved data joins the island, PlayerStatsMap[Player] returns their saved player_stats_table within a few seconds of Player.IsActive[] and FortCharacter.IsActive[] succeeding, every time, no matter how they matchmade in.
Observed Result
In about 10–14% of plays (12.5% on average over 30 days, 23,229 of 185,260 plays), PlayerStatsMap[Player] has no entry for a returning player during the whole wait (PollForPersistentData(Player, 2.0), then up to 5 calls to PollForPersistentData(Player, 10.0) while the player is shown the dialog). The data is not lost: when the same player leaves and matchmakes again, PlayerStatsMap[Player] returns their saved data normally. We have not confirmed whether the data ever shows up later in the same session.
Platform(s)
All (PC, PlayStation, Xbox, Nintendo Switch, Mobile)
Island Code
8920-0084-1283
Upload an image
Additional Notes
On our published island, roughly 10–14% of players every day join a match and their persistable data (a module-scoped weak_map(player, player_stats_table)) is not available for the whole session. It happens when a player finishes a match on our island and then matchmakes into our island again, either through regular Fortnite matchmaking or through a matchmaking portal. It does not happen every time. When the affected player leaves and matchmakes again, their data loads normally, so the data still exists but is not loaded for that session.
Data from our in-game analytics, 2026-09-11 to 2026-10-10:
- 185,260 plays
- 23,229 sessions where the player had no persistent data and told us they are not a new player (12.5%)
- Daily rate between 10.8% and 21.0%, usually around 11–13%
| Date | Day | Plays | PlayerDataNotFound | Percent |
|---|---|---|---|---|
| 2026-09-11 | Friday | 5,310 | 1,115 | 21.0% |
| 2026-09-12 | Saturday | 9,771 | 1,209 | 12.4% |
| 2026-09-13 | Sunday | 10,367 | 1,118 | 10.8% |
| 2026-09-14 | Monday | 4,927 | 565 | 11.5% |
| 2026-09-15 | Tuesday | 4,256 | 494 | 11.6% |
| 2026-09-16 | Wednesday | 3,829 | 494 | 12.9% |
| 2026-09-17 | Thursday | 2,654 | 324 | 12.2% |
| 2026-09-18 | Friday | 4,711 | 626 | 13.3% |
| 2026-09-19 | Saturday | 9,074 | 1,086 | 12.0% |
| 2026-09-20 | Sunday | 10,800 | 1,322 | 12.2% |
| 2026-09-21 | Monday | 5,290 | 629 | 11.9% |
| 2026-09-22 | Tuesday | 4,152 | 525 | 12.6% |
| 2026-09-23 | Wednesday | 4,036 | 559 | 13.9% |
| 2026-09-24 | Thursday | 3,368 | 396 | 11.8% |
| 2026-09-25 | Friday | 4,983 | 587 | 11.8% |
| 2026-09-26 | Saturday | 8,718 | 1,137 | 13.0% |
| 2026-09-27 | Sunday | 10,689 | 1,373 | 12.8% |
| 2026-09-28 | Monday | 4,874 | 547 | 11.2% |
| 2026-09-29 | Tuesday | 4,560 | 502 | 11.0% |
| 2026-09-30 | Wednesday | 4,708 | 580 | 12.3% |
| 2026-10-01 | Thursday | 3,499 | 402 | 11.5% |
| 2026-10-02 | Friday | 5,428 | 792 | 14.6% |
| 2026-10-03 | Saturday | 10,043 | 1,310 | 13.0% |
| 2026-10-04 | Sunday | 11,398 | 1,400 | 12.3% |
| 2026-10-05 | Monday | 5,309 | 724 | 13.6% |
| 2026-10-06 | Tuesday | 4,618 | 525 | 11.4% |
| 2026-10-07 | Wednesday | 4,438 | 522 | 11.8% |
| 2026-10-08 | Thursday | 3,988 | 456 | 11.4% |
| 2026-10-09 | Friday | 6,015 | 724 | 12.0% |
| 2026-10-10 | Saturday | 9,447 | 1,186 | 12.6% |


