Flying Dream is a musical first-person movement game, in which the player zooms about, explores a serene virtual world...
discovers new sounds...
and leaves traces of sound around the landscape...
associating place with color with sound with movement.
[Video goes here, eventually.]
The entire world is different every time, so there's always a new experience to be had through the different permutations of colors, sounds and terrain.
Download. (NOTE: This will definitely not compile or run on anyone else's computer yet. Also, I have no idea why it's so big. I'll find out soon, and re-post it.)
The Original Proposal
The proposal can be read here.
The Concept vs. The Reality
The idea behind Flying Dream was to map expressive, flowy, fun movement in a game world to musical sound, turning movement into an explicitly creative act and generating a unique ambient atmosphere each time it was played. However, I found that the type of "movability" I was building towards, with its swooping and soaring (a la Tribes' skiing & jetpacking) had a limited range of intuitive musical mappings. Without betraying players' expectations about what sounds should result from the movements they were performing, I had a hard time coming up with sounds other than long continuous pitch sweeps, or similarly long discrete scale runs. Graceful curves were covered, but the rest of the musical palette was unachievable.
With that revelation in mind, I steered Flying Dream in a slightly different direction. I had created an environment consisting of a cloudy blue sky and rolling green hills, but had left the random floating blocks of color which were the sole features of the initial version of the program. These, combined with the fact that the hilly terrain occluded much of the landscape when you came to rest almost anywhere on the ground, made me think more about the ideas of exploration and discovery.
I decided to map colors to different sounds, and enable the player to "pick up" new sounds from colored mounds that they could find scattered about the landscape. I then used the existing mechanic of pressing a key to draw "sound trails" behind you as you moved, bringing together the final set of interactions: Explore, Collect, Move, Draw. This loop of actions allows the player to construct a mental model/map of the relationships between color, sound, and place, and to develop the world and their model by adding lines of motion which also correspond to the existing color/sound relationships. The result is a calming and ambient experience that nonetheless is full of surprises and opportunities for exploratory play.
I used several audio libraries for Flying Dream: RtAudio for the low-level audio system interface, STK for effects, and FluidSynth for instrument synthesis (using a soundfont I found online). On the graphics side, I used no libraries, coding everything from scratch except for the computation of terrain normals. I also used SDL, an application layer that I prefer to GLUT. The program is a relatively straightforward combination of these dependencies, in all: input events get polled in SDL, graphical artifacts and 3D movement result and are rendered, and there are audible consequences as well (wind noise, instrument sounds from drawn trails.) The hardest & most unnoticeable part was getting the sound trails to rotate correctly according to their direction while maintaining a uniform volume.