----------------------------------
Barnyard Roundup
CS 248 Final Project, Autumn 2006

Laurie Kim (lnkim)
Karin Linnersund (karinlin)
Andrew Yen (andyyen)
----------------------------------

--------------------
Building and Running
--------------------
1) Copy either tmp/Makefile-mac or tmp/Makefile-linux to project dir
2) run make
3) run ./ourgame [options]
   [options] are: -t (multitexture) -m (music) -cN (num cows) -iN (time limit, minutes)

-----------------
Advanced Features
-----------------
--Better or Advanced--
1) AI - Cows have emergent flocking behavior, using the BOIDS model
2) Frustum Culling - 3D view frustum culling in world space of all game objects using spherical bounding volumes, using quad-tree data structures for terrain patches.
3) On-screen Control Panel - Persistent 2D mini-map of game world, score and game clock, plus start/stop screens, howto instruction screen, and encouraging on-screen messages during the game.
4) Level of Detail Control for Terrain - dynamically tesselated terrain for continuous level of detail, adjusted according to camera position.
5) Level of Detail Control for Trees - Selective rendering of model details, adjusted according to camera position
6) Procedural Modeling of Trees - Procedurally generated trees, using fractal algorithms with random variations.
7) Multi-texturing of Terrain - blending of multiple textures to produce detailed look without tiling effect
8) Physically-based Modeling - Particle system used to simulate gravel and dirt spray

--Easier--
1) Collision Detection - Single or multiple spherical bounding volumes for each game object
2) Simulated Dynamics - Newtonian physics for truck driving, with acceleration and some friction

------------
Game Content
------------
- Original game music composed by Juan Carlos Jimenez 
- Cow model provided by Caroline Ku
- Truck model, textures, sound effects obtained via internet
- Start/help screen, icons, and other art work by Laurie Kim

-------------------------
Resources and Inspiration
-------------------------
Boids
http://www.red3d.com/cwr/boids/
http://www.vergenet.net/~conrad/boids/

Procedural Trees
Creation and rendering of realistic trees
http://portal.acm.org/citation.cfm?id=218427 
Real time design and animation of fractal plants and trees
http://portal.acm.org/citation.cfm?id=15892

Particle System
http://www.naturewizard.com/tutorial08.html
http://www.paraschopra.com/tutorials/particle-systems/index.php

ROAMing Terrain: Real-time Optimally Adapting Meshes
by Duchaineau, M. et al
http://www.llnl.gov/graphics/ROAM/roam.pdf

Real-Time Dynamic LOD Rendering of Terrain with ROAM
by Bryan Turner
http://www.gamasutra.com/features/20000403/turner_pfv.htm

Frustum Culling
by Dion Picco
http://www.flipcode.com/articles/article_frustumculling.shtml

Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix
by Gil Gribb and Klaus Hartmann
http://www2.ravensoft.com/users/ggribb/plane%20extraction.pdf

Skybox textures: http://www.scentednectar.com/skyboxes/ao.htm (with some edits)
Fence texture: http://objects.activeworlds.com/aw/textures/fencea2.jpg

3D models
http://www.huntfor.com/3d/links.htm

Object Format
http://www.royriggs.com/obj.html
Load Obj File Tutorial
http://www.cokeandcode.com/node/324
