The Bug Hunter is an interactive game where you step into the shoes of a stressed-out bug tester working in a game studio on the brink of collapse. With your job hanging by a thread, your boss gives you one final ultimatum: find and squash the remaining bugs in two nearly-completed games, or face the unemployment line. This is your last chance to prove your worth.
Navigate the lively and chaotic world of the studio, where every colleague has something to say—some offer helpful advice, while others might distract you from your mission. As you move through the studio, the pressure mounts, and every interaction could either aid or hinder your progress.
This project was a collaborative effort made as a university project where I was in charge of all the code and implementations as a tech lead. This involved audio and narrative in addition to what is being shown below.
You can find the code for the detector here: Github
We needed a detection system for the thief level to introduce the risk of being caught. I developed a script that can be attached to any object in the scene, giving the AI a dynamic field of view. This field of view allows the AI to scan its surroundings, detecting players or objects within a certain radius and angle.
To make the AI behavior more realistic, I added simulated head movement, so the AI looks around within a defined angle, making its detection less predictable. When a player is spotted, a timer starts. If the player stays within the AI's view for too long, the script triggers a response, such as restarting the level or playing a specific sound using FMOD.
The script also ensures the AI can distinguish between direct line-of-sight detection and situations where obstacles block the view, so it only reacts to what it can actually see. This system adds a crucial layer of challenge and immersion to the thief level.
You can find the code for the dialogue system here: Github
In addition to having a detection system, we also needed a way to provide an interactive dialogue that held multiple options for the players to choose from. I created a simple one that worked with Ink. Ink was perfect for this as it allowed the entire team, not just me as a developer, to create and edit the narrative. With Ink being integrated, I had to create a way to store variables between individual dialogue instances. I did this by storing it into a "story".
This story was pure JSON and when the player later interacted with a new NPC in the game, that JSON was loaded into the dialogue in order to update or use the preexisting variables.
This additionally enabled me to create a way to track relationships between the player and certain NPC's, allowing a more non linear narrative.
You can find the code of the quest system here: Github
Last but not least we wanted a way to track progress. To tell the player what they needed to do instead of forcing them to find out themselves without any guidelines. To do this I created a quest system.
The quest system was built between several scripts, each unique quest had a scriptable Object that held the data of the Id, what the quest was, the rewards if any, and the next quest in line. In addition to this, the other main scripts are: QuestManager, QuestStep and Quest. The quest manager held all the active quests and managed when to start or finish quests or quest steps. The Quest handled which quest steps should be initialised in what order when the Quest Manager started the quest. And as it sounds, the Quest step handled the individual quest steps state.
Contact: