It seems Aspyr Media hit a small roadblock when trying to get the latest Civilization VI patch out for Linux, the one to finally give cross-platform online support.
Back near the start of August, we reported that Aspyr Media had put the patch forward to their partners to get it approved and put live on Steam. An hour ago, Aspyr-Blair commented on the Steam forum about the delay with it still not being released yet:
I've been at Gamescom since last Friday, so apologies for the delay in response. A crash bug was found on a specific chipset during final test/approval. We are fixing now, and hope to get the build back into approvals this week.
It has been a long wait, with the cross-platform patch originally due back around mid-April 2017. Honestly, I forgot all about it again because of the delay. That's what happens though, if something gets delayed again and again people do forget and move on.
Hopefully, it means the publisher only needs to re-confirm that specific issue is fixed. Otherwise, we might be in for another pause.
If you're after a copy of Civilization VI for Linux, head to Humble Store or Steam.
The game should have been programmed from the start to be cross-platform.
This is NOT the way to support GNU. Compared to this, we would be better off with Valve's Proton indeed.
The game should have been programmed from the start to be cross-platform.
While it's not ideal, I think having the developer officially support their own product on Linux (even by way of a porting company) is superior to the "maybe it works" Proton offers - and it's not like Valve is going to expand the whitelist to 1,000 games tomorrow.
- and it's not like Valve is going to expand the whitelist to 1,000 games tomorrow.![](https://media.giphy.com/media/PzQvWAhgfUipW/giphy.gif)
Proton releases officialy supported by Valve (just a handful of games at the moment) are probably going to be better than most third party ports. And in the first case the developer gets directly involved.This is NOT the way to support GNU. Compared to this, we would be better off with Valve's Proton indeed.
The game should have been programmed from the start to be cross-platform.
While it's not ideal, I think having the developer officially support their own product on Linux (even by way of a porting company) is superior to the "maybe it works" Proton offers - and it's not like Valve is going to expand the whitelist to 1,000 games tomorrow.
It's highly probable that Firaxis did not have cross-platform compatibility in mind. I don't understand developpers choosing platform-specific technologies. Even if they plan to release only for Windows. If you want your game to still be playable in 10 years, be as standard as possible.
That's why I really like what valve is doing with Proton. They are pushing windows developpers to use cross-platform technologies such as Vulkan.
Spoiler, click me
They are pushing windows developpers to use cross-platform technologies such as Vulkan.
I don't know why devs don't already. Vulkan is required for the super popular Nintendo Switch, so even if their mainline is Xbone/PS4, surely they should all at least have a bit of Vulkan going on the side.
This seems to be an enormous development hurdle with likely lots of traps and unexpected behavior due to the small differences involved in calculations of different libraries. I just hope the knowledge that these people have accumulated due to this task is not lost being confined to the proprietary source code of this game. It would be nice if they published a document or book with 'lessons learned' from this programming experience.It's not Valve by themselves, they are pushing developers to get on board too. First of all, by using Vulkan. Step by step, the developers themselves need to be on GNU. Third party ports are always going to be late, buggier than the original, slower, or all of the three.
This seems to be an enormous development hurdle with likely lots of traps and unexpected behavior due to the small differences involved in calculations of different libraries. I just hope the knowledge that these people have accumulated due to this task is not lost being confined to the proprietary source code of this game. It would be nice if they published a document or book with 'lessons learned' from this programming experience.
It's not a new thing. It's well known. Apparently, some people at Firaxis just didn't give a shit or actually didn't know about it. If they wanted Civ 6 to be multiplatform from the start and used a mathematical library in a way that doesn't work the same everywhere, they (Firaxis) simply fucked up.
Is there any programming literature on this problem or is it always case-by-case?
Of that particular thing? Not that I know of. But I'm sure that there are plenty of books on development where this is mentioned. Buddies of mine are devs (only partly in game industry) and from what I've heard, it is a well known thing. I've read about it myself rather often, also.
As far as I remember, floating point operations don't always get 100% exactly the same results on each platform/compiler/processor. Sometimes, they are just a teeny tiny little bit off, which may or may not throw your game logic up. If you have deterministic game logic and never check if the results are the same on each platform, you have a hard time fixing that afterwards when the game is finished.
As far as I understand, Civ 6 is deterministic. In multiplayer rounds, only the player input is synced, and every system calculates the game state for itself. If one system comes to different results, the round is out of sync. That's why there was no cross platform MP until now.
Last edited by Doc Angelo on 28 August 2018 at 10:01 am UTC
That's pretty much the problem with floating points being transferred in multiplayer cross-platform. And that is actually very much common knowledge for any programmer worth their salt - but since nowadays most coders "learn" their craft in everything-is-done-for-you-boxes like Unity, of course this knowledge has actually gotten rare and whoever implemented MP in Civ6 just naively went with floats because "what could go wrong"...Is there any programming literature on this problem or is it always case-by-case?As far as I remember, floating point operations don't always get 100% exactly the same results on each platform/compiler/processor. Sometimes, they are just a teeny tiny little bit off, which may or may not throw your game logic up. If you have deterministic game logic and never check if the results are the same on each platform, you have a hard time fixing that afterwards when the game is finished.
As far as I understand, Civ 6 is deterministic. In multiplayer rounds, only the player input is synced, and every system calculates the game state for itself. If one system comes to different results, the round is out of sync. That's why there was no cross platform MP until now.
But when you actually dig around and look for some guidelines about multiplayer programming, this problem is mentioned a lot.
What makes me sceptical about this actually being the problem here is that this would actually be somewhat simple to solve without taking months of time.
Replace all important float usages with fixed-point arithmetics (very slight performance and possibly memory impact), regularly sync the host state with the client states (especially doable in a turn-based game as those are rather slow by nature), ...
Once you recognize you have this problem, the solutions really aren't too hard to pull off. So... yeah, I somewhat doubt this is the (only or even main) problem here.
Last edited by TheSHEEEP on 28 August 2018 at 11:00 am UTC
Once you recognize you have this problem, the solutions really aren't too hard to pull off. So... yeah, I somewhat doubt this is the (only or even main) problem here.
Is it really that easy to translate the game logic from floating point to fixed without changing the behavior of the AI and other things? Even the slightest change that only occurs in extremely rare cases would render it non-compatible.
This is NOT the way to support GNU.
I like how you call the operating system GNU instead of GNU/Linux or just Linux.
This is NOT the way to support GNU.
I like how you call the operating system GNU instead of GNU/Linux or just Linux.
Yes, the mainstream propaganda has been very effective in basically banning the word 'GNU'. There are many young, innocent souls out there that may get wrong ideas if they think about GNU too much, better keep them safe!
Last edited by Teodosio on 28 August 2018 at 11:43 am UTC
Not easy, no, but not half-a-year difficult, either.Once you recognize you have this problem, the solutions really aren't too hard to pull off. So... yeah, I somewhat doubt this is the (only or even main) problem here.
Is it really that easy to translate the game logic from floating point to fixed without changing the behavior of the AI and other things? Even the slightest change that only occurs in extremely rare cases would render it non-compatible.
On the other hand, I've witnessed people take multiple months to implement a prebuilt 3D sound library, so... *shrugs*
Last edited by TheSHEEEP on 28 August 2018 at 12:33 pm UTC
This is NOT the way to support GNU. Compared to this, we would be better off with Valve's Proton indeed.
The game should have been programmed from the start to be cross-platform.
Please be a little bit more reasonable. Its not like Civ6 is the classical multi player game and is absolutely useless in its current state. Single player worked very well from the start on. I think Aspire did/does a very good job here considering the low number of Linux player. I prefer quality over rushed releases.
Last edited by jens on 28 August 2018 at 4:58 pm UTC
I never played Civ multiplayer, I care about the patches.This is NOT the way to support GNU. Compared to this, we would be better off with Valve's Proton indeed.
The game should have been programmed from the start to be cross-platform.
Please be a little bit more reasonable. Its not like Civ6 is the classical multi player game and is absolutely useless in its current state. Single player worked very well from the start on. I think Aspire did/does a very good job here considering the low number of Linux player. I prefer quality over rushed releases.
I hope they develop their next game with Vulkan instead of trying to patch GNU support after the damage has been done...
I'm all for giving GNU credit, but calling Linux binaries having "GNU support" can be misleading.
I never played Civ multiplayer, I care about the patches.This is NOT the way to support GNU. Compared to this, we would be better off with Valve's Proton indeed.
The game should have been programmed from the start to be cross-platform.
Please be a little bit more reasonable. Its not like Civ6 is the classical multi player game and is absolutely useless in its current state. Single player worked very well from the start on. I think Aspire did/does a very good job here considering the low number of Linux player. I prefer quality over rushed releases.
I hope they develop their next game with Vulkan instead of trying to patch GNU support after the damage has been done...
I really don't see what your problem is when multiplayer is not your focus...
Anyway, bringing Civ6 to Linux (for what I'm very grateful) already needed a lot of cookies. I don't think a Civ7 will come to Linux by Aspire, if a Civ7 happens. Reading comments like yours I would totally understand this :(
Anyway, bringing Civ6 to Linux (for what I'm very grateful) already needed a lot of cookies. I don't think a Civ7 will come to Linux by Aspire, if a Civ7 happens. Reading comments like yours I would totally understand this :(
Aspyr have a lot of experience porting Civ games and doing so brilliantly. What I hope is that Aspyr will be involved in the developpelemt of future Civ games much earlier.
We actually have seen many times with Kickstarter projects that starting working on the Linux port after the Windows release is a source of massive delay like Divinity Original Sin or cancellation. I guess it makes the port much more expensive, so you're less inclined to port future games to Linux.
I do hope there will be a Civ7. If Firaxis have cross platform compatibility in mind from the start, then it should be much simpler for Aspyr.
See more from me