Kraken Engine

Kraken Engine

Kraken Engine is an open source graphics / game engine written in C++ with OpenGL ES 2.0. It targets iOS devices (iPhone, iPad, iPod Touch) and is designed to be cross platform. It supports some features not found in most mobile engines:

  • Per-pixel phong lighting with specular maps, diffuse maps, and DOT3 normal mapping
  • Both forward rendering and deferred lighting pipelines (Lighting Pre-pass)
  • Real-time occlusion culling using octrees and hardware accelerated fragment queries
  • Able to explore scenes greater than device memory; using memory mapped asset files for virtual memory that won't exhaust flash storage with write cycles
  • Hierarchical LOD system allows very large worlds to be created with a far draw distance and no need for zoning.
  • Multiple point and directional lights per scene
  • Post-processing effects such as vignetting and Depth of Field
  • Real-time shadow mapping with PSSM (Parallel Split Shadow Maps)
  • Asset pipeline imports objects, materials and scene graph directly from Autodesk FBX files

Kraken has its own integrated 3d audio engine, Siren. Siren's features have been selected to enable the most creative freedom:

  • HRTF 3d positional audio to enhance headphone listening experience. Rather than just panning sound sources left and right, HRTF allows the listener to distinctly differentiate sounds from above, below, front and behind.
  • An Impulse Response based reverb engine, which allows the use of standard impulse-response .wav files to be used to model the unique size, shape, and material characteristics of the audio environment.
  • Reverb and ambient zones can be overlapped for combinational effects and smooth transitions between spaces.
  • Automatic audio source culling, with no CPU or memory overhead imposed by distant sound sources that do not contribute to the output.

Mission Statement

Kraken Engine aims to power both indie games and AAA titles by large companies. Kraken will support the leading edge of features while still being simple to use by both artists and developers. Kraken will follow the needs of its users and encourage community involvement. Kraken will enable both immersive experiences and innovative game play.

Design Goals

  • Minimal - Kraken Engine will get out of the way, rather than take over the development environment and does not dictate the use of a particular IDE. Kraken engine aims for a minimal turn-around time for edit-build-test cycles.
  • Scalable - Support advanced rendering features for next-gen mobile devices, consoles, and PC's without incurring a cost on less capable devices when these features are not in use.
  • Dynamic - Support real-time lighting and object culling to enable dynamically changing, user-generated worlds. Asset file formats are open and possible to stream over the internet.
  • Native - Allow developers to choose between Objective-C and C++ for implementation, rather than forcing game logic to be written in a managed runtime such as .NET.
  • Open - Kraken is an open source project with the BSD license. BSD was chosen as it is the least restrictive and I want as many people as possible to benefit from Kraken. It is also compatible with Apple's app store submission requirements. Kraken will integrate well in workflows based around other open source software, such as Linux and Blender without treating them as 2nd class citizens.
  • Artist Friendly - The Kraken library will later be accompanied by a GUI, "Kraken World Builder", which enables artists without programming knowledge to import assets, customize materials, arrange them into scenes, and test them on devices.

Short Term Roadmap

  • Alpha transparency and punch-through texture support - Done!
  • Real-time reflections using cube maps as well as world geometry - In Progress
  • Hardware occlusion culling - Done!
  • HDR lighting and colour grading
  • Fog, particle systems, volumetric atmospheric effects - In Progress
  • Realtime soft shadows - Done!
  • Skeletal animation system - Done!
  • Custom audio engine with HRTF and reverb - Done!
  • Stabilized API

Long Term Roadmap

  • Improved asset pipeline with more model formats supported
  • Kraken World Builder GUI
  • Physics engine integration
  • Inverse Kinematics
  • Cross platform support (Android, Windows, OSX, Linux, PS Vita, Ouya, Consoles)
  • Platform specific optimizations (ARM NEON instructions, OpenGL extensions)
  • Release full game built on Kraken.

Source Access

You can download the source and browse the repository at: https://hg.kearwood.com/Kraken The Mercurial checkout path: https://hg.kearwood.com/Kraken/Kraken The repository is read-only for now, but I would appreciate any contributions, bug fixes, ideas, and feedback! Be advised that there may still be large sweeping changes, especially in its API and scene graph objects. Please email patches to me at kearwood@kearwood.com or post on this web site.

Screenshots

Latest Photos