Monkey Doo
- Meta Quest Store:
- 1.9M+
- Engine: Unity
- Role: Systems Designer
- Team Size: 12
- Studio: Continuum
- Genre: FPS / Action / Social / Multiplayer PvP
- Type: VR
1. Battle Pass System
- Answer the following question:
- Why were cosmetic bundles unpredictable?
- Players had established a sense of identity from their outfits and didn’t feel the need to change.
- Cosmetics have subjective appeal and thus not everyone will want every cosmetic released.
- Why were cosmetic bundles unpredictable?
- Monetizing progression instead of just cosmetics
- Gather references of successful titles that feature battle passes
- Identify what makes these successful
- Translate features I want to include to fit within Monkey Doo
Game Reference | What makes it successful? | How to fit in Monkey Doo? |
Fortnite |
|
|
Clash Royale |
|
|
Marvel Snap |
|
|
- Creating a battle pass was something the team and management were resistant to at first because of the sheer amount of upfront work it entailed to build, test, and create UI, etc for.
- The payoff is that it is relatively low maintenance to upkeep once it’s built.
- Once I outlined what types of content could be offered in the chart below, the team caught onto the vision and the benefits.
- This system meant that the art team only had to create 5 new assets per month instead of the unpredictable amount of assets in a new cosmetic bundle that came out every 2 weeks.
- It also introduced a monthly new mechanic in the form of a premium asset, giving the dev team a clear and simple goal to focus on when they weren’t bug-fixing.
- How do I translate a spreadsheet into VR?
- Since Monkey Doo is a VR game, I wanted to make this battle pass system fit the immersive nature of the medium.
- To do that, I added a new area to the hub world map that allowed players to enter inside a ruby mine.
Below is a breakdown of what it takes to complete the battle pass and the total rewards for free and premium players.
The system is far from perfect. It was not launched exactly as outlined above.
Even if it was, there are still flaws with it.
A key feature that was vetoed by my boss for its debut was the weekly progress block.
The result of removing this feature was that players could effectively grind through the entire pass in a single day or two, which removed one of its key purposes as a retention system.
Another consequence of this was player feedback saying “I’m done with the battle pass and now there is nothing to do.”
In reality, those same players found plenty to do for a year before the battle pass update.
This negative player perception should have been addressed.
Unfortunately, despite its overwhelming financial success, the battle pass system was never iterated on to address these or other issues.
Based on that user feedback I would have liked to have added a recurring reward for players who completed the pass like “500 bananas” per 1000 XP after level 50.
I also would have increased the amount of XP needed between levels and adjusted the rewards accordingly to make the pass feel like more of an accomplishment.
2. XP Level-Up System
- Seek player feedback
- Ask for feedback from our Discord community:
Q: Why do you play Gorilla Tag every day?
A: They give you shiny rocks just for logging in
- Analyze constructive negative reviews
- Most common player complaint: It gets repetitive pretty quickly
- Analyze constructive negative reviews
- First tried new content
- Release a new map, didn’t work well
- Release new cosmetic bundles to entice returns, which worked better, but were not sustainable
- I realized the problem could not be solved with content, it had to be addressed systemically.
- The lack of progression systems in Monkey Doo became obvious.
- If players have something to progress towards, they will return more often.
- I Analyzed 15 popular games with effective progression systems and narrowed them down to the following examples:
- XP Level-Up System – Overwatch, Pokémon, Shadow of War
- Daily Challenges – Clash Royale, Marvel Snap, Legends of Runeterra
- Battle Pass – Fortnite, Clash Royale, Marvel Snap, Overwatch 2
- Content Gating – Pokémon, Skyrim, Call of Duty
- To choose which to prioritize with limited resources as a small indie team, I did a scope vs ROI analysis:
| Priority |
Progression System Components: |
Budget | Complexity | ROI | Context |
| 1 | Level up system | Low | Low | Med | The team discussed a leveling system and determined it was going to give us the biggest bang for our buck while being smaller in scope than a battle pass. |
| 2 | Daily challenges | Low | Med | Med | Adding Daily Challenges requires custom tracking per challenge and requires new UI |
| 3 | Content gating | Low | Low | Low | Content gating would help new players not be overwhelmed by options up front but that begs the question: What do we gate content behind? |
| 4 | Battle pass | High | High | High | We wanted to implement a battle pass but lacked the resources to build it properly. |
Additional reasons to prioritize the XP level-up system:
- Granting rewards upon leveling up gives players something long-term to strive for at each level
- It gives a sense of status that players can be proud of
- It helps to differentiate new players from more experienced ones for fairer gameplay
- It rewards players whether they win or lose. This matters because as a FFA game, 5 players will lose and only 1 will win.
- Study references in games that have good level-up systems
- Pokémon
- I really enjoyed the simplicity of the standard formula they use:
- Pokémon
XP = n^3
- This created a strong curve that worked in Pokémon because the later stages of the game offer enemies that yield much higher XP values.
- This is not the case in our game. In Monkey Doo, a game would yield a consistent amount of XP within a given range.
- This formula made it so that very quickly, players felt like they were making no meaningful progress toward their next level-up goal.
I needed to look at competitive games that have similar setups with a range of XP per match
- Overwatch
- Their method linearly increases the XP required to level up until a certain cap.
- This creates a steady ramp-up per level that is enticing for new users but eventually flattens out and remains constant for long-time users.
- This made it easy to control the rate and impact that level-up rewards would have on the overall economy.
- Their level-up system had multiple variables that factored into how much XP a player would get including:
- Match length
- Backfill
- 1st match of the day
- Win streak
- Player performance
- Identify what factors should influence how much player XP is gained from playing a match
- Placement
- Since our game is a FFA and not team-based, the difficulty of winning varied based on the number of opponents you were competing against.
- That meant adjusting the XP earned per placement dynamically based on the number of players.
- Time
- Our game lacked a true matchmaking system which meant that skilled players could join a lobby full of noobs.
- To disincentivize this, I made match time play a factor in XP gain.
- Good players often won fast so we made sure they would get less XP for steamrolling noobs and more XP for longer matches against tougher opponents.
- I capped match length XP at 5 minutes to prevent abuse.
- I put a floor of a 30-second minimum match time for players to earn XP because some game modes could be cheesed by players immediately jumping off the map.
- Placement
- Create a free loot box upon gaining a level that may contain any of the following:
- Bananas
- Rubies
- Unowned Cosmetic
- Random Paint Voucher
- The original iteration granted a loot box that contained 4 slots with values for each of the above items.
- After testing I reduced this to just a single unowned cosmetic with weights leaning towards common rarity items.
- If a player owned all cosmetics they would get a random paint voucher instead.
3. Shop System
- Multiplayer games need a high CCU to fill games quickly so players won’t get bored and leave
- Being an indie studio with no reputation means players won’t trust us enough to pay upfront
- The game will be released in an early-access state with bugs
- Players will not want to pay for an unpolished experience
- Gather references from multiple major F2P games
Game Reference | Standout F2P economy features | How to apply to Monkey Doo |
Fortnite |
|
|
Gorilla Tag |
|
|
Clash Royale |
|
|
Marvel Snap |
|
|
Legends of Runeterra |
|
|
Overwatch 1&2 |
|
|
I designed the shop to have multiple sections each focusing on a different aspect of the economy.
- Daily Cosmetics
- Sweet Dealz
- Ruby Mine
Daily Cosmetics
This is where players can spend their hard-earned bananas collected during games on cosmetics.
The Shop displays 6 random cosmetics that change every 8 hours incentivizing players to check back frequently for new options.
Players can also spend a premium currency called “Rubies” to instantly re-roll the shop contents or purchase other boosters.
Each of the 6 cosmetic slots will run an algorithm to first determine which rarity of cosmetics it will display, then pick from a pool of cosmetics that are the chosen rarity.
Each rarity has a given weight to it that influences how likely it is to appear compared to other rarities.
Each slot has a slightly different weight making higher rarities more likely to appear in certain slots compared to others.
Rarities and their average weights are as follows:
- Common ~ 71.54%
- Rare ~ 25.32%
- Epic ~ 2.69%
- Legendary ~ 0.45%
The above numbers are based on rolling all 6 slots simultaneously and calculating their rarity distribution yield (how many of each rarity appears across all 6 slots) then adding the results over 10,000 iterations.
Each player will see a different random set of 6 cosmetics to expose players to a wider number of options for them to look forward to.
When a player views their 6 daily cosmetics in their shop, they will always see 6 unique cosmetics.
When a player re-rolls their shop, it will always populate with 6 additional unique cosmetics that were not displayed on the previous roll.
When a player re-rolls a shop a second time, it will always populate with 6 additional unique cosmetics that were not displayed on the previous roll BUT it may populate with some of the same cosmetics that were displayed on the initial page.
This guarantees that a player will see at least 12 unique cosmetics a day if they choose to re-roll to help them find a new one they might be looking for while providing enough random variety to allow them to get duplicates of cosmetics they might want to upgrade (see duplicates section below).
Sweet Dealz
This section of the shop is where different deals are offered to speed up the player’s collection experience.
Sweet Dealz cost rubies to purchase so they are accessible only to spenders.
3 different cosmetics that are either a rare, epic, or legendary rarity will appear here for an entire week, allowing players to see rarer cosmetics that might not show up randomly in their daily shop.
We set weekly community goals on our Discord channel. If our community was able to hit our goals, they could vote on what cosmetics would appear in the Sweet Dealz section of the Shop.
Some examples of community goals might include:
- Get X number of new user reviews this week
- Hit X number of Discord members by the end of this week
- Get X number of new subscribers to our YouTube or TikTok pages this week
There were only 1 or 2 weeks where the community did not meet the goal we set for them. It was a simple, effective way to build trust that the devs listen to our community.
Ruby Mine
This section of the shop is where ruby bundles can be purchased by the player. Ruby bundles cost real-world money to purchase so they are only accessible to spenders (unless earned through daily challenges or the battle pass).
There are 3 tiers of ruby bundles available to purchase:
- 1000 Rubies: $4.99
- 2200 Rubies $9.99
- 5000 Rubies $19.99
When a player selects a bundle to purchase, a monkey miner NPC hauls a mine cart filled with your purchase. The more Rubies purchased, the bigger the mine cart and the mountain of gems it holds.
Players will receive 50% more rubies on their initial purchase of each ruby bundle.
Theme
One of our concept artists created a nice environment concept of a floating lagoon where a plane crashed. I took that idea and created a backstory for the game.
The game takes place in the Bermuda Triangle to explain the plane crash. These mysterious, indigenous monkeys live nearby and one of them, Bongo, discovered the wreck.
Inside the plane were crates filled with hats and stuff that monkeys really like. Bongo realized that he could trade the plane’s cargo to the other monkeys for bananas which is how he became so fat and gluttonous.
This makes you, the player, one of Bongo’s loyal customers. You race and compete against other monkeys to get as many bananas as possible so you can collect all of the cool things Bongo has to offer.
Shop UI
As a VR game, I wanted to create an immersive, interactive world. This meant that the UI needed to be tactile or else we risk pulling the player out of their immersion.
The way I did this was by making buttons in the UI elements that the player would reach out and physically touch in order to make selections or purchases.
Due to time and budget constraints, we couldn’t fully explore this tactile approach to integrate buttons seamlessly into the world. So we unfortunately had to settle on a simple iPad-style interface for much of the UI.
The goal was to avoid creating new cosmetics from scratch, just create texture swaps for existing ones.
The more variants, the more a player will spend to complete their cosmetic collection.
Here are some rules for how variants work:
- If a player does not own a given cosmetic, the base version of that cosmetic will appear in their shop rotation.
- In order to obtain variants of a cosmetic, players must purchase duplicates of that cosmetic from the Shop.
- If a player does own a given cosmetic, the next variant of that cosmetic will appear in the Shop rotation.
- Some cosmetics have up to 14 different variants. To obtain the rarest variant of each cosmetic, a player must purchase 14 copies of it in the shop.
Due to the RNG within the shop rotation, this meant obtaining enough dupes could take a long time and a lot of gameplay, especially for cosmetics of a higher rarity.
In my defense, I had one month to design the entire monetization system for Monkey Doo by myself with no prior experience with f2p economy design.
I did a ton of research and I learned a LOT from this experience.
The number of things I would have done differently from the start after having iterated on it over the course of 3 years is too large to fit here. But I will list a few key ones:
- Don’t be too generous (players think that they want this but their wallets say otherwise)
- I thought that our community and reputation would grow by making obtaining cosmetics easier than other games
- I learned when things are easy to obtain in your game, people have no reason to spend money on your game.
- Price anchoring is key. If the base price of something is low, it is perceived as less valuable.
- Fewer players buying expensive offers will almost always make more money than many players buying cheap offers.
- I would probably not make cosmetics play to earn in any future games.
- In hindsight, I should have designed some mathematical upgrade system for players to spend bananas on and kept cosmetics as a premium feature.
- More user testing and feedback
- Some aspects of the original UI felt cluttered and were confusing for many players.
- Explore multiple different ideas instead of iterating on just one.
- If there is one thing a player should have no questions about in your f2p game, it is how they can financially support the project.
- Simplify and remove needless complexity
- The duplicate system initially involved spending bananas at the wardrobe to unlock variants of cosmetics you had enough dupes for.
- I wish I would have removed this needless complexity sooner.
- We had the ability to buy cosmetics with either bananas or with a wild card called a “voucher.” You could buy vouchers with Rubies, a paid currency.
- Even though many f2p games have similar features, our playerbase was 10 year olds and they just didn’t get it.
- For that audience, I should have kept it simple and only had 1 way to pay for a cosmetic. It would have significantly decluttered the UI as well.
- The duplicate system initially involved spending bananas at the wardrobe to unlock variants of cosmetics you had enough dupes for.
- Don’t be too generous (players think that they want this but their wallets say otherwise)
4. Character Customization System
- VR is a first-person medium that lacks the clearly defined screenspace of other mediums.
- This makes UI especially challenging as it is difficult to force a player to look at exactly what you want when they have 6 degrees of freedom
- Stand-alone VR headsets such as the Meta Quest 2 have limited performance
- Many possible solutions get bottlenecked by these hardware limitations
- An ideal user flow may result in low frame rates thus hindering the user experience
- Seek references from other popular VR games with cosmetics
- Gorilla Tag
- A Township Tale
- Walk About Mini Golf
- Prototype different ideas based on references
- Mirror/Wardrobe
- Closet w/ Mannequin
- Dresser w/ Mannequin
Early playtests on Discord revealed that players preferred the mirror approach for the following reasons:
- Easiest to see exactly what you look like
- Great for content creators to record footage in
- Showed player avatar animations
- Felt the most immersive
Players can stand before a mirror that opens up when they approach it.
Icons for various cosmetics categories are displayed at the bottom center of the UI. Cosmetics of the selected category are displayed on the inside of the left door while variants of a chosen cosmetic are displayed on the inside of the right door.
The Player can customize the following characteristics:
- Fur color
- Skin color
- Cloth color
- Head cosmetics
- Face cosmetics
- Hand cosmetics
- Doo Doo cosmetics
- Misc. cosmetics
When a cosmetic is purchased from the shop it becomes available to try on at the wardrobe. To equip a cosmetic, players simply reach out and touch the icon.
Players can only have 1 cosmetic of each category equipped at a time.
Each cosmetic has a unique scriptable object that stores the following information:
When a new cosmetic is created, a .json file containing all the cosmetics in the project is exported and uploaded to Playfab to update the back end.
The Shop and Wardrobe communicate with each other and Playfab to determine what cosmetics are available to appear in the shop rotation and which cosmetics are owned by each player.
The wardrobe system reads data from the player’s inventory on Playfab. It then populates each category of cosmetics with a list of what the player owns.
When a category button is pressed, the icons are spawned representing each cosmetic the player owns. When an icon is pressed, the cosmetic spawns on the player’s avatar.
5. Daily Challenge System
- Seek player feedback
- Ask for feedback from our Discord community:
- Simulate average player experience and play at least 30 minutes every day
- To choose which solution to prioritize with limited resources as a small indie team, I did a scope vs ROI analysis:
Priority | Proposal | Budget | Complexity | ROI | Context |
3 | New Maps | High | High | Med | Creating new maps takes time to design, program, and create art for. They also require extensive playtesting, user feedback, and iteration. |
2 | New Game Modes | Med | High | High | Designing new game modes is simpler than new maps since the only art lifts are typically UI related. They require custom programming and a lot of iteration depending on the mode. |
1 | Daily Challenges | Low | Med | Med | Tracking events is a simpler task than creating a game mode. There is a high potential for bugs requiring extensive edge case testing, which can increase complexity. |
I created 20 different challenges that players could be offered.
The idea behind the various challenges was to identify things that I want the players to be doing already and encourage them to do more of them. For example:
- Hit players with doo
- Collect bananas
- Swing on vines
- Steal bananas
- Win games
- Play games
The system would select 3 of them at random with no repeats to populate the board. If players completed a challenge and wanted a new one, or just wanted a different one instead, they could pay Rubies to re-roll that daily challenge slot.
Most challenges had an easy and hard variation that tweaked some numbers and adjusted the reward accordingly. The base challenges are listed here:
The original rewards for completing daily challenges were bananas. The amount depended on the difficulty:
Easy = 10 bananas
Hard = 30 bananas
After the battle pass was introduced these rewards were converted to XP
- Bananas could be acquired from the battle pass tracks
This change prevented an overabundance of bananas in the game’s economy which would devalue our cosmetics
Daily challenges also fed into a weekly reward system that gave a sense of progression throughout a week of play. These rewards included:
- Banana multipliers
- Rubies
- Cosmetic vouchers (wildcards)
The major draw to this system was the epic voucher that could be obtained each week. It was a pretty enticing reward, but to acquire it, a player had to play every day and complete all 3 daily challenges each day.
The reward of giving players an epic wildcard may seem too generous at face value, but in reality, they still have to get lucky enough to have an epic cosmetic appear in their shop. This gives it a high perceived value to the player while being low risk to us.
Additionally, having that item in their inventory entices them to want to use it which may prompt them to spend money on rerolls to get that epic cosmetic to appear in their shop.
6. Movement System
- Seek player feedback
- Observe new players play through the tutorial live in person
- Players had no issues grabbing and climbing objects above waist level
- Grabbing anything below waist level to toss yourself off of was consistently difficult for players (especially players new to VR)
- Players often made two-handed gestures while trying to figure out how to move (like Donkey Kong’s smash)
- Players often underthrew themselves while leaping, causing them to come up just short of their intended target, resulting in frequent deaths
- Observe new players play through the tutorial live in person
- Ask for feedback from our Discord community:
- Q: On a scale of 1-10, how easy was it to learn how to move around in Monkey Doo?
- A: On average ~6.5/10
- Analyze constructive negative reviews
- Most common player complaint: Grabbing the ground is unintuitive
- Most common player request: Gorilla Tag locomotion combined with our grab-based movement
- Ask for feedback from our Discord community:
2. Analyze the player feedback and narrow it down to actionable issues:
- Many players saw a monkey-themed game and expected Gorilla Tag locomotion
- New players struggled with movement while on the ground
- New players struggled with getting off the ground to engage with vines
- Players were frustrated by frequent deaths from falling
To choose which to prioritize with limited resources as a small indie team, I did a scope vs ROI analysis:
| Priority | Goals Based on Feedback | Budget | Complexity | ROI | Context |
| 1 | Get off the ground more easily | Low | Low | High | I championed the idea that the less time players spent on the ground, the more fun they would have by engaging with the intended movement mechanics that proved to be more intuitive and optimal for gameplay. |
| 2 | Reduce deaths from falling | Low | Low | High | Due to the nature of VR, how far a player can toss themself is entirely dependent on how hard they swing their arms. Frequent deaths while performing routine or mundane tasks are frustrating. We needed the experience to be more forgiving. |
| 3 | Easier ground-based locomotion | Med | Med | Med | A ground became a necessary evil in our game, as some aspects, such as customizing your character or engaging with the shop, felt bad to do without a place where the character could rest with both hands free. Since we had to have it, we knew we needed to make it easier to navigate. |
| 4 | Introduce Gorilla Tag-style movement | High | High | High | Implementing such a fundamental change would have massive scope implications and require substantial edits to environment assets, as well as redesigns of every level to accommodate that particular style of movement. |
We chose to take action on the first three goals and decided not to incorporate Gorilla Tag-style movement, as it would demand a complete overhaul of the project.
- Get off the ground more easily (“Jump”)
- Attempt #1: Jump Button
- Implementation:
- Press the “A” button on the controller:
- Apply a strong vertical force to the player
- Theme it as the monkeys using their tails as a spring like Tigger
- Press the “A” button on the controller:
- Results:
- Mixing a thumb button press into a physics-based locomotion system created a disconnect in the brain similar to patting your head while rubbing your tummy
- Easy to forget it is an option
- Implementation:
- Attempt #1: Jump Button
- Attempt #2: Hand Colliders
- Implementation:
- Put colliders on each hand
- When they collide with the ground:
- Apply a strong vertical force to the player
- Apply a slight forward force to the player
- Results:
- Frequent accidental triggers at shop or wardrobe
- Felt like dollar store Gorilla Tag movement
- Implementation:
- Attempt #2: Hand Colliders
- Attempt #3: Single Hand Gestures
- Implementation:
- If the player is on the ground and swings their controller fast enough in a certain direction:
- Apply a strong vertical force to the player
- Apply a slight forward force to the player
- If the player is on the ground and swings their controller fast enough in a certain direction:
- Results:
- Frequent accidental triggers while throwing doo doo
- Felt like single-hand movement should offer more nuanced directionality, which would increase the scope of the task
- Implementation:
- Attempt #3: Single Hand Gestures
- Attempt #4: Double Hand Gesture
- Implementation:
- If the player is on the ground and swings both controllers simultaneously fast enough in a downward direction:
- Apply a minimum vertical force to the player
- Apply a slight forward force to the player
- If the player is on the ground and swings both controllers simultaneously fast enough in a downward direction:
- Results:
- Significantly reduced accidental triggers
- Felt intuitive to be moving in the direction we intended
- Matched an observed behavior that players naturally attempted during playtesting
- Implementation:
- Attempt #4: Double Hand Gesture
2. Reduce deaths from falling
- Attempt #1: “Safety Nets”
- Implementation:
- Add more level geometry to the lower and outer parts of maps that players can grab onto if they are falling
- Results:
- Better than nothing, but failed to address the root problem
- Felt like a band-aid fix
- Uncanny how often players’ trajectories coincidentally still managed to slip them just between gaps
- Implementation:
- Attempt #1: “Safety Nets”
- Attempt #2: “Air Kick”
- Implementation:
- Another developer had the idea of, “what if a hand gesture could be made in mid-air to change the player’s direction towards something they could grab?”
- If the player is not on the ground and swings arms in a lateral direction:
- Set the player’s velocity to match the direction of the gesture
- Results:
- Felt cool like a ninja, but defied physics in a way that felt unnatural for a monkey-themed game
- Dramatically reduced calculated risk involved with far leaps
- Dramatically reduced skill required for aiming towards a destination
- Made hitting players with doo more difficult as they were far more agile
- Overall, felt too forgiving and reduced the skill ceiling of the game
- Implementation:
- Attempt #2: “Air Kick”
- Attempt #3: “Double Jump”
- Implementation:
- Building off of the “Air Kick” idea, I thought, “what if instead of changing direction, we could simply extend the distance so they can reach their intended target?”
- Having already created a “jump” mechanic to get players off the ground, we could recycle that familiar gesture for use mid-air
- If the player is not on the ground and swings both controllers simultaneously fast enough in a downward direction:
- Apply a vertical force to the player
- Force applied is proportionate to player’s input
- Results:
- Allowed players to easily and intuitively correct weak throws
- Preserved skill required to aim for a specific destination
- Introduced a new skill: the nuance of how strong to double jump.
- Allowed players to traverse maps in exciting, previously impossible ways
- Wildly popular solution amongst the playerbase
- Implementation:
- Attempt #3: “Double Jump”
3. Easier ground-based locomotion
- Attempt #1: Slide
- Implementation:
- Somewhat reduce the friction on ground surfaces to preserve player momentum
- The idea here was: if a player falls or tosses themself even once, they would slide like a baseball player, reducing the amount of effort to get to their destination
- Results:
- Felt unnatural on rougher surfaces like rock
- Didn’t address the root problem of having to grab the ground to move
- Often slid when the player didn’t want to
- Implementation:
- Attempt #1: Slide
- Attempt #2: Ground Pound
- Implementation:
- Building off of the “Jump” and “Double Jump” mechanics above, I asked, “what if we removed the fixed jump height and made the height proportional to how hard the player swings their arms?”
- If the player is on the ground and swings both controllers simultaneously fast enough in a downward direction:
- Apply a vertical force to the player proportional to the player’s input
- Apply a force to the player in the direction they are looking, proportional to the player’s input
- The forward force added is 1/2 of the vertical force
- If the player’s velocity is >30m/s do not add a force but allow for direction changes
- Results:
- Players could chain their ground pounds with proper timing to quickly and easily preserve their momentum and accelerate to high speeds
- Gaze-based directionality made it easy to control where you want to go
- Felt distinct from Gorilla Tag movement while serving a similar purpose
- Implementation:
- Attempt #2: Ground Pound
7. Game Modes
- Answer the following question:
- Why weren’t skilled players feeling challenged anymore?
- The game was launched with only one game mode and one map: Banana Chase in the Swamp
- Adding additional maps offered new opportunities for skill expression, but still focused on testing the same skill: mastery of movement
- To feel their sense of challenge restored, players needed to be tested on different skills, not just variations of the same skill
- I don’t mean forcing them to learn new skills
- This would make them feel like noobs again, which would be bad
- I do mean reprioritizing existing skills
- They already know how to do it, they are just applying it in a way that they aren’t used to
- I don’t mean forcing them to learn new skills
- Monkey Doo has 3 primary verbs:
- Climb
- Leap
- Throw
- Banana Chase focused primarily on mastering climbing and leaping, while throwing doo doo was secondary
- Why weren’t skilled players feeling challenged anymore?
- What if I designed a new game mode that primarily tested throwing?
- Identify popular competitive pvp game modes from similar genres
- Gather references of successful titles that feature these game modes
- Identify what makes these successful
- Translate features I want to include to fit within Monkey Doo
Game Mode | What makes it successful? | How to fit in Monkey Doo? |
Deathmatch |
|
|
Elimination |
|
|
King of the Hill |
|
|
Each of these eventually made it into the game, as well as several others not listed here. However, for this portfolio, I will simply highlight the first new mode we released.
I decided to design an elimination-style game mode first called Survival because:
- It focused on our goal of throwing doo doo to win
- It maintained familiar gameplay elements like POIs (hearts vs bananas)
- It rewarded movement and positioning tactics in a very different way than Banana Chase
- In short, it would offer a brand new experience and skill test, but still feel familiar
Here are the steps I followed in order to tackle this problem
- Design game mode rules
- Prototype new content required
- Hearts
- Turdets
- Playtest internally and gather feedback
- Iterate until it feels just right
- Design game mode rules
- Last monkey alive wins
- Each player starts with 5 hearts
- Being hit with doo or falling off the map causes the player to lose one heart
- Players can collect heart pick-ups around the map to restore hearts
- Collecting a small heart restores one heart
- Collecting a large heart restores the player to full health
- When your number of hearts reaches zero, you become a ghost
- Ghosts cannot hurt other players directly
- Ghosts can interact with pick-ups to sabotage remaining players
- If multiple players remain alive when the timer expires, the player with the most hearts left wins
- If the remaining hearts are equal, then the player with the most eliminations wins
- Prototype new content required
Hearts:
- I placed small heart spawners at strategic locations across the map
- A large heart was in the open at the center of the map
- I made large hearts have much longer cooldowns
- I made it so Ghosts could collect hearts so that the remaining players can’t heal
Turdet:
- I placed Turdets at strategic locations on each map that only spawn in Survival mode
- I adjusted the firing rate and force of doo launched until they felt balanced
- I made it so they can be fired with one or both hands
- I adjusted the trail on the doo fired to assist with aiming
3. Playtest and gather feedback
- During initial playtesting, we encountered various problems:
- Dying early felt boring and incentivised people to leave
- Players could camp out and hide, making games take too long
- Healing made games drag on too long
- Turdet was OP
- During initial playtesting, we encountered various problems:
4. Iterate
- I iterated extensively based on feedback to address these and other issues
- To solve leaving early:
- I made players turn into Ghosts instead of just spectators
- Ghosts had the ability to sabotage players and get revenge
- To solve camping:
- I first tried a Fortnite-style storm that shrank over time
- Didn’t work. Too difficult to visually communicate and did not synergize with existing environmental elements like vines, ziplines, etc
- Next, I tried a simple countdown timer
- Worked like a charm after dialing in the duration
- Caused players who were hiding to come out or risk losing
- I first tried a Fortnite-style storm that shrank over time
- To solve healing:
- I increased the cooldown of heart spawners
- I increased the delay between when a heart is collected and when the next one spawns
- I made hearts spawn on their cooldown, so they weren’t always readily available
- I allowed Ghosts to collect hearts so players couldn’t heal
- To solve the OP Turdet
- I reduced its rate of fire
- Made it so Ghosts cannot operate the turdet
- Made it grabbable but not collidable, so it didn’t offer cover to the user
- To solve leaving early:
- I iterated extensively based on feedback to address these and other issues
8. Feel Good Award System
- Since our game is a 6-player FFA, 83% of our players will lose each game, and that feels bad.
- Regardless of demographic, the winner of every game felt awesome for having outperformed every other player.
- Older players were committed to honing their skills and doing better next game.
- Most of our player base ended up being younger kids who did not handle a loss as gracefully as older players.
- Identify games where losing doesn’t feel so bad and why
- Mario Party: Endgame stars award players for various feats
- Marvel Snap: Language used makes players feel like they made a good strategic decision
- ‘Retreat’ instead of ‘Quit’
- ‘Escaped’ instead of ‘Lose’
- Identify systems that could make losing less likely
- Skill based matchmaking
- Creating NPC Bots
- Increase RNG mechanics
- Feel Good Awards
- To choose which solution to prioritize with limited resources as a small indie team, I did a scope vs ROI analysis:
Priority | Proposal | Budget | Complexity | ROI | Context |
2 | Skill based matchmaking | High | High | High | Skill based matchmaking is practically essential for any competitive game. Due to technical ability constraints on our team this was not feasible. |
4 | Creating NPC Bots | High | High | Med | Creating AI for a competitive game can be incredibly challenging to get just right. Especially considering the fast-paced, physics-centered nature of our game. They would likely turn out to be total fodder or completely OP. Its not that it can’t be done, its just much easier said than done. |
3 | Increase RNG mechanics | Med | High | Med | The idea of adding RNG mechanics like Mario Kart style power ups was an early idea everyone was excited about. However the time it would take to prototype, iterate, bug fix, and polish new abilities and then adequately assess the impact they would have on our game mode was unrealistic for our release schedule. |
1 | Feel Good Awards | Low | Med | High | Rewarding players for doing impressive feats when they don’t win a match seemed like the simplest approach. It is also the option that most directly addresses the problem we are trying to solve. |
Through playtesting, I noticed a lot of cool moments that players got excited about throughout the duration of a game. Some examples were:
- It felt really good to hit another player with doo from across the map while you both are flying through the air.
- It felt really good to know that you stole more bananas than any other player.
- It felt really good to know that you had the highest doo-throwing accuracy out of every player.
- It felt really good to know that you got hit or died the least out of every player.
I wanted to identify those moments that emerged organically from gameplay and build a system that tracks those moments per player and celebrates their incredible feats at the end of each game, even if they didn’t win.
On the other hand, some players may struggle as they learn to master the mechanics so I wanted to communicate ideas like: “It’s okay that you died a lot, you are learning. Here are some bananas as a pick-me-up. Now go get back out there!”
We ultimately removed the pick-me-ups as feedback from players suggested that it felt off to draw attention to their mistakes or failures such as:
- Lost the most bananas this round
- Most deaths this round
- Fell into water the most this round
This system was in the game at launch but was inadvertently removed in a major refactor update to the game. It was never given priority to be reintroduced even though there was a clearly visible negative shift in player perception post-update.
While there were many variables that were collectively responsible for this shift, I believe the removal of this system was a major one that should have been rectified for the sake of the player experience.