top of page

Frostbitten

ROLE

Lead Coder

DESCRIPTION

Play as a park ranger looking for his friend while avoiding the monsters lurking in the woods. 

Developed in Unreal 4.26.6

Frostbitten Website

Steam Page

Download Game

YEAR

2022

GENRE

Horror

PLATFORM

Windows

Contribution

This was a student project for Workshop I and Workshop II, a senior level class and capstone project. The objective was to create a game using Unity or Unreal, have unique mechanics, and have a speed run of about 30 minutes. The team decided to use Unreal with Blueprints. The team consisted of 15 people: 6 Designers, 4 Artists, and 4 coders, and a producer to help everyone on track and doubled as a 7th designer. This was a two semester project. 

Frostbitten is a first-person horror game where the player has the ability to use a flashlight that can focus to help defeat monsters, use a shovel to destroy and build snow piles to clear paths and slowdown monsters, and can go insane when looking at the main monster. 

My main contributions to the game where the snow mechanics, the inventory and it items, the AI for the Froststalker and treeladies, and creating the saving system. This was my first project with Unreal Blueprints.

For the snow mechanics, I first started researching how landscapes worked in Unreal and how to manipulate them dynamically. The game originally had the player make footprints in the snow using tessellation but it would cause a build game to crash and had to be removed from the game. This also removed my initial idea on how the player could shovel snow. So instead, the player could create snow piles and shovel them away. They could not directly manipulate the snow landscape itself. The player creates snow piles through a raycast while in the shovel mode, indicated by the reticle. First it checks if the object hit is allowed to have snow piles built on it. Then if it is actually a snow pile itself so the pile can be made bigger or smaller. The ability to shovel snow was tied to a stamina bar created by another coder. 

 

The inventory system was originally created by another coder. After a semester of not succeeding, the task was given to me to fix it. Starting where the other had left off, I created an inventory system that created a list no bigger than the amount of slots in the inventory UI that was created. The player originally had to be overlapping with an enlarged collider on the item. I made it so it relied on a raycast within a certain distance. When an item was picked up, it would cycle through each of the slots to see where the next empty slot was. If the player could collect more than one instance of the item, such as bandages for healing, it would look for the bandage slot and increase the number next to the slot. I made the items not only be save within a list attached to the player, but the game instance as well so that the items could be carried over from level to level. All the items had a "Use" function. When the items were used in the inventory, they would be created somewhere the player couldn't see, execute the "Use" function and then destroy itself. 

For the AI of the monsters, I used the AI perception within Unreal. I created a blackboard and a behavior tree for the monsters. Both types of monsters would patrol until they could sense the player, either through sight or hearing. Both chase the player and have a short memory of when the player was last seen and make the chase more realistic. The treeladies go after the player and take one life or are destroyed by the player focusing the flashlight on them. The Froststalker would freeze when within the viewport of the player within a certain distance. Once this happens, the player begins to go insane, indicated by the red lines on the edges of the screen. The Froststalker can only move again when the player looks away, blink, or gets out of range of its senses. The Froststalker changing poses was implemented by two other coders. 

For the saving system, I used a combination of the game instance and the save game object. They would communicate to each other to update the correct saved file information since there could be multiple save games but only one game instance, which was used a lot by the game designers. I created methods that would save/load information from the save game object. I created data structures for the player and the different levels. The player data kept track of inventory, lives, and boolean variabels created by designers to keep track of events. The level data structures kept track of player location and the state of the collectable item of a frog statue. If the statue was already collected within that saved game, the statue would not appear again in the level. Save points and statues being collected were binded events. 

I really enjoyed working on this projects. It was my first experience working with a large group of people and other coders. It helped me a lot in learning how to use Blueprints. I want to learn more not just with Blueprints but C++ as well within Unreal. I will also be part of the team that stays on to update the game in the future. 

bottom of page