-Game Play

-Player Characteristics – Hit Points, Mana, Weapon Damage, Various Weapons, etc.
-Monsters – Various Monsters, Simple AI.
-Action – Strike with Weapon, Death, Run, Cast Spell.
-Camera – 3 dimensional, 360 degree rotation.
-Landscape – Wide open filed with few mountains.
-3D Model – Load Quake models and animations.
-Limited Multiplayer (Use polling, thus, limited on same network with similar computer)
-Demo and source code - 184final.zip (11.7MB) and Readme.txt
    -Real time battle - Combat and Victory 
    -Large open landscape - Mountain while maintaining 40+ frames per sec.
    -Spells - Magic

-Particle System

-Randomly generate fire and lightning.
-The system also generates spark, blood, fireball, etc. by adjusting the parameter of fire and lightning.
-The methods are original. I did not refer to any paper

-Optimized to avoid page fault

-The particle system only allocates and deletes a large block of memory at a time.
-Thus, if a particle disappears, its memory location is marked as open, and the next particle will just use this "empty" memory space.

-A little program demonstrating the particle system. (Texture not included): ParticleSystem.exe (96k) Require Opengl32.dll (716k) and Glut32.dll (216k)

-ROAM Terrain (ROAM = Real-time Optimally Adapting Meshes)

-Input: Height map (1024x1024 in game), and the triangulation from the previous frame.

-Output: Sets of triangles for display. (Usually around 5000)

-Basically, this is a LOD terrain algorithm; it merges groups of points on height map into isosceles right triangles. Thus, when terrain is displayed, not every point on the height map is shown, but only those triangles created by the ROAM algorithm.
-Between each consecutive frame, each isosceles right triangle can be split into two, or merge with its adjacent triangle. The decision to merge and split is decided by two priority queue.

Below is a screen shot of a single frame.

Below shows the triangles chosen and displayed by the ROAM algorithm.

Green triangles are actual triangles in the frame.
Pink triangles shows the triangulation of current frame.
White dot indicates the location of the player. (It's in the middle of the big pink cluster)
The large pink cluster of triangles are the area around the player.
The smaller pink cluster is the mountain in the distance.