Mana Mix

Mana Mix is a VR game about tossing ingredients into a cauldron and making potions with various effects in order to get a high score within a limited time. The main goals were to create fun gameplay based on simple, intuitive, and instinctual motions. Mana Mix was made with a team in a VR game development class at Carnegie Mellon University. I helped design the potion mechanic and the difficulty scaling, as well as designed and programmed the UI.

Platform: Windows, SteamVR
Completed: October 2019
Built in Unity


-Designed and programmed potion mixing, scoring, and difficulty scaling mechanics
-Designed and programmed UI and menus


The goal of this project (and assignment) was to create fun VR gameplay based on simple and intuitive motions that mimic real-life motions so players of all levels of gaming and VR experience can quickly pick up and learn the controls. We ended up choosing an underhand throw into a target hole, similar to games like lawn darts, or actions like throwing something into a trashcan. We wanted to make sure our theme and story matched the gameplay, so we ended up choosing a witchcraft theme, with the player throwing magical ingredients into a cauldron.

Potion Mixing

However, gameplay of just throwing objects into the target would quickly grow stale and would not be fun for very long. In order to add variety and replayability to the gameplay, I came up with the potion mechanic. When the player lands certain combinations of potion ingredients into the cauldron, an effect would occur, changing up the gameplay or helping the player. My goal with this mechanic was to add funny moments, shake up the general gameplay, and add some strategy and depth to the game.

For instance, the first potion effect designed was moon gravity, which greatly changed how the player had to throw ingredients in order to land them into the cauldron. If the player did not pay attention to the ingredients they threw into the cauldron, this would suddenly shake up the core gameplay and hopefully add some amusement as well. Potions designed later would have effects beneficial to the player, so players could strategize plans to use these effects to maximize their score.

Given the potion mechanic and our limited time budget, I pushed for the game to be a score attack game, where players try to earn a high score. This would incentivize players to make use of the potions mechanic and give more reasons to strategize around potion effects. In addition, a score attack game would require very little additional features, allowing us to spend most of our time on the core gameplay and polish.

Difficult Scaling

Once the team agreed that the game should be a score attack game, I thought about how the game should scale in difficulty. Having high difficulties is important for making sure experienced or skilled players have more of a challenge and keeps them interested in playing the game for longer. It also offers additional incentive to improve at the game. I wanted to have a scaling difficulty rather than difficulty settings because difficulty settings would require more features and more time to implement.

I designed the difficulty to scale with how well the player was doing so that there would be a smooth difficulty curve as players’ skill levels increased. I decided to measure how well players were doing with score thresholds, which were chosen due to their ease of implementation and being a close enough approximation of how well a session was going. In terms of how the difficulty scaled, I had the cauldron move back over multiple thresholds, gradually increasing the distance the player had to throw, as well as spawn in moving obstacles in front of the cauldron. Increasing distance naturally makes it harder to land objects into the target, and moving obstacles force the player to vary up and time their throws in order to avoid them.


For UI, I wanted to avoid having a bunch of 2D panels floating around in VR and instead wanted a more diegetic UI. So, I made various objects around the main scene interactable menu items, which the player could select by pointing the controller at them. For instance, the main focus of the room, the cauldron would start the game, and a book off to the side would show the player the credits. I think that using in-game/in-universe items as the UI also helps immerse the player a little more, especially so in VR. However, for the final score screen, I couldn’t think of a good way to make it not a 2D panel, so instead we styled it like it was a sheet of parchment, so that it would still seem like it belongs in-universe.

In order to make sure the menu read as a menu, I had large text above each object displaying their function. I also tried to draw the player’s focus to these items by dimming the room while the player is in the menu and putting spotlights above all interactable menu items. Having the menu reuse the main gameplay scene also meant we could start gameplay immediately after the player selects play, without having to transition. In order to show players what combinations of ingredients made what potions, I had a floating book on the player’s right side showing potion recipes.

An issue players had with potions was that they had a tough time realizing when a potion was in effect. Due to time constraints, I had to come up with a quick, but obvious way to represent to the player that a potion effect was currently happening. I ended up having corresponding potion icons from the potion recipe book float up from the ground and permeate the room for the duration of a potion effect. This was quick and easy in terms of development, looked decent visually, but most importantly was a clear way to show the player what potion was in effect.


While I was relatively satisfied with the final product, the game was lacking a little bit of extra polish due to time constraints. Here are some of the things I would have liked to tweak a bit more if I had more time. I would have liked to change some of the potion effects. The current set of potion effects led to a relative dominant strategy that allowed for less skilled players to gain higher scores than they otherwise would. I think that the suction potion, which creates a large suction cone above the cauldron, is too powerful because it is too easy to just toss ingredients towards the suction zone and have them get sucked into the cauldron. Instead, I would change it so that the cauldron gets widened instead, so that the player still needs to throw ingredients at a target, but it’s a larger target.

In addition, I would like to tweak the feel of throwing. In the release build, we tweaked the throwing so that it feels kind of close to real life, but it definitely is still a little off. Finally, I would have liked to tweak the score thresholds for the difficulty scaling, because I think it scales a little too quick and it should stay on easier difficulties for longer so newer players can land a lot more shots and feel like they are skilled.