About

Remote Shepherd is the capstone project for Long Shot Games, a group of five graduate students in RIT's Game Design and Development masters program. The game allows the player to step into the shoes of a group of vigilantes who have decided to put their skills gained as Marine Scout Snipers to use in cleaning their city of criminal organizations. This blog will track both the ongoing design and development of the project.

Tuesday, January 25, 2011

The Infernal-Light Engine and Graphics Going Forward

So, my primary objective over the past 7 weeks has been to reorganize our game engine for use with producing our game. This has included clean up and refining of the original code base (this included adding an event system, observer-observable model, smart pointers, and general code refactoring and cleanup).

While doing that, we had an express need to incorporate a pre-built physics and animation system. The reasoning was, in our previous games Polarity and Rogue Squirrel Returns, I had written our physics and collisions from scratch (basic acceleration, velocity, momentum, bounding sphere, bounding box, and bounding plane). The amount of time and effort required was tremendous, and while the code was re-usable, more optimized and organized technologies would have saved us a lot of time. So, for this, we included rolling Havok Physics and Animation into our engine. This required writing an extension library, which we could use for handling all of our interactions with the Havok system. Currently, we've incorporated Havok Physics into the system, with specialized event handlers for catching collision events. We are still working on getting Animation into the system.

So, what is next on the agenda? Next, is to take our DirectX 11 library and extend aspects of it to allow for multi-pass special effect rendering. To accomplish this, I will be doing three specific things:
  1. Extracting out code used to render and put it into a more generalized "Pass" object, which knows what objects it wants to render.
  2. Give the pass object as set of input and output "Buffers", which represent the render targets they will attempt to read from and render to.
  3. Create a manager that keeps track of these "Buffers", enabling quick fetching and storing of Buffers as soon as they're available.
  4. Create a unified light manager to manage all of the lights available in the scene. The manager should be capable of getting all of the relevant lights (up to a max number) for a given object in the scene.
The goal is to create a chain of passes which can be processed, feeding one into the other. The end result is a render chain which can build all of the components of various rendering effects, and perform them in the order stored in the chain.

No comments:

Post a Comment