Each new account starts with the same set of cards.
• Truck - Place Val & Earl’s truck! Use this to traverse the map quickly, in a group of 3.
• Market - Place Walter’s iconic market building. Can be used to place new meeples in. Also has basic defence against Graboid attacks.
• Old Revolver - A basic weapon, can be given to a meeple.
• Soda Machine - Distraction specific to the market, will attract every Graboid towards the market for 3 turns when played. Use this if the Graboids are on your trail!
• Rhonda Lebeck - A leader meeple, with a hat! Can be used as a good distraction due to her extra hitpoint.
• Walter Chang - A meeple. Hatless :(
Your deck can be expanded by earning XP, or by buying cards in the Card Market on the main menu.
Main Menu - Card Market
Money can be used to buy cards. Every account starts with a gift of 50 PBucks! Head to the Card Market before your first run and choose something to help you succeed.
We recommend either Prepper Bunker or Toolbox first, both cost 50 PBucks exactly.
Prepper Bunker - An extra building card, which will help defend your meeple and add another spot for you to place meeples onto the grid.
Toolbox - Repairs damaged buildings or broken vehicles. Very useful for its ability to repair your truck if a Graboid starts munching on it!
These are your characters! Protect them!
You start with two of them; Val & Earl!
Meeples with a hat have an extra hitpoint (i.e. they can survive being munched by a Graboid once) - some meeple spawn with hats, some have hats thrust upon them (by you. you can use the Hat card to give hatless meeple a hat.)
Each Meeple can take one action per turn. For example:
• Moving one space in a cardinal direction
• Hopping on a truck/roof/boulder
• Searching some ruins
• Attacking a Graboid
Meeples can be equipped with weaponry in order to defend and attack. When a meeple has a weapon, it will automatically defend the tile/building/truck it is on. A meeple with a weapon can also move into a Graboid to instigate an attack!
Moves: 1 Hitpoints: 1 or 2
Val & Earl’s Truck!
This card always starts in your hand, and is extremely useful! Setting this down next to both Val & Earl is a great first move.
The truck can move 3 spaces each turn (as long as they have a driver). This movement does not consume the actions of the meeples within!
If a truck is attacked, any weapon-wielding meeple within will automatically defend it. Otherwise it will be broken.
If a truck is broken, all the meeple will spill out onto the ground! Broken trucks can be repaired with the Toolbox card.
Moves: 3 Hitpoints: 1 Capacity: 3
EXPLORING THE GRID
Your two meeple, Val & Earl, start in the bottom left of the map. Your goal is to get them and any other meeple to the Goal Flag in the top right.
Common locations on the map are; Ruins, Debris, & Boulders.
The Red Truck (more details below) is in the bottom right of the map.
Each quadrant of the map starts with a Graboid patrolling it. Once you start making vibrations, they’ll quickly come your way.
The Mountain Trail Flag is your goal! The mountain is pure granite, and the Graboids can’t dig through it!
If your meeple can make it there, they’ll be saved. You gain + 50 PBucks for every meeple you save.
There are 14 ruins on the map. Each can be searched once by a meeple for a temporary card reward! These rewards can include Weapon, Resource, & Movement cards. You can spot them by their tell-tale sparkles!
Searching ruins is integral to victory, especially when using the Starter Deck.
Debris is impassable and useless! That sucks!
The map is full of debris, especially near the mountain. It’s also left behind when searching ruins or when buildings are destroyed.
Boulders are completely safe from Graboids! Up to 4 meeple can stand on a boulder at once. Additionally, moving on to a boulder causes no ground vibrations.
This truck has been left out in the middle of nowhere!
It’ll serve you well if you can reach it, with more movement than Val & Earl’s truck!
Moves: 5 Hitpoints: 1 Capacity: 3
There are two types of monsters; Graboids, & Snakes
Graboids can spawn Snakes when close to vibration sources. Each Graboid will deploy 3 Snakes at your meeple before the Graboid itself will appear!
Graboids are the stronger of the two, and can burst through the ground to eat your meeple/buildings/vehicles! Each attack does 1 hitpoint of damage.
Moves: 6 Hitpoints: 5 Damage: 1
Snakes are short range monsters which can immobilise your meeple! They cannot deal damage, but will send out signals to their parent Graboid about meeple locations :)
Moves: 2 Hitpoints: 1 Damage: 0
You have 3 types of weapon in your anti-graboid arsenal!
Earl’s old revolver. In your starter deck.
Good for killing Snakes, not much use at killing Graboids - but can scare them off in a pinch!
Ammo: 2 Damage: 1
Burt’s prized treasure, how’d you get your grubby mitts on it?
Can kill a Graboid in one shot! But only has one shot to shoot.
Ammo: 1 Damage: 5
One use! Obviously!
Does medium damage. Paired with both shots from the Old Revolver, could take down a full grown Graboid.
Ammo: 1 Damage: 3
We hope this helps get you started!
Also check out the in-game references through the pause menu or from the Messages menu.
And see a full playthrough here;
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 :)
Power In Numbers!
Inspired by the theme we designed our game all around powerful numbers!
Each card has two numbers representing their power, for example;
• Buildings have defence and capacity
• Distractions have duration and vibration strength
• Weapons have ammo and damage
You’re also heavily encouraged to keep playing more Meeple cards, increasing the meepulation, & making them work together against the monsters. Plus each meeple you save nets you more PBucks! I hear money is power after all.
But watch out, there are a number of powerful Graboids too, and they also know how to work together… Each Graboid can also spit out a number of tongue snakes to chase meeple down.
This also ties into the themes of the movie Tremors; isolation vs community, & the power in working together!
Once we had settled on card and grid-based gameplay, we decided to lean into a ‘toy’ or ‘board game’ kind of aesthetic: simple shapes, low-poly models and colourful cel-shading! We worked to recreate important visuals from the film using these guidelines. Our thoughts were that this would also help us stand out amongst the other (likely much more gruesome) Tremors entries!
We used cel-shading on all 3D elements in order to emphasise the toy-like aspect of the game and to improve readability.
For characters and creatures we took inspiration from traditional board game tokens and wooden toys. The population of Perfection are represented by ‘meeple’ tokens, while the Graboids are based on segmented wooden snake toys. Our “animations” for these are also minimalist, often just squashing and stretching, but they really fit the aesthetic!
For buildings it was important that they remain recognisable and unique when condensed into a 1x1 grid tile, so we used low-poly models and bright, blocky textures to really bring out the iconic elements of each location. Vehicles were given a similar treatment; it wouldn’t be Tremors without Val and Earl’s pickup truck!
For 2D elements we went with a flat and minimalistic look to contrast with the 3D and to keep information clean and easy to read.
All playing cards share a similar layout for consistency, but each type features a distinct design and border colour. This helps for readability, as the player can tell what cards they have in their hand at a glance.
Popups above objects have clean and simple iconography so a player can quickly check information such as a building’s condition, or a meeple’s weaponry.
We loved the look of Perfection’s town sign and decided to use it as our population counter! Can you keep Perfection’s population from dropping to zero?
The iconic town sign is also your first sight on the main menu, which is another area we really focused on polishing to perfection ;) Everything is as dynamic as possible here; with the camera zooming around the scene, menus swooshing from side to side, and buttons giving lots of feedback. Even Val & Earl’s truck which you ride into town on when you login! The menu music is lovely and chill, plus its diegetic nature really emphasises the feel of moving around the town and exploring the different options! We definitely ended up just siting and vibing with the menu more than once..
Overall we hope its obvious how important the aesthetics and game feel were to us on this project!
We wanted to give the player a sense of “discovering” the valley as they progressed through it, which is where the cards come in. By playing a building card thematically the idea is that you just discovered that building, that it had always been there. The building and vehicle systems really help tie into the collaboration themes; with the meeples able to hunker down and survive together, or journey out to perform expeditions together. This scavenging idea fed into our idea of dotting ruins around the map, pre-existing areas with powerful temporary cards if the player is able to survive the journey.
Being able to distract the Graboids - either through specific tailor made cards, or by using your own wit and meeple placement - was a core focus for us in terms of gameplay. We wanted to have a fairly deep feeling of strategising against the Graboids (or at least as deep as we could get, in 17 days!) This is why the Graboid AI depends on their tremor sense system, which we’ve included a toggle to visualise in the game menu. This way we hoped to recreate key moments from the movie; the soda machine breaking down and drawing attention, pole vaulting between boulders to avoid the soft earth, setting off an unmanned tractor to pull attention away from your meeple, and also groups making lots of noise/vibrations to distract from the lone meeple doing some key action. We think we’ve been quite successful! Obviously it would be great to keep tweaking and adding more cards and behaviours, but what we have serves as a great proof of concept :)
Between runs, unlockable cards and being able to upgrade your deck aims to give the game a decent amount of replayability - overall there are around 20 cards to unlock!
To further our goals of replayability, we planned to support multiple win conditions to make runs even more unique, such as;
• Repair an old radio and wait for rescue
• Have one meeple escape to Bixby via truck/horseback/foot and bring help back for the others
However unfortunately two weeks isn’t a lot of time so we just stuck with all escaping the valley vs all Graboids being killed.
Our original idea was to let you assume direct control of the Graboids after each run, to let the player blow off steam (and blow things up!). Sadly we ran out of time for this! Maybe in the future :)
We wanted to create a game really inspired by the themes of Tremors; lots of focus on coming together as a community vs isolation, working together against an unknown threat, & scavenging/scraping together whatever you can to give you an edge!
We also took inspiration from specific mobile puzzler games; these large IPs which had been distilled down into really pure and engaging puzzle games, with minimal but beautiful graphics to avoid detracting from the gameplay. We hope you’ll get a similar impression from Perfect Draw ;) Our genre choice was also motivated by wanting to be unique and stand out amongst the FPSs we expected to see submitted.
Wow, the last two weeks have been a blur, but we’ve had a lot of fun making this wee game :)
We’re so excited to get it submitted and see what people think, and of course to play all the other submissions too!
For our final day, my main focus was on the intro cutscene. Inspired by the movie, each run opens with Val waking Earl up with his fake stampeding (though this is skippable so it doesn’t get tedious)
I also tied a basic tutorial into this system to hopefully guide players who don’t have me sitting over their shoulder telling them the goals and mechanics…
Other than that it’s just been tweaks, bug fixes, & polish!
Emmy made all the meeple have unique colours, which really helps distinguish them on the map :)
Meanwhile Caspar has been working on the final art, especially on the icons for the cards - which I think are looking amazing now! Check ‘em out below
Final polishing & fixing!
One more day!!!
Today has been me scrambling around responding to playtest feedback, fixing bugs, & polishing up the final state of things. Overall we’re still so happy with how far we’ve come in two weeks, it feels like a real game!
One of my focuses has again been the Graboid AI, as I try to make it tough but fair. I upped the speed of the Graboids but spawn them further away from the player, so after the initial calm they are pretty relentless in their chasing.
It’s still possible to distract them by alternating movement between different meeple in different segments of the map, but that’s kind of the theme of the movie so I think its fine here too ;)
From my testing it seems a run can take around 10-15 minutes, which seems acceptable. Assuming you’re doing well you could probably get everything 100% unlocked within an hour or two.
2 more days!!
The first half of today was frantically rushing around trying to tie the final disparate pieces of the game together into some sort of functional whole for playtesters. I met with Emmy in the morning to discuss our initial thoughts for balancing the starter deck, card unlocks, & map layout.
After getting a fairly good build together I met up with my dear friends at Biome Collective, who helped out by playtesting the game while streaming their screens. They were very positive about the game too, which was great to hear!
I spent the rest of the day working on fixing their feedback remarks before handing off a second playtest build to Jordan Brown, who has already been helping us out with the sound design on the project :)
Overall we’re feeling really positive about our progress, and we’re really glad to have the whole weekend left for polishing/balancing the core design.
Win conditions?! Scoring, Leaderboard, & Progression
Today I finally got the most basic win condition implemented, a flag marking the start of the mountain trail. When meeples reach here they are considered saved and added to your score.
Also, your score!
I added the score calculations to go along with the working win/lose system we have now, along with a detailed breakdown which you can see below. The score you gain directly affects how much XP you earn, and the number of meeples you save contributes to your PBucks wallet.
I hooked this up to the leaderboard which I had working early on, and it all appears to be working great.
Otherwise I’ve also been tweaking the graboid AI even more, trying to get it to the right balance between chasing down targets but also getting distracted by your.. distraction.. cards. It seems to be working well now, but we haven’t yet tested a full run through with all the cards!
That’s something we’re hoping to start tomorrow, along with getting some outside playtesters to mess with it and see what feedback they have. Exciting :)
Meanwhile Emmy has been finishing up the combat system, & working on specific cards (like the wheelbarrow for clearing debris, or the leap of faith for jumping between rooftops!)
And Caspar is continuing on with their modelling/texture work.