Kostrejsen is an educational game intended to help kids with type-1 diabetes learn to understand and manage their diabetes within a more entertaining space. It is intended for children between ages 8-14. 

The game consists of five different minigames:
- a reigns like minigame where you sort food items according to different prompts (amount of carbohydrates, protein etc.).
- a tier list like minigame where you much like the reignslike sort foods but with different tiers instead of a binary sorting.
- a restaurant where costumers arrive and ask for a meal with specific requirements (ex. max 10g of fat) and the player uses the foods at their disposal to create a meal that fits the criteria.
- a scenario where you simulate a day with different activities that drain your sugarlevels and you'll need to eat a food and plan for the rest of the day.
- a minigame where foods are falling and you need to pick up foods to try to keep your sugarlevels in check so they don't get too low, but not eat too much either.

So when making this game I was honoured to be working on the product as the only programmer for most of the production with some supervision from my mentor. It was a very enlightening experience where I got to be a part of a production from beginning to end. 


My mentor gave me a suggestion to use something called 'Scriptable Objects' when storing food data that would be used throughout the minigames. These are objects that are mostly used to store data because they only have one instance, which is optimal if you just want to store and access data from these objects, unlike prefabs that have its own data per instance.

Due to the game wanting different difficulties per minigame the designers and I came up with a system that allowed them to make sets of foods that would be used for different difficulties. These sets of food could then be mixed to get new variations of difficulties without the designers having to manually include each food into a difficulty.

Something new I got to learn about during this project is something called 'async' in c#. It's basically a function that runs separately from the main thread. Unity has something similar called 'coroutines' which I have used before. The main difference between the two are that async functions can return data which can be a really neat trick to do, it also won't block the main thread & lag the game if the task takes a lot of time to complete. Although async methods doesn't cancel by themselves so you have to put in cancel logic if you want the method to stop at some point before it is complete.