Mood 666

About

An adrenaline-induced first person shooter set in a cyberpunk sci-fi universe.


Created with a team of 12 using Unreal Engine, during Futuregames' fourth and final game project.


The Zookeeper has brought his robot army to Earth through portals. Your mission is to protect the earth and annihiliate the enemy - close the portals and save humanity. Every kill puts you in a better mood, which is detected on your Mood Meter. Power up and notice the difference.


The game is heavily inspired by Doom.


My Contributions

I have ownership of everything highlighted below. In addition to this, I also did bug fixing and some additional smaller features. Below I talk about the more important parts of my contributions.


  • Character controller
  • Camera controller
  • Mood Meter (combo) functionality
  • Interaction system
  • Audio Programming
  • Music


Character controller

I used Unreal Engine's Enhanced Input System.

Execution

An enemy with low health can be dashed to and executed.

Find executee


  • A line trace is looking for an enemy.
  • If an enemy is found, a capsule trace with the size of the player is looking for any obstacles in the way.
  • If there are no obstacles, the enemy isn't dead and its health is below the execution threshold, it can be executed.


Move to target


  • If execution button is pressed, slow motion is activated and player is lerped towards target.
  • When target is almost reached, the execution is performed.


Ledge climbing

Find ledge

If the player finds a ledge, it climbs on top of it.


  • If the player holds the jump button while mid-air, it's eligible for a ledge climb.
  • A new collision channel was created, which is used on all actors that the player should be able to climb onto.
  • Two line traces are going from the character and straight forward - one slightly lower than the other.
  • If the bottom trace finds a ledge and the top one hits nothing, the character is moved to the floor above.


Mood system

Change value

  • When an enemy is damaged, the mood value is increased.
  • When the player is damaged, the mood value is decreased.
  • If it's too long since any enemies were damaged, the mood value will start decreasing over time.
  • The mood value is clamped to stay between 0 and 1000, even though the UI won't display more than 666.


New Mood

When the mood value goes above or below 222, 444 and 666, the Mood state is changed.


  • The game will behave differently depending on which Mood state is active.
  • Things that are affected by Mood are:
    - Damage dealt and taken by player.
    - Player health regeneration.
    - Player speed.
    - Gibbing chance (credit to Kim Linna).
    - The rate in which the Mood value is decreased.
  • If one of the thresholds are reached or exceeded, a delegate is sent out, which the sound and UI listens to.
  • Slow motion will be triggered, along with a timer that decides when it should end.
    - While slow motion is triggered, player's camera and fire rate is increased.
  • An additional timer is started to make sure that the slow motion event won't be triggered again if the Mood value goes below the threshold and up again in a short amount of time.