I am often available for freelance projects, and while primarily a C/C++ programmer, I have also dealt in JavaScript, ActionScript 2 and 3, PHP, and HTML. I have worked with the OpenGL, DirectX, MySQL, and Win32 API libraries. Feel free to contact me via e-mail (chris@kaynor.net) or phone (503-591-9115). For more information about me, view my Projects or my Resume.
L.A.B.R.A.T.S. is a total conversion mod for Unreal Tournament 2004 created as part of the Game Development Team class at the Art Institute of Portland. Over the course of about twenty weeks, the class (about 20 students) worked on the project, with the design of the project occurring in a previous class. The class is designed to mimic the production environment at professional studios.
Players play as one of several enhanced animals attempting to escape from a science facility. Throughout the levels, various powers can be found and players must collect these powers to help them escape, through both puzzles and direct combat with the various personnel of the facility. The players may choose to either play in single player mode, or in a co-op multiplayer mode.
During the project, I implemented much of the networking replication, especially that which directly affected the players, the character's class powers, some of the item abilities, the custom third-person camera, and much of the A.I. used by the various enemies. As L.A.B.R.A.T.S. implements a custom inventory and item system into Unreal Tournament 2004, proper replication of all inventory items had to be implemented, while trying to limit the networking load. Along the same lines, implementation of Karma physics in network play ultimately caused bursts of lag with the way Unreal Tournament 2004 handles Karma physics, and custom Karma sleeping functions had to be implemented to eliminate the bursts of lag. Character class powers, such as the sheep's ability to push objects and the rabbit's ability to teleport short distances both required coding not included in the base game.
As Unreal Tournament 2004 does not allow the use of a third-person camera in multiplayer games, a completely custom camera had to be implemented. Using a third-person camera made aiming difficult. To correct this, while not allowing the player to fire through walls, I implemented an advanced series of checks. While we used a library and the base bot behavior, much of the A.I. had to be customized to work with our custom item system and allow the level designers the ability to further customize the behaviors of the enemies. I implemented a versatile scripting solution for bosses, with the bosses using basic behaviors between scripted events. Simpler enemies needed enough scripting for the Possession power to force them to take specific prescripted actions.