-
Keeping Time: Design Planning
Overview
Welcome to my development blog for Keeping Time: A 3-Button rhythm game about traveling back and forth in time as two warriors find themselves in the same battle thousands of years apart.
Taking inspiration from 2-Button rhythm games like MUSE DASH and Unbeatable: White Label, I aimed to add my own personal spice to one of my favorite sub-genres. This is where the time travel comes in. 2-Button rhythm games traditionally have the character at one and of the screen as two parallel paths of notes approach from the other end.
Overall, this first post will address some of my current thoughts and concerns with the project. If you finish reading through this and think to yourself: “Gee, he really should be thinking about how he’s gonna handle [important concept]” you’re probably right! I have a Game Design Document written for my personal use that I’ll be using to develop the game. Admittedly I’m a bit apprehensive about posting a full GDD for security(?) reasons, but as the project proceeds and I post progress, more information will inevitably be made public.
Mechanical Inspiration
In the following example from MUSE DASH, the player character is placed on the left side of the screen and notes approach from the right, prompting the player to press one of two buttons depending on the line the note approaches from.

MUSE DASH also adds some flavor to the gameplay through striking visuals and colors. In this example, “notes” can be approaching creatures or projectiles fired from a boss enemy. Unbeatable: White Label shakes up the system a bit with the doubling of note path directions. The player character exists at the center of four paths, two on either side. Throughout the songs, the screen will either swap between the two halves or zoom out to reveal four simultaneous paths.

Despite the presentation of four different paths, the game still uses only two buttons for player input. As a song is ultimately a linear sequence, the game intuitively switches the side the character targets based on which note is closest to the proper input. The Third Button
Ultimately, my goal is to add an additional level of complexity by using a 3rd button as a player-controlled means of camera switching, turning Unbeatable’s automatic screen adjustments into a controlled input. Keeping Time will present the player with the two note paths, and the player will decide when to adjust the camera to show the other side. This screen switch will be prompted by a screen-wide obstacle that can only be avoided by moving the player-character.
Portal System
Both of these games have striking, distinct visuals and identities despite their identical player-facing mechanics. In addition, Unbeatable’s high-octane camera movement and screen effects keep the game active and hectic. I intend on honoring this time-honored rhythm game tradition by capitalizing on the time-travel theme.
The 3rd button causes the player-character to dash towards the center of the screen. As the camera moves to follow the player, the edge of the primary camera frame crosses over the screen, leaving the alternate timeline. I call this the “Portal” system based on a method used for setting up run-time portal travel.
By creating two concurrent scenes with two controlled cameras, we can “scene” swap without loading a new scene. Both scenes contain mechanical copies of each other, but the visual models reflect the scene’s time period. Finally, we use an image plane depicting the non-active camera’s view to create the transitions between time periods.
Important Topics To Address
The Math
How do we adapt a traditionally 2D note movement system to 3D space? Moving along a horizontal line isn’t a difficult concept, and the Lerp function makes moving between two points particularly easy. However, I would like to move these notes along a curve.
This means breaking out those Bezier curves.
We also need to apply transformations in 3D space to two different scenes in two different locations. The calculation for location along a Bezier curve can be computationally expensive. This will need to be done for four different curves for just one of the two scenes. However, because the second scene exists in the same world space, we can apply a “cheap” linear transformation to the second scene’s notes.
The Music
How can we make notes travel “to the beat”? Because notes have to appear and begin traveling long before the part of the song the note corresponds to, we need some way to make sure the note distance is relevant to the time in the song. We cannot move notes at a uniform rate, as a frame-rate hiccup could alter the note’s timing and ruin the player’s input. To solve this problem, we need to know exactly when the note is spawning, and exactly when the note reaches the end, and move them relative to the time that has passed.
We interpolate.
The Style
How do we make it visually interesting? I’d like to do something a bit original if possible. I won’t claim any world firsts, here. The genre has quite a few imitators and innovators already. However, I do feel like the presentation of the notes themselves is generally unchanged across the genre. This isn’t without reason, as presenting clear anticipation and timing is absolutely vital to the players’ ability to hit the notes at the right time.
At the same time, games like Unbeatable and MUSE DASH certainly do enough to set themselves apart without messing with the “parallel horizontal paths” formula. With the 3D environment in mind, I’d like to put that 3rd axis to good use and have the notes start far away and come towards the player. Of course that begs the question: If the player can see the source of the notes, what possible explanation could I give for their existence?
Boss fights.
I already decided that violence was inherently part of the experience when I made the main characters warriors, so lets throw in a couple of big baddies. This opens up plenty of avenues for possible note appearances. Rockets, fireballs, and tiny goons are all on the table here. But what’s a good boss fight without a second phase?
How are you supposed to defeat an enemy that just throws stuff at you the whole time? Furthermore, how is an enemy supposed to defeat you when you dodge all of their attacks? Well, you gotta close that distance. As the song progresses, the boss will do something to get within smackin’ distance so the fight can properly end. This will also add some visual spice, as this will affect the way notes must be presented.