About

Lume is an adventure game set in a futuristic world where the evil KOG corporation controls all of the world's energy.

You are Project Lume, a discarded KOG experiment, one of the few individuals left that can harness energy. It is up to you to return the world's energy back to the earth.

Explore large 3D levels full of skyscrapers, platforms, robots, and energy. Use your unique abilities to harness energy and modify your surroundings. After gathering energy, click on buildings to extend blocks that allow you to reach new heights. With each block extended the KOG world is permanently modified and some energy is returned to the earth. Sprint and jump to clear large gaps between buildings and platforms. Avoid the KOG robots they will do their best to knock you off their buildings. Master all of your abilities to reach the highest point in the KOG city to harness massive amounts of energy and change the world forever.


Features & Controls

The game controls are as follows:

Left Click: Build a block / Control a platform (when you have enough energy)
Right Click: Removes a block that you built
W, A, S, D: Character movement
E: Sprint (hold)
Space: Jump
ESC: Brings you to the Main Menu

Menu Options:
Upon running the game for the first time, the menu will have the options "New Game", "Load Game", and "Exit". After you have started a new game "Resume" and "Save Game" will be present in the menu. Save and Load work as expected but only allow for one saved game at a time.


Technologies


Growing Blocks

One thing that makes our gameplay unique is the player’s ability to click on any surface and build a block. The block does not just appear, but “grows” out of the surface where the player clicked. This required a good amount of optimization of picking and projection of the 2d click into 3d space. We did this by narrowing results of each click using picking and then projecting from the camera to the nearest object. Once an object is acquired we find what surface, normal and position the click corresponded to and make a new block. This is also used for “ungrowing” blocks by right clicking on them. Further we also gave the player the ability to further extend existing blocks by clicking on them again.

Textured Model with animation

The main character model was given thanks to Bill Hess and the Journey In The Dark team. The model is in an MD5 format and was UV mapped in Blender 2.49b and the texture image was generated in Photoshop. After UV mapping and texturing the character in Blender, we used a Blender to MD5 exporter to generate the new MD5 model with the correct UV mapping.

The robots have a skeletal mesh and was modeled, rigged and textured in Maya 2010. We used Doom 3’s MB (Maya format) to MD5 exporter to generate a MD5 file of the robot mesh. This was done by actually going into the Doom 3 game and using there command line to run their scripts on the Maya files. When we generated the MD5 files, we repeated the UV mapping and texturing process that was done with the main character model but on the robot this time.

We finally took all of the modeled, UV mapped, textured and sometimes animated models and put them in our game. We took our MD5 mesh and anim files and their texture JPG files and put them together using an MD5 importer. This was done by parsing the MD5 mesh and reading in the model’s joints, vertices triangle faces and weights drawing it all in our 3D world. The MD5 anim files parsed into the joint hierarchy and frame by frame information to interpolate through to animate that model.

Level based upgrade system

The “Heads Up Display” displays the player’s experience, energy and level. Energy is collected and used in the game to build blocks. By building blocks and getting to more checkpoints the player levels up, increasing their character’s speed, jump, build ability, and amount of energy they can store.

Audio

The game has basic sound effects for building and collision and background music. The background music is original work created for the game.

Pixel shader A simple pixel shader is implemented on shadows to give a cool color effect.

Shadows

Shadows are implemented on all blocks built using shadow volumes. The shadow volumes use a z-buffer algorithm with the use of the stencil buffer.

Uniform Spacial Data Structure

The whole world is broken up dynamically (on map load) into small buckets of objects. This structure greatly increases performance of any collision calculations done by only checking a limited number of objects on each pass.

View Frustum Culling

View frustum culling is implemented as part of our data storage structure to draw upon request only the objects visible to the camera with the use of bounding spheres on each drawable object.

Billboarding

Billboarding is implemented as part of our energy “orbs” to give the effect that the 2d textures used are 3d.

Animated Texture Sprites

Our texture class supports static, playing, and looping textures. This gives us the ability to apply videos and animation onto static objects. Our 2d objects are also scalable and support clipping (ex. when building towards the edge of a building).

Blur Effect

The blur effect is achieved using a frame buffer object, and rendering the screen multiple times.

Lighting Effects

All lighting done in our game is done computationally, not using the built in graphics lighting. This gives the original feel to our game and allows us to easily manipulate the color of objects.

AI

Simple AI is implemented on robots throughout the world. Level one features robots with a simple path. Level two has robots that pursue the character if in range.

Mapper

The worlds for this game were build using a mapping program built and maintained by the team, this allows easy construction and placing of energy sources and buildings, as well as checkpoints.

In-Game Debugging and Editing

An important development feature of the game is the in-game debugging and editing. In debug mode attributes and certain variables are displayed real-time on the screen as opposed to printf commands along with the ability to type in simple commands. This allows us to quickly switch maps and alter the player/game attributes without having to close the game. This also allows for an editor mode (turned on in-game) in which 2d images and hints can be placed using the normal picking used in-game (point and click).

Particle Effects

Robot explosions and orb collection are both handled by different particle systems. These were modeled from anti gravity explosion equations and flock simulations.

Refrences

irrKlang - An open-source library for playing sound files.
The Freesound Project - A repository of free sounds.
Swiftless Tutorials - Tutorial for heads up display.
GLSL - An open-source library for Open GL Shading Language.
Lighthouse 3D - Tutorial for view frustum culling.
NeHe - Tutorial for blur effect.
Journey In The Dark
MD5 to Blender 2.49b Importer and Blender 2.49b to MD5 Exporter
UV Mapping Tutorial 1
UV Mapping Tutorial 2
Maya Tutorials
MD5 Importer


Screen Shots



Videos



The Team

  • Mike Buerli
  • Brent Dimapilis
  • Trent Ellingsen
  • Jeff Good
  • Teal Owyang
  • Jonathan Rawson
  • Ryan Schroder