=============================================================================== ___ ___ ___ \\ / | / / | | \\ /\ / \\ /\ / | / / | | \\ / \ / \\/ \/ | /__ /__ |___| \\/ \/ by Anthony Lee and James Riecken ================================================================================ ================================================================================ THE STORY SO FAR... ================================================================================ Graham the wizard was walking home one day from a hard day of wizardry and music when suddenly his arch-nemesis Jeffrey materialized in front of him. "Graham!", said Jeffrey, "I have kidnapped your friends and will kill them if you do not admit to me that I am the greatest wizard ever!" "Never!", exclaimed Graham, "You won't get away with this! I will find my friends and then come back to get you! Now tell me where they are!" "They are in my castle, but you will never be able to get past my minions!" And with that, Jeffrey disappeared. Graham is now at the entrance to Jeffrey's castle and you must help him in his quest to save his friends. ================================================================================ HOW TO PLAY ================================================================================ General Controls ---------------- Q - quit the game Controlling Graham ------------------ W or Up arrow - Move forwards S or Down arrow - Move backwards A or Left arrow - Turn to the left D or Right arrow - Turn to the right Space Bar - cast spray spell Left mouse button - cast a fireball (you must directly click on the enemy that you wish to attack) Controlling the Camera ---------------------- Hold right mouse button - move camera around - Move it left and right to rotate the camera around Graham. - Move it up and down to move the camera up and down Hold middle mouse button - zoom camera in and out - Move it up and down to zoom in and out. ================================================================================ ON SCREEN CONTROL PANEL ================================================================================ The on-screen control panel relays important info about Graham to you, as well as lets you upgrade Graham's spells and health. The two icons at the left indicate the level of the two spells. The region in the middle allows you to upgrade the level of the two spells and the wizard's health. The three bars at the left show (from left to right): the amount of gold, mana, and health Graham has. ================================================================================ GRAHAM'S ARSENAL ================================================================================ Graham has two spells which he uses to defend himself: Spray and Fireball SPRAY - Maximum level - 9 ------------------------- To cast the spray spell, press the spacebar. A stream of magic will flow from Graham's hands if this hits an enemy it will damage it. The higher the level of spell, the more damage it does. This spell uses 5 mana for every half second of use. FIREBALL - Maximum level - 9 ---------------------------- To cast the fireball spell, left click on the enemy you want to attack. The power of the fireball lessens as it travels away from the wizard (and eventually disappears), so for maximum force the spell should be cast from close up. Again, the higher the level of spell, the more damage it does. This spell uses 10 mana for each fireball shot. ================================================================================ GRAHAM'S STATS ================================================================================ Graham has two main statistics: Health and Mana HEALTH ------ This is the amount of life that Graham has left. If this ever reaches zero, he will die and the game will be over. Health regenerates at 1 unit every 10 seconds. MANA ---- Mana is used to cast spells. Mana regenerates at 1 unit every second. =============================================================================== BEASTS, SPIDERS, AND GOLD, OH MY! =============================================================================== Graham will encounter three main objects in the castle: beasts, spiders, and pieces of gold. BEASTS ------ Beasts are the workhorse of Jeffery's evil army. They range in power and health. They follow a rainbow color system that indicates their power. Red > Yellow > Green > Blue > Pink SPIDERS ------- Spiders are the bosses of each level. In each level there is one spider. When this spider is killed, Graham will advance to the next level. GOLD ---- Scattered around, there are pieces of gold. You can pick up this gold and use it to upgrade Graham's spells and health. You might notice some familiar faces on the coins if you look closely. =============================================================================== IMPORTANT NOTES =============================================================================== What Graham doesn't know is that he is on a doomed quest, Jeffrey's castle is infinitely tall, so he will continue advancing levels forever. --------------END OF GAME README, START OF TECHNICAL README-------------------- We have implemented all required functionality. The 4 advanced functionality that we implemented were: Navigation, Collision Detection, Particle Systems, and an On-screen control panel. In addition to these there are other small features including a skybox and animated models. Some highlights: Navigation ---------- - The camera follows the wizard around as he moves - The camera can be rotated around and zoomed Collision Detection ------------------- - Wizard, beasts, and spells are stopped by walls. - When beasts collide with the wizard, they attack him. - When either of the spells collide with an enemy they do damage. Particle Systems ---------------- - Textured particles are used. (they are "billboards", they always face the camera) - Snow falls - Enemies dissolve into mush when they die - The spray spell is a stream of particles - The fireball is made of many particles, and explodes when it hits anything On-screen control panel ----------------------- - An OSD is used to relay information about the wizard as well as allow the player to buy better stats for the wizard. - The OSD is translucent =============================================================================== Sources of Inspiration =============================================================================== - most of main.cpp (glut callbacks) is the same as from project1 and 2 3d modeling viewing - used obj loader from project 0, modified slightly - all models created by us using Wings3d - used camera class that I (jim) coded in project 1 Texturing and picking - TGA file loader - http://www.levp.de/3d/ - picking looked at select/hit picking in redbook - picking tutorial: http://www.lighthouse3d.com/opengl/picking/ Particle systems - http://nehe.gamedev.net/data/articles/article.asp?article=19 - http://www.lighthouse3d.com/opengl/billboarding/index.php3?billCheat2 Textures - http://www.mayang.com/textures/ - http://www.imageafter.com - http://www.pixelpoke.com/FREE%20PIXELS_backgrounds.html - skybox created using Terragen - other textures created by hand (wizard, beast, coin, particles)