Going multi-platform, part 4 : First run on a native linux

After another week of intense coding on “Phase 2”, trying to fix the mistake I made with nativeXML, I finally got all of the xml stuff switched over to my own xmlwrapper. As hinted at in my last posting, nativeXML wasn’t working on linux (and I haven’t been unlocked for their support forums, after over a week of wait!) so I decided to write my own wrapper unit that uses fpc’s or delphi’s xml implementation, depending on the compiler target. Once again this was a huge code change (thousands of lines of code) but now all of the game’s unit have been changed to use this xmlwrapper, removing any references to external xml libraries.

So with that obstacle out of sight I decided it was time to install a real linux one of my partitions. The virtual machine was nice for getting the first version compile and run in linux, but developing in a VM is kinda cumbersome, especially as the OpenGL visuals don’t mirror a real system, so instead of trying to fix some awkward visual bugs (that are only visible in the VM) I made room on my external harddisk and installed linux (mint, same as in my VM) on a partition. So now I can also boot into a real linux with complete hardware acceleration and an OpenGL implementation that offers me the same extensions and performance as on my windows system. Installation itself went pretty easy, though I must admit that the linux system oddly isn’t nearly as stable as my good old Vista64. Debugging my game often hangs the complete system, requiring a hard reset, my USB ports aren’t powered down when shutting down linux (which is annoying, cause my lit keyboard is still on power after turning off my PC) and my wireless network drops out every few minuts. But well, just for developing and testing my game it’s fine, and that’s what I needed.

So here are the first screenshot of the game running on a native linux installation. I actually wanted to post a video, but finding a working screen capture application on linux (like fraps or camtasia for windows) was kinda impossible and made me waste half of my sunday. But anyway, here is the first bunch of screenshots showing the running natively on linux directyl from the lazarus IDE :

As you can see from the screenshots, performance is already pretty good (though it’s lacking in several areas, I guess due to compiler differences between fpc and delphi). But there is still a lot work to be done before I can release a linux build into the wild. As already said the soundsystem is currently disabled (because of the FMOD package version I need not available anymore), fullscreen mode along with getting resolution list is also missing, and timing is currently done via GetTickCount, which isn’t nearly as accurate as QueryPerformanceCounter for windows. And there seems to be a small encoding problem, wrongly displaying special chars like Umlauts (‘ü’,’ ä’, ‘ö’).

But yes, it’s fully playable and with only a bit more work I’ll finally have a working linux version of Projekt “W” - “Phase 2”!