We are happy and proud to announce that the Cafu engine now compiles, links and works as a native 64-bit application on 64-bit systems!
Just about a week ago we installed a fresh 64-bit Ubuntu 9.04
on one of our AMD64 systems that was only running 32-bit Windows Vista before.
Up to this point, we had done all our development work on 32-bit systems only, or more precisely, under the ILP32
data model under Windows and Linux. ILP32
means that the basic C/C++ data types like int
, long int
and pointer (e.g. void*
) are all 32-bits wide.
The Microsoft Visual C++ compiler chooses to change the data model to LLP64
on 64-bit Windows systems, where only pointers get 64 bits wide but the int
and long int
types remain at 32-bits width.
Most other compilers however use the LP64
model, including the GCC compilers under Linux. In LP64
, both long int
and pointers are 64 bits wide, which seems like a more challenging, but also a more natural and logical model than LLP64
Thanks to the very portable and clean code of the Cafu engine, our port to the LP64
model on our x86_64 Linux system was effectively straightforward and simple.
However, things got somewhat thrilling when it came to reading and writing our binary file formats: world files, texture images, model files, etc. - we found that we too had made some (in hindsight "problematic") assumptions about the sizes of data types when they are written to or read from a file. Making all required changes turned out to be very easy though, and we're very happy that Cafu and all it's programs (map compilers, world editor, ...) work wonderfully now on true 64-bit systems!
The next release of the Cafu engine will be available as both 32- and 64-bit downloads.
Apropos the next release: We've been working on many other great enhancements in the meanwhile, and will announce them in separate news posts soon!