LootLocker was an integral component of our game design over the jam period. We came up with the card game idea to make full usage of the system’s Asset Dashboard.
Each Asset has a storage attached to it, which we were able to put to use for variable definition & thumbnail image download. We also experimented with having our models stored here and downloaded into Unity at runtime early on, but this was a bit out of scope for the jam!
Our database consists of the following Asset Contexts;
• Feature Unlocks (default) - Purchasable in the in-game store
• Progression Unlocks - Unlockable in-game by earning xp & levels
• Starter Cards - All players start with these in their deck
• Ruin Rewards - Cards which only exist temporarily within a game session, found in ruins
• Game Variables - A special context to contain various config assets
This centralised storage of our cards made it super easy to add the Card Market & XP Progression systems. Each card uses their default price variable so everything is easily tweakable via the dashboard, and automatically propagated to the in-game shop! The shop is linked to the “Feature Unlocks” Context. Because we’re using a fake/meta currency rather than a real world one as LootLocker expects, we setup this shop system to work by calling specific Triggers on the LootLocker dash - with a unique one linked to each buyable card. This was a bit more hassle than we wanted, but again it was only a game jam and we were learning on the fly!
We defined the “Progression Unlocks” Context to fit alongside this default system & keep things nice and tidy. These card assets are then linked to Level Progression on the LootLocker dashboard. One of our ideas was to have this linked to a sort of “battlepass” UI for unlocking these via xp progression, along with being able to spend your PBucks to immediately gain more xp. Ran out of time on that one though! The cards in both these contexts are added to the player’s LootLocker inventory, allowing them to be used for all future sessions - acting as a meta progression system through their time with the game. This means that by design the game is much harder on the first attempt, and we expect people to fail, upgrade, & retry.
The “Starter Cards” & “Ruin Rewards” Contexts work slightly differently, as these cards are never added to a player’s LootLocker inventory. Instead they are instantiated in-game temporarily. This helped us balance the game as we could quickly toggle cards between contexts and automatically change whether they were purchasable or owned by default! Very useful, especially in the rapid prototyping environment of a game jam. Meanwhile the ruin rewards can be found during gameplay by sending a meeple to explore ruins on the map. At this point a random card from this context will immediately be added to the player’s hand, as a one-use resource.
Finally the “Game Variables” Context is special as it is used by our source code to get tweakable values from the LootLocker dashboard directly into the game. This allowed us to iterate super quickly without needing to rebuild the project. One big usage of this was for your hand of cards; we could define the maximum you can hold at a time, how many you draw per turn, if your hand is discarded between turns, and so on.
Each card in these Contexts also has an Asset Rarity defined, which allows us to change the colour of various elements of the card UI in game. These can give a heightened sense of reward when the player sees a high tier colour effect before flipping over their prize.
For the players themselves we just store the basics; they enter their name when they first create their account, & then we track the single money variable as they gain/spend Perfection Bucks. We just use the key/value pairs in the player’s storage section for this, as its a meta currency rather than LootLocker’s expectation of real world money (it’s just a game jam after all!).
These names are automatically used by LootLocker’s Leaderboard system too, which might have been the simplest part to implement. All we have to do is submit the score when a player wins/loses, and then download the top 10 scores with one simple function. LootLocker really takes care of all the hassle here :)
Finally I personally had a lot of fun with the Messages system (that’s where you are right now!). I got this implemented on day 4, and afterwards really enjoyed being able to write the daily devlogs straight into the game - with complete ease. Something to note to developers (as I comment on in that devlog) - the messages are set to publish in CEST time, which led to a lot of initial confusion on my end. A simple fix to this would be allowing the entry of Publish Dates in the “past”.
You can find all those devlogs below!
Thanks for reading :)