Programmer
13 People
4 WEEKS
Movement
Physics
AI
Game trailer
Working for the ever-greedy Beakenburg Corp, Weston the Weasel mines for survival—tethered to a rope to harvest Avarite, a precious material coveted by Beakenburg. Beneath crushing ice and corporate greed, you dive into the abyss, tethered to survival, chasing a dwindling breath and a mineral that may be your escape—or your end. Help Weston meet the daily avarite quota while uncovering the truth about Beakenburg and, hopefully, find salvation and freedom.
Genre: first-person mining game with a strong narrative focus.
Responsibilities: Movement, AI, Generalist
Here is a more depth walk through of what I made during this project.
This script implements a state-driven player movement controller supporting both grounded and water-based movement. The system is intentionally simple and easily adjustable, with all movement calculated relative to the camera’s orientation.
The controller dynamically switches between ground movement and water movement, adjusting physics behavior, controls, animations, and oxygen handling based on the player’s state. Transitions are smoothed using entry/exit timers to prevent instant change when leaving an water area or grounded area.
The controller switches between ground movement and water movement, adjusting physics behavior, controls, animations, and oxygen handling based on the player’s environment. Transitions are smoothed using entry/exit timers to prevent instant change when leaving an water area or grounded area.
Moves the player along the ground relative to camera direction
Allows sprinting and jumping when grounded
Keeps movement responsive and predictable
Lets the player swim freely in all directions
Allows moving up and down in water
Uses slower, floatier movement to feel less controlled and more like water
This section is about boids, that simulate flocking-style behavior of birds to create fish like movmeents. Each boid moves independently while reacting to nearby boids, obstacles, the environment, and a defined home area. This was my first attempt at boids which was a decent enough result for what was needed.
Moves continuously in a forward direction
Smoothly rotates toward its movement direction
Maintains natural-looking motion without sharp turns
Multiple variables to controll behaviour
Groups with nearby boids
Avoids overlapping or colliding with other boids
Aligns its movement direction with nearby boids
Detects and avoids obstacles ahead
Adjusts direction to find a clear path
Is forced downward when reaching the water surface
This was also the ones that worked a quite bit flawed, as it respected collision as a group but those on the side sometimes clipped through terrain or just ignored terrain in general
Small attempt at avoidance (isn't very consistent)
Remembers a home position, always goes back
Returns toward home if it moves too far away
Uses a spatial grid to efficiently find nearby boids, only used nearby boids for calcualtions
Updates grid position only when moving between cells
I made a rope, capable of pulling you backwards and cuts itself when close proximity to it. It was a very simple script as I was unaware of techniques like Inverse Kinematics and was unable to apply it, leading to my current rope system.
Allows the player to attach to an existing rope
Dynamically creates rope segments as the player moves away
Limits total rope length
Removes rope segments when shortening or retracting
Connects the player to the rope using physics joints
Using line renderer for visiualization of the rope
Cleans up joints and segments when detached
Adds new rope segments when the player moves beyond a set distance
Keeps spacing consistent between segments
Stops extending once maximum rope length is reached
Pulls player smoothly along the rope using lerp
It does this by moving the player segment-by-segment toward the anchor point
Removes passed rope segments as the player progresses
A simple ladder I made inside the game. Made using same mechanics as the rope, inputing transform points and lerping through each one till end point. Capable of going both ways, also forcing rotation while going on ladder with an adjustable speed.
This project was a big learning experience as it taugth me, it taught me not to take too many tasks, making movement, boids and a rope system was a bit much. "It's better to give one good product, then many decent"
Designer: Viktor Drakenberg
Designer: David Johansson
Designer: Yanlin Liu
Designer: Christopher Thomson
Designer: Cecilia Wretemark-Hauck
Programmer: Simon Landin
Programmer: Ilyas Kaya
Programmer: Yonqin Yu
Artist: Mimi-Lee Eriksson
Artist: Luke Löfgren
Artist: Simona Klapatauskaite
Artist: Kristin Walkhed