Porting Arx Fatalis: Difference between revisions

From Arx Libertatis Wiki
Jump to navigation Jump to search
No edit summary
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
This article tracks the status of the Arx Fatalis cross platform port. It also lists potential libraries to replace windows-specific code.
This article tracks the status of the Arx Fatalis cross platform port. It also lists potential libraries to replace windows-specific code.


== Status ==
== Linux / FreeBSD / Mac OS X Status ==


* '''audio''': <font color="green">done</font>: abstracted audio backend, new OpenAL backend
* '''audio''': <font color="green">done</font>: abstracted audio backend, new OpenAL backend
* '''io''': <font color="green">done</font>: using boost::filesystem (case-sensitive branch, not yet merged)
* '''io''': <font color="green">done</font>: abstracted with boost::filesystem and POSIX implementations
* '''graphics''': <font color="orange">partially done</font>: abstracted renderer backend, stubbed out OpenGL implementation; texture loading code ported to DevIL
* '''renderer''': <font color="green">done</font>: abstracted renderer backend, new OpenGL implementation, new D3D9 implementation
* '''input''': <font color="orange">partially done</font>: abstracted input backend, needs SDL / X11 implementation
* '''input''': <font color="green">done</font>: abstracted input backend, new SDL backend
* '''windowing''': <font color="red">wip</font>: backend abstraction started
* '''windowing''': <font color="green">done</font>: backend abstracted, new SDL backend
* '''misc''': threads, timing code abstracted, msvc-specific string functions replaced
* '''misc''': threads, timing code abstracted, msvc-specific string functions replaced, image code ported to DevIL, text rendering ported to FreeType
* '''editor''': <font color="red">todo</font> [[Changes from Arx Fatalis#Editor mode|(info)]]


== Library suggestions ==
[[Changes from Arx Fatalis#Removed Features|Some features didn't make it...]]
[http://www.libsdl.org/ SDL] has turned out to be the library of choice for the base init code, probably the input code and the setup for rendering. It can support both an OpenGL and a DirectX rendering context making it suitable for supporting the porting to OpenGL as well as the base D3D7 rendering code.


== Rendering ==
[[Category:Development information]]
While most of the functionalities were kept intact, porting some pieces of code was not making much sense.  A lot of texture operations were done in the original game that would now be performed using shaders.  Here's a list of what was removed and could someday be reintegrated into the game in another form.
 
* Bump mapping: Was generated using the diffuse texture turned into grayscale.  The effect was performed using texture combine.  While using this technique could yield some interesting results, in most cases it produced a blurred effect.  Should be reimplemented as per pixel bump mapping using shaders.
* PNUX texture effect: Color conversion applied to all textures in the game, resulting in funny looking scenes.  It seems like it was a cheat (activated as a spell), so in the end it was not worth porting.  Would be trivial to implement as a post processing effect.
* HALO: Glowing effect around 2d items like runes & inventory items. Halo textures were built by scanning the original texture line by line and adding pixels when a boundary was found (when going from black to colored pixels).
* Texture size option: To reduce the game textures quality... should be reintegrated.  The menu option & internal setting are still there, but have not effect.
* 16 bit texture support: Reduce gfx & main memory usage, but with a cost in image quality. Pretty much useless now...

Latest revision as of 08:25, 30 June 2018

This article tracks the status of the Arx Fatalis cross platform port. It also lists potential libraries to replace windows-specific code.

Linux / FreeBSD / Mac OS X Status

  • audio: done: abstracted audio backend, new OpenAL backend
  • io: done: abstracted with boost::filesystem and POSIX implementations
  • renderer: done: abstracted renderer backend, new OpenGL implementation, new D3D9 implementation
  • input: done: abstracted input backend, new SDL backend
  • windowing: done: backend abstracted, new SDL backend
  • misc: threads, timing code abstracted, msvc-specific string functions replaced, image code ported to DevIL, text rendering ported to FreeType
  • editor: todo (info)

Some features didn't make it...