SMU Guildhall
Home
Individual Work
Team Work
Resume
Contact
  ||  Back to List
Water Simulation

Water simulation program uses shallow water equations derived from Navier-Stokes and calculated using forward Euler integration. Can load and and save various heights and bottoms. Two options that can be chosen is a simplified height field calculation with a damping factor or an advanced height field calculation with a diffusion factor.

Cloth Simulation

Software uses summation of forces including gravity, spring forces on the cloth and an external wind force. After acceleration is calculated, Verlet is used to compute the final positions of the points evenly spread throughout the cloth.

Minimal Sphere Calculation

Sphere calculated using Welzl's algorithm. Spheres are rendered using a wireframe to demonstrate that the sphere is definitely the minimal optimal sphere for the object.

BSP Level

BSP (binary space partition) generated by an existing file that contains BSP data using that for occlusion culling, placement of items, etc. This is a sample Quake level.

Shaders

Bump Mapping using shaders. Used calculations for normal, tangent, binormal within vertex shader and normal (specular) and bump mapping texture calculation made within the pixel shader. Runs from either GL assembly shader or HLSL.

Terrain Engine

Terrain generated by a terrain (height) map. Example shows an island of Hawaii surrounded by water. Frustum and quadtree culling used to speed up rendering of the terrain. Level of detaiil (LOD) and stitching implemented for faster rendering and more realism in terrain mapping.

concurrent rts

Real time strategy simulation using multithreading techniques and "lockless" programming. No semaphores, mutexes, critical sections, or any other locking mechanisms used. Data structure used is a linked list.

Planet Simulation

The mechanics behind the orbiting planets are implemented using a scene graph. The teapot planet can be set up as a world or axis aligned billboard. Various views can be requested by a press of the key including bird's eye view (overview), changing motion using Hermite spline, changing motion using constant arc Hermite spline and view relative to a particular planet looking at another planet. Frustum culling is used to minimize the number of nodes visited thus optimizing speed for frame rate usage.

Zombie hunter

Introduction

This is a 3D action game I partially developed before I was a student at the Guildhall. As well as animating the player by importing wavefront (*.obj) files, the player can be manipulated using the keyboard or joystick. The joystick configuration is similar to what is used by Playstation joysticks. As well as moving the player with the left joystick, you can also use the right joystick to rotate the camera. Except for plotting a point, rasterization and rendering is implemented by software rather than hardware acceleration.

Optimizations

Collision between tombstones is determine by a simple BSP tree so instead of comparing to 30 tomstones, you need only compare to about 8 to free the framerate for other functions. For rendering, a quadtree is used to more quickly  determine which areas to render and occlusion culling is used to determine what not to render based on what the mansion is blocking from view.

Effects

Fogging is done by simple mathematical manipulation similar to alphablending. Z-fighting was slightly present when the player was close to the fence or mansion and rotated the camera for a close up shot. This was resolved by trial and error involving manipulating the LOD and viewpoint of the player. Thunder effect done by simple random number generation and instantaneous color change of the sky.

The Zombie

Artificial intelligence is implemented to give the illusion of how a zombie would move. Terrain following is used when the zombie collides with a tombstone. Otherwise the zombie moves in random directions. If the player enters the zombie's "zone" (the limited area where the zombie only moves), the zombie tries to kill him. The zombie must actually "see" the player within thew "zone" before trying to attack. The zombie "sees" the player using a view frustum that is within it's eyesight (meaning a collision detection using an anglur range with the player. Once spotted, the zombie moves in the direction of the player and if close enough will strike him with it's arm and the player will lose shields points and if no more, then life points.

Collectibles

Three items the player can collect are life points, shield points and bullets. Simple collision detection is used to determine that the player actually touched them.

GuildZone Network Game

Game project demonstrates using a dedicated server and clients for network play. Socket technology and API based on BSD socket is used. Sockets are set as non-blocking for faster data transmission. Nagel's batching is disabled to allow for more accurate latency calculations. Uses TCP/IP protocol. Smoothing is done with first order differentation with latency and accessing common time based on the server. Byte ordering is incorporated for proper data transference.

Copyright © 2011 Southern Methodist University. All rights reserved. • Right to Know and Legal • Privacy Policy

For questions or problems with this site contact The Guildhall Webmaster.