Operation Starfall Quest System

In the first period of my third year of the study Game Development, I worked on a questing system for the game “Operation Starfall”, with one other student. The game is being made at the HLO (Hybride Leer Omgeving / Hybrid Learning Environment) which is essentially a school-based game studio, where students and teachers work together on a project. Operation Starfall has been an ongoing project since 2021, and this was the first period I worked on it. You can find more information on their site here. As there is no real gameplay to share on this yet, I will mostly be talking about my technical process.

Time periodEngine & language(s)Team sizeGitHub link
8-9 weeksUnity, C#15+/1-2Private

Motivation & what I learned

As I specialize in game system development/programming, I wanted to improve my skill set for this. Designing a new system from the ground up in an already existing project was great practice. It taught me how to work around a preexisting project, as well as planning, visualizing and programming a game system.

Technical process

Designing the architecture

The first sprint I spent designing the back-end of the quest system. The other student was working specifically on the scriptable objects related to the quest system, and designer tools (unity custom editor) for creating quests. I started by mapping out a first iteration of what components the system requires, and how they would interact with each other. I ended up changing quite a bit after 2 weeks, but starting with a schematic design gave me a good base to start working on.

I divided the system into multiple components, to do my best to adhere to the single responsibility principle. Some components were later scrapped, like QuestSaver (in favor of a general saving system) and the QuestTracker (in favor of event based “autonomous” event tracking).

System in practice

The way the system works in practice is roughly like this example: the player has a movement controller that calls UnityEvents when certain actions happen (like jumping). A child object with “QuestStepProgress” component listens to one of these events, and updates its “progress” (stored as “amounts” of integers) accordingly. This QuestStepProgress component updates any corresponding QuestProgress components, which keep track of how far a quest is in completion.

Documentation

Of course, while I was working on this project, I was documenting this for other (future) developers on the game. I am not able to share the git repository with wiki for this project, but I can share a snippet of the documentation.