Three Month Update

The last three months have been full of holidays, travel, Fallout 4, and the Witness. And a bunch of coding. I may elaborate more on the details of whats been going on with the code lately, but for now here’s a quick update.

Linux

Despite some annoyances getting linux setup and a proper development environment going, the Linux build is pretty feature complete, and fully playable. I’ve been developing under Ubuntu 14.04. Overall my linux experience has been really good – compared with the last time I seriously developed on linux, circa 1999. If nothing else the linux build shares a lot of code with the OSX version – at least those things that are POSIX compliant, and OpenGL.

I’ve tried to keep dependancies down to a minimum. If your system has X11, ALSA for audio, and an OpenGL 3.2 driver, it should be good. I still have to get Steam integration compiled in, as well as test it on SteamOS. Plus figure out how to package it up for install.

OSX

Banished is fully playable on Mac, although I have a little finishing up to do. Things like fullscreen/windowed toggle, changing some video options, and supporting custom cursors. It also needs the Steam integration, but thats just a different compile with some other options.

While working on Mac has been okay, I’m not entirely thrilled with the way I have the code setup. It needs some refactoring to better separate the Objective-C stuff and keep some of my namespaces from being polluted by including things they shouldn’t.

I had some additional OpenGL performance annoyances, with shaders generating really bad code that took a while to track down. Maybe one day I’ll use Metal and it will be less facepalmy.

OpenGL

The OpenGL renderer is pretty fast now. I had some crazy bugs and mistakes that were only revealed by getting it running on three different platforms. It’s nearly up to the performance of the DX11 version.

Strangely the Windows version still has some things wrong with it in certain edge cases. I guess that’s easy to have happen since Windows is using a slightly modified version of the code due to being able to switch renderers at runtime. At some point I’ll figure out the diffs between the two sets of code.

Audio

A lot of my time was spent trying to figure out how to get identical sound output on all platforms. I looked at a lot of sound libraries, didn’t like something about all of them, so ended up writing my own.

Audio in the engine is now all ogg/vorbis, instead of the Windows specific WMA/XMA. Using some nice public domain software, the ogg is decoded as needed in a background thread, and I wrote my own mixer to blend the sounds. So now per platform, all I need to do is output 5 milliseconds of PCM sound data at a time when it’s needed, and everything sounds the same.

Yes, I know many people will think this is crazy. But it was a great learning experience for audio related topics. It’s also cool in that the per-platform audio code is now about 100 lines per platform, and everything else is common code. As my audio needs grow, I can just extend the mixer. Sweet.

Version 1.05

I still need to release 1.0.5. There’s a few bugs that got reported I need to fix first. I guess I’ve just been distracted by porting – plus working on the two code bases at once is slightly annoying. 1.0.6 will be the first version with OSX/Linux support, so I’ll be glad when I’m only working in a single code base instead of two.

Edit: Looks like the comment section is broken… looking into it.

15 Comments

    Justin
    April 7, 2016 7:28 pm

    Waiting patiently for the Mac version. :-)

    Scott
    April 8, 2016 5:38 am

    Waiting on tenterhooks for the Mac version.

    Henry Shellard
    April 8, 2016 1:02 pm

    Waiting on a release date for the OS X version with fortitude for 2 years and 2 months. Keep up the solid work. :)

    Denis
    April 8, 2016 2:53 pm

    Waiting patiently for the Mac version.

    Impatient
    April 8, 2016 5:20 pm

    Could we get an approximate release date for the Mac version?

    Lin
    April 9, 2016 5:38 am

    we are all looking forward to the edition which can be on-line or play with our friends.
    —from china

    Nmid
    April 9, 2016 11:09 am

    Thanks for the update.

    Not a coder, but something struck me with regards making your own audio mixer.
    Does this mean more load on the machine to play ogg vis-a-vis just playing the sound files?
    Or I guess it doesn’t really matter and it’s the same machine load using either OGG or wma/mac compatible audio files (just increases the game install file and recording duplicate audio files)

    Coincidentally, I visited the forums yesterday and it’s been completely taken over by spam bots. Using the steam discussion threads.

    Btw, yea … Fallout is a nice time sink, lol. Going to check out the witness.
    Have you checked out division / the new game villagers?
    Played 5 mins of Villagers, felt so uncomfortable that I installed Banished again after 1.5 years of a gap 😀
    Haven’t played division, but been hearing rave reviews.

    Btw, I hope your inbox isn’t hit by a lot of spam.
    I got both your mail ids by a simple copy paste.. which means bots could grab that too.
    I’ve seen a lot of companies post their mail ids as a jpg which means bots can’t read the mail address.

    Regards,
    Nmid

    Cundles
    April 9, 2016 6:21 pm

    Can’t wait for the Mac version! I love this game and now that I am on the Mac platform I have eagerly waited to get to play again.

    cRaZy
    April 11, 2016 7:18 am

    Hey there! Any news about the LINUX version? :)

    Eszter Czotter
    April 15, 2016 3:50 am

    Waiting patiently for the Linux version :)

    Fred
    April 17, 2016 6:13 am

    Oh my god, it really happens!
    I doubted you really have the time and effort to bring this game to Linux.

    I already bought and played it in Windows, but I’m looking forward to play it again in my most running OS.
    Good job!

    Rusty
    April 17, 2016 5:47 pm

    Though perhaps a little smarmy, but “Patiently waiting” for official 1.0.5 non-beta release so I can play the new Colonial Charter mod, while you try to give these Linux/mac folks something to play. Hoping you can go ahead and work out those bugs you mentioned for the regular users and release the 1.0.05 please.

    Rusty
    April 19, 2016 6:25 am

    well, went ahead and tried it anyway. installed the beta 1.5 #2, no mods, and nothing but the constant access error in dll-64 that seems to be complained about everywhere. nothing fixes it. perhaps 1.4 is the last one that will ever work right. seriously disappointed.

    Gazz
    April 20, 2016 3:32 am

    hi, when you will release final version? i know you do this alone, but game is after few hours verry boring 😉
    pls add more stuffs and things into game.. you can be inspirated in mod comminity..
    but i want play in czech language and mods arent supported in this language..
    i thing, this is the best medieval building and economic strategy but this game need more everything 😉

    Gazz
    April 20, 2016 3:32 am

    hi, when you will release final version? i know you do this alone, but game is after few hours verry boring 😉
    pls add more stuffs and things into game.. you can be inspirated in mod comminity..
    but i want play in czech language and mods arent supported in this language..
    i thing, this is the best medieval building and economic strategy but this game need more everything 😉 .