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 game uses Unreal Engine's Enhanced Input System and has a "Mood Meter", a sort of combo meter, which powers the player up in different ways. The Mood is increased when damaging enemies and decreased when the player is hurt.


The game is heavily inspired by Doom.


My Contributions

I have ownership of everything highlighted below. I also did bug fixing and some additional smaller features. Underneath, you can read about the more important parts of my contributions.


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


Character controller

Execution

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

Find executee


  • A line trace is used to find an enemy.
  • If an enemy is found, a capsule trace with the size of the player is used to find 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.


Screenshot 2025-03-24 101254
Screenshot 2025-03-24 111043
Screenshot 2025-03-24 111202
Screenshot 2025-03-24 111128
Screenshot 2025-03-24 103619
Screenshot 2025-03-24 103833
Screenshot 2025-03-24 103914

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

Seek out enemies

Value changed


  • 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.


Screenshot 2025-03-24 111944
Screenshot 2025-03-24 104718

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 speed and fire rate are 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.