The season pass saga: a technical dive and our commitment to open collaboration

Here at MYSverse, we're passionate about creating engaging experiences like Lebuhraya. Part of that commitment involves leveraging the fantastic resources available on the Roblox platform, including official feature packages. Recently, we encountered an interesting challenge with the Season Pass system that provided not only a technical puzzle but also an opportunity to reaffirm our open development principles, especially as it impacted a highly anticipated new feature.
The mystery of the disappearing rewards
The excitement was palpable. We had just launched our brand-new Waste Disposal team in Lebuhraya on the evening of 30 May, around 6 PM.

This wasn't just any update! Access to this new job and its unique gameplay was unlocked exclusively through progressing in the new season pass. It was the first time we'd used this mechanic as a direct gateway to a core team experience, and the community was eager to dive in.

However, soon after launch, reports started trickling in: players were diligently meeting the unlock requirements, but the season pass rewards, and crucially, access to the Waste Disposal team, couldn't be claimed. Curiously, this problem seemed to vanish in private servers or during solo testing, only rearing its head in bustling public servers. This discrepancy was the first clue, and understandably, frustrations began to mount within our community. They were ready and qualified, but a mysterious barrier stood in their way.

Our engineering team dived in. After some thorough investigation, we pinpointed the issue to the caching mechanism within the official Roblox Season Pass Feature Package (Beta). The package, a valuable tool for implementing season pass functionality, appeared to be using a global cache for tracking claimed rewards and premium track status.
What does "global cache" mean in this context?
Imagine a shared checklist for an entire server. When one player claimed a reward, the central checklist was updated. This meant that for other players in the same server, the system might mistakenly believe the reward had already been claimed by them, or that a premium track status checked by one player applied to all.

In a private server with just one or a few players, this overlap is far less likely to cause noticeable problems. However, in a public server with many concurrent players, all striving to unlock the new Waste Disposal team, the issue became apparent and impactful.
Crafting the fix and making a choice
The solution involved modifying the server-side logic to ensure that all caching related to season pass progress and status was strictly player-specific. Essentially, each player now has their own individual "checklist" managed by their unique UserId
. This ensures that one player's actions or status don't inadvertently affect another's. Our team worked diligently, and by around 4 PM on 1 June, we deployed this fix in Lebuhraya versions 3.5.19 and onwards, successfully resolving the reward claim issues and finally unlocking the path to the Waste Disposal team for our patient players.

Now, we could have kept this technical insight to ourselves. Perhaps it offered a slight "competitive advantage"; a smoother system while others might still be grappling with the same subtle bug.
However, that's not really the MYSverse way, especially after seeing how directly such issues can impact player experience and anticipation.
Why we shared: our open ethos
Our commitment to open-source principles isn't just something we talk about in relation to our web services; it extends to how we operate within the Roblox ecosystem too. We frequently use and benefit from open-source packages and software, always making sure to provide attribution. Giving back is a core part of that ethos.


So, instead of keeping quiet, we decided to share our findings and the solution with the broader Roblox developer community. We posted a detailed explanation on the official Roblox Developer Forum, hoping it might help other developers who encounter similar issues or assist the Roblox team in refining the official package.

We believe that a more informed and collaborative developer community benefits everyone. By sharing challenges and solutions, we all contribute to building better, more robust experiences on the platform. This incident, while causing temporary frustration for our players eager for new content, became a small opportunity for us to do just that, turning a technical hurdle into a chance to contribute.
We're proud of our team for not only diagnosing and fixing the issue efficiently under pressure but also for embodying our organisation's values by sharing that knowledge. And a big thank you to our community for their patience and understanding during that period.
Until the next challenge!