The Djinnworks Game Engine is used in all of our games and comes with a lot of accompanying Editors and mainly consist of three parts:
- Portable Runtime and Hardware/Platform abstraction (allowing to execute iOS Objective-C code directly on Android)
- Runtime Engine (Graphics, Sound, Input, Math, 3D, etc.)
1. Portable Runtime and Hardware/Platform abstraction
The Djinnworks Game Engine is designed for iOS devices and written completely in Objective-C. Because of the portable nature of the Game Engine all iOS games can be simply compiled to different targets and platforms like Android and MacOS. Of course Android doesn’t support Objective-C by default, so the Game Engine has full Objective C for android support. This is accomplished by our technology which includes a complete Objective-C Android Runtime, Objective-C Android GCC compiler, Foundation, UIKit subset and various support frameworks right inside the Game Engine. Games written in Objective-C for iPhone can simply be compiled for Android without any porting effort. No need to write C++ or Java for Android, no need to target Android specific subsystems. The complete abstraction (hardware, bindings, Java interface, etc…) are all handled right inside the Game Engine framework. Once a new iPhone games is done, simply switch the build target from iOS to Android right inside Xcode (Game Engine has Xcode targets for Android right built in), click build and you get a final Android APK file right from the Objective-C sources. For instance, porting our Rope’n'Fly 3 – From Dusk Till Dawn iPhone game – written in Objective-C – just took 30 minutes of work to compile and build for Android. You can simply target iOS (e.g. use UIAccelerometer, UITouch, UIAlterViews, NSBundle, etc.), the Game Engine has Objective-C implementations for all this functionality built-in which get in effect when you build for Android.
2. Runtime Engine
The Djinnworks Game Engine has been designed with “fast to use” in mind. For example, creating a new side scroller game, where your animated character (rigid body physics) runs on a texture filled spline based landscape, with a complete Menu system (main menu, options, highscores, level select, pause menu, game over, etc…) can be done with just a few lines of code. Basically, whenever we have to write code twice this code is generalized and adopted into the Game Engine instead of making per game code only.
The runtime is linked with every Djinnworks game and interprets data provided from the Editors. The runtime is very powerful and features a lot of thing
- Resolution independence : Automatic scaling and positioning on non-retina and retina devices as well as iPad
- Multiplatform : Djinnworks Game Engine runs on iOS, MacOS and Android
- Menu handling : complete abstraction of options, serialization, leader boards, menu workflow, layout, etc… This means no need to write code for a new game like set/load options, manage highscore, menu screens workflow, pause and game over screens, etc. (used in Rope’n'Fly, LineBirds, etc…)
- Animated skeleton characters : Instance new completely rigged and animation characters with a single line of code (used in Wingsuit Stickman)
- Motion capturing: Interpretes motion capture data from the Editor and always full mixing with predefined animations and physic controlled characters
- Riged Physics Characters : The Game Engine has all base classes for common rigid physics character right built in (used in Rope’n'Fly)
- 3D : Support for mixed OpenGL 2D/3D games including full 3D model import support (used in Rope’n'Fly)
- Landscape support : Creates and handles huge landscapes build with the Landscape Editor in a few lines of code (Spline based, Pattern filled spline physic objects, optimized for performance, auto create/remove depending on screen position, etc.) (used in Wingsuit Stickman)
- More games menu and News Feed service right built in : Show news and links to other games right in the game, managed from a web server (used in Rope’n'Fly, Line Birds)
- Physics : Complete physics engine abstraction (used in almost all of djinnworks games)
- Verlet rope : Complete verlet rope simulation
- In app purchase : Complete abstraction of in-app-purchase support. Add in-app-purchase support (including purchase screens, product details, etc…) with a single line of code (used in various games)
- Helpers and utilities : math helpers, camera, audio, widgets, internet , scrolling managers, debug renderers, etc…
- Consists of more than 50 classes with “fast to use” in mind
- Multiplayer: Make a game Game Center multiplayer compatible with no more than 50 lines of code, automatic transmission of ghost data, animated character positions, etc…
- Ghost: Support to automatically record ghost data for Animated Characters and Sprites
- … many, many more features
All Djinnworks Game Engine options are configured by a single per app header file.
The Djinnworks Game Engine is constantly improved from game to game. Every new feature a new game requires will be added to the Game Engine, thus the Djinnworks Game Engine supported feature list grows with every game.
- Skeletal and ridig character Animation Editor : Supports multiple animations, keyframe interpolation and animation morphing for always fluid animation. Supports seamless transition from skeletal animation to physic simulation and back to skeletal animation using animation morphing. Editing supports forward and inverse kinematic.
Supports full Motion Capturing using Microsoft Kinect to quickly design complex animations
- Landscape Editor : Draw and design various spline based landscapes, optionally physic backed complete integrated with the Runtime (e.g. instance objects of custom per game classed defined in the editor)
- Physic Map Editor : Draw static physic maps
- Menu Editor : Design complete menus, Complete runtime menu handling is encapsulated in the Djinnworks Game Engine
- Track Editor : Design Stick Stunt Biker like tracks
- many more…