Game Description

Our collection-based, exploration game is inspired by the movie, Finding Dory. Dory is lost and needs help to find her friends before she loses her memory! Before the timer runs out, Dory must search throughout the interactive, underwater environment and collect 7 different characters. While searching for characters, Dory can collect powerups to build up her stamina, but should avoid dangerous enemies like the hungry shark.


User Guide

Graphics Features

Camera/View

Our game uses a 3rd-person camera that slightly lags behind Dory. We also provide the option to toggle between 1st, 2nd, and 3rd-person camera views by pressing the keys 1, 2, and 3. Dory's orientation and look at direction is connected with the mouse.

Environment - Heightmap & Multiple Point Lights

The complex environment of this game is a non-planar heightmap inside an underwater skybox. Coral is randomly spawned according to the variable heights. For the lighting configuration, our game uses three point lights.

Animated Characters & Non-Player Elements

To fit the Finding Dory theme, we incorporated 7 different characters from the movie: Dory, Marlin, Nemo, Bloat, Gurgle, Jenny, and Charlie. Each character is hierarchically modeled to allow the articulated motion and animations. For non-player elements, we added particle effects to create bubbles and fun animations.

3D Spatial Data Structure & Collision Detection

Our game utilizes a uniform 3D spatial data structure. All objects in the world are stored in and accessed through this data structure. For collision detection, we query the data structure for cells surrounding the object of interest and check for collisions using bounding boxes.

Shadows

Shadows are rendered from a single point light source in the environment using a light depth map. Shadows are computed each frame since the animated objects have shadows that constantly need to be updated. We improved our original shadows by implementing soft shadows.


View Frustum Culling (VFC)

The view frustum culling implementation utilizes the unifrom 3D spatial data structure when deciding whether to cull or not. With VFC, our game only renders objects that are in the view of our camera. This optimization improved performance as our game no longer has to render every object (i.e. coral, powerups, enemies) in the environment.

Rendering Techniques - Caustics & Environment Mapping

To enhance the underwater feel, we implemented caustics on the floor. The periodic, animated caustics are a series of textures that are blended with a single floor texture. The floor shader also renders an aqua range light that directs Dory toward the next character to find. We also implemented environment mapping on the powerups by reflecting the skybox images.

FBO Effects - Blur & Fog

Our game uses several different frame buffer object (FBO) effects to simulate fog, blur, camera shaking, water, and sun rays. For example, the game blurs when Dory swims fast or runs into an enemy.

Cut Scenes & Text Rendering

Text rendering was implemented with the freetype library. We used text to display the timer, game statistics, and player narrations.

Resources