Orx is an open source, portable, lightweight, plugin-based, data-driven and easy to use 2D-oriented game engine written in C.
It currently runs on Windows (MinGW and Visual Studio versions), Linux (X86 & X86-64), Mac OS X (10.5-10.12, PowerPC, X86 & X86-64), iPhone/iPod Touch/iPad and Android.
Orx provides a complete game creation framework including a 3D scene graph, hardware accelerated 2D rendering, animation, input, sound, physics and much more.
Its main goals are to allow fast game prototyping and creation.
Orx is published under Zlib license.
Despite being written in C, Orx has an object oriented design with a plugin architecture.
This allows its kernel to be cross-platform and delegates hardware- and OS-dependent tasks to plugins.
Most of these plugins are based on other open source libraries, such as GLFW, SDL and Box2D.
Build files are provided for GCC makefiles, Visual Studio (2013 & 2015), Codelite, Code::Blocks and Xcode.
Orx currently contains most of game engine "common" featuresautomated sprite rendering using 3D hardware acceleration allowing: translations, anisotropic scale, rotation, transparency (alpha blending), coloring (multiply, add and subtract blends), tiling and mirroringadvanced resource managementMultiple Render Targets (MRT) and advance compositing supportgeometric display primitives and textured mesh renderingcamera/viewport system allowing multiple views on one screen with camera translations, zooms and rotations3D scene graph used for object positioning, allowing grouped translations, rotations and scalessound and music with volume, pitch and loop controlcollision detection and rigid body physics and jointsanimation systemevent managementcustom fragment (pixel) shader supportunicode supportcustom bitmap font renderingreal time CPU profilerinteractive "debug" consoleIt also provides more unusual featuresobject creation is data driven: managing resources requires very little code, everything is controlled through configuration filesduring dev phases, resources can be automatically hotloaded at runtime upon modification on disk, shortening drastically iteration timesa clock system: this allows the user to keep time consistency everywhere, giving him the ability of doing local or global time stretchingan animation chaining graph: animation transitions are defined in a graph, this allows the code to request only the final target animation; all transitions will be automated depending on the starting animationa custom animation event system: allows easy synchronization with parts of animationsa visual FX system: config-based combination of curves of sine, sawtooth and linear shapes that can be plugged on object properties: color, alpha, position, translation or rotationa powerful resource system: allows to easily abstract resource access and work with separated development files as well as packed ones for release builds, or even use different sets of resources on different platforms, without having to change a line of code an automated differential scrolling: depth scaling and differential scrolling is controlled through config files, allowing differential parallax scrolling on any number of planesa powerful configuration system: featuring inheritance, direct random control, encryption/decryption, filtered save and history reload. This allows the user to tweak almost everything without having to change a single line of his codea spawning system: this allows the user to easily create weapon bullets or, combined with the visual FX system, elaborate visual graphic effectsan easy UI object positioning system: helps supporting different aspect ratio and provides easy picking/selection frameworka generic input system: allows to use any kind of controllers (mouse, joystick, keyboard, touch, accelerometer, ...) through an abstract layer. The user asks for input status using plain names, bindings being done in config files or on the fly for user input customization, for examplesimple scripting via a combination of timelines and commandsmulti-threading support with asynchronous resources loading and hotloading supportThe current list of WIP features that will be added in the future3D rendering supportnetwork supportA brief history of Orx:
Around 2002a community of French gamers decides to create a point-and-click adventure game named "La guerre des pâquerettes" (Daisy War). This project will be Orx's cradle.
End 2005Sourceforge project registered under the arcallians collective.
July 23, 2008orx-project.org becomes the new project maintainer.
September 1, 2008Orx v0.9.0b, fully working on windows and linux, is officially released.
May 17, 2009Orx v1.0rc0, the first release candidate for the v1.0 is released.
September 4, 2009Orx v1.0 final is released.
January 26, 2010Orx v1.1 is released.
April 11, 2010Orx for iPhone v1.2 beta is released.
July 19, 2010Orx v1.2 is released.
May 15, 2011Orx v1.3rc0 is released.
December 22, 2012Orx v1.4rc0 is released.
January 26, 2013Orx v1.4 is released.
October 14, 2013Orx v1.5rc0 is released.
December 31, 2013Orx v1.5 is released.
August 10, 2014Orx v1.6rc0 is released.
January 14, 2015Orx v1.6 is released.
January 31, 2016Orx v1.7 is released.
January 11, 2017Orx v1.8rc0 is released.
January 28, 2017Orx v1.8 is released.