Technology

Technology

Our technology is written from the ground-up taking advantage of Unicode which means localization is a breeze. The source code is extremely well maintained, for example we have 0 LINT issues (default settings), automatic verification of the code convention and of course full documentation. The technology takes advantage of multicore CPUs whenever possible which makes performance of many tasks to scale very well to number of available cores. We currently support x86, x64, PowerPC 32/64 bit, Cell PPU/SPU and ARM architectures.

Everything is written in a modern modular fashion with clear boundaries between each module helping developers keeping the code base clean and minimize application bloat.

Additional core features are, for example:

  • C++ serialization; provided serializers for binary or XML object representation.
  • RTTI, implemented with minimal impact on code and ease of use.
  • Efficient and thread-safe memory management.
  • SIMD optimized math library including 2D and 3D vectors, 3x3 and 4x4 matrices, quaternions etc.
  • A lot of generic classes for various algorithms and trees.
  • Platform independent I/O and threading frameworks.

 


Rendering

World class rendering system with probably the world's most ambitious graph based shader system. Both vertex- and pixel shaders are generated from the same graph, no distinction is required between them two which simplifies the shading tasks significantly. The graphs are also automatically analyzed to generate optimal vertex/pixel shaders for each target platform. Same graphs is also used across all rendering back-ends which currently is DX9, DX10, OpenGL, OpenGL ES 2.0, Playstation® 3 (GCM) and also an advanced software rasterizer (generates SSE2 assembler at runtime from the shaders). As we've also worked extensively with Xbox 360® we have prepared the renderer as much as possible in order to soon fully support it as well.

The renderer is fully multithreaded in order to take advantage of multicore platforms.

Example of bundled shaders:

  • HDR tonemapping
  • Deferred shadow maps with receiver plane biasing and poisson disc sampling in the penumbra.
  • Advanced specular approximation using Gaussian distribution.
  • Bump- and parallax mapping.
  • Depth-of-field
  • Bloom
  • Screenspace ambient occlusion.
  • Velocity based motion blur.

 


Animation

The animation system supports both skeleton based animations and absolute or relative morph targets. The skeleton animation system supports 4 bones per vertex and unlimited number of bones. 

The animations are driven by "controllers" which are either keyframed data, inverse kinematics, state graph or physics (ie ragdolls). These controllers can be combined in any configuration to support very complex animation needs. It's also possible to extend this combination by providing user-defined controllers. 

 


Terrain

Large scale terrain rendering supporting 4k square miles heightmaps. An automatic surface cache mechanism which utilize GPU to maintain maximum detail on closeup terrain and low resolution on distant terrain, all from the same surface shader. The terrain system also support dynamic modification of heightmaps during runtime.

 


Particle effects

Multithreaded, fully customizable, particle system. Each particle effect can be made up from serveral layers of particle emitters and modifiers. The particle system also supports "depth particles" to reduce visible intersection artifacts.

These are a couple of modifier examples, as always it's possible to extend this by simply implementing your own modifier classes:

  • Drag or damping
  • Gravity
  • User plane collision
  • Physics collision
  • Size
  • Vortex force field

 


Physics

Unified physics interface allows homogenous access to all popular physics libraries such as, NVIDIA® PhysX®, Havok™, Bullet and ODE. Simple and intuitive rigging of complex articulated entities is possible through the Editor. It's also possible to test each rig on all available physics backends in realtime to see how each physics library differentiate in solving the constraints.

 


Script

LUA or JavaScript based scripting is available with minimal C++ stubs required. The Editor also supports realtime verification of the scripts which means any error are highlighted directly as you type.

In order to minimize overhead of scripting we use luaJIT or Google's V8 JS engine on supporting platforms. Other platforms degrade to vanilla LUA or a non-jitted JS engine.

 

 

 

 


Flash™ based user interface

A complete and integrated Flash™ player. The Flash™ player is written from the ground-up using Traktor technology which enabled unprecedented integration with ActionScript™. The Flash™ player utilize the GPU to rasterize shapes which means it's exceptionally fast. Due to the fact it's using the GPU it's also possible to have the Flash™ player render dynamic textures which can then be used as an ordinary texture.

 

 


Audio

Full 7.1 surround sound system with unlimited number of virtual channels. A lot of filters are available which can be chained to together on any sound source. Multiple backends for various platforms are available such as DirectSound, WinMM, ALSA and XAudio2.

The entire sound system use 32-bit floating point samples internally which means very high fidelity and high dynamic range.

A 3D surround filter is implemented which map sounds automatically to proper channels depending on the sounds and listeners 3D position/velocity.

We also provide a high-level "sound bank" system which is used for sound effects. Each sound bank contain multiple child sounds and filters which can be trivially scripted, pitched and/or randomized to provide a unique effect each time it's played.

The sound system support MP3, OGG, Flac and WAV formats.

 


Video

Video playback, either in fullscreen or into textures, supported through the free Theora codec. More codecs are easily integrated as with everything else, the framework is highly extensible.

 


Network

Core

Advanced peer-to-peer network solution which minimize the cost of maintaining a dedicated server. We have a unique solution to keep peers in sync; the network system is capable of having multiple peers running "true" physics simulation with minimal rubberbanding and other network related artifacts WITHOUT a server. Part of the solution is to have each peer work in a, from the network point-of-view, dynamic time where each peer's time can be either slowed down or speed up based on a continuous heuristic measurement of the network.

Online services

Generalized online support is provided for Local, Steam™ and PSN™. Achievements, statistics, friends, matchmaking and data storage are uniformly provided which lets developers write code once in order to support every service provider.

 

 


State-of-the-art tools

The Editor is written using the same technology as the runtime which means that what you see in the Editor is exactly what you see in the game. Editor and games are tightly integrated which means every change made in the editor are automatically exposed to all running instances of the game on what-ever platform. Updates are propagated in matter of seconds which enables artists and designers to quickly iterate on their work without the need to restart the application.

There are no distinction between shaders, geometry, sounds, scripts or any other type of resource which means EVERY content change is propagated in realtime.

Pipeline

All source assets are processed by The Pipeline to make it optimal for the target platforms. The pipeline provides detailed reports about, for example, shader costs, texture sizes, mesh sizes etc.

Targets

Targets can be launched and monitored from the Editor which is very useful for tuning assets for each platform. Runtime information such as frame-rate etc are provided for each running target.

Localization

The Editor is fully localized which let users work in their native language.

 


Licencing

For queries or licencing please contact us.

Copyright (C) 2010 - Doctor Entertainment AB