top of page

Permafrost

COMING SOON

About

Permafrost is a third person shooter where you play as a maintenance worker in an arctic base, trying to find her best friend while surviving from mutated coworkers.

  This game was developed in an in-house c++ engine and my main responsibilities was tools and engine

Engine

Script System

- I implemented a script system using the TGA made Muningraph library. This script system is node based, where a script holds a graph of nodes which is traversed during runtime. The script itself is held by a script component which sits on a game object. 

- I created almost all nodes used in the script system, from math nodes and flow nodes (gates, sequencer, etc) to effect nodes and game-specific nodes.

Initial Physics System

- I created the initial physics system which was used in our game. It included the JoltPhysics library and I managed to get raycasts and collision callbacks working before I transitioned to other work. This entire system was later reworked and improved by Zoe Thysell

Prefab System

- I worked together with Zoe Thysell in order to implement a prefab system which would allow easier implementation and placement of game specific assets in the game world. 

Audio

- I reworked the audio engine to have 3D audio functionality and additional features such as FMOD parameter changes.

- I implemented the majority of the entity sounds in-game (player and enemies)

Tools

Script Editor

- I implemented a node-based script editor which allows any user to edit a created script. It uses muningraph, which in itself is based on Imgui Node Editor, a node editor library. The script editor allows for creation of custom variables per script as well as creation and connection of various nodes, which is then saved into a json file. Afterwards, this file will be used to create scripts via the script system.

Animation Events Editor

- I implemented an editor which allows the creation of animation events. Animation events are events (signals) which are sent throughout the game system whenever a certain frame of an animation is hit. Animation events are for example used for the timing and implementation of player audio and weapon effects. 

Editor Quality of Life 

Throughout the project I worked quite extensively with quality of life and user experience. Examples of this are:

- Multiselect parenting, where the user can select multiple objects and turn them into children of an object all at the same time

- Drag-and-drop preview, where the user can drag an object from the content browser or a different panel, and afterwards see and object created in the world which follows the mouse. The object also attaches itself to other objects to make it easier to place on floors and surfaces. If the user let's go of their drag, the object is then placed.  This was later improved by Zoe Thysell.

- Scene outline search, where the user can search for a name of an object in a search bar and only those with a matching name would show up in the scene outline (list of objects for each scene)

Gameplay

Fuse puzzle & doors

- I Implemented the fuse puzzle, where a fuse object could be picked up and held by the player, and would then be put into a fusebox.

- I implemented doors that would open when a fuse had been put into a fusebox. The fuse puzzle uses scripts and script nodes to handle the interaction between fusebox and door.

Group Members

Programming

Semi Asani

Neo Nemeth

Erik Ljungman

Simon Igelström

Zoe Thysell

Joakim Larsson

Niklas Fredriksson

Animations

Tanya Bengtsson

Jack Thell Malmberg

Elias Runelid

Graphics

Daniel Gryningstjerna

Mirjam Hildahl

Victor Ek

Philip Tingberg

William Holster

Level Design

Christoffer Carlsvärd

Mina Mirhosseini

Tilde Persson

Technical Art

Malte Hedenström

Frode Ödéhn

Sara Ekstram

bottom of page