Project Details

Platform: PC

Genre: Action Adventure

Engine: Unity

Development Time: 7 Weeks

The Hermit is a top down action adventure game where you play as the hermit who has to flee his home because of the evil weasels who has invaded his forest.

When fleeing he ends up in a magical forest inhabited by magical forest spirits, with the help of the forest spirits the hermit has to fight off the weasels and escape the forest.

Work during Covid-19

Due to the Covid-19 pandemic this was our first project where we worked off site, this resulted in us initially having some issues communicating with each other as for most of us it was the first time working with each other. 

To help our communication we decided to take two days of brainstorming and discussing ideas before settling on what game we wanted to make.

This project was the first time most of us had used scrum to work in an agile manner, it took us a few iterations on our board and way of working but in the end we found a very good workflow. We had two daily stand ups, one first thing in the morning and one in the afternoon to make sure everyone was on track and detect potential blockers early.

When developing the different aspects of the minions, I wanted as much of the different settings to be in scriptable objects as possible so that a designer could easily prototype different types.

What I learned during this project:

  • Kill your darlings.

  • The importance of working closely with designers, especially when working from home.

Minion AI

The AI for the minions utilize a Finite State Machine for all the different behaviors, in the beginning of the project I wanted to create a GOAP system for the minions since they were supposed to do more things without the input from the player, as the project progressed this was altered in favor of a more player controlled nature. As such me and the other programmers decided that we would scrap the current progress on the GOAP system and instead work with a Finite State Machine.

The minions were used for all the different puzzles and obstacles.

They have different qualities and behave different depending on their type, for instance a normal spirit will be afraid of enemies and flee, whereas a fire type will attempt to fight the enemy.

A designer can easily change meshes in the minionmanager and change variables in the different scriptable objects

The state most used was the minions Throw State, When creating this I didn't want it to use Physics as I felt it would be more performance heavy and that it could create too many issues that would be hard to narrow down and fix, so instead we used a parabola and lerped the minions position on that parabola.

To make it simple for designers to modify the behaviour as much as possible without having to wait for the files to be checked in I made sure to keep as much functionality in scriptable objects or separate scripts as possible

Save System

The save system was done in two scripts, the first one was the Save System class which utilizes a binary formatter to convert the data to binary and then stores it on the local computer.

Here is an example from the save system class to show how the save and load functionality work on the minions

If I would have had more time when making this system I would have created an interface that all classes that need to save data could implement, with methods for saving that could be overwritten. I believe this would make the code much cleaner and easier to read.

Minion Emote System

The minion emote system was quite basic, it utilized actions that the minionmanager would subscribe to and pass on to the emote system, this meant that it would be easy and not very performance heavy to implement new emotes.