Michael Atchison
Game Programmer


Personal Projects

Project: Dynamic Streaming Content
Development Time: six months
Description:
Uses my personal network library LobsterNET
Designed file transfer protocol for transfering files
Resource manager loads resources from offsite via file server when not locally available
World uses uniform sized zones to know what data to load

In this project I am implementing a means of dynamically loading resources from an external source. Resources within my engine usually consist of 3D models and textures, but can potentially be any file loaded. Specifically I have created a file server and an object loader which both use my network library, LobsterNet. The file server supports multiple connections and simultaneous transfer of files. Transferring of the file is done with a chunking system. The file is pre-allocated on the client end, and then filled in with data chunks. When a request is entered for an resource, the loader attempts to download the file locally if it is not already available, and then use an appropriate loader for the resource type.

Project: LobsterNET
Development Time: three months
Description:
Custom network library, layered on UDP using Winsock2
Supports reliable and unreliable communication
Ensures packet ordering for reliable data
Automatically chunks up and reassembles data too large to be sent as a single piece
Network architecture designed to handle client / server or peer to peer

My first focus study at the guildhall was to create a network library based on UDP using Winsock2. The library creates a reliable layer on top of UDP which will ensure data transmission, and proper ordering. The library will automatically chunk up large pieces of data before transmission, and will reassemble it on the other end, transparent to the user. To showcase this focus study, I created Generic Space Shooter, which demonstrates reliable and unreliable communication, along with a server that has been tested running 24 users simultaneously

Generic Space Shooter consists of a grid with which players move space ships around on. The players can fire bullets at other ships to destroy them, which will increase their score. There are several network metrics and functions designed to create artificial lag displayed to the user on screen.
Screen shots:
Generic Space Shooter Generic Space Shooter

Project: Terrain LOD
Development Time: three weeks
Description:
Dynamicly chooses LOD per chunk based on LOD bias and camera position
Stitching applied to not have holes through terrain
Frustum culling
Texture coordinates generated in shader
Tested on 1024x1024, 2048x2048, and 4096x4096 versions of terrain in OpenGL and Direct3D

For this assignment, we were given the height data for the island of Hawaii, and instructed to render said data using a level of detail depending on where the camera is positioned. This involved having multiple index lists for each individual level of detail, along with lists that would stitch two levels of detail together. The stitching would allow for a transition between two levels without having holes appear in the terrain. I also implemented a LOD bias based on the complexity of the terrain, and frustum culling.
Screen shots:
3D Terrain 3D Terrain 3D Terrain

Project: Super Slug Smasher
Development Time: three months
Description:
Custom stand alone editor
Supports any number of layers, each with a different depth
Uses a single win32 blit call to render frame to screen
Custom image class to render frame with alpha and transparency
FMOD implemented for sound
Collision based on a series of parametric lines
Supports segmented characters
Supports animated tiles

This project was my individual 2D game I created for my first term at The GuildHall, and was also my first major project. Its features include the following:
Screen shots:
Super Slug Smasher Super Slug Smasher Super Slug Smasher
Download:
doc Design Document
msi Installer (14.5MB)

 
 
Copyright ©2007 Michael Atchison and Guildhall at SMU all rights reserved