Don't want to see articles from a certain category? When logged in, go to your User Settings and adjust your feed in the Content Preferences section where you can block tags!
We do often include affiliate links to earn us some pennies. See more here.
I had the pleasure of speaking to two different teams at game developer and publisher Beamdog, notable for Baldur’s Gate: Enhanced Edition and the soon to be released Planescape: Torment: Enhanced Edition.

First of all, I had a few questions answered by Alexei Pepers, Lead Programmer on the Beamdog Client.

Q: What was it like to bring an application like the Beamdog Client over to Linux?

Alexei Pepers: Supporting Linux was part of the plan for the new Beamdog Client from the beginning, which made things much easier as we could evaluate technologies as we were picking them to make sure Linux was supported, instead of trying to add it after the fact. The Electron framework which the Beamdog Client is built in is meant to be cross-platform and so it was surprisingly easy to keep it working on all platforms without too much effort. The only difficulties we did had stemmed from some dependency wrangling, and trying to ensure that the Client followed reasonable Linux conventions in terms of where to store data or install games. Overall, it was a surprisingly painless experience.

Q: Why did you opt to use AppImage over other ways to bring it to Linux?

Alexei Pepers: We wanted to make it easy to download and use the Beamdog Client on Linux, and we wanted to support different distributions as much as possible. AppImage was the suggested format in the Electron distribution package we use, and seemed to be a good fit for our requirements.

Q: Are you hoping it will one day rival Steam, or is it mainly for keeping direct purchases updated? The real question is: What are your plans for the future of the new Beamdog Client?

Alexei Pepers: The previous incarnation of the Beamdog Client was more similar to Steam, in that we did once use it to sell hundreds of games instead of just our own products. The new Beamdog Client is a conscious movement away from that, as we’ve decided that we’d rather focus on supporting and showcasing our own products instead of trying to maintain a huge library of games. Our plans for the future revolve around delivering people the best experience possible with our Client and supporting games with easy to access updates.

Q: What do people benefit from buying directly from Beamdog to use the Beamdog Client, over just buying the game on Steam?

Alexei Pepers: In addition to supporting us directly and helping us keep running, using the Beamdog Client over Steam gives an experience that’s more focused on our games and the community we’ve built around them. We have peripheral content like manuals and illustrated guides to the settings that are directly accessible through the Beamdog Client, as well as links to our active forum community. Our games through the Beamdog Client are also DRM-free, and we have plans to make it easy to access the betas for our games for people who are interested.

And now, it’s time to speak to the the rest of Beamdog about their porting and Linux gaming. Here I spoke to Scott Brooks the Beamdog CTO and Alex Tomovic the Planescape: Torment: Enhanced Edition Project Lead.

Q: Linux is a question still not in a lot of developers/publishers minds, why did Beamdog decide to bring their games like Planescape Torment Enhanced Edition to Linux?

Scott Brooks: Linux was actually the first platform other than Windows to run Baldur’s Gate when we started the work. I’ve always been a fan of porting to multiple platforms. A lot of C/C++ bugs exist inside the undefined behaviour space in the various compilers. Often after porting to a new platform you will find bugs that make you ask “How did this ever work to begin with?” We’ve found that porting to Linux makes the game more stable and perform better on Windows too. Porting to Android for example, improved our iOS memory usage and rendering on all platforms.

Q: Was acquiring the licenses to these old Black Isle properties an interesting ordeal?

Scott Brooks: It took Trent quite a while to acquire the licences from Atari, and you’ll have to arm wrestle him to to get those stories.

Q: Why did Beamdog decide to revamp older titles like Baldur’s Gate and Planescape Torment?

Scott Brooks: Finding a large fan base for game that is 15 years old or more is rare, and proves that a market exists for the game. The original developers had moved on to other projects, and nothing was being done with these titles.

Alex Tomovic: Planescape: Torment and the rest of the Infinity Engine games are timeless RPG classics. Bringing them to modern devices and operating systems ensures that their exceptional stories will live on and reach an even wider audience.

Q: What are your thoughts on GemRB, the open-source implementation of Bioware's Infinity Engine?

Scott Brooks: GemRB is a wonderful project. It’s amazing what they have been able to accomplish by reverse engineering everything. This kind of relates to the question above about choosing a game like Baldur’s Gate, having a game that people are passionate enough about to re-implement the client speaks volumes to how good of games these are.

Q: What do you guys think to SteamOS?

Scott Brooks: I think SteamOS opens up Linux by sanding off some of the rough edges. I feel a lot of the open source world operates around giving people all the tools they need to fix a problem themselves. Some people don’t enjoy that tinkering process and would rather just play some games. SteamOS helps a bunch in that regard. It also increases the profile of Linux games and Steam in generate provides an actual marketplace on Linux so you have somewhere you can sell your game on Linux.

Q: What’s it honestly like bringing a game over to Linux?

Scott Brooks: It’s not easy, but it’s worth it. Honestly it’s less about bringing a game from linux, and more prying it off of Windows (or the original platform it was developed on). When bringing a game to Linux, Ryan Gordon did a great talk at the Steam Dev days that discussed the exact approach we happened to have used.
  • Step 1: Port to SDL2 on Windows
  • Step 2: Remove Windows specific dependencies. We chose OpenGL instead of DirectX, and OpenAL instead of the current flavour of Windows audio.
  • Step 3: Once you’ve got a relatively platform neutral game running on Windows. then get that over to Linux. Part of the pain here is your project files are probably still Visual Studio projects, and so actually compiling will be hard. We used CMake to help solve this problem, but there are choices in this area.
  • Step 4: Once you are actually compiling, you’ll be fixing compiler differences between MSVC and GCC/Clang, but these days it’s mainly a case of adjusting all the code to be cross platform friendly instead of making GCC specific changes.
  • Step 5: Once you’re here, the “fun” begins and you start to learn about different Linux distributions, and what libraries they ship with, etc. I recommend using the steam runtime to solve this problem. It’s a build environment that includes a specific set of libraries that you can depend on not changing. I understand that’s not always the solution that people prefer, but it does help get your game running on Linux. The important part to know is that the name is kind of confusing. The Steam runtime is made by Valve, but it doesn’t actually include any of the Steam client, or references to its API. It’s just a collection of open source libraries to link against.
Alex Tomovic: Seeing our games run flawlessly on my minimalistic Arch install gives me high confidence in their stability.

Q: Do you think projects like Wine prevent some titles from being ported to Linux?

Scott Brooks: I don’t think so. I would guess that a title that ended up on Linux via Wine would be because there was not original source code access, or the cost to do a full port to linux was too high. In both of those cases without Wine there would have been nothing on Linux.

Q: Some users have noted an issue with previous games being 32bit and not supporting certain filesystems when the partition is of a certain size (see here), any comment on 64bit support and fixing the filesystem issues?

Scott Brooks: 64 bit support is on our radar, the engine has been ported to 64 bit for iOS, and macOS, so the hard work has been done. One of the main goals of the Enhanced Edition is making sure it runs on modern machines so we will be working towards getting 64 bit builds on Linux.

Q: What tools have you been using to bring your games to Linux?

Scott Brooks: Vim, gcc, and make? I think the more interesting aspect is the libraries we used. Our graphics are rendered with OpenGL, audio is provided by OpenAL. Our in game movies are encoded as webm files, and audio is encoded with ogg.

Q: How have you found the sales for the Linux versions of Beamdog titles?

Scott Brooks: Hard to say. Sales for different operating systems can be hard to track because platforms such as Steam and GOG allow you to play on more than one operating system.

Q: Can we expect all future Beamdog games to support Linux?

Scott Brooks: We’ve put in a lot of work to bring the Infinity Engine (which dates back to 1995) to Linux, Android, macOS, and iOS. We certainly plan to support the Infinity Engine going forward on Linux, but support for future games depends on the technology used in their development.


I would like to thank everyone at Beamdog for their time, honest answers and for bringing some true classics over to Linux.

If you know of a developer who would be up for an interview, please do ask them to get in touch with me. Article taken from GamingOnLinux.com.
Tags: Interview
36 Likes
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly. Find me on Mastodon.
See more from me
The comments on this article are closed.
26 comments
Page: «2/3»
  Go to:

Shmerl Apr 9, 2017
Great interview!

QuoteOur in game movies are encoded as webm files, and audio is encoded with ogg.

Webm usage is nice. I wonder what codec they use in Ogg. Modern Opus, or older Vorbis?
dubigrasu Apr 9, 2017
Quoting: Guest
Quoting: dubigrasuAlas, for all the good words about SteamOS the Beamdog client doesn't work on it. (older libstdc++.so.6).
You’re making me eat my words :-/. Although maybe they did that consciously and they assumed people wouldn’t use it on SteamOS, like Liam says.
Yeah, not much point in testing your client on SteamOS proper, but the moment you switch to desktop mode is basically Debian Jessie, and Debian Jessie is a pretty big distro to be left behind.


Last edited by dubigrasu on 9 April 2017 at 8:08 am UTC
yerbestpal Apr 9, 2017
What an excellent interview. The quality of articles on this site and the regularity of posts never cease to impress me. A donation will be going this way as soon as I'm not skint.
dubigrasu Apr 9, 2017
Quoting: Hori
Quoting: dubigrasu
Quoting: liamdawe
Quoting: dubigrasuAlas, for all the good words about SteamOS the Beamdog client doesn't work on it. (older libstdc++.so.6).
Their games are built to work on SteamOS of course, but their client is not. SteamOS isn't a place where you're meant to go around installing other clients ;)
In the BPM mode indeed, but in desktop mode is basically Debian stable, where I do have some other clients installed (basically itchio and Gamejolt).
Or leaving aside SteamOS, the client doesn't work on Debian stable.
SteamOS is not meant to be used outside BPM...
That's there just for exceptional cases, like debugging.
Steam Machines themselves aren't meant to be used with a keyboard or mouse.

Yeah, you can. It supports them. But BPM + Controller is the main focus.
Yes, SteamOS has a specific usage target which is gaming on BPM while the desktop mode is a bonus (otherwise perfectly usable when needed). But like I said few times already, is the underlying Debian stable that has been left out.
Let me put it again in another way: the client doesn't work on Debian stable.
dubigrasu Apr 9, 2017
OK, got it working locally using libstdc++.so.6 from Stretch, is looking nice:



It looks like for the moment the Linux versions are not available from the Beamdog store/client though, only from Steam and GOG.
Kohrias Apr 9, 2017
I really like what you are doing, Beamdog. Keep up the amazing work.

I especially also like you going for drm-free! Will definetly buy on your store and not Steam!
ValamirCleaver Apr 9, 2017
I am unable to get the client to work on Ubuntu 17.10 64-bit. I just get a black rectangle in the middle of my screen and I need to use System Monitor to kill. There's no Linux troubleshooting advice on the Client FAQ page. Their Linux support is very noticeably lacking in comparison to GOG.
x_wing Apr 9, 2017
Quoting: Guest
Quoting: dubigrasuYeah, not much point in testing your client on SteamOS proper, but the moment you switch to desktop mode is basically Debian Jessie, and Debian Jessie is a pretty big distro to be left behind.
Oh indeed, it’s very recent too. Since libstdc++ comes with gcc, and Debian 8 (Jessie) has gcc 4.9… It means the client won’t work either on Ubuntu 14.04 (gcc 4.8) and Gentoo (gcc 4.9)? Sounds bad.

Are you sure? AFAIK gcc doesn't has as dependency an specific libstc++ version (I mean for linking :P)


Last edited by x_wing on 9 April 2017 at 3:17 pm UTC
Shmerl Apr 9, 2017
Quoting: x_wingAre you sure? AFAIK gcc doesn't has as dependency an specific libstc++ version (I mean for linking :P)

Normally GCC allows forward compatibility, but it can break in some rare occasions. See "Incompatible with previous" examples here: https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

QuoteGoals

Extending existing, stable ABIs. Versioning gives subsequent releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial release of a library binary will still run correctly if the library binary is replaced by carefully-managed subsequent library binaries. This is called forward compatibility.

The reverse (backwards compatibility) is not true. It is not possible to take program binaries linked with the latest version of a library binary in a release series (with additional symbols added), substitute in the initial release of the library binary, and remain link compatible.

Allows multiple, incompatible ABIs to coexist at the same time.

If you know your game is breaking C++ ABI for some distro, you might need to bundle libstdc++, but, it has another downside. If you link with something that uses system libstdc++ (for instance, Mesa does in libdrm!), you might end up in complete crashing mess. That already happened with quite a few games.

So normally bundling libstdc++ is a bad idea, but if stuff starts breaking, you'd need to update your release.


Last edited by Shmerl on 9 April 2017 at 5:13 pm UTC
QuoteQ: Are you hoping it will one day rival Steam, or is it mainly for keeping direct purchases updated? The real question is: What are your plans for the future of the new Beamdog Client?

Alexei Pepers: The previous incarnation of the Beamdog Client was more similar to Steam, in that we did once use it to sell hundreds of games instead of just our own products. The new Beamdog Client is a conscious movement away from that, as we’ve decided that we’d rather focus on supporting and showcasing our own products instead of trying to maintain a huge library of games. Our plans for the future revolve around delivering people the best experience possible with our Client and supporting games with easy to access updates.

Q: What do people benefit from buying directly from Beamdog to use the Beamdog Client, over just buying the game on Steam?

Alexei Pepers: In addition to supporting us directly and helping us keep running, using the Beamdog Client over Steam gives an experience that’s more focused on our games and the community we’ve built around them. We have peripheral content like manuals and illustrated guides to the settings that are directly accessible through the Beamdog Client, as well as links to our active forum community. Our games through the Beamdog Client are also DRM-free, and we have plans to make it easy to access the betas for our games for people who are interested.

I think this is the same path that Feral must follow eventually:
Make your own client and slowly get out from Steam.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
The comments on this article are closed.