Week 45/2012: FluidSynth on Linux
Last week I was planning to start work on fixing the E1M7 stuck column bug, but ended up doing lots of small tasks.
Perhaps the biggest single item was a configuration change in the FluidSynth audio plugin. On Linux, the FluidSynth plugin is now by default linked against the libfluidsynth library installed on the system instead of relying on a custom, embedded FluidSynth build. The advantage is that on Linux the FluidSynth plugin can now be used with any SFX plugin (say, SDL_mixer) because the FluidSynth plugin is taking care of the music output on its own. There are a few finishing touches missing, like runtime volume control, but the hard work has now been done.
I added a new UNIX-specific configuration file for selecting the FluidSynth output driver. It defaults to "pulseaudio". You can find more details in the wiki.
The rest of my time was spent on small refactoring tasks and fixes. I added a specialized libdeng2 string class for handling native file paths, fixed a script engine error related to rerunning the /config/deng.de configuration script, fixed the qmake project file for compiling the libdeng2 test suite, and did various Unix-specific post-refactoring fixes.
This week I plan to get started on my new "vanilla-blockmap" branch. As has been discussed in the E1M7 stuck column bug report, we plan to fix this by relying on the original blockmap data for collision testing, as that should guarantee behavior identical to the original game.
Perhaps the biggest single item was a configuration change in the FluidSynth audio plugin. On Linux, the FluidSynth plugin is now by default linked against the libfluidsynth library installed on the system instead of relying on a custom, embedded FluidSynth build. The advantage is that on Linux the FluidSynth plugin can now be used with any SFX plugin (say, SDL_mixer) because the FluidSynth plugin is taking care of the music output on its own. There are a few finishing touches missing, like runtime volume control, but the hard work has now been done.
I added a new UNIX-specific configuration file for selecting the FluidSynth output driver. It defaults to "pulseaudio". You can find more details in the wiki.
The rest of my time was spent on small refactoring tasks and fixes. I added a specialized libdeng2 string class for handling native file paths, fixed a script engine error related to rerunning the /config/deng.de configuration script, fixed the qmake project file for compiling the libdeng2 test suite, and did various Unix-specific post-refactoring fixes.
This week I plan to get started on my new "vanilla-blockmap" branch. As has been discussed in the E1M7 stuck column bug report, we plan to fix this by relying on the original blockmap data for collision testing, as that should guarantee behavior identical to the original game.