Potionworks is a shop management potion crafting game where players craft potions using their ingredients to complete orders when possible. Potionworks is targeted for Android mobile devices.
About This Project...
This game was created for my GAM400 class using Unity Engine for 4 months from September 2020 to December 2020.
This project was made with 4 people, the team breakdown being:
1 Designers (BAGD)
1 Designers/Programmers (BSGD)
2 Programmers (RTIS/BSCS)
Crafting & Economy Design
Gameplay Design & Programming
Working on Potionworks
Much like my other group projects, Potionworks was a bit of a working frenzy for me, as I found myself designing and implementing a ton of different systems for the game. Along with the accelerated schedule of only having 4 months to make the full game, I found myself moving around a lot to make sure everything was complete before shipping. Potionworks was also the first game I got to develop for mobile platforms, specifically for Android, so I got my first introduction to how touch screens effect UI design and experiment with Unity's mobile libraries. I am proud of the work I did on this game, even if the final product is a little buggy and the gameplay isn't as balanced as I wish it could be. Since so much of what I did for this project was moving from small task to small task, I will try to hit the major areas where I did the most work.
Crafting System Design in Potionworks
With Potionworks being my second dive into crafting systems, there were a few things I knew I wanted to do differently this time around. Where before I had used the approach of creating an item of value and finding ingredients that best match that value, this time I found the value using ingredients and worked from there. The image below is the spreadsheet I used to find out how I wanted to distribute item values in the game, then it just came down to finding the correct spread of combinations. Using this approach, I was able to have two different types of value progression with my ingredients, changing progression and keeping all items usable throughout the game. I modeled this system based off RuneScape's Herblore skill.
Inventory System Programming in Potionworks
One of the other larger pieces of work I completed for this game was implementing the inventory system & the managing the item database. I mostly replicated a lot of the logic used from previous games I have created, while improving in areas that underperformed in the other projects. The big changes I had made for this project was using file I/O to load in item data, more robust Item class to hold more info, and better storage of said items to be accessed by other members and myself.
An interesting situation I ran into during the back end of the project was figuring out how to visually display each item, so players knew what state the item was in. We had base art assets we purchased that we could use for default versions of items, but we would need over 130 different images to represent each unique item. My solution I came up for this was to have templates for what each state should look like, then apply masks and filters to get the desired representation. I did this by setting up the default item holder with the correct visuals, then toggling specific visuals based on data saved in the item. While the visuals were not the greatest, the items convey what they need to, and the system is scalable if I want to add more items. Adding more states is possible, but a little trickier.
Economy System Design in Potionworks
A major design pillar for this game was having inventory management be the focus of the game. A lot of the game plays out as you just shoveling out potions, slowly working toward the end goal of having enough money, with limited options for players to choose what they bring into their inventory. With this gameplay gap in mind, I wanted to create a barter system that would give players more agency over how potions are sold and what they get in return.
This system is triggered once you attempt to give the customer their potion. Every potion in the game has a value based on how rare of ingredients were spent to make it and each customer in the game has a reputation value to show how much they like or do not like you. Using these two numbers, I essentially run them through an equation that uses the potion's value to determine what you will receive and using the customer's reputation to determine how fair the offers made will be. This system brings 2 unique dynamics that give the player options over how they receive their award. First off, players can make the decision over whether they want gold or more items. While getting enough gold might be the endgame goal, savvy players could see getting other potions or more ingredients as an investment of sorts, unlocking the potential to earn even more later. Second, reputation with the customer is also now a factor to consider. Since the customer may give a bad offer, the player then needs to decide if they bite the bullet and take a bad offer, increasing rep, or if they deny the transaction, saving their potion but making the customer not like them as much.
Mobile Game Design in Potionworks
The main point of releasing this game on mobile is to take advantage of the inherent advantages that the platform provides. From a design standpoint, the goal is to find some way to leverage the platform to get the most out of our game. In our game, managing the resources is the main thing that you are doing, so I wanted to find some way to incorporate that aspect into that mechanic as well. What I ended up coming up with is a system where players can grow/collect resources while the game is turned off.
From a design perspective, the goal was to try and augment the resource management in a positive way, since this system is a little extraneous. This accessibility and small play sessions something to focus on, trying to give players the ability to jump in to collect their resources, even if they did not have time to play a full day. It also can be a motivator to jump back into the game as well since players will be opening the app to collect resources. I do not want this to be the main way of gaining resources though, so you can only get resources you have found already and the rate that you get resources is very slow. If I had more time to work on this, I would be looking to rebalance the grow times and resources given on collection, just to try and create more interest and variability in the mechanic.
I was also the one who implemented this system and figuring out how I wanted to approach making it was a little challenging. The system pulls the time from the phone and saves the information to a file when the game is closed. When the app is opened again, it compares the expected end time with the current time, and if the current time is after it considers the process done. One way I would love to expand this feature is figuring out how to add push notifications when a resource is done to help players keep track, so they don't have to.