Project goal-
The goal with this project is to make a 2d single player story game similar to Stardew Valley. This will be extremely challenging as it requires sophisticated inventory and crafting systems. In this devlog I will go over just some of the more complicated things that I did and I will likely write a few more detailed posts on some of the individual systems involved.
Processes-
I began by making the gameplay manager and the npc system for it. The first thing that I had to do was to make a spreadsheet with some example data, this spreadsheet would then need to be parsed by the gameplay manager. Once this csv parsing system was complete I decided after some research on doing a class based system for storing quest progress and various npc data. Each set of quests for an npc contains all of the information needed about it such as the current questline, any needed items, and the npc name. This system allows me to easily navigate the different NPC data with code as I can just loop through the class, it's also a very efficient system and easy to expand off of and add data to if needed.

The dialogue for the first npc you encounter-
Next I had to make the inventory. The first thing I did was decide on a method of storing all of the needed data. My solution to this was to use a dictionary where the key is the class name of an item and the value is the item class. This class holds all the information about that item such as its image, display name and how many the container has. Each inventory then has a list of arrays in which the first value is the item class name and the second is the quantity. This is mostly used for display purposes as its order persists and it gives all the information needed to show the items in UIs. Once these issues were solved I made the rest of the inventory class which contains a myriad of features such as adding and removing items, saving and loading the inventory, and much much more to try and make this all easy to use for everyone else.

The system for confirming whether or not the inventory can fit anymore items-
The last big thing that I worked on with this project was the workstations for brewing potions. I decided to make a framework which would handle all of the crafting recipes and item modifications and transfers for you to try and make this as easy to use as I could for everyone else. In the end this system was actually really useful. All a programmer has to do is call the method brewPotion() when they are ready for it to be brewed. This then checks the workstations inventories, works out of a potion can be made, and then adds and removes the corresponding items from the corresponding inventories.

An example of the furnace workstation being used to make heated coals-
Final product-
https://nekcilo.itch.io/elysiums-holt
Evaluation-
Overall I am incredibly happy with this project and the work I did on it as it really made me push myself and I produced some really high quality work as a result. I really think this game concept and this project could have a future as at my Universities game expo we actually won the award for best game there with this project. The systems within it such as the inventories and workstations are definitely approaching or are at the industry standard of how work like this should be done, and this is by far the most finished and full project I have ever worked on.