projects

[ games | ai and planning | physics | graphics ]

Games

Resistance: Fall Of Man

shipped:  November 2006
platform: Sony Playstation3
by:       Insomniac Games

description:
I began my third project at Insomniac Games as a member of the early pre-production team on what would later become Resistance: Fall Of Man, a launch title for the Sony Playstation3. In pre-production I focused on programming core gameplay systems such as the physics joint constraints used for rag dolls and articulated objects, tweakable dynamic joints, inverse kinematics, and others.

When the project transitioned into full production I moved into a management role, leading the gameplay systems team. The team was responsible for developing our proprietary physics engine, the inverse kinematics system, the effects conduit, the HUD and UI, breakable objects, dynamic glass and simulated flexible hoses. I was involved in planning and scheduling the team's work, handling programmer reviews, managing sweeping code projects to get the game with its memory and performance budgets, and organizing technology transitions to keep pace with the Playstation3 launch. I introduced several improvements to the scheduling and goal tracking processes to encourage efficiency, fairness, accountability, and a sense of team morale. As a programmer I implemented several key gameplay systems including inverse kinematics for dynamic foot placement on uneven terrain and an enemy artificial intelligence.

Click to visit the official Resistance: Fall Of Man home page.

Ratchet and Clank: Up Your Arsenal

shipped:  November 2004
platform: Sony Playstation2
by:       Insomniac Games

description:
This was my second project at Insomniac Games. Just like the 2 previous games in the series it is a 3rd person action adventure game. This latest game builds on our previous formula by adding even more amazing weapons, some very nice visual effects, and a really awesome online component where you can turn your over-the-top weapons and gadgets on your friends. For a majority of the production cycle of this game I was actually working on core game systems and R&D for Insomniac's future projects. But when the team needed some extra programming done to meet the deadline I was assigned to the project for a couple of months. I programmed the weapon effects for the enemy Tyhrranoid attack ship and the 2-eyed Tyhrranoids in the first level, Planet Veldin. I also worked on the enemy AI and effects for the Amoeboids in the sewers of planet Aquatos. Finally I added some improvements to the AI and effects for the Soldier Bots and Sharpshooters on Planet Daxx and the Joral Nebula. A funny story about the Soldier Bot weapon effect is that when I originally coded it, each shot fired was a flaming ball with a little meteor inside it. The meteors were cut out later in production to make the effect more efficient, but they can still be seen immortalized in their full glory in a screen shot on the back cover of the game box. Its nice to see that the hard work did not go to waste.

Click to visit the official Ratchet and Clank: Up Your Arsenal home page.

Ratchet and Clank: Going Commando

shipped:  November 2003
platform: Sony Playstation2
by:       Insomniac Games

description:
This was my first project as a gameplay programmer at Insomniac Games. It was also the first game that I worked on as a full time programmer in the video game industry. Like the original Ratchet and Clank, this sequel is a 3rd person action platformer featuring tons of outrageous weapons and gadgets. I joined the company in the middle of the project and was thrown right into the rough production schedule. I programmed the enemy behavior, game logic, enemy weapon effects and other level specific special effects for 3 levels of the game.

The first section I worked on was the Gladiator Arena in the Maktar Nebula for which I coded the AI and effects for 4 enemies, the arena hazards, and the game logic for more than 10 battle challenges. I also wrote the weapon effects and AI for 2 bosses, Chainblade and the B2 Brawler.

The second part of the game that I programmed was the Megacorp Games Arena on planet Joba. For this arena I programmed 2 new enemies and augmented the enemies that were used in the previous arena to make them more challenging. One of the more interesting challenges of this level was getting all of the enemies to work in the Cage Match cylinder high above the arena. Enemies had to be able to target the player and navigate the inner surface of the cylinder cylinder in accordance with the crazy laws of cylindrical gravity. It was fun coding the lava effect that fills the arena before the cage match and also the flailing behavior for the enemies when they get knocked out of the cage match and plummet to their doom. I also wrote the code for the 2 bosses in this arena: Megapede a giant insect made of segments that blow off and attack you, and Arachnoid a giant spider (with only 6 legs...go figure) that shoots lightning at you in the cage cylinder.

My final level for the game was Planet Damosel. For this level I coded 2 enemies: the evil protopets which just keep on multiplying and attacking everything in sight, and the protopet exterminator bots that shoot lighting bots at anything furry...including Ratchet. I also wrote the AI for the robot citizens which run for their lives from the protopets. In this level I also did a pretty cool freezing effect for the water fountain and all of the effects and logic for the grind rail segment, in which trains warp in through wormholes just in time for the player to ride on top of them.

Click to visit the official Ratchet and Clank: Going Commando home page.

Beam Runner Hypercross

date:     Spring 2001
platform: PC
by:       Maxim Garber, Mark Harris, Vincent Scheib, Stephan Sherman, Andrew Zaferakis
purpose:  Course project for the class COMP 290 3D Game Engine Design at UNC

description:
Over the course of one semester our group of 5 graduate computer science students implemented, from scratch, a 3D game engine called HyperX and a game demo called Beam Runner Hypercross on top of that engine. The game is a high speed racing game where players pilot ships that ride on beams of energy. Players face off against AI opponents in a world populated by traffic and plasma gun turrets. My contribution to the work was mainly in designing the ship control and opponent AI.

Click for implementation details and screenshots.


AI and Planning

Motion Planning in Massive Environments

date:    Fall 2002
by:      Brian Salomon, Maxim Garber, Ming C. Lin, and Dinesh Manocha
purpose: Research project at UNC

description:
This is a system for automatic path planning for walking avatars in very large 3D virtual environments. My role was to implement the global path planning algorithm, which builds a road map of the environment through random sampling coupled with a pruning strategy. This is done as a preprocess. At runtime this road map is searched for a collision free path between user specified start and goal locations. 

Click here for the publication, video and abstract.

Constraint-Based Motion Planning

date:    Fall 2001
by:      Maxim Garber and Ming C. Lin
purpose: Research project at UNC

description:

The project involved developing  a new approach to motion planning for rigid and articulated objects in both static and dynamic environments. The approach involves converting the motion planning problem into a constrained physics simulation. Both hard and soft constraints are defined to guide the object to its goal, while maintaining valid motion. Running the simulation produces a path for the robot from its starting position to its goal in real time.

Click for publications, performance timings, and videos.

A Voronoi-Based Hybrid Motion Planner


date:    Fall 2000 through Spring 2001
by:      Mark Foskey, Maxim Garber, Ming C. Lin, and Dinesh Manocha
purpose: Research project at UNC

description:

This system uses a hardware accelerated method for computing a 3D Voronoi graph of a scene to obtain an estimated path for a robot from its starting position to its goal. My role in the project involved extending the system to support articulated robots and also improving robot orientation calculation using potential fields. This work lead directly into my Constraint-Based Planning system.

Click for publications and videos.


Physics


Real-Time Cloth Simulation with Full Cloth/Object Interaction

date:    Fall 2001
by:      Maxim Garber
purpose: Personal interest

description:
 
Based on my earlier experience with cloth dynamics and my personal interest in real-time cloth, I implemented this system for my own interest. The main goal was to not only support realistic cloth motion, but also to allow the cloth to exert forces on objects in the scene. In my example scenes, a cloth sheet slows the motion of the projectiles that impact it, and a cloth net catches and holds projectiles.

Click for implementation details, sample code, videos and an executable demo.


Simple Physical Simulation

date:    Spring 2002
by:      Maxim Garber
purpose: Course project for COMP 259 Physically-Based Modeling, Simulation and Animation at UNC

description:
 
This course project involved implementing two simple physical systems: a spring mass system and a projectile system. Each system was tested with both the Euler and Midpoint integration methods and the results were compared.

Click for implementation details, sample code, and screen shots.

Collision Detection

date:    Spring 2002
by:      Maxim Garber
purpose: Course project for COMP 259 Physically-Based Modeling, Simulation and Animation at UNC

description:
 
This assignment involved using an existing collision package to implement rigid object interaction. The resulting system was then tested with various parameters to explore the performance curve.

Click for implementation details, sample code, and performance graphs.

Constrained Dynamics

date:    Spring 2002
by:      Maxim Garber
purpose: Course project for COMP 259 Physically-Based Modeling, Simulation and Animation at UNC

description:
 
This assignment involved using the Lagrangian formulation to implement a bead constrained to move on a circular wire.

Click for implementation details, sample code, and screen shots.


Graphics


Procedural Shader

date:    Fall 2002
by:      Maxim Garber
purpose: Course project for COMP 238 Advanced Image Generation at UNC

description:

For this assignment I used the Cg programming language to implement a fragment program for the NVIDIA NV30 graphics architecture. My fragment program implements a simple cellular automata process which produces visually interesting results.

Click for implementation details, source code, and result videos.

Ray Tracer with Ray Queue

date:    Fall 2002
by:      Maxim Garber
purpose: Course project for COMP 238 Advanced Image Generation at UNC

description:

This project involved implementing a standard ray tracer. My ray tracer implementation uses a statically allocated circular array as a ray queue, for speed, and allows partial results for both object and lighting rays to be displayed interactively.

Click for implementation details, source code, and result images.

Stochastic Ray Tracer

date:    Fall 2002
by:      Maxim Garber
purpose: Course project for COMP 238 Advanced Image Generation at UNC

description:

This project involved augmenting my previous ray tracer to support triangle primitives and texturing as well as features to produce soft shadows, glossy reflections, and image antialiasing.

Click for implementation details, source code, and result images.

NPR Palette Renderer

date:    Spring 2001
by:      Maxim Garber
purpose: Course project for COMP 236 Advanced Computer Graphics at UNC

description:

For this project I implemented a real time non-photorealistic rendering engine which allows users to specify a palette of textures and then render 3D geometry using those textures as a rendering style. The end result is a fun system that allows anyone to create their own custom NPR rendering style from almost any set of images.

Click here for implementation details and result images.

SoftGL: Software Implementation of the OpenGL Graphics Pipeline


date:    Spring 2001
by:      Maxim Garber
purpose: Homework for COMP 236 Advanced Computer Graphics at UNC

description:
This series of homework assignments I implemented a software rendering engine following the OpenGL pipeline. The purpose of this project was to make us intimately familiar with the standard polygon rendering pipeline and the technical problems that have to be solved to make it work. The components of the software rendering that I implemented are: 3D Polygon Clipping, Triangle Rasterization, Smooth Shading, and Lighting.

Click here for implementation details and source code.