LabRats


LabRats was a game project that started 2003 and faded away somewhere during the summer of 2005.

The LabRats engine was specifically built for platform games and heavy repetition of objects. (Remember that was before instancing support existed on the GPU). The main graphics API used was different versions of DirectX9.

The programming language used was a combination of C/C++.







Several different shadermodels are used to enhance the atmosphere obviously allowing objectspecific shaders and the possiblity to dynamically switch an objects textures and shaders ingame.

The engine performs automatic trades between cpu,gpu and bandwith. Trying to compensate for systems with low bandwith or cpu capacities.

The engine has support for low-end 3d graphics cards that do not support pixelshaders and also uses different shaders depending on if your card supports Shadermodel 1,2 or 3.

The default shadermodel is 1.0, allowing us to add bumpmapped lighting,additonal lightsources without bumpmapping and depth of field rendering. Shadermodels 2 and 3 add among other thing better lighting equations and parallaxmapping. (Multimedia pictures were taken running the game using shadermodel 1)

Shadows are constructed using shadowvolumes allowing full realtime dynamic lighting and shadowing.

The engine maps are completely dynamic allowing the movement, addition and removal of any object in realtime including lights.

In fact the engines leveleditor is built in! Objects are added directly into the game and their properties tweaked directly using the built in scriptlanguage. Since everything in a scene is dynamic there is no difference between an object and animated character. Allowing us too hook in AI behaviour and statemachines into any static objects or animations we want to.

The animation system uses animationblending instead of the usual inverse kinematics. Allowing us to blend up 10 different animations provided by our artists allowing the engine to control the rendering and let the artists do what they do best.

All basic objects are constructed using MilkShape3d combined with special inhouse tools.

Collisiondetection is based on boundingboxes. We do not use a general physics simulator, since the behaviour in our game universe currently has no use of these. Enemy AI handles physics allowing each character complete control of their reactions to different objects and actions. The main character uses a similar system, however objects don't only handle their own reactions but also the maincharacters, simplifying things even more.

The soundsystem can playback OGG or raw soundfiles in 3d for both the music and soundeffects. To minimize memoryusage, sound is loaded on demand or when required.