Dreams of Flight

Falling with Style

From Pelaton to Pigeon

For this project, we had two challenges. Firstly, a strict deadline of 7 days. Secondly, our target hardware platform: A piece of exercise equipment.

In "Dreams of Flight", the player soars through a surrealist art-deco inspired city, flying through rings to the rhythm of the soundtrack. Because this was a rhythm game by nature, the player momentum was designed to keep the player going through the rings as close to the beat as possible. For natural feeling flight, the player needed to speed up when they aimed down, and slow down when they drift up. To keep the player in time, bounds for speed were established, and energy is conserved. If a player has built up lots of speed flying downward, they would more rapidly lose speed when returning to a neutral or upwards position, until back in tempo with the rings.

Tracking Player Movement

When we decided to develop for the Icaros, we had made the assumption that the device was capable of outputing the device's orientation. It turned out this was not the case, and we needed to find our own solution. Because we wanted to target desktop VR for the visual fidelity of the project, Vive trackers seemed like a natural fit for determining where the player's body was. Two trackers were used, to prevent possible issues with occlusion.

The two tracker solution provided other key benefits. Multiple trackers meant we could more effectively dampen jitter in the trackers, and get a more accurate readout for the rotation of the device. The Y value of the two trackers relative to each other was utilized to determine the player rotation. Because the trackers would always be bound to the same spot of the Icaros, tracking vertical movement was done by establishing a base near the back of the Icaros, and measuring the angle along of change relative to the base.

Too Close to the Sun

Spline system for movement and generation

Originally, the player had a full range of motion, but this proved too challenging to steer with the Icaros equipment. The compromise was to let the player move up and down, left and right, along a pre-defined spline which the rings would generate along. This meant a skilled player would still need to expertly move their body on the Icaros, but a more casual player could still complete the level. More importantly, this reduced the amount of time players would be rotating horizontally, which reduced the number of playtesters falling off the equipment!

This project was created with Unity targeting HDRP, and using the SteamVR plugin for SteamVR headsets.

I served as lead programmer, and handled player movement, Vive tracker detection, and ring generation.
Lookdev and the procedural cityscape was created by Jaiyu He .
Additional programming by Yuxin Gu .
Production, design, and UI by Angie Mendenhall.
Music and sound by Jason Lian.