Quick Smith
Project Type
University Project
Role
Programmer
Software Used
Unity
Languages Used
C#
Date
2023
Download Here
Itch.io

Quick Smith is a co-op management roguelite project made during my third year of my games programming course at the University of Suffolk. During this project I helped with management by updating Trello with the tasks for the week for each team member and helping to assign an estimated time that the tasks should be completed in.
About this project
Each item in the game has an ID that is used to identifiy it. This is used when spawning in new items through crafting.
Crafting recipes are stored in a JSON in the game files and each recipe is made up if the information shown in the image below. This recipe is used to make a log into two planks.
Interation type can be set as either place or interact. This determines if the item is crafted from the player only placing the items onto the worktop or if they must also interact with the items once plaed togehter.
Worktop type is used to organise recipes into the differnt surfaces that are avaliable in the game.
Crafting time dictates the time taken for the item to be crafted, if from being placed or from the player interacting.
Inputs is a list of integers that are the ID''s of the items that the player must combine to make the item. The recipe above uses item 0 which is a log.
Outputs is a list of integers that are the ID;s of the items that are output from that recipe. The recipe above makes 2 of item 1 which are planks.
Each worktop in the game has a set number of spots that items can be assigned to. A counter has only 1 spot and so when making the recipe above a tempoary spot must be made to allow for the second plank. This is deleted after the plank has been picked up by the player to not allow them to place a second item on the counter.
A worktop will check to see if there is a working recipe on it when the player interacts with it, this can be picking up or placing an item or when interacting. To check if there is a valid recipe, the worktop first checks through each item on it to see if they are in the recipie. If they are and there is not any missing items from the recipe it is seen as valid. This valid recipe is stored so that its values can be used if it is interacted with. The code for finding this recipe is shown below.
This was used to create each day the player would face when playing the game. The structure of a day is shown below.
To do so a function was created that takes the values from the previous day such as, number of customers and the customers patience and modified them by preset multipliers to chage the values ready for the next day. For example the number of customers increase expontailly with each day that passes to make the game increase in difficulty as a run goes on. The next day would be created at the end of the previous. The code for this is shown below.
This game has a save system that stores a range of information that may be needed about a profile. Some key information that is stored is, if they are currently part way through a run and if so the informaiton for that run such as what day they are on and what the multiplier values are currently.
This informaiton is stored in a JSON file and the code for saving and loading this file can be found here.
To allow for the player to swich which profile they are on or create a new one, a screen is avaliable on the main menu. If the save is currently in a run it will display what day they are currenlty on and this will scroll if there are more saves then what is able to fit on the screen. The image below shows this screen.
This system currenly works by each save having an ID number that is incremental from the previous save. With furhter development this would be made to be a hashed number of the name of the save and allow for only one save to have that name.
When the game is in the play phase there is a daylight cycle that progresses until the last customer is going to run out of patience. This uses animation curves and gradients to change the rotation and colour of the light source throughout the day. A timer is made that equals the time it takes for all the customers to move through the level and from this the end time of the day is calculated. This is used to be able to get what percentage of the day is complete and this value is used to sample the animation curves and gradients. Near the end of the day, lights also turn on inside of the forge to allow the player to still see inside eventhough it has got dark on the outside. This video outside shows the day cycle as well as some gameplay.
This is a book that the player can access in the pause screen of the game. It is there to help them undestand and remember the recipes that they need to do to make items for customers. The image below shows the layout of the book givigin them a step-by-step guide on how to make each component of a sword and the sword itself.
The book also tells tehm about each of the different worktops and how they can be used in game. This also helps to explain the game mechanics in the order and sell counters which explain that if they do not take and fulfill the customers order before they run out of paitence they will lose the run and have to restart.
The final section of the book is the controls that the player can use to play the game. This is explained for keyboad and controller.



