Heart of the Machine

Heart of the Machine

x-4000 (Chris McElligott Park)  [developer] Aug 11, 2023 @ 6:31am
Linux Changes For Heart of the Machine
https://steamcommunity.com/ogg/2001070/announcements/detail/5467985516584106549
What’s Happening
The native Linux build of the game is being retired, partly on advice from Valve, as the Windows version being run through Proton performs better and looks better.

TLDR: This game still runs great on Linux, but the optimal way is different than expected.

Q&A

Will Heart of the Machine be Steam Deck Verified?
That is the intent! I'm testing it routinely on my own Steam Deck, as I do about 99% of my own gaming on that platform these days. It's a priority for me.

Are there extra steps to play Heat of the Machine on Linux?
If you already have Steam Play enabled, then no -- just click install and play, and it will launch the proton version of the game.

If you don’t already have Steam Play enabled on Linux, then go to Steam->Settings->Steam Play and check "Enable Steam Play for all other titles." From the dropdown choose Proton 8, or Proton Experimental, at your preference. Then you can enjoy many “windows only” games.

If you’re on Steam Deck, you don’t have to take any extra steps.

Any effects on the OSX build?
None at this time. Native Metal builds, and particular Silicon builds, have a large performance gap between themselves and non-native. Metal has also kept up with DX11 on most features, has a reversed z-buffer, and so on.

Does this have any impact on development?
No. This was simply something we discovered via testing, and then talked to Valve about. We noticed the proton version ran about 10% faster than the native version, with better frame timings as well, and they strongly suggested we ditch the native version in that case.

Question: Will a native Linux build be released on other storefronts?
No. It doesn’t make any sense to maintain a version of the game that we know is inferior. Proton and WINE are both able to be used on any Linux machine, quite apart from Steam.

Were there other problems with the native Linux build?
Yes.
  • Performance was 10% worse, and frametimings were less even, but it was certainly playable. This was just how Unity 3D works in Vulkan on Linux, so there was no way to solve it.
  • Certain parts of this game have geometry that is close together, and on Linux these would flicker. This is because Unity 3D does not support a reversed z-buffer on OpenGL or Vulkan (or DirectX9). This problem is not present in DirectX11+, or Metal. And it’s not present when Proton or WINE convert DX11 commands to Vulkan.
Other than that, everything was the same on Linux as it is on Windows or OSX. We’ve had a native Linux build of this game for its entire life up until recently, just as all of Arcen’s titles have had a native Linux build for the last decade.

So this all feels very strange. But Unity 3D’s support for Linux, and in particular their implementation of Vulkan, is notably inferior to what is going on with their support for DirectX11 and Proton/WINE’s ability to bridge across.

Is playability via proton likely to break over time or be flaky?
No. Valve has been extremely committed to making it rock solid, and also offers older versions in the cases where something does break. The WINE community has also been a growing and substantial movement for three decades.

Isn't this a win-win-win?
Yes, pretty much, but it does look like we're backing off Linux support by this move, which bugs me and might bug others.

Does this affect Arcen’s ability to support Linux in any particular way?
No, because with Unity and similar engines, it already either works or it doesn't. If someone has an incompatibility, we can't change the engine. And Valve has been more on top of things than Unity.
Last edited by x-4000 (Chris McElligott Park); Aug 11, 2023 @ 6:35am
< >
Showing 1-8 of 8 comments
TAW|REA Jan 27 @ 3:48pm 
Nope, thank you. Will see you when the Linux native platform treated as 1st class just as Windows. Cheers.
For the record, it has nothing to do with treating anyone like a second class citizen.

I am literally a solo developer. I am not a linux programmer. I have coded a game engine before, but it was 2D only, and took me from 2002 to 2009 to do. I specifically switched to Unity as a replacement engine to get better multiplatform support. Since they've had linux builds, Arcen has provided them.

The fact that proton has pulled so far ahead that it's a superior experience now is really surreal and awesome. Because that means more games on linux -- which is where I do almost 100% of my gaming for the last couple of years, incidentally.

If you want to get mad at even much larger developers who have games without direct linux support, as a fellow linux gamer I think you're missing out. Get mad if they have DRM or highly anticompetitive practices. Something like Elden Ring runs smoother on linux than it does on PS5, believe it or not -- despite the native PS5 port and the fact that on linux it's through Proton. If you're going to skip that game (one of the best of 2022 -- it's SO good) because FromSoft doesn't provide native linux support... I don't think that's winning anything.

Here's an alternative take -- let's say there was no Proton at all.

1. You wouldn't have Elden Ring on linux at all. Sad noises.

2. You _would_ still have Heart of the Machine, just like you've had every other Arcen title on linux if you wanted it. However, there would be an annoying flicker on some models that I wouldn't be able to solve for you, and you'd have about 10% rougher frame timings that again I would not be able to solve.

I am aware of the "no tux no bux" saying, and that's fine if that's what folks want to do. But I think it's counterproductive to linux adoption as a whole. There's an arms race between native drivers and vulkan development, and proton/wine development, and it's a healthy one. Both sides push the other one forward.

Anyway, that's just my perspective as an individual who has used linux since the mid-90s for various desktop and server uses. I am just happy with all the various wins we've had in the last decade, at long last.
TAW|REA Jan 28 @ 1:10am 
Originally posted by x-4000 (Chris McElligott Park):
For the record, it has nothing to do with treating anyone like a second class citizen.

> If you want to get mad at even much larger developers who have games without direct linux support, as a fellow linux gamer I think you're missing out.

I am not mad, I am sad to see a promised Linux version is cancelled in favor of a translation. Proton is great for existing games which will probably never get a Linux version. But cancelling the Linux version of an upcoming game with Proton excuse personally hurts me. Many people in the Linux sphere fails to recognize that relying on solely win32 api will hurt Linux in the long term. It's already happening; more publisher push for kernel level anti-cheat and DRM solutions that Linux community often prey for them to not arrive for other games. And it will get worse as Linux people actively being vocal against native builds.

> 1. You wouldn't have Elden Ring on linux at all. Sad noises.

Not my type of game, cannot comment on that.

> However, there would be an annoying flicker on some models that I wouldn't be able to solve for you, and you'd have about 10% rougher frame timings that again I would not be able to solve.

You could at least push the existing (if there is) Linux build in a separate beta branch for those who are interested in native build. Natural Selection 2 did that for the purpose of game preservation which is not ideal but better than nothing I believe.

Anyway, thanks for caring to compose an honest response. Cheers! :cozyspaceengineersc:
I think that kernel-level anti-cheat is something that is awful for every ecosystem, and it makes things worse for everyone, usually in the name of picking the pockets of consumers with microtransactions. A lot of the games that are retroactively having DRM added to them by publishers that shall remain nameless seem to be having that happen because of a push for microtransactions of various sorts.

For the businesses that are going to make those sort of choices, they'll just abandon whatever platforms they were on if it conflicts with their monetization schemes.

I think that those are so far divorced from the rest of the gaming sphere -- well, indies anyway -- that we're effectively talking about two different things.

When it comes down to having a native linux build or a proton build for an upcoming game that is not by one of those giant publishers that is after "live services" ongoing revenue, I think the reasonable thought process is this:

1. Which does it run better in?
2. If proton, can the native build be improved?
3. If not, then why have an inferior native build that people blindly will use without realizing they could be having a better experience with proton?
4. If the equation later changes in some way, typically via major updates from the engine developer, then the native build should be back on the table.

To me, whatever is the best experience for the actual players is what the focus should be. That's my perspective, anyway.

It's not possible to push a linux build of the game to Steam and then have it default to proton. I asked Valve about this, specifically, because I wanted the Steam Deck to default to proton and everything else to use the native build. Their response was "ditch the native build, if you can't support it and make it the best experience available for linux users, then it shouldn't be a thing."

On the one hand, I found this advice shocking and upsetting. On the other hand, it was deeply practical, and it makes a lot of sense. Yeah, you and me both have the reaction of "a native build being canceled sounds horrible." I don't like that either. It gives an immediate and negative emotional response.

But I have to come back to the actual user experience. I dunno. I get you and others might not agree, but I think it's as simple as that.
TAW|REA Jan 28 @ 8:23am 
Originally posted by x-4000 (Chris McElligott Park):
It's not possible to push a linux build of the game to Steam and then have it default to proton. I asked Valve about this, specifically, because I wanted the Steam Deck to default to proton and everything else to use the native build. Their response was "ditch the native build, if you can't support it and make it the best experience available for linux users, then it shouldn't be a thing."

I just don't understand why can't the Linux build e put in a beta branch. There are examples of that. NS2 is currently doing and Entropy : Zero 2 did that previously. The main branch of the game can be Windows version, a beta branch can be cross-platform, unless Valve has changed that. Anyway, it's your game and you definitely know better. Thanks for the detailed answer!
x-4000 (Chris McElligott Park)  [developer] Jan 28 @ 10:00am 
I can't speak to what happened with those other games, I'm not sure what they did behind the scenes.

In general, a steam game with marked support for a platform can't have a release without actually including depots for that platform. So if I were to add depots for linux, I would have to do so with linux support being noted as absent publicly.

It's possible that I could push that onto a beta branch if I don't include "linux support" as a tickbox on the game, I'm not really sure.

But it would be a really strange thing to do. The people looking for native linux support would still see it as absent; they would have to check forums or something to know that the beta branch even exists. Presumably most of them would instead see Deck Verified and just fire it up via proton, getting the ideal experience without ever finding the inferior native version.

In general, it would make every build I do slower and larger, which is fine if it was a useful thing for actually giving people something nice. But for those people who do find it and then download an extra few GB of updates to "happily" have a native version... suddenly they're having graphical glitches and degraded performance.

I don't know why I would do that. All it would create is confusion and frustration for the few people who even see it, for everyone else it would be invisible, and it wouldn't bring back the Tux icon showing linux support on the game (to do that, it would have to be a non-beta branch).

I don't mind pushing linux builds for games that run well with that; it takes a bit of extra time per platform, but I'm thoroughly used to it. Literally every other Arcen title goes through that process, so it's not exactly new. I pushed linux builds for both AI War 2 and Starward Rogue in the last couple of days. But I do mind doing extra work for something that is a mix of invisible and a trap.

If I pushed the native version, it's not the build you should play. Why inflict lowered performance and model flickering on yourself for no reason? Would you actually choose to play that build over the proton one? I have two linux devices sitting on my desk, and the experience goes from "very nice" to "fairly crap" between the two options.

Like I just... don't know what the purpose would be. Nobody would want to play it. The visual glitch is not something a driver update would fix, FYI. It's because unity does not reverse their z buffer properly on vulkan on linux, for some asinine reason. Short of a unity update where they fix that or make that an option, it will flicker forever. The performance degradation might be a driver issue or a vulkan issue or a unity issue, it's hard to say, That's something that might be fixed over time with no engine updates, it's hard to say.

I'm just not sure what a beta branch linux version would accomplish. It's not a preservation issue. It's not like proton will suddenly stop working with existing games in the future. Compatibility with future titles is always a question mark with something like proton, but for existing titles it's not like that can ever be taken away (retroactive invasive DRM aside, but that's again a really separate and specific case to certain publishers, and I assume they would just brick the native builds as they hose over everyone).

I'm not trying to be obtuse, but that's my thought process.
TAW|REA Jan 28 @ 2:32pm 
Thanks for the very detailed explanation. Well, let us hope Unity will sort out z buffer and compatibility issues in the future. Thought, given ongoing Unity shenanigans don't give do much confidence. Anyway, thanks for the reply again. Will probably get the Linux titles of Arcen as long as I can afford. Cheers!
No worries, and I appreciate it!

After the article went up about Arcen removing support because of unity issues, one of their managers in charge of linux compatibility reached out to me. That was something that has not yielded anything yet, because immediately afterward they went through the first of a couple of rounds of thrashings. I'll have to reach back out, now that I think about it.

It does seem like the company is now trying to restructure to focus more on core product, which is great news if that means a quality engine. If it means "monetize mobile" then that will really be a facepalm. Overall they haven't had many exciting features for developers in the last few years, so the main thing they have going for them is their insanely powerful cross-platform extensibility. A lot of third party vendors have wound up doing the exciting things as paid extensions, like imposters or whatnot. That reminds me a lot of the way that blender's extensions marketplace work, and honestly I'm A-OK with that. But here's hoping there will be some core improvements as well.
< >
Showing 1-8 of 8 comments
Per page: 1530 50