ORX
Orx is an open-source, portable, lightweight, plug-in-based, data-driven and easy to use 2D-oriented game engine written in C.

It runs on Windows (MinGW and Visual Studio versions), Linux, MacOS, iOS and Android.

General information
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.

Features
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 (2015, 2017 & 2019), Codelite, Code::Blocks and Xcode.

Orx contains most of the common game engine features
 automated sprite rendering using 3D hardware acceleration allowing: translations, anisotropic scale, rotation, transparency (alpha blending), coloring (multiply, add and subtract blends), tiling and mirroring
 advanced resource management
 Multiple Render Targets (MRT) and advance compositing support
 geometric display primitives and textured mesh rendering
 camera/viewport system allowing multiple views on one screen with camera translations, zooms and rotations
 3D scene graph used for object positioning, allowing grouped translations, rotations and scales
 sound and music with volume, pitch and loop control
 collision detection and rigid body physics and joints
 animation system
 event management
 custom fragment (pixel) shader support
 unicode support
 custom bitmap font rendering
 real time CPU profiler
 interactive "debug" console
 multi-monitor support
 clipboard support

It also provides more unusual features
 object creation is data driven: managing resources requires very little code, everything is controlled through configuration files
 during dev phases, resources can be automatically hotloaded at runtime upon modification on disk, shortening drastically iteration times
 a clock system: this allows the user to keep time consistency everywhere, giving him the ability of doing local or global time stretching
 an 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 animation
 a custom animation event system: allows easy synchronization with parts of animations
 a 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 rotation
 a powerful resource system: allows users 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 planes
 a 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 code
 a spawning system: this allows the user to easily create weapon bullets or, combined with the visual FX system, elaborate visual graphic effects
 an easy UI object positioning system: helps supporting different aspect ratio and provides easy picking/selection framework
 a generic input system: allows users 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 example
 simple scripting via a combination of timelines and commands
 multi-threading support with asynchronous resources loading and hotloading support

The current list of WIP features that will be added in the future
 3D rendering support
 network support

See also

 Game engine
 List of game engines
 SFML
 SDL
 Box2D
 GP2X
 Codelite

References

External links
 Orx Project Site
 Git repository on GitHub.com
 Mercurial repository on SourceForge.net
 Orx wiki

Free game engines
Free software programmed in C
Software using the zlib license