top of page

Where (2024)

See the Apps in Store

About

With Where I set out to explore how gameplay as a medium can be used to facilitate interesting experiences of, and interactions with, virtual nature.


Featuring:

  • Core navigational gameplay that foregrounds the game environment

  • Basic UI and Audio-based Puzzles

  • Immersive, responsive systems that reflect the player's journey and position in the world

Project Info

Role:

Lead Programmer, Sound / Music Designer

Time Frame:

4 Months

Team Size:

3

Tools Used:

Unity, C#, FMOD, Reaper

Trailer

Introduction

I created Where with my two classmates Aia Kragh (Art Direction) and Aashika Vijayan (Level Design) as part of a group Thesis Project with the focus on creating a game about being 'Lost in Nature'. As the sole Programmer / Tech Lead in the projects it was my job to transform the team's collective Game Design, Narrative, and Conceptual ideas into playable game systems. 


In addition to this central responsibility, I also created the game's Sound Design and Music, as well as helped facilitate the Art Direction with Tech Art tasks such as creating shaders and VFX. 


We created the project in Unity which I have worked with previously over the course of my study, but this was by far the most in depth I have worked with the C# scripting and being in charge of Scene Management and project Architecture. Again, as the Tech Lead it was up to me to guide my teammates on how to work within Unity and ensure the project remained clean, bug-free, and not have merge conflicts when committing changes to the project.



Game Overview

Where's main gameplay revolves around obtaining clues, in the form of mysterious 'recordings' collected from the memories of the world's flora.


The recordings are deciphered in a Base location and then the player must use a combination of these clues, a compass, and a static map (without the player position indicated, or any other navigational aids such as beacons or waypoints etc.) to scour the Environment for more clues, with the ultimate goal of tracking down a missing person and finding out what happened to them and this strange area.


Gameplay Features (left) and Core Gameplay Loop (Right)
System Architecture

In order to create the vertical slice of Where, I decided to organize the game's code using (among others) the following key features:


  • a Service Locator design pattern - A central Singleton Class which provides access to the game's core Managers/Services

  • a generic Global Event Manager - to provide maximal flexibility and interactivity between the game's disparate elements.

  • A Scene Manager which loads / unloads Unity scenes Additively on top of the game's core systems - This allowed the team to safely develop features / content in separate scenes and then later bring them together.


System Architecture of Where

In addition to the core services/managers present in the ServiceLocator, I also used dependency injection with other key classes that exist in scenes which are added later in the game.



Key Features

Adaptive Systems

In Where, I wanted to explore interactive systems which would respond to the player's behavior in the world. Within the scope of this project, I limited myself to using mainly the player's world-space position (which Biome they are currently in) and how the player is moving / interacting with the world. These dimensions are also subtly modulated with the player's resource level and also their overall progression through the game.



Biome Detection

To detect the Biome the player is in, I opted to utilize Unity's Terrain object API, which allowed me to query which Terrain Layers are present at any given position in the world. From this, I created a script which allowed the team to specify which Terrain Layers belong to which Biome, and then, in real-time, the script reads the relative strength of any and all Terrain Layers present at the player's position and gives a weighted result which calculates which Biome they are in.


Generative Soundscape

One of the Adaptive Systems I would like to showcase here is the game's soundscape I created. The soundscape consists of: a base layer of semi-randomized musical elements which respond to the player's movement and interactions in the world; Biome-specific musical layers which decorate the base layer with distinct musical elements created to evoke the mood and feel of the biomes; finally a sound processing layer which modulates all the elements to match the pace and intensity of the gameplay.


The video below demonstrates how the Soundscape (created in FMOD) responds to the gameplay (via a C# AudioManager class)





Where is the largest project I have embarked upon so far in my game design/development career. At the time it was also the most game programming I had ever done, and doing it alone gave me an insight into a broad spectrum of the different areas of game programming and how they interact with one another. Among other things, in this project I learned how to:


  • Create flexible system architecture that supports iterative development

  • Work with Unity's architecture and how and when to utilise pure C# scripting vs Unity Editor affordances (Serialized Fields etc)

  • Create and utilise Scriptable Objects

  • Work efficiently with Unity UI

  • Create scalable Event Systems

  • Quickly develop features for prototyping in a sandboxed way before integrating them properly into the broader architecture.


Beyond the technical skills I have developed in this project, I also had the experience of having to wear the multiple hats of being one of the Game/Narrative Designers, while also considering the technical cost of ambitious design decisions. This dual role has given me an even greater understanding of the iterative pipeline of game development from idea to implementation.



What I Learned

Location

Copenhagen, Denmark

Phone

91 74 27 71

Email

Connect

  • LinkedIn
  • Instagram
bottom of page