
Game Projects
Highlights
Player states
Separating player functionality to several state-classes to control transitions between attack, move, etc.
Statestack, moving obstacles, audio
Modular combining of moving plattforms and traps. Refactoring scene management to use state stack. Making and implementing all music and many of the sound effects
2D Animation
Animating VFX, player and enemies with sprite sheets. Animating enviroments could be added independently by other diciplines and a state machine allowed the use of blend states for the player.
School Project 7 – ‘Til Death Do Us part (not yet finished)
Genre: Survival Horror
Engine: Custom built by group
Plattform: PC
Group size: 21
Development time: 9 weeks, 40h/week
My contributions:
- Checkpoints, saving and loading game state
- Sound is affected by walls (sound occlusion)
- Unreal placeable audio sources
- Unreal placeable audio trigger boxes
- Audio implementation
- Music
- SFX
Read more…
Sound occlusion
If sound is blocked by walls, checked by a raycast, an FMOD parameter is set that controls a low pass filter and reverb to create a muffled sound. The parameter value is set by the lenght of the navmesh pathfinding from the player to the audio source. If no path is found, the value is automatically set to max.
Audio sources and triggers
Values can be set on Unreal Engine blueprints called audio sources and audio source triggers which is then imported to our engine. You can control which sound is played, if it should loop, play on entering or exiting the trigger, play once etc. This allows the level designers to design an interactive soundscape in their levels with audio triggering in specific parts of the level to create jumpscares and set atmosphere with creepy spatial SFX.

School Project 6 – Catstronaut
Genre: 3D platformer
Engine: Custom built by group
Plattform: PC
Group size: 21
Development time: 15 weeks, 25h/week
My contributions:
- Animation events
- Statestack
- Audio implementation
- Moving obstacles/plattforms
- Traps
- Music
- SFX
https://whiplashstudio.itch.io/catstronaut-misson-impawssible
Read more…
State stack
In our previous project, we had a scene manager that managed the levels and main menu of our game. This worked for most of the project but in the end it got very convoluted to implement pause states and cutscenes, and they often overlapped each other in unintended ways and didn’t reset correctly. I therefore sat the beginning of the project with refactoring and changing around the scene manager to use a state stack so only one game state would update at a time.
Moving obstacles
Our level designers asked us to contruct a modular system for our traps and moving obstacles to give them as much freedom as possible designing levels. From that request I came up with a system that used moving obstacle-components and trap-components. Each of these could be attached independently on a gameobject and give the object either or both of the functionality. Through unreal engine, our level editor, me and a colleague made a script that allowed the level designers to set the moving obstacles settings, and attach any number of traps as childs to the moving obstacle and thus move with it.
Audio implementation
This project, all music and ambience existed in a single FMOD event. That gave me good control over fading music in and out and made sure several music tracks didn’t play simultaneously.
I also made a system with sound components which controlled the position and playback of each gameobject individually.
An in world speaker was also implemented which played its own music tracks spatially in the world. By the use of FMOD parameters the speaker also fades down the main music theme when you get close to it.
Important objective pickup sounds were made with snippets from the main music theme to get a common thread through the whole game and bring familiarity to the player.
School Project 5 – SPITE: Equlibirum
Genre: Action RPG, Hack and slash looter
Engine: Custom built by group
Plattform: PC
Group size: 21
Development time: 10 weeks, 25h/week
My contributions:
- Playerstates
- Player basic attack and movement states
- Audio implementation
- Other
https://whiplashstudio.itch.io/spite-equilibrium
Read more…
Player States
Previous projects managing player functionality have gotten convoluted quickly because of the amount of functionality the player usually needs. Before working on player functionality this project I therefore set up a state machine for player states to separate functionality and have better control over player states.
Only one state is updated at a time which avoids conflicts in the code such as the player moving when using an static ability. The current state decides when to change by simply calling the set state function. Priorties and overrides can be managed through inheritance by letting a base state check if the player is dead both when in the attack and move state for example.


The states are cached in a player controller class and each state can be mapped with a animation to automatically change animation when changing state.

School Project 4 – KeySnapped
Genre: 3D action-adventure
Engine: Schools custom engine
Plattform: PC
Group size: 16
Development time: 7 weeks, 25h/week
My contributions:
- Audio implementation
- AI
- Other
https://eliasronefors.itch.io/keysnapped
Read more…
Audio implementation
This project we had a collaboration with the school Östra Grevie Folkhögskola that made the SFX and music for us. I managed most of the communication about the sound design and came up with a workflow to make the collaboration work as smoothly as possible.
Other
This project I needed to have a broader role than other projects because of people in the team unfortunately dropping off in the middle of the project. I tried to fix problems where they occured and did many small fixes on other peoples systems. I worked on AI, unity level-editor implementation, game object-factory, debugging render problems, and adding sounds and animations in other peoples systems.
School Project 3 – Bardo
Genre: Storydriven 2D plattformer
Engine: Schools custom engine
Plattform: PC
Group size: 14
Development time: 12 weeks, 25h/week
My contributions:
- Music and ambience
- State machine
- Player, enemy, VFX and enviroment animations with sprite sheets
Read more…
Player animation
This project the players animation was managed with a player animation state machine. To manage blendstates,transitions and other data a json file was set up that the animators could edit.


The system with transitions and conditions worked well at first, but as the player functionality expanded we got into problems with animationsstates and playerstates not always changing at the same time because they where built independently with their own take on a state machine. We would have benefitted to have a more cohesive system where player states and animations used the same state machine, which was in some ways done in upcoming projects.
Enviroment animation
For animating enviroments, an “animated enviroment” class was made. To use the class you then only needed to give a gameobject the correct tag in unity which we used as a level editor. All neccessary settings such as animation lenght could also be set in unity which allowed other diciplines to place animated sprite sheets in the world themselves without the help of a programmer.
School Project 2 – Magic and Meowhem
Genre: Puzzle
Engine: Unity
Plattform: Android
Group size: 14
Development time: 10 weeks, 25h/week
My contributions:
- Moving plattforms with levers
- Other
Read more…
The bulk of my time in this project went to creating moving platforms that moved by activating levers. I started with moving the platform objects and then connecting them with interactable levers.
The most time was then put into making the platforms interact correctly with the player and other objects. Some things that we needed to take into consideration was the order plattforms, enemies and the player moved and implementing a inputlock on player when plattforms moved. I also implemented a smooth transition of the plattforms position which also needed some extra thought because the game fundamentally was played in binary rounds and not realtime.
School Project 1 – When Pigs Fly
Genre: Infinite runner
Engine: Unity
Plattform: PC
Group size: 13
Development time: 6 weeks, 20h/week
My contributions:
- Music and SFX
- Music and SFX implementation
- Other
https://joel-paulin-hugo.itch.io/when-pigs-fly
Read more…
At the start of the project the focus was on getting the core gameplay up. I worked on despawning objects that the player had run past and created a moving obstacle, in addition to general project setup and planning.
After the core of the game had been set up I started working on a audiomanager for handling the sound and music ingame and when the audiomanager had its core features set up I started making a prioritylist of all sounds I wanted in the game. I could then easily cut the less important sounds at the end of the project when I realized there wasn’t enough time to add them. The implementation itself was relatively quick and the most work went into debugging and expanding the functionality of the audiomanager with for example implementing it with the volume settings.
I created all music and almost all SFX from scratch using Abelton and KONTAKT 7 libraires. Music is partly inspired by the animated movies “Cars” and “Home on the Range”