Lit The Way

LitTheWay.jpg

Game Summary

Lit the Way is a puzzle game based on laser mechanics in Unreal 4. The player needs to collect 3 totems to get out of the lockdown area. All doors and elevators are triggered by certain laser acceptors. The player has to navigate laser beams to the right accepters by rotating and replacing reflecting crystals.

Development Info

  • Genre: Puzzle

  • Team Size: 1 Developer

  • Engine: Unreal 4

  • Development Time: 30 hours

Walkthrough Video

Responsibility

  • Mechanics and Puzzle Design

  • Visual Scripting (Blueprint)

  • Layout Design and Level Building

  • 3D Modeling and Material Making

Core Mechanics

Laser Projector

  • Shoot laser beam out when being triggered.

  • The color of the beam collides with the color of the projector

Projector.gif

Crystal

  • Reflect laser beams

  • Can be rotated by the player

  • Can be picked up and put down to a crystal slot

Pickup.gif

Carry A Crystal (Updated)

  • In the original Lit, I faked the carrying state by using "enable/disable". Thus, the crystals can only be put in several pre-designed positions.

  • In the updated project, I succeed in making the carrying mechanics. Now the crystals can be put anywhere.

Laser Accepter

  • Accept the beam with the same color.

  • After being triggered, activate moving doors/elevators/stairs.

Accepter.gif

Totem

  • Player's purpose. After collecting one totem, a new area will be opened.

  • After collecting three totems, the player can leave the level.

Totem.gif
CarryCrystal.gif

Blueprint Examples

Generate the Laser Beam & Color Match

  • Use the Linetrace function to get the ends and the hit actors.

  • If the hit actor is a reflector (crystal), generate a new tracing line.

  • If the actor is an accepter, check the beam color and decide whether to trigger a door or not. 

  • Use the ends to spawn beams.

  • Prevent infinite loops by storing a hit actor array and clearing it at the beginning.

Update Beams (Efficiency)

  • Beams don't need to be updated every tick, otherwise, it causes some efficiency problem.

  • 3 circumstances to update beams:

    • When the level starts​

    • When the player moves

    • When the player presses E to interact

Pick Up/Put Down a Crystal

  • When picking up, set the location of the crystal to the location of a fixed point in front of the camera. Then, change the rotation of the crystal to the rotation of the camera. 

  • When putting down, change the z value of the crystal and stop updating its location every tick.

  • Use a boolean "isHolding" to check the corresponding actions after pressing E.

Show/Hide HUD

  • Use another Traceline function to detect the interactive item.

  • The Hit Actor and the boolean "isHolding" decide whether and which to show in the HUD.