Firefly  
 

Home, Presentations, Concept Drawings, Screenshots, Renders, Photos

A game by Johanna Nellen, Christopher Kurtz and Max Odenbrett

Firefly

The Game

ScreenshotDescription

Firefly is a game where you must navigate a bug called Firefly through the world he lives in. Firefly will always follow the light and avoid shadily places. His aim is to build a nest and it is your task to help him: Gather all the different materials that are needed in order to create a shelter for the young Fireflies.

But keep in mind: Firefly does not survive without food. So plan betimes to move Firefly to where he can find something to eat and drink that will restore his powers. If Firefly has recovered his strength he can go on collecting useful materials. But be aware: There are dangers awaiting you in Firefly's world that you will have to face.

Firefly's World

  • Find your way past walls and black holes
  • Collect grass, wood and crystals all of which will give you different rewards
  • Look out for berries and water to regain strength
  • Keep your distance from open lights which would attact and burn Firefly

ScreenshotFeatures

  • A complete 3d world to play with
  • Different difficulty settings
  • Simple level editing: Load a variety of different worlds and levels from easily understandable and editable plain-text files.
  • Plattform independence: All libraries used are available for Windows, Linux and Mac OS.
  • An all new gaming experience using the intuitive LightPad interface.

Final Modifications to original project proposal and alpha

  • User tests show that slowing down the exhausted Firefly leeds to frustration as it becomes even more difficult to find something to eat in time. So that feature has been removed.
  • The flame actively attrachts Firefly. If the player must counter this effect to keep Firefly alive.
  • A self-made parser is in place to load board descriptions from plain-text files.
  • Collision detection improved.
  • Casting larger and darker shadows causes Firefly to move faster.
  • The team decided against a continuation of game developement after the final presentation and publishing the source code to the public. However the doxygen documentation can be downloaded here.

The Light Pad

Light PadDesign

Light Pad has been designed to be a simple, yet high quality input device. The light is meassured by a webcam shooting a paper surface on which the user performes gestures by casing shadows onto that surface.

Our Prototype is constructed using a solid paper box with a Logitech QuickCam for Notebooks inside. Construction of the Light Pad therefore was as cheep as 40 bucks.

Sadly the WDM-Driver of the Logitech Webcam is pretty bad and only delivers 2 to 3 frames per second. Sadly we can only access the cam via WDM.

The area covered by the camera is roughly 16cm x 21cm in size. This makes for a fine input area that can easily be operated with one or two hands.

Other Photos of the Light Pad:

RecognitionGesture Recognition

In order to recognize the user gestures we went in for a very simple aproach. We calculate the center of all "light" pixels and the center of all "dark" pixels.

To deal with the auto-correction functions of the webcam, we determine the average color intensity of the image. Then we take a pass about all pixels that are brighter than the average color and determine an average brightness. The same applies to the dark pixels.

Afterwards, the center of pixels brighter than the average brightness is beeing calculated (cf. image: red square). Similarly the center of the dark pixels is calculated.

Finally, we can determine the vector which the Firefly uses to escape the shadows and find a brighter spot. This vector (orange and violet squares) is scaled by the amount of shadow that is cast onto the surface (red vs. blue areas).

The Engine

Interact with lights in a 3d-environment

We strife for a plattform independent way to interact with a virtual environment using input from a webcam.

To that end we have looked into the capabilities of PortVideo, ARToolkit, OpenCV and Qt. Due to compilation difficulties we finally decided on using OpenCV for Webcam input. Sadly this toolkit does not access Webcams under Windows via DirectShow and therefore is pretty slow. Multithreading the game has not lead to any success. It seems that the call blocks the entire system process. As a result we can not acheive stable framerate.

ScreenshotRendering the world of Firefly

Our 3d-engine is 100% home-brewed and uses SDL to create plattform independence. OpenGL was the natural choice for rendering a cross-plattform game and for image loading we use DevIL. Meshes are loaded using our own file format.

In our game we use the following features of the engine: