What is OpenGW?

OpenGW (Open Game World) is a data-driven, engine-agnostic, cross-platform game world simulation engine with a buzzword: Entity Component System.

Consider it a meta game engine that can be used with any render engine. For supported engines (currently: Sprite Kit, cocos2d-iphone) we provide the Views and View Controllers to design games with a Model-View-Controller (MVC) architecture.

OpenGW also includes a TMX object model, fast orthogonal tilemap renderer and a platformer template game.

Read OpenGW Architecture Overview for more details.

Benefits of OpenGW

What is a "game world simulation engine"?

Its concept is similar to a physics engine but at a higher level and expressly designed to be extended with your custom code. A game world simulation engine runs a game's entire logic code (and hosts its data). OpenGW can even embed a physics engine because they too are engine-agnostic.

A game world is any kind of playfield where the game is played. The world can represent a large RTS/RPG map or a small puzzle grid. Every game has a world, an area where "stuff happens". Typically most game worlds are 2D in nature, even if the game is presented in 3D (ie Diablo is a 3D game on a 2D map).

In each world there are game objects, called entities. They can be dumb, merely representing a moving sprite. They can be complex, like a Non-Player Character (NPC) with a day-night cycle, combat AI, pathfinding his way through the world, interacting with the player through dialog and merchant screens.

Aspects represent an entity's features and define what an entity can do and how it reacts to outside influences. Aspects store and process information and generate events. They're plugin components for entities. Properly combined they make the entity move around the world, jump, shoot, die, respawn. Each an individual aspect, and properly engineered reusable for other entities as well - enemies have a right to jump, shoot, die and respawn too!

How does OpenGW work?

OpenGW is engineered to push its changes directly to a view delegate, so integration with any view is very easy, with or without unit conversions.

OpenGW allows you to categorize entities and alter entity behavior via plugin code (called aspects). Aspects run code like moving entities based on velocity (kinematics), determining collisions, picking up items and putting them in the inventory, and so on. Most games will want to write custom aspects and provide custom map data to run their custom game logic - but you can rely on a library of common aspects already implemented, like kinematics with collision detection and resolve, concurrent updates on multicore CPUs, etc.

OpenGW provides you with a framework to express any type of rules within your world, only concerning itself with data and logic during the simulation. After each simulation step the view is updated to reflect the internal changes. And whether the view uses Sprite Kit, UIKit, cocos2d or your custom OpenGL renderer doesn't matter.

OpenGW Requirements & Platforms

OpenGW is initially developed in Objective-C (with ARC) and will later be ported to C++ and/or C#.

Naturally OpenGW supports Objective-C frameworks: Cocoa, Sprite Kit and Kobold Kit, cocos2d-iphone and Kobold2D, KoboldTouch, Sparrow, Unity Pro and others. The C++ version would work with just about any C++ game engine and those that can be extended through C++ code, while the C# version would be compatible with many of the C# development frameworks, including XNA and Unity. Which port comes first depends on demand.

Who is this for?

OpenGW aims at professional and indie developers with an understanding for and appreciation of clean, modular, reusable code. Developers who understand that writing code against a particular game engine will more often than not become a hindrance - either through the engine's lack of support or extensibility, or through the need to write either cross-platform or platform-specific code, or something else entirely (shift in personal interest, a client's changing requirements, emerging or failing platforms, desire to unit-test game code, etc).

OpenGW also aims at (rendering) engine developers who would like to "complete" their engine by including OpenGW in their distribution. Likewise we want OpenGW to be used in game courses and tutorials where the essence of game logic programming is taught to students. OpenGW enables tutors to cleanly separate engine-specific materials and ultimately make the same course easily adaptable to or even cover multiple rendering/game engines.

Want to know more? Contact us: opengw (at) koboldkit.com

Preliminary API Reference

Have a first look here.

Development Status

Last Update: March, 2014

December 2013 to March 2014: Revamped platformer game. Sprite Frame Animation system with variations. Multipeer connection. Various bugfixes. Updates have been slow due to contract work.

November 2013: Port to cocos2d-iphone mostly complete. Template projects for Kobold Kit and cocos2d-iphone exist. Building for Android via Apportable is possible. Platformer got additional features like wall slide and wall jumps.

October 2013: Platformer core logic is done, including slopes and moving platforms. In addition view-controller components have been added to OpenGW, to complete the MVC architecture. The views (sprite, label, emitter, etc) will be identical for all 2D renderers, mapping functionality where needed to the selected rendering engine's native views. The TMX loader and renderer have also been ported to OpenGW.

September 2013: Core concepts are in. World, Simulation, Maps, Categories, Entities, Aspects, Notifier, Jobs & Tasks, Keyed Mutable Values.
Platformer core logic is in development: collision detection and resolve, item pickup and inventory.

OpenGW will be available (and available early) to KoboldTouch subscribers at their current rate. With the official release of OpenGW, KoboldTouch subscription plans will be replaced by the more expensive OpenGW pricing plans (which includes access to KoboldTouch). So if you want to get OpenGW early and cheap, subscribe to KoboldTouch now.

ETA Dec 2013 for active KoboldTouch subscribers.

Want to learn more?

Subscribe to hear from us when major things happen with or around OpenGW.
You can also contact us for more information at: opengw (at) koboldkit.com