Inspiration

The original inspiration comes from childhood memories. The fun of collecting Pogs, while challenging friends to duels where the Pogs you flip, you get to keep. I hope to bring that fun to younger generations that haven't had a chance to experience this game. This update aims to make the world more engaging, with interesting progression systems and better visibility of the Pogs collection.

What it does

The goal of the game is to capture the fun of Pogs, while keeping it as simple as possible. Matches are played with 3 random Pogs from each player's inventory. Each player gets a turn to grab a Slammer and try to flip a Pog to keep it. The gameplay loop consists of playing matches, winning Pogs from other players and earning Tokens after each match. Then, using Tokens to purchase Surprise Packs that contain 3 random Pogs to add to their collection, while completing quests, which grant them more rewards to keep them growing their collection.

The update includes an onboarding tutorial, 4 leaderboards (Visits, Matches Played, Pogs Won and Pogs Lost). 12 quest goals, grouped by collecting Pogs, playing matches and winning Pogs from other players. Completing a goal will grant the player a specific number of Surprise Packs. A Pogs collection screen was added for players to inspect their collection, the rarities of the Pogs, and the duplicates they own. It also features a progress bar with a few milestones, giving the player a sense of how many they still have left to collect.

A custom notification system was added to inform players when they earned a reward and to show which Pogs they won or lost at the end of a match. Players are also shown information during matches, to let them know if a Pog they flipped was already theirs or if it belonged to the opponent. The Surprise Pack opening station screen was updated to show when a Pog was not in the player's inventory already. Similarly, the notification showing which Pogs were won or lost after each match also shows when a Pog was not in the inventory already.

A few minor updates worth mentioning are a button in the arena to reset the Slammer in case it is occluded or stuck. The rarity of the Pogs was rebalanced. Surprise Pack price was reduced, and music/sound effects were also added. Also, a few edge cases were handled, such as players entering the lobby while a match is ongoing, or players leaving the world mid-match.

How I built it

The persistent variables system was used for leaderboards and quests. It was also used for the Pogs inventory, but more on that later.

The collection screen was an interesting challenge, in particular the progress bar on top, which was built using View instances placed right next to each other, with marginLeft: -1 style to overlap them so the seams are not visible, and then maintaining a collection of color bindings to control the color transition of the progress bar.

The custom notification system was built using an overlay UI and object pools that reuse bindings to show multiple independent notifications simultaneously. Notifications transition in and out of view using an AnimatedBinding for opacity, and they show text and images.

Challenges I ran into

The biggest challenge was transitioning from the world inventory system to persistent variables to store the Pogs player inventory. The decision was made because the world inventory system was too slow when handling so many unique consumable inventory items (80 Pogs), which was evident when loading the collection screen. Since visitors of the previous version of the world could already have Pogs in their world inventory, a migration process was implemented to store their existing inventory in a persistent variable. Considering the limitations in the size of object persistent variables, an array of numbers was used to store the inventory for players, which is correlated using the array index.

Accomplishments that I'm proud of

I am particularly proud of the custom notification system. It supports both VR and mobile clients. It is capable of up to 5 simultaneous independent notifications on screen. And can show different notifications to different players at the same time while using a single Overlay UI Gizmo instance.

What I learned

I learned there's a limit to the world inventory system, so from now on, I'll consider persistent variables when designing large inventory systems. I also learned clever ways to make the most of the UI system, such as the implementation of the progress bar in the collection screen and the custom notifications in an Overlay UI.

What's next for Pogs

There's a lot of room for improvement in the visuals department. Just a few days ago, the new generative AI tools were enabled for me in the Worlds Desktop Editor, so I plan to experiment with them to enrich the world visually.

I am also thinking about a system that allows 2 players to agree beforehand which pogs they want to risk in a match. This would bring the world closer to the original game, but I would like players to have the choice of keeping it simple if they prefer. Other modes, such as starting with pogs stacked on top of each other, could be added too.

Another idea is to display the names of the contestants on top of the arena, which will increase anticipation for players while waiting in the lobby and make it more interesting for spectators.

I am planning to keep growing the Pogs collection with added quests over time, including seasonal events and Pogs. And to improve the Surprise Pack purchase UI to allow entering the number of Packs to purchase at once.

Additionally, I am thinking about implementing a custom mechanic to throw the Slammer on mobile devices with more accuracy. As well as collectable cosmetic Slammers for players to purchase with Meta credits or earn with seasonal quests.

Built With

Share this project:

Updates