Enabling Technology


The Maze Project has been developed to the point of being playable as a game, but still has much room for improvement. As development progressed, more focus was placed on fully developing the infrastructure of the program to make it easily extensible in the future.

Mazes are constructed using a tile grid structure. Each maze is built from a maze file (.mz) that lists the placement and rotation of each tile in the grid. Tiles are chosen from a tileset of Milkshape 3D file (.ms3d).

3D collision detection is performed based on the player??????s position within the maze. Because this is a costly operation, collision detection is performed only on polygons of the current tile and the tiles directly adjacent to the current tile.

3D sound is implemented using FMOD. 3D sounds are created as Soundobjects and are placed into the maze in 3D using the FMOD API. The geometry of the maze is then reconstructed in FMOD to allow for direct and reverb occlusion of the sounds for a more realistic effect.

Joystick support is also included for interfacing with the Microsoft Sidewinder 2 Force-feedback Joystick. The joystick accurately responds directionally when a collision occurs with a wall.

Currently, gameplay is of a basic collection type, but could be easily broadened to include a variety of game types. Soundobjects are placed inside of the maze at locations defined by the maze file. The goal is then for the player to collect each of the soundobjects by navigating to them based on the 3D sound. When all sounds have been collected, the game ends.

Improvements that could be made to the game are as follows:

- Improvement of cane-tapping sounds to account for wall-walking. The taps should hit walls when walking closely to them without touching them, and should speed up as the range of the sweep is shortened by getting closer to the wall until finally there is a collision. This could be implemented by defining a range of collision distances and interpolating the wall distance from that range.

- By working with FMOD, reverb effects could be added to indicate that a player has entered an intersection. This could be done either by manually applying an effect to the sound, or by fine-tuning the occlusion parameters of the geometry.

- Joystick support could be broadened to include support for more brands of joysticks as the Sidewinder 2 is rather sensitive to movement, and also has no defined rest position. Different control schemes could also be helpful to give players control options.

- Visualization modes should be added to enable the user to apply various effects to the coloring of the visuals (i.e. high-contrast) for the benefit of low-vision players.

- New modes of gameplay could be added such as a story mode or a mode with a help system that knowing the solution to the maze, can lead the player through difficult sections with strategically placed voice clues.

- A content editor should be created to allow for easy creation of new levels or mazes. Most of the infrastructure such as maze files and tilesets are already implemented to make this a straightforward task.

- The menu system could be implemented in 2D which would most likely improve performance and simply the creation of menus. It would also allow for extension to be able to place feedback on the screen as the game is in progress (i.e. number of objects left to collect, score, etc.)

The project was demoed at Maze Day, and from that experience I learned a lot. Some of the ideas from above such as the high-contrast mode and the joystick sensitivity issues were suggestions from the kids and teachers who tried out the program.

The source code can be found here