Rollin Poe takes up the gauntlet with You Can't Stop the Beat

The Scope A complete VR game in just 7 weeks

Myself and five team members developed a complete VR game with Unity, SteamVR, and the VRToolKit from ideation to a fully playable game in less than two months. Design, development, gameplay scenario, playtesting, and user interface were all completed in-house by the team. The final game implemented ideas from rhythm games, old-school shooters such as Doom and Quake, and modern sensibilites like scaling difficulty and customizable levels.

3rd place winner EON Reality x NTU VR Challenge 2019
Time: February, 2019 — March, 2019
Status: Complete

A Couple Key Aspects

  • Rapid development
  • Advanced scripting including OS access calls, dynamic level generation, reactive elements
  • Small team leadership
  • Build upon and work with existing frameworks

The Base A Blank Slate

RunGo

Limitless possibility, limited time

Seven weeks from idea to shippable game is pretty tight, all the more so when many members of the team were inexperienced with Unity (and C#) and game design. My previous experience with Unity and VR (see ExNovo and Narrative Framework) led me to taking the project lead role.


Research Baseline

Modern Inspiration

Starting out, the team began to research what worked well in gaming already. What was popular and fun. What worked in VR. What didn't work. Brainstorming and ideation were key here, not feasability. Popular VR games such as Beat Saber and Space Pirate Trainer, as well as non-VR games like Nier: Automata, Dark Souls, and Doom (2016) were brought up.

Retro Inspiration

Doom (2016) being brought up in our discussion on current popular games led us to the idea of exploring games from the early days of 3D gaming. VR is very much in it's infancy now as 3D gaming was in the 1990s, creating a nice parallel. Arena style shoots such as Doom (1993) and Quake and explorative games like Tomb Raider (1996) were all brought to the table.

Moving Forward with a goal

The team decided that our goal for this project was to create a game that we, as the developers, would enjoy. This was inspired by how the themes and mechanics of early shooters like Doom (1993) came about. Further inspired by old and new games, the wave of nostalgia that crashes ever forward meant the team could proceed with a maze/arena style game keeping in line with neo-retro games that have become popular.


The carefully limited scope allowed myself and the team to execute an ambitious plan while maintaining a reasonable workload. The design sought to showcase the teams strengths (such as programming and game design), and minimize the weaknesses (art) while still allow all members to challenge themselves and grow.

Main Menu Starting

The Pitch

You Can't Stop the Beat is a virtual reality rhythm-based action game. The player finds themselves lost in a maze in the depths of space and must find their way around the maze growing in power, all while avoiding the onslaught of bullets raining down around them in time with the music, with a robot intent on stopping the player at all costs. Quick movement, fast shooting, and a good sense of rhythm are the keys to success.


Iterative Development

Like with any good project, there were lots of problems to be solved, bugs to be squashed, design choices to be made, and tests to be run. Here are a few of the highlights.

Problem It's too time intensive to individually design levels for each song

The core gameplay loop of You Can't Stop the Beat involves the enemies firing at the player in time with the level's music. While humans have a uncanny ability to pick out the beat, rhythm, and melody of a song, individually hand coding every song would prove too time intensive and necessitate the implementation of special listeners and readers on each gameobject.

Solution Analyze songs on the fly with a fast Fourier transform

The fast Fourier transform (FFT) can be used to separate a complex singal (like a sound wave) into its constituent pieces. By writing an FFT we could breakdown any song into frquency bands and the correlate those to components of the song (low bands for bass, upper bands for high-hat and snare, etc.)


This also simplified the workflow as we could have a single master game object that would fire events for relevant changes in each band. Now any gameobject could listen to the single master FFT object and react accordingly (such as by firing a bullet when a change in bass is heard).

Problems The Maze

  • The maze generation algorithm I wrote randomized the layout for a new challenge everytime you boot up. However, we realized players often want the feeling of mastery that comes with beating a specifc stage.
  • If the maze was too small players can get simultaneously overwhelmed by the robot boss or become overpowered themselves if they find enough items quickly. If the maze is was too big, it becomes a slog to navigate through.
  • The random maze generation lead to problems with spawning enemy turrets in the players path and with player upgrades being inside walls.

Solutions The Maze

  • Seed the random number generator the maze uses with a hash of the song title. This way the same maze will be generated for the same song, while ensuring each song generates a different maze.
  • The maze generation code creates an MxN matrix which is then traversed to place walls and paths. After much play testing we settled on a playspace of 20-25 units2. An area at the centre was cleared of all walls both to speed players along and create an open colosseum where the boss-fight was most likely to occur.
  • After the maze was generated, a second pass occured to properly place pickups (in the corners) and turrets (on randomly selected walls).
In progress build

An in progress build showing the cleared area in the maze center, and a visualization of the FFT surrounding the arena.

Problem Limited Song List

In the interest of maintaining compliance with copyright laws, You Can't Stop the Beat has a limited number of tracks that come prepackaged. However, as the team saw with games such as Beat Saber or Guitar Hero long track list is a key selling point.

Solutions User imports

Allowing users to import their own music lets a functionally infinite number of levels be generated. This idea came about in conjection with the necessity to hash and seed the maze generation. However, the compiled binary executable of the game didn't necessarily play well with new content being read in from the operating system as opposed to from the resource folder. The music system (including FFT, file reading, and maze hash) was overhauled to allow for the new feature.


Final Evaluation Deliverable

Final

EON Reality x NTU VR Challenge

Out of 48 participants You Can't Stop the Beat took third prize in the 2019 EON Reality x NTU VR Challenge. We received specific praise for our ambition, unique concept, and the grounding of our design ideas.