BURST

Procoedural Generation – Twin-Stick Shooter – Time Dialation

C++ Only

PC

Windows

Solo

2021

2 Weeks

Unreal
Engine 4

Details

Genre: Twin-Stick Shooter
Team Size: 1
Project Duration: 2 Weeks
Year: 2021
Engine: Unreal Engine 4
Platform: PC
Roles: Gameplay/Physics/UI Programmer

Key features

  • Fast-Paced Action
  • Dodge and Block
  • Time Dialation
  • Procedurally generated levels
  • Player need to work around gravity

Description

Dash around through procedurally generated levels while fightint enemies in fast paced combats and reach the top! Use you weapon and shield to defeat all enemies and move to the next level! This was my entry for the Grads In Games 2021: Rising Star Contest.

Contributions

Procedurally Generated Levels

– Designed around the challenge’s legacy code.
– The Level can be generated randomly or through a seed.
– The Level consist of an array of 64bit variables, and data are being manipulated using bitwise operations: 0 mean the cell is empty and 1 mean the cell is a wall.
– The generation took advantage of the Drunkard Walk Algorithm.
– The number of enemies in the level scale with the level size.
Start point is placed on the lower row of the level and the Exit on the top row.

Slow Motion Effect

– Achieved using Global Time Dilation.
– The effect is selective through a simple trick: if I halve Global Time Dilation, Physics calculation of enemies are multiplied by the inverse of Global Time Dilation.
– Designed to provide more control to the Player during combat.

Controls

Experimental movement system using Physics Impulse.
Energy System: both weapon and shield consume energy on use. Energy is recharged with time.
– Because Timers are not affected by Global Time Dilation, recharge time is being calculated each frame.
– When the player get hit, controls are temporarily disabled and an Impulse is applied.

Player State Data Permanence

– Current Health is retained through levels.
– The game keep track of the number of Levels the Player has bested.
Data are stored in the Game Instance to guarantee their permanence through Levels.

User Interface

Time Efficient UI workflow using the BindWidget UPROPERTY to automatically bind Widgets Components with C++ logic.
– Real time Minimap using Scene Capture Component to capture an image that will be applied to a Render Texture Target 2D.
– The minimap can be expanded and reduced at will by manipulating the Orthographic Width of the Scene Campture Component.

Enemies

Two types of enemies: Bouncer and Ranged.
– Bouncer enemies change direction when the OnHit event from a wall get triggered.
– Ranged enemies get enabled when the Player is in range and in Line of Sight, after a few seconds they shoot a projectile toward the Player location.