top of page
Monkey Doo
Systems Design

Monkey Doo Trailer

Monkey Doo Team

I was the lead designer and owner of gameplay, content, and systems for Monkey Doo leading up to the game's launch. The initial team consisted of just 3 people: myself, a lead developer who led architecture, networking, and back-end tasks, and a junior developer who handled front-end development and programming mechanics. We later brought on another artist who helped me create all of the assets for the game.

​

After launch, we hired two additional developers and had up to five artists contributing to the project. We all reported to the product owner who was the CCO of the company and had the final say and veto power over any decisions. We also worked closely with publishers to manage community events and marketing efforts. 

Progression Systems

XP Level Up System

Results: Creating an XP level-up system and level-gating content increased the average player lifetime from just under a week to over a month.

Problem: After launch, new players are not returning to the game after about a week.

​

Solution: Implement progression systems to give players long-term goals and rewards to strive for such as:

​

  • Level system

  • Daily challenges

  • Content gating

  • Battle Pass

 

We eventually did all of these but we started with converting rewards for existing systems to grant XP and created a level-up system similar to Overwatch.

​​

​Problem: What factors should influence how much player XP is gained from playing a match?​

How Match XP Is Calculated.jpg

SolutionI created a spreadsheet that helped me visualize and test different factors we wanted to influence the player's XP per 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. 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 also 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. â€‹

​​

Below is the breakdown of how much XP is needed for player progression along with the min and max number of games needed to reach each level.

XP Level Up Chart.jpg

Rewards: Whenever players level up, they are granted a mystery loot crate that may be filled with Bananas, Rubies, an unowned cosmetic, or a paint voucher for a cosmetic variant.

Monetization Systems

Battle Pass System

Results: By implementing a battle pass, monthly game revenue skyrocketed by 266% and became consistent, predictable, and required less effort to get results.

​

Problem: After launch, monthly revenue steadily declined and cosmetic bundles generated unpredictable sales numbers. 

​

Solution: Create a revenue source that offers recurring value to players at a predictable monthly rate.

​

Creating a battle pass was something the team and management were pretty resistant to at first because of the sheer amount of upfront work it entailed to build, test, create UI for, etc. The payoff, however, 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.

 

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.
 

Monkey Doo Battle Pass.jpg

What would I have done differently?​​

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.

​

A bizarre consequence of this was player feedback saying "I'm done with the battle pass and now there is nothing to do" when, in reality, those same players found plenty to do for a year before the battle pass update. 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.

​

How to translate a spreadsheet into VR

Since Monkey Doo s 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.

The idea behind the battle pass's progression is that there are monkey miner NPCs who are digging a tunnel that they suspect has a treasure at the end.

david-burnham-battlepass-tunnel.jpg

Every time a player plays games, they earn XP. After gaining enough XP, the miners will have progressed deeper down the tunnel and unearthed a new reward tier.

david-burnham-battlepass-wall.jpg

The left side of the track held free rewards while the right side held premium rewards. Premium rewards are buried (see image above). A player must purchase the "Pickaxe of Destiny" (see image below) to uncover them which is how we earn money from the battle pass system.

david-burnham-battlepass-pickaxe.jpg

At the very end of the tunnel is a secret lore chamber with the final super rare premium cosmetic reward waiting inside.

david-burnham-battlepass-end-chamber.jpg

Below is a breakdown of what it takes to complete the battle pass and the total rewards for free and premium players.

Battle Pass Rewards Breakdown.jpg
Battle Pass Completion Requirements.jpg

Shop System

Results: My decision to create a F2P economy that relies on in-app purchases allowed us to dramatically outperform paid multiplayer VR games in terms of downloads and DAUs. Our average conversion rate for in-app purchases was ~3.2%. 

​

Problem: How will we make money? If we charge for the game, fewer people will download it and servers may feel empty.

​

Solution: Make the game free to play and leverage our talented in-house art team to create cosmetics that are so appealing that players will want to buy them.

david-burnham-bongos-shop.jpg

The Shop 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. 

 

Daily Cosmetics


Each of the 6 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 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. These cosmetics can be purchased for Rubies instead of Bananas.
​
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).

david-burnham-ruby-mine-exterior.jpg

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.

​

Duplicates

​

Problem: A whale could buy every cosmetic in the game on day 1 and it would only have cost them just over $150. We don't have time to make more cosmetics before launch.

​

Solution: Build a system where players are incentivized to purchase the same cosmetics multiple times to obtain variants. That way we don't need to create new cosmetics from scratch, just texture swaps for existing ones. The more variants, the more a player will spend to complete their cosmetic collection. 

​​

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 random nature of 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.

 

Results: Players who had been playing the game for longer had more impressive cosmetics that they worked hard to grind for or purchase. This aided with player retention as well as giving "whale" spenders something to invest in and be proud of. It also inspired new players to be more engaged because they were motivated by upgrading their cosmetics to look cooler.

​

What would I have done differently?

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:

​

  1. Don't be too generous (players think that they want this but their wallets say otherwise)​​

    1. I thought that our community and reputation would grow by making obtaining cosmetics easier than other games

    2. I learned when things are easy to obtain in your game, people have no reason to spend money on your game. 

    3. Price anchoring is key. If the base price of something is low, it is perceived as less valuable.

    4. Fewer players buying expensive offers will almost always make more money than many players buying cheap offers.

    5. 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.

  2. More user testing and feedback

    1. Some aspects of the original UI felt cluttered and were confusing for many players. ​

    2. Explore multiple different ideas instead of iterating on just one.

    3. 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.

  3. Simplify and remove needless complexity

    1. 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.​

    2. 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.

Character Customization System

The Wardrobe

Results: Customizing avatars gives players goals to collect and progress towards. It also appeals to the player's desire to express themselves.  This yields increased player retention and conversion. 

​

Problem: How to show a player what cosmetics they own and have equipped in a VR game.

​

Solution: Create a mirror they can see themselves in with a UI that allows them to change their appearance without needing to move.

david-burnham-black-market2.jpg

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.

​

How it Works

​

Each cosmetic has a unique scriptable object that stores the following information:​​​

Cosmetic SO example.jpg

​When a new cosmetic is created, a .json file 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 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. Then when the buttons are pressed, the Icons are spawned representing each cosmetic. When an icon is pressed, the cosmetic spawns on the player's avatar.

Retention Systems

​Daily Challenges 

Daily Challenges.jpg

Results: Players grinded out daily challenges, elongating their play sessions.  Players who engaged with this system were far more likely to return to the game after 7 days.

​

Problem: With only 1 map and 1 game mode upon launch, players expressed that the game felt repetitive and got boring after a while. 

​

Solution: Give players micro goals that promote varied playstyles and offer rewards to keep them returning regularly.

The daily challenge system Daily challenges also fed into a weekly reward system that gave a sense of progression throughout a week of play.

I created 20 different challenges that players could be offered. 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:​

Daily Challenges.jpg

Feel Good Awards

Result: Players who lost get recognized and rewarded for their efforts, turning a loss into a positive experience.

Problem: Since our game is a 6-player FFA, 83% of our players will lose each game, and that feels bad.

​​

SolutionInspired by Mario Party, the idea behind Feel Good Awards is to recognize, praise, and reward players for being good at other things that are key to our game besides winning.

​​​​

Through playtesting, I noticed a lot of cool moments that players got excited about during a game. It felt really good to hit another player with doo from across the map while you both are flying through the air. It also felt really good to know that you stole more bananas than any other 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!"

Feel Good Awards.jpg
bottom of page