Last weekend the Global Game Jam 2015 took place and I participated for the second year in a row.
This year’s theme, What do we do now?, proved to be challenging. After struggling with a complex idea of a first-person rogue-ish endless runner (whatever that means), we settled with a far more simple one.
Taking inspiration from an HTML5 game featuring Ellie Goulding’s Lights, we decided to make an interactive experience about improvisation and exploration through audio and visual elements.
The team was composed by Jorge Palacios and myself, working as programmers and game designers, and received help from Luis Pulido (3D advisor) and Victor Ordaz (musician). Together, we created Jam.
Designed for Xbox 360 gamepads, the mechanics are simple: the player has four possible instruments that are mapped to each one of the different colored buttons in the control (keyboards are supported; keys U, I, O, P and Esc). The instruments are divided into two categories: percussion (bongo drum and cymbal) and melodic (piano and flute).
The game, in its purest nature (called Simple Jam), has the player using the instruments with the background changing its color accordingly.
There are no tangible victory or failure states and the only goal is to feel free to experiment with the instruments and express yourself, just like real music and game jams.
Built atop of Simple Jam, there’s the main game mode (called Let’s Jam) where the gameplay remains the same, but with a planet spinning on-screen. Now, each instrument not only changes the color of the background but the planet itself, as each of them now represents an element:
- Bongo drum: the green button, represents earth and creates mountains.
- Cymbal: the red button, represents fire and creates flames that engulf the planet and the camera.
- Piano: the blue button, represents water. By playing it, water and vegetation appear on the planet.
- Flute: the yellow button, represents wind and makes the world spin faster.
The effect of each instrument is only brief.
Jam is minimalist by nature, so we took care not to overuse text or any other kind of intrusive elements on screen.
We made important two design choices.
The first one was regarding the main menu. The game has no tutorial in the traditional sense; instead, we integrated the tutorial to the very same main menu in a seamless way.
By taking advantage of the selection screen, the player has a basic knowledge of the buttons that are taken into account when playing.
The second design choice we made was on the Credits screen (Who?). Instead of going for a traditional static screen with our names in it, we decided to integrate the mechanics of the game into it (technically it’s a Simple Jam plus our names). This way, the result is a dynamic screen that’s fun to mess with and actually teaches the player how to jam with it.
The development of Jam was divided into two sections: the core (Simple Jam) done my Jorge and the secondary elements (the visual stuff from Let’s Jam) done by me.
For the planet, we used a 3D sphere (made by Luis) and modified its vertices to simulate mountains. Also, no textures were used and each vertex was individually colored. The construction of the mountains was fairly easy, a set of random vertices is selected and given a random height and every other neighboring vertex around (and under a certain threshold) received a height proportional to the distance to the nearest mountain peak.
The coloring of the planet consisted of either a basic color for the earth (brown) or the life color when using the water instrument (blue for the water and green for the vegetation). We also accounted for the scenario when the both water and earth are summoned, in which case the higher vertices tend to be green and the lower blue (although we have mountain-shaped bodies of water, a
For the fire instrument we used a particle system, so no big surprises there.
Perhaps the most challenging part of the planet part was the movement of the camera around the planet. Our original design intended that the player could move around the planet; I had to revise and even fix the function to calculate a position over a sphere that I had. After spending many precious hours trying to unsuccessfully code a free-roam system, I decided to pay attention to Jorge’s advice and we ended up moving the world instead of the camera. Big lesson here: be as simple and pragmatic as possible.
In the end, everything went alright and we managed to finish just in time. There’s still some work left to do, mainly to polish rough edges and clean up the project, for the current version.
Jam can be played here (the use of headphones is recommended).