Hi devs,
We recently encountered an issue in our production game Lebuhraya while using the official Season Pass Package (Beta) . We found that players were sometimes unable to claim season pass rewards in public servers, although it worked correctly in private servers and during solo testing.
The issue
After investigation, we discovered that the in-script cache for claimedRewardIdsState (and potentially trackState which caches premium pass ownership) appeared to be global rather than per-player. This meant that once a reward was claimed by any player in a server, or a premium status was cached, it could affect the state for all other players in that same server instance. This behaviour isn’t easily noticeable during private testing due to the low player count.
Our solution
We modified the server-side SeasonPasses script to make these caches player-specific. This typically involves changing the cache tables from: local claimedRewardIdsState = {} :: { [Types.RewardId]: boolean } to something like: local claimedRewardIdsState = {} :: { [number]: { [Types.RewardId]: boolean } } (where the number is player.UserId )
And then updating all logic that reads from or writes to these caches to use the player.UserId as the primary key. We also ensured these player-specific cache entries are cleared when a player leaves the game to prevent memory leaks.
This kind of issue can be tricky to debug because it often only manifests in live, multi-player environments.
We wanted to share this finding in case other developers using the package might encounter similar problems or to help the team refine the package for future updates. The Season Pass Package is a great resource, and hopefully, this information can help make it even more robust.
Thanks!


