Orx - Portable Game Engine
Happy New Year and 1.6 release
15 January 2015

Hi all,


Everything is in the title: we wish you an excellent year 2015 and the belated v1.6 was finally released.

More info on the forum.



- iarwain


Last Updated on Thursday, 15 January 2015 04:36
Commands and TimeLine tutorials
10 November 2014

Hi all,


Sausage just added two very useful tutorials about commands and timeline. They can be found here:




Those complements nicely the information already available on the orx-dev group:

- Commands and TimeLines (basic)

- Using immediate commands in config files

- Discussion on future commands/timeline improvements



- iarwain

Last Updated on Monday, 10 November 2014 04:44
Multi-threading/asynchronous resources
10 August 2014

Hi all,

First, as you've noticed, the website never went down and there was no follow up from my host. So I guess so far, so good. ;)


Yesterday, I finally finished the iOS version of asynchronous resources handling (texture/sound) and merged the "thread" branch (which I have been using for over 10 months for my own projects now) into the "default" one.

That means a few things:

- orx now support asynchronous resource accesses.

You'll notice that saving a screenshot or loading textures and sounds won't block the main thread anymore, which used to result in the rendering being paused for a short duration. The immediate side effect is that there might be a slight delay when playing a sound for the first time or a white rectangle being displayed while a texture is getting loaded (though that temporary texture can be redefined at will if you'd rather have, say, a transparent temporary texture). In most cases you won't notice those, especially in release builds. However if that becomes an issue, one can easily pre-load assets with a simple loop and even render a progress bar as the engine execution won't be stopped while loading anymore. Config files are still load/saved asynchronously.

Lastly, if you were handling your own resources manually, you can either have synchronous calls or asynchronous ones by simply passing a callback to the read/write function: no callbacks -> synchronous, callbacks -> asynchronous.


- orx supports multithreading and exposes a unified API to create, pause, delete, enable, ... threads as well as semaphores for synchronization primitives. There's also a memory barrier macro available for those of you that would need it. Only a full blown read/write one has been added for now. There's no unified thread local storage support yet due to the annoying lack of standard around the __thread() keyword.


- profiler markers are correctly handled over multiple threads. And so is the profiler in-game display. By default, page up and page down allows one to display info about other threads.


- orx does have more than one thread running. Resources calls are all done in their own thread, same for sound streaming and lastly a generic purpose worker thread is available for tasks created with orxThread_RunTask(). I should probably add a tutorial on this function at some point as it has some interesting properties regarding sequencing (and helps removing the need for explicit synchronization primitives).


- most important of all: orx's API is *NOT* thread safe, for the most part. So if you were to use the aforementioned orxThread_RunTask(), make sure your tasks are not calling any orx functions. So far the only module that has a thread safe API if the orxThread one itself. orxProfiler is also mostly thread-safe. But that's about it. So please don't do any orxConfig_* calls in an asynchronous task. I'll add thread safety later on when I've settled on a good performance/safety compromise.


In addition to all this, another important news about the "default" branch is that the MinGW32 version now uses gcc 4.8.1: I've retired the good ol' gcc 4.6.2.


I should be releasing orx 1.6 officially shortly, unless any big issue is uncovered. Don't hesitate if you have any questions! :)



- iarwain


Last Updated on Sunday, 10 August 2014 03:20
Website soon going down for undetermined duration...
20 January 2014

Hi all,

I've been warned 2 days ago that my host is going to do a forced migration from Joomla 1.5 (which this website is currently using) to Joomla 2.5 sometimes during next week.

I spent a few hours today in order to try to do a preventive migration myself. In the process I tried different conversion scripts, even trying commercial solution trials (like cms2cms), to different targets: Joomla 2.5, Joomla 3.2, Drupal 7 and WordPress 3.8.

Unfortunately I could only get the static pages and the news articles converted, at best.

What this means is that the new website would be missing it's current theme, logo, screenshot section, private messages, and most important of all, its forum.

I'd rather spent the amount of spare time I can devote to orx to actually write code for it (like finishing the multithreading support and all the cool new features listed in the issue tracker section of the bitbucket page).

It's unlikely I'll be spending much time to patch the site itself after the forced migration. I might even have to take it down it it's really bad and put up a very basic static page with links to all the external resources (doxygen, wiki, orx-dev google group, bitbucket & sourceforge).


That being said, I wouldn't be opposed to having a brand new minimalist site made on a fresh new base, as long as there's some way to consult old forum posts (the amount of knowledge stored in them is very valuable).

If anyone with some web development knowledge would like to help with either the migration process or with starting a new site, please contact me (@orxproject on twitter might be the fastest way).

If you have any suggestions or comments, don't hesitate to share, anything can help!


Thanks all! =)


- iarwain


Last Updated on Monday, 20 January 2014 00:24
Happy new year! (and 1.5 release)
01 January 2014

Happy new year to all of you! =)

I took this opportunity to push orx 1.5 today. Not many new things since 1.5rc0 beside a few small fixes and additions.

That being said, 1.6 is probably coming out early 2014 with quite a major change: multi-threading support and asynchronous tasks & resources.

That means orx will load & save all sound and image resources asynchronously, out of the box, however that behavior will be entirely controllable.

Users will also be able to create their own threads and execute asynchronous tasks. Those are powerful but advanced features and will probably not be recommended for everyone: be careful though as most of orx's API itself isn't thread-safe, such as the config system.

Anyway we'll get other occasions to talk more about this. ;)


- iarwain


Last Updated on Wednesday, 01 January 2014 04:20

Page 10 of 24