You are here

OctaForge 0.2.0 Beta 1

Primary tabs

4 posts / 0 new
Last post
OctaForge 0.2.0 Beta 1

After a slight delay of several days, OF 0.2.0 Beta 1 was released.

This release is the result of a year and half of accumulated changes. That means there are lots of new things. This release is however not "production ready" - it's more like a taste of what you can expect later by now. I'm however switching to biweekly scheme again, so a new release will be here in roughly two weeks, addressing many of the things that are unfinished at the moment.

Let's get to the changes.

Win64 support

OF now supports Windows 64 bit builds. That means x86_64 is covered on all OSes that OF supports - that is, Windows, Linux, Mac, FreeBSD.


There was a migration from Sauerbraten base to Tesseract base. Tesseract is a new engine based on Cube 2 created by Lee "eihrul" Salzman. It utilizes a dynamic, deferred renderer, which means all the lights you create and manipulate are dynamic, including their shadows. That opens up new possibilities. It also supports many other nice features, such as screen space ambient occlusion, global illumination for sunlight, separate directional and omnidirectional shadowmaps, proper shadowed spotlights, HDR rendering with tonemapping and bloom, screen-space reflections for water, screen-space refractions for water, glass and alpha cubes or many antialiasing methods including SMAA (+ spatial and temporal antialiasing), FXAA, deferred MSAA/CSAA. Tesseract runs on both legacy (2.1+) and core (3.0+) contexts and doesn't use any deprecated APIs.

New Lua core library and Lua glue

The library of Lua scripts was rewritten entirely from scratch. The new API is designed to be as comfortable as possible while retaining performance. For now only the core is rewritten and the extension library is deprecated and scheduled for replacing. The new library makes heavy use of closures rather than tables, because LuaJIT can inline them - that leads to great performance and high degree of encapsulation. Where object oriented design was selected, it's prototype based, which gives you a large amount of flexibility. Every module of the new library was written with performance in mind.

The core lib is rather comprehensive and makes sure you can build on it further with ease. It includes things like a complete entity system with state variables for properties, pre-defined core entities, a signal/slot system, an action system, timers, Lua utilities (including math utils such as vectors, string utils and functional table utils).

Note that the new library is not yet completely stable, but it mostly is. It'll still undergo some changes and there are about 3 small parts still scheduled for replacement. The extension lib will undergo replacement as well.

Besides Lua-side changes, there were also changes in C++. The new glue code is simple, maps well to Lua C API and allows you to define new API functions anywhere in the code.


The new core library also features a brand new OF widget set written directly in Lua. The new set is extensible, allowing you to write new widgets directly in Lua and also manage HUD, which the old GUI couldn't. The version in the release is more like a preview. It's complete, but it doesn't have high level widget variants and lacks a visual theme. There are also very few pre-defined menus. The next release in two weeks will bring great improvements in this regard. Generally, the new GUI is modular and prototype based. It's partially state based in that sense widgets make a tree and thus some kind of state but only exist while a window is shown.


OF moved completely to LuaJIT, which means fast scripts as well as new modules such as bitop and FFI. Thanks to this performance intensive parts can be now written in Lua. The first such part is the GUI mentioned above, which wouldn't run well without the JIT. It also brings other advantages such as portable bytecode. Note that LuaJIT is the sole Lua implementation supported at this point.

Build system changes

The build system now autodetects things like architecture depending on what the compiler reports. That allows for easy crossbuilds.

SDL 2.0

We're now using SDL 2.0 exclusively. That means besides other things better input handling and native clipboard support (in things like fields/texteditors).

Removal of the run scripts

OF can now be run from both the bin_* directories and the main directory simply by launching the binary.

Return of Cubescript

Cubescript made a glorious return, now being used for configuration files of all kinds, such as models, texture packages or shaders. That means direct portability from Sauerbraten/Tesseract.

Removal of old map format support

Only the latest map format is supported now. That removed a lot of old cruft, but makes many existing maps incompatible. Please convert them through Sauerbraten first and then you can load them.

OFTL is gone

This means OF no longer requires C++11 and can be compiled even with very old compilers.

And many others...

There were many bugfixes of course, as well as lots of little features not worth naming. This time there are no binary builds available except for Windows. You can easily build on your own though. Stay tuned for the next release in two weeks.

Some screenshots:


Edited by: q66 on 05/10/2013 - 16:00.

the evil dev guy

Awesome! :)

Awesome! :)

I'll check for the bins over the coming week.

[ brain might be defunct at time of writing ]

so ...

how do I start a map with it? :D

[ brain might be defunct at time of writing ]

"/map empty" in console

"/map empty" in console

the evil dev guy