Bounce!

3D Puzzle game based on Chip's Challenge

with Will M

Winter 2012, Stanford CS248

The Project

Bounce! is a 3D tile-based puzzle game inspired by Chip's Challenge. The main character, a bouncy red ball, must navigate a series of mazes to collect gems and avoid moving hazards. The main type of hazard in Bounce! is a fireball that turns right when it hits an object such as a box or a wall. The player can divert the fireballs by strategically placing crates in their path and redirecting them into pools of water.

We built Bounce! in three weeks using OpenGL and implemented our own graphics and physics engine. Given the short time frame, the current game play is limited, but can be extended with more levels using our level editor.

Graphics

Here is a list of graphical features that we implemented for this game:

  • Shadows
  • Water simulation/shader
  • Skybox
  • Fire particles
  • Custom textures
  • Diamond refraction shader

Mechanics

- character movement (the ball bounces when it moves and hits an obstacle)

- object movement (crates slide with some resistance)

- surface friction (ground vs. ice)

- camera perspective (we offer 1st person and 3/4 perspective)

- sounds

Level Editor

Since Bounce! is a tile game, we added a text based level editor to specify levels with arbitrary object configurations. Currently each object in the game is represented by a pair of symbols, and the symbols' placement in the text file indicates the object's position in the game. In order to allow object overlap, we specify the same level twice. The right side shows all of the static objects (water, walls) and the left side shows the moving objects (the player, hazards with direction, crates).

What's Next

Bounce was written 3 years ago on my old PC, so I am working on getting it to work on my Mac. This involves updating all of the project's dependencies and fixing code so it works with the new APIs. Once that's done, I'll try to restore some of the particle code that we lost when my old harddrive crashed, and then I'll update the visuals.