top of page

Mechanics

Prototyping Phase

The first phase of the project was focused on quickly prototyping and testing features to get a feel for Unreal Engine and it's capabilities. This is another case where using Blueprints was very advantageous as it allowed the team to  rapidly implement and change new features. In this prototyping phase it was important get a basic "Rhythm System" implemented (discussed further on in the "Rhythm System" section. From here we set up a toolbox level. This was level with set up that allowed us to experiment with different rhythm objects and their interactions. Having functional systems set up such as the ability to switch music on and off, teleport to different sections, and quickly swap in music/timings allowed for this process to be a lot smoother.

rythemsystem.png

Setting Up the Project

As this was the first time for anyone in the team using Unreal, we opted to use mostly Blueprint for this project. Blueprints are a visual scripting language, and as our team was only familiar with C#, it was much easier to learn than C++. Using Blueprint also had the added advantage of it's ease of use. With only one programmer on the team, basing everything in Blueprints meant that it was easier for the team's designers and even artists to understand the functionality of objects, and even make minor adjustments or additions.

Rhythm System

Being a Rhythm Game, the most important part of the project was setting up a functional system. We had a couple goals in mind for what this system should look like. It needed to be:
 
•    Designer friendly for our musician
•    Modular enough that we can implement timings for different objects and instruments
•    Quick to set up and place in different levels.
 
This system revolved around a central rhythm controller which had a data table filled with different timings. In this table we were able to specify the types of traps and objects in a level, the timings they'd move on, and the specific track / volume they'd play at. Several "Rhythm Objects" were then created which all inherited from a base rhythm object blueprint with an overridable "RhythmAction" function. The main rhythm controller would then set individual timers in all these objects, which would then fire off their own unique rhythm actions at the specified times (i.e. platforms moving, crushers dropping, darts firing). Overall this system went through a lot of different changes throughout development to reach a reasonable state, and allowed our designer to have much more control over different musical timings and challenges.

bottom of page