Technology

Our proven 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 multi-core 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, 3×3 and 4×4 matrices, quaternions etc.
– A lot of generic classes for various algorithms and trees.
– Platform independent I/O and threading frameworks.
– Each C++ library is self-contained which means parts of the engine can be easily used without need to include the entire source tree.

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, DX11, 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.

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. This caching mechanism also enables the terrain renderer to draw multiple terrain patches with a single draw call, using instancing.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:

The particle effects also support ”trigger points” which can be placed on the timeline and used to trigger, for example, sound effects, other particle effects etc.

Physics – Unified physics interface allows homogenous access to all popular physics libraries such as, NVIDIA® PhysX®, Havok™ and Bullet. 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 curves and 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, presence, P2P 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 real-time.

Deploy – Deploy and launch the game from The Editor to any connected PC, Mac, PS3, iPad or iPhone with a single click. Running instances are presented with performance metrics within the editor and is updated with every change in content in real-time.

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.

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