Internally referred to as “Fungus Amongus” during development, “Fungal” is a third-person shooter where you play as an exterminator who breaks into an abandoned theme park to terminate a mystical fungal corruption. The game started off having a horror theme before pivoting to a more campy B-movie feel.

For this project I decided to work on making scripting nodes that could be used by the level designers to create different events in the game, such as playing music/SFX, adding and playing particle effects, creating objectives, and more. I was also in charge of creating the objectives system, and the pickups system. Additionally, I worked on implementing controller support for the game, adding vibration where needed, reworking the menu system to support controllers, and I even ended up doing the scripting for the final boss event.

A script that creates a new sub objective with marionettes as a target

Scripting Nodes:

Most of the nodes I created were for the systems I had written (With the exception of particles and audio). So for the most part they are nodes that concern things such as creating objectives, checking objective status, removing objectives, etc. I also made some more general nodes for specific scripts or events such as making the final boss vulnerable after reaching the second phase of the fight, etc.

Node for creating a progress bar sub-objective

Objectives System:

The planning for the objective system came a bit late into the project. We had a need for some kind of system to guide the player through the level and to give them some kind of… well, objective! I took on the responsibility since some of my others tasks were bottlenecked at the current stage of the project.

Getting to design the objective system was a little though. Having being thought of after the pre-production phase (and most of alpha) had already finished, there wasn’t any planning or design document that I could rely on to know how to implement this feature. Thus most of the design process for the objectives as well as the actual implementation fell on me.

I settled for making three different types of objectives. The main objective would be used to guide the player through the level (although it ended up being used as a title for the current level the player is in). The text sub-objective would give the player a specific task to complete and would need to be marked as “completed” through a script. Finally, the bar sub-objective which gave players an objective and a progress bar to be filled up as they completed the objective. An example of main objective and bar sub-objective can be seen below, where the player is tasked with shooting 5 sticks of dynamite while in the personnel tunnels part of the game.

Objectives in the game

Pickups System:

This system was relatively easy to implement. Our last game “Spite: Absolution” already had a pickup system for the health items that enemies would sometimes drop. So I took that system as a starting point, then I modified it and added support for experience drops and other modifications such as giving the experience pickups a rigidbody component to make them “explode” out of enemies when they die and then float towards the player once they’re close enough.

EXP Drops popping out of enemies