Jump to content

ORX

From Wikipedia, the free encyclopedia
ORX
Developer(s)orx-project.org
Stable release
1.14[1] / June 12, 2023;13 months ago(2023-06-12)
Repositorygithub.com/orx/orx
Written inC,C++
PlatformCross-platform
TypeGame engine
Licensezlib license
Websiteorx-project.org

Orxis anopen-source,portable,lightweight,[clarification needed]plug-in-based, data-driven and easy to use 2D-orientedgame enginewritten inC.

It runs onWindows(MinGWandVisual Studioversions),Linux,MacOS,iOSandAndroid.

General information

[edit]

Orx provides a complete game creation framework including a 3Dscene graph,hardware accelerated 2D rendering, animation, input, sound, physics and much more.

Its main goals are to allow fast game prototyping and creation.[2]

Orx is published underZliblicense.


History:

ORX's root go back to July 2002, reusing some code wrote over the past previous years byRomain Killian.He wanted to try a few new approaches (like an animation graph that you can now see in many big engines but ORX is one of the first that proposed it in a game engine in late 2003). Then he picked up the pace again in 2007, still trying making things differently (that's when the config system was designed).

In2009,ORX version1.0rc0 was released. This version of ORX added support for Mac OS X (x86) as well as the support for Win32 and Linux (x86). Generic input system like keyboard, mouse and joystick input and fragment shader support were introduced.

ORX version 1.2 was released in 2010. It came with bugs fixes and optimizations. The major update was the support foriOSandUnicode.

ORX version 1.3rc0 was introduced in 2011. It came out with a bunch of new features like joint support, variable width fonts,OpenGL 2.0and others. Previous issues and bugs were also resolved. This was the first time when android support was also added to the engine.

ORX version 1.4cr0 was introduced in 2012. Some new features were added to ORX in this update like Interactive console, commands, textured mesh rendering, geometry rendering and previously known issues were fixed.

ORX version 1.11 has been released.in May 2020 with Support changes forMinGW-w64,including new support for 64bit, OSX/Retinaand Windows high DPI display, Control over polled physical peripherals, Text animations and more.

ORX version 1.12 has been released in May 2021, with some Major speed & scalability improvements: from 65k to 16M concurrent objects in memory, a complete rewrite of the orxBANK module, Support for joysticks onAndroid-Native,a simpler Android build pipeline, Nuklear support for new projects and more.

ORX version 1.13 has been released in March 2022, with 70+ updates or new features, including a new SoundSystem plugin based onMiniAudio(OGG,WAV&MP3files), Support for: config-driven filters for both sounds and buses, multiple sound listeners, sound panning, sound spatialization, Support for theQOI image format,Nativearm64support forMacOS 11/XCode 12.x, etc...

ORX version 1.14 has been released in June 2023, the list change of this version is availablehere.

The complete list of changes logged since version 1.0 can be foundhere.

Features

[edit]

Despite being written inC,Orx has anobject orienteddesign with apluginarchitecture. This allows its kernel to be cross-platform and delegates hardware- and OS-dependent tasks to plugins. Most of these plugins are based on otheropen-sourcelibraries, such asGLFW,SDLandBox2D(LiquidFun fork).

Build files are provided forGCCmakefiles,Visual Studio(2017, 2019 & 2022),Codelite,Code::BlocksandXcode.

Orx contains most of the commongame enginefeatures
  • 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
  • 3Dscene graphused for object positioning, allowing grouped translations, rotations and scales
  • sound and music with volume, pitch and loop control, spatialization, hierarchical buses, filters, recording, etc.
  • 2D physics engine (LiquidFun- fork ofBox2D)
  • collision detectionand 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[3]
  • 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[4]
  • 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

[edit]

References

[edit]
  1. ^"Download page - GitHub".orx-project.org.Retrieved12 June2023.
  2. ^"How to Learn Orx".Nov 27, 2013.
  3. ^"ORX News".
  4. ^"A custom ZIP archive support".

[1][2][3][4]

[edit]