Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Fly around and blast through asteroids in this OpenGL C++ game

branch: master
README
  _________ __              ___________.__       .__     __                
 /   _____//  |______ ______\_   _____/|__| ____ |  |___/  |_  ___________ 
 \_____  \\   __\__  \\_  __ \    __)  |  |/ ___\|  |  \   __\/ __ \_  __ \
 /        \|  |  / __ \|  | \/     \   |  / /_/  >   Y  \  | \  ___/|  | \/
/_______  /|__| (____  /__|  \___  /   |__\___  /|___|  /__|  \___  >__|   
        \/           \/          \/      /_____/      \/          \/       

Group:
  Long Cheng        cs184-cy
  Kyle Conroy       cs184-cz
  Jillian Moore     cs184-cx
  Wei Yeh           cs184-df

Platform:
    Mac OS X 10.6 - Snow Leopard
    
Submitted by:
    Wei Yeh
    
Website:
    http://www.kyleconroy.com/starfighter.php

    
#####################
# Compilation
#####################

Use "make"; resulting executable is named "starfighter"


#####################
# Usage
#####################

./starfighter -f <levelListFile>


#####################
# Input File Spec
#####################

The input file is a level list with pairs

<level> highScore

separated by newlines. <level>.level refers to the level file in the same directory.

A level file consists of geometry definitions and model definitions.

#####################
# Level File Spec
#####################

Some entries have options [option1 | option2]

# Loading a .obj mesh

{
    objgeometry                 #
    name unique-name            # must be a unique name
    path path/to/file           # relative path
    bs [box | sphere]           # OPTIONAL sets the bounding shape, default is box
    boundingsphere x y z r      # OPTIONAL explicitly sets the bounding sphere 
    boundingsphere x y z x y z  # OPTIONAL explicitly sets the bounding box
}


#####################
# Gameplay
#####################

The objective of StarFighter is to fly and blast through asteroids
and alien spacecrafts, making it to the end of the level with a high score.
The ship is controlled entirely with the mouse. Lasers are fired by clicking
the mouse button. The ship can also launch bombs by holding down the mouse
button and releasing it after at least half a second. The longer the mouse button
is held down, the further the bomb travels. Bombs are detonated by pressing the space bar.


#####################
# Features
#####################

* animation and UI using OpenGL and GLUT
* detailed collision detection, optimized using object-aligned bounding boxes/spheres and kd-trees
* ray tracing technique used to fire lasers/missiles
* gravity-affected, bounce-able projectile simulation with balls
* mouse controlled x/y thrust
* level input file parsing to construct world, using OBJ output of objects designed in Maya


#####################
# Libraries Used
#####################

* Eigen vector/matrix library
* kdtree (http://code.google.com/p/kdtree/)
* FreeImage for writing images
* SOIL (Simple OpenGL Image Library) for texture input


#####################
# Other Credits
#####################

* Ship and Kamakazi model from sender pinarci, on TurboSquid
    * http://www.turbosquid.com/3d-models/sendercorp-sender-ma-free/429728
    * http://www.turbosquid.com/FullPreview/Index.cfm/ID/433482
* Asteroid models from Setro on turbo squid
    * http://www.turbosquid.com/3d-models/free-3ds-model-stones/497091
* Sound effects from http://freesound.org

#####################
# License
#####################

Copyright (c) 2009 Long Cheng, Kyle Conroy, Jillian Moore, Wei Yeh

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Something went wrong with that request. Please try again.