A riveting exploration of the human condition

Created by Miles "Smooth Cheeks" Johnson and Adrian "Big Tipper" Sierra

Get the source


DEATH BY BUTTERFLIES is a game where you play a flower who must beat back an onslaught of butterflies through the awesome power of bubbles. The butterflies, being creatures of music, spawn as notes are played. Fortunately, your own weapons (bubbles) feed off their demonic energy and are charged as the beat of the music progresses. However, if you don't fire on the beat, a bubble will not appear and the shot will be wasted. Firing closer to the beat pleases the gods, and in their favor they will grant you a boon to help you live another beat.


It's real simple. When the game starts, a menu appears where you choose your song by clicking on its title. Then the game screen appears. The music and starts spawning butterflies. The rhythm bar on the left shows you when to shoot bubbles. Pressing spacebar shoots bubbles. Try to shoot when the rising blue part of the rhythm bar lines up with a green marker (ie shoot on the beat). Letting the blue go to higher markers increases the size of the bubble. Larger bubbles capture more butterflies.

You'll notice some words (bad, good, perfect...) below the rhythm bar indicating how close you were to the green marker. If you get enough perfects in a row, a powerup will spawn. Hit the powerups (the non butterflies) for massive damage.

You lose when too many butterflies reach the flower! The bottom right corner shows you how many lives you have left (1 butterfly = -1 life).


Our main goal is to make an amusing rhythm game primarily driven by midi files. Games are fun.


Our game objects are organized as such: Each game entity (butterflies, bubbles, flower, rhythm bar) extends the Actor class, each of which belong to the Stage class. On each iteration of our rendering loop, each Actor executes a render and logic function, the latter of which executes all of the necessary logic for that Actor (eg motion). Actors know their location, velocity, texture, and any other bits of information necessary for rendering and logic. While this does combine model and view, the small scale of the game makes this favorable.

The rhythm bar is responsible for measuring the accuracy of the player's shots, and therefore shooting bubbles as well. To find a track's tempo, we scan the midi file for tempo change events. Similarly, finding each note consists of scanning for OnNote midi events and eliminating simultaneous or near-simultaneous events that are responsible for the same audible notes. We use those to spawn butterflies (as butterflies do).

As far as aethsetics go, we wanted to keep things light and goofy, because the best things in life are both light and goofy. I believe we succeeded in doing so.