Marmoset Engine
Marmoset is 8monkey’s proprietary game engine and tool set which have been in development for the last three years for Darkest of Days . Marmoset provides all the capabilities of a modern, full-featured 3D engine in a simple light-weight package. Originally developed on Windows PCs, the engine has recently been ported to the Xbox 360. 8monkey is always on the lookout for new opportunities to utilize the Marmoset technology.
———————————————————————————————————-
RENDERING
Central to the experience in any game are the visuals. Marmoset provides a host of tools and features to this end.
Image Based Lighting
Outdoor rendering in Marmoset is accomplished with the use of image based lighting. High dynamic range omni-directional photographs are pre-processed into diffuse and specular data for use by the renderer. With these data Marmoset can efficiently light and render static, dynamic, and deformable geometry with normal maps, soft shadows, specularity, anisotropy and parallax. This approach results in virtual scenes lit with real-world lighting data for a unique look and realistic feel.
Artists can preview and edit the exposure, light direction, balance, and color of skybox lighting in Marmoset’s sky box editor before baking it into irradiance maps for in-game use. Marmoset’s lighting system also works well with HDR Shop.
While image based lighting is the cornerstone of the Marmoset renderer, more traditional dynamic point lights are also supported for localized lighting effects.
Characters
Darkest of Days requires Marmoset to support large numbers of active characters on screen, much more than are typically present in first person games. The rendering engine was extended specifically for this purpose and is now capable of rendering hundreds of characters at interactive frame rates. By utilizing GPU animation, a mesh LOD scheme, and pre-rendered impostor sheets, Marmoset is able to smoothly present characters in large groups and at great distances.
The Great Outdoors
Marmoset excels at large outdoor scenes with lots of vegetation. A typical level in Darkest of Days is anywhere from one to four square miles in size - fully populated with trees, bushes, weeds, grass and earth. A powerful LOD system is used in conjunction with instancing and GPU animation to keep memory and CPU usage low. With optional SpeedTree RT integration, Marmoset is able to render large dense forests at surprisingly high framerates.
Designers can paint layers of grass, plants, trees and terrain textures with a paintbrush, as well as dynamically forming and tesselating terrain geometry. Rivers, lakes, and puddles can be easily placed as simple volumes. A flexible decal system is available for extra localized terrain detail such as craters, roads, cliffs, or other terrain markings.
Post-Render Effects
Marmoset has a wide variety of adjustable image processing effects for a fully customizable look and feel. Post render effects can be saved and loaded, previewed in engine, and changed on the fly through scripted events. Features include:
- Motion blur for cameras and objects, including deformable meshes
- Crepuscular rays
- Layerable blur and color “plates” for custom effects
- Bloom, with strength and threshold controls
- Sharpen
- Brightness/contrast per color channel
- Saturation per color channel
- Screen space ambient occlusion
- Bokeh depth of field
Marmoset contains more than 50 preset configurations of the post effect system.
—————————————————————————
PHYSICS
With support for nVidia’s PhysX, Marmoset is able to robustly simulate game physics on a wide variety of platforms. Marmoset makes use of this technology for human bodies, particles, debris, world props, explosions, buoyancy, materials, moving platforms and more. Physics simulations can be run on combinations of the PPU, GPU, or multi-core CPUs for added speed.
—————————————————————————
ANIMATION
The Marmoset animation system features:
- Skeletal animation supporting up to four bone influences per vertex
- Mesh LOD support
- Animation state machine controlling layers, transitions, blend times, speeds, randomized variations, impostors and more
- Procedural pose animations, such as looking, speaking, and aiming
- GPU mesh skinning
- In-engine animation preview tool
- Optimized support for complex skeletons
- PhysX integration for character physics, such as ragdolls
- Maya integration: exporters for weighted mesh files, skeletons, and animations
—————————————————————————
AI
Marmoset AI is able to drive behaviors for hundreds of characters simultaneously, and yet provide convincing detail for one-on-one encounters with the player. The decision making system is powered by an extendable list of actions that operate independently, allowing new scriptable or autonomous actions to be easily added without interfering with existing behaviors. Actions can also set a variable update frequency for lower-priority states to use fewer CPU cycles.
All actions share a common set of sensory data - audio, vision, navigation, teammate signals, enemy fire detection, and object finding and following are all efficiently and easily made available to all behaviors.
Marmoset AI’s navigation is based on path maps, which are essentially sparse bitmaps of world navigability. Such maps are generated automatically by the world builder and can be easily viewed & modified by designers to suit special cases. Characters have the option to make use of dynamic cover - an algorithm that examines the path map and determines which nearby areas are safe and which are exposed to enemy fire. This allows the AI to at all times have a detailed description of the world at hand that is easy to examine and does not rely on expensive geometric checks or ray casts. Marmoset also contains a highly optimized A* variant capable of plotting lengthy courses across the path map for many characters very quickly.
—————————————————————————
AUDIO
Marmoset’s audio system includes:
- 3D positional sound with attenuation
- Multi-channel playback, including 5.1 and 7.1 surround sound
- Realtime distortion filters such as reverb, pitch, doppler shift, band pass, and other effects
- Loading and playback of wav and compressed Ogg Vorbis files
- Memory reports to track resource usage
- Visual editing of sound properties and scripting in Habitat
- Voice system for randomization and scripting of character dialogue
—————————————————————————
PRODUCTION TOOLS
Habitat
Habitat is the world builder for Marmoset, and the main workhorse for game creation. It provides a “what you see is what you get” editing interface that shows designers exactly what their creations will look and sound like in game. Combined with the ability to jump into the world and immediately begin playtesting in any location, Habitat takes the guesswork and load times out of the design cycle.
Habitat’s visual scripting system allows for the creation of complicated game logic without requiring a programmer. Designers can set up gates and triggers and pass simple events to objects and groups all without writing a single line of code. When new capabilities are required, Marmoset’s event system is easily extended by a programmer through the addition of new event types.
With Habitat’s modular building creator, designers can use tileable pieces created by artists to easily build unique architecture. The tool also allows the user to paint vertex weights to blend between textures and normal maps for localized detail. When a buliding is completed, radiosity and occlusion data can be computed using a custom GPU accelerated baking process. Resulting buildings can then be saved as presets, cooked into meshes, or used directly as unique content in a level.
Other features present in Habitat include: a comprehensive suite of terrain editing and painting tools, as well as editors for sounds, characters, AI, trees, grass, underbrush, particles, lights, special effects, and more.
Toolbag
Toolbag is a collection of Marmoset tools in one application. It functions as an in-engine preview and editor for meshes, materials, animations, trees, sky lighting, physics rigs, and character ragdolls.Toolbag’s material editor is one of the most powerful and frequently used tools in its arsenal, exposing the full capabilities of Marmoset’s lighting and shading engine in the form of an art tool. Artists can pick from a list of shading models, load and refresh textures, edit parameters, preview animations, and observe the model and its materials under a variety of lighting conditions. Material settings and features include among other things: dynamic phong light, skybox lighting, anisotropic lighting, skin diffusion, refraction, reflection, blending, layered texturing, parallax, specular masks, specular sharpness, detail normal maps, and more. Toolbag is set to be publicly released soon as a free tool for the art community.
Download Marmoset’s Toolbag at the following link: Download Marmoset Toolbag Installer
For more Marmoset Toolbag support, tips and tricks, visit the polycount Megathread here:
Maya Integration
Exporters for Marmoset mesh files, skeletons, and animations for various versions of Autodesk Maya are available.
xNormal Integration
xNormal, written and maintained by Santiago Orgaz is one of the best normal map generators in the industry. Recent releases of xNormal have Marmoset mesh file support.
—————————————————————————
DEVELOPER FEATURES
Marmoset also includes several features to assist the debugging process and make the technology more widely accessible:
- In-engine performance graphs and stats allows developers to track not just the performance of the entire application, but also each subsystem. This tool has both CPU and GPU timing modes.
- Error handler will perform a stack trace and write a detailed log in the event of a crash or exception. This allows non-programmers who encounter bugs to easily submit detailed reports of any errors for quick bug fixing.
- A built in memory tracker can track all memory allocated through the C run time, and generate a heirarchical XML report organized by stack trace. This is a very powerful tool for tracking fragmentation and memory usage. Specialized reports for memory usage of specific resources such as sounds and textures are also generated.
- Localization is natively supported through a simple spreadsheet style database. Any number of languages can be added to a project.
- Marmoset’s GUI and font systems support a subset of Unicode (characters for English, French, Spanish, Italian, German, and Russian).
- A seek-free file loader packs an entire level’s worth of resources into one sequential compressed stream for ultra-fast load times on both PCs and consoles.
- Marmoset and all of its tools are written in C++, and compile properly in gcc and Microsoft Visual Studio.