Tri-chromatic Gauntlets

Made in 2023 using Unreal Engine

Game page

https://avnishbansal9.itch.io/tri-chromatic-gauntlets


Highlights

  • Winning entry to 'Can Jam 2023', a 24 hour long, university-wide game jam hosted by the University of Lincoln Computer Science Society.

  • Made use of sequencer and shader programming to create the ending cutscene.

  • Explored designing a dynamic menu and platformer levels.

Description

This game is based on the jam theme 'RGB'. It is a first-person, 3D puzzle platformer, having differently coloured slabs that can be activated only by wearing a lens of the corresponding color. The objective is to go from point A to B, activating the correct slabs at the precise time.

Technical Walkthrough

Color/Lens System

  • My first step was to implement a lens changing system that toggled the visiblity of level obstacles having the same color as the lens worn by the player.

  • To communicate whether the obstacles were solid or not, I decided to change their opacity. Since the obstacles were static meshes, their materials could be changed to govern their opacity.
  • Two materials were created, one having Blend Mode set to Opaque and the other to Translucent.
  • A parent blueprint called 'BP_PuzzleObject' initialised an instance of each Material at BeginPlay (below).
  • The color of the puzzle object is defined by the children of BP_PuzzleObject, such as BP_RedObject or BP_BlueObject.
  • The blueprint BP_LensChanger defines the behaviour when the player changes their lens. It has events for each lens color which are triggered when user puts that lens on. These events add the lens color to an array and call the 'OnColorChange' function (below).
  • 'OnColorChange' cycles through all the colors in the array and calculates the resultant color. It then finds all puzzle objects in the scene, and the objects whose color matches the resultant color are made visible while the others are made translucent (below).
  • Admittedly, finding all objects in the scene is an expensive operation, and a better way would be to have all the puzzle objects register themselves with the lens changer at the beginning of the level. This cache can then be iterated through when checking for similarly colored objects.
  • Making objects visible or translucent involved toggling their collision, material, and visiblity (below).
  • Additional variations were introduced to puzzle objects such as movement (using VinterpToConstant) and randomly changing colors (using Set Timer by Function Name) to add more variety to the game (below).

Epilogue Sequence

  • A clever epilogue sequence was created to fit with the game's story, which involves the character collecting antennae parts to resolve the static on their TV ('Static' being a game jam modifier).
  • The static was created by having the same texture panning across a plane in different directions (below).
  • The epilogue sequence involved the camera closing in towards the TV while the speed of its static textures reduced to zero to reveal that the static was, in fact, a QR code. This was achieved using Unreal Engine's sequencer tool.