Character Controller - Uni Assignment




As part of a programming assignment, we were fortunate to be led by guest lecturer and former Stockholm University alumnus, Daniel Fors, who currently works at Embark Studios. We developed a non-rigidbody character controller that incorporates both collisions and physics, all while utilizing a state machine architecture. It was a valuable opportunity to learn from an industry expert during this very rewarding assignment.


Ghost Hunt - Spatialised Audio Thesis Project




I implemented Google's Resonance Audio for the binaural audio, head tracking with NaturalPoint's TrackIR 5, UI, procedural animations, automated data logging to spread sheets, and more. The question was Would spatialising the audio with the players head movements —while retaining normal mouse and keyboard controls— affect how well the players could identify audio directionality? Players wore headphones and head tracking equipment while they searched for invisible ghosts in our game.
Copy Cats - AI and Games Jam 2023




Theme: "Copycat"
We were very happy to get featured amongst Tommy Thompsons favourite games and to place 13th overall in this jam. I wore many different hats during the development but my largest contributions were implementing the AI and the achievement system. I wanted to challenge myself by having the AI use the same input interface and character controller as the player to as closely mimic the players movement while pathfinding towards them on a navmesh.


AI - Minimax with
α-β pruning




Wanting for a long time to delve into the workings of the Minimax algorithm this assignment in Algorithms and Data Structures gave me the perfect opportunity. By utilizing Alpha-Beta pruning, iterative deepening, bit manipulation and a heap data structure searches can go to a depth of 7-10 steps deep efficiently.

Sudoku -
Command Pattern & Multi Threading




There was several patterns I wanted to explore; the Command Pattern, Recursion, and Multithreading, so I made a Sudoku game/generator as a personal project.
The Command Pattern allows for easy Undo-functionality, Recursion makes the Sudoku generation code easier to write, and the Multithreading makes the loading asynchronous to allow for a better user experience as the game doesn't freeze up while the generation is happening. Utilising array math made the code much more compact and, in my opinion, much more readable.

Nimda - Co-op Split Screen
Twin Stick Shooter




Nimda was a group project for one of the bigger game project courses at Uni. After two full weeks of brainstorming we settled on a game idea heavily inspired by Bitsquid's Helldivers. I knew beforehand that I wanted to make a great camera system. I implemented a dynamic split screen system inspired by the GDC talk by Squirrel Eiserloh — Math for Game Programmers: Juicing Your Cameras With Math. I also wrote the input system, the basis for the character controller and the foreground alpha clipping transparency shader.

MooBooM -
Lactose Intolerant Cow




I was responsible for tools-, UI-, and controls programming. By tilting your phone you guide a lactose intolerant cow through a labyrinth of mines and fences to collect all the bombs before their fuses burn out. I alter the lens shift and position of the camera to create an illusion of depth into the phone screen as the user tilts the device.


Jam - Game Jam




Theme: "Jam"
I didn't have time to participate for the entire game jam but dedicated to dedicate a day to make a liquid shader in shader graph. A C# script updates the shaders parameters through a Material Property Block to set the chaos factor for the waves and the surface angle. Viscosity is adjustable. Created the stylized glass material, made the image for the label, animated the movement in Unity. The jar mesh is downloaded. Music by Bob Marley.
Tools Development

Dynamic Mesh Drawing
Tool




Draw out mesh to create floor plane. Grid preview showing size in Unity units. Full undo-, redo- support.
Support planned for boolean operations of rooms (union and subtract) and options for creating walls and ceiling together with the floormesh.
Game Engines, Projects and Experiments

Game Engine in C++
& Asteroids




For a C++ course we wrote a rudimentary 2D game engine and remade Asteroids with it collaboratively for a group project. I implemented the games pixel perfect Newtonian
elastic collision handling and the spite sheet animation system. The game engine and most of the game implementation we wrote collaboratively. This course taught me a lot about bit manipulation and about how memory is handled on the stack and the heap.