top of page

Avoidance - Rhythm Bullet-Hell

Prototyping | Mechanics
Project Details

Team Size - 1

Duration - 1 week

Playtime - 1-2 minutes

Platform - PC

Distribution - Itch.io

Tools - Unreal Engine 5, Perforce, Trello, Audacity

Roles - Sole Designer and Developer

Summary

The goal of this project was to create a prototype to serve as a proof of concept that clearly demonstrates potential for further development. The idea behind this game is to synchronize hazards the player must avoid with music to create exciting gameplay and maximize the chance of inducing a flow state for players. The design of the prototype also focused on showcasing that the concept has a variety of potential applications to explore.

Planning Stage

Establishing Parameters

The first step with any project is to establish the project's goals and what parameters you are operating within. For this project, I had the following goals and parameters:

Goals:

- Develop my skills

- Provide teammates with an appealing concept to expand on

Parameters:

- 1 week time-frame

- Must demonstrate core gameplay

corediagram_edited.png

Core Diagram created to support game concept

purerefinpsirations.png
Gathering Reference

The next step I took was to gather reference from relevant games. I focused on researching gameplay and aesthetics, drawing from familiar titles from my background as well as new discoveries through targeted searches. By playing or watching these games, I gained inspiration and established a baseline for the genre and its successful mechanics.

Player Movement/Camera: Hyper Light Drifter

Bullet-hell Gameplay: Ikaruga, Furi

Rhythm Gameplay: Hi-Fi Rush, Guitar Hero

A collage of screenshots from games used as reference

Clarifying Vision

To solidify the game’s direction, I created a static level to visualize its potential look and feel. This helped align the gameplay and aesthetics, ensuring they complemented each other from the start. I also solidified the concept as: a flow-inducing game about dodging various hazards and attacks that are synchronized with music by using several player movement abilities.

conceptimage.png

A static screenshot created in Unreal to represent what the game might look like

Building the Workflow

How do I synchronize in-game events with music?

The execution of this game concept hinged entirely on clearing this one major hurdle. Being restricted by the one week time-frame of the project, I needed a solution that would not take long to implement (such as learning an audio software like Wwise or Fmod). My research quickly found that the Sequence Editor, a feature of Unreal, was exactly what I was looking for. This tutorial demonstrated how I could trigger events in-time with music without the risk of de-synchronization.

Demonstration of a turret firing on each note of the melody

Marking the Timestamps

If the audio track I selected was made digitally, I could simply calculate where each note should fall using tempo and time signature. Because I used an orchestral recording instead, I had to confirm exactly at what time in the recording each note fell. I used the "expected" gap between beats to aid this process, but I still went through and manually timestamped every note using a label track in audacity. This way, I would know exactly what time in the sequencer to place each event.

Screenshots of the audio and label tracks in Audacity

Screenshot 2024-11-21 200235.png
Using the Sequencer

Learning to use the sequencer in Unreal allowed me to easily map out levels using the timestamps I made in Audacity. I was not only able to trigger functions on specific actors with parameter inputs, but I was also able to move the actors around the level using a transform track.

A screenshot of the the final level sequence

Streamlining the Process

When mapping the song I chose for the prototype level, I noticed that it was an incredibly time consuming process. After spending some time streamlining this process, I found the following improvements to be very helpful:

- Using the sequencer hotkeys

- Copying and pasting where possible

- Keeping the tracks organized into folders

- Making functions require less inputs

I've found that if you're going to do a task 1000 times, making that task take 2 clicks instead of 3 is worth it.

Screenshots of the workflow in action

Level Hazards

Turret Hazard

The turrets are the main hazard in the prototype level and fire bullets for the player to dodge. They are associated with the melody, and usually at least one turret fires with each note.

Bomb Hazard

I created the bombs for the specific purpose of briefly making an area of the level dangerous to the player. They are associated with the rhythm and are usually launched with an upbeat and land on a downbeat.

Laser Hazard

The laser creates a damaging line that sweeps across the entire level. There is only one laser used in the prototype level and it is associated with the end of musical phrases. It usually fires while moving to motivate the player to either dash through it or avoid that area of the level entirely.

bottom of page