OPifex Engine - Part 1

The Why

The development of the OPifex Engine has been underway for about a year and a half. We've been very busy making improvements along the way, but the goal has stayed the same: to provide a fast, portable, low level and data-oriented platform for developing all of the future OPifex games.

Target Platforms

We're initially aiming to hit all of the major platforms except iOS. We expect that implementing the engine for iOS will be quite an undertaking, so we'll be holding off until our first game using the engine is completed.

  • Windows x86/x64
  • Linux x86/x64
  • OSX x86/x64
  • Android (Ouya Console specifically)

Layers upon Layers

The engine is being developed in C but compiled with a C++ toolchain. We stay as far away from classes as we can (unless an external library uses them). This helps keep a data-oriented design within the engine but still gives us the flexibility to interact with components written in C++ (like the Oculus Rift SDK).

To keep the code organized and modular, we decided to use layers. Each layer is a library and only depends on the layers below it.

Example: The Data layer depends on the Core layer but will never depend on the Math layer above it.

The Layers

  • Core
  • Data
  • Math
  • Performance
  • Human
  • Communcation
  • Scripting
  • Pipeline
  • Application
  • Testing

Technologies

  • C/C++
  • OpenGL 2.0 and ES 2.0
  • Android Native Development Kit (NDK)
  • OpenAL
  • CMake
  • PhysX
  • V8

Where are we at?

We have the engine running on all intended platforms. We also have a playable game (Oscar Papa) built upon it. That being said, it's not a complete game engine yet. We're missing a few key systems, like networking and physics simulation. We have a few bugs yet to be worked out with OS X systems, and need more robust error checking and logging.

It's well on it's way though.

Covering the Layers

As we continue with the development of the engine this year we'll be discussing each layer, the difficulties that we struggled with in setting everything up, and some of the design choices we made.

Stay tuned!