Posted July 29, 2017
I said in the announcement thread that I wouldn't touch this unless I had confirmation that this works in Wine+Mesa. I guess I lied (or at least I'm an idiot). Since the bug mentioned in the release thread (https://bugs.winehq.org/show_bug.cgi?id=43357) implied that it might work, I bought it anyway. And, as expected, it did not work, even with the patch from the bug report. At least the problem I found was easy enough to fix.
At startup, it compiles a bunch of shaders, and fails (and exits the program) on many of them. Well, at least unlike many other modern games, it tells me that it failed, rather than assuming success and crashing later on. The reason they fail to compile is that Mesa considers texture2DLod to be a GLSL 1.3+ function, but all the shaders claim to be 1.2. I manually edited the version number on all failed shaders (24 of them), and got to the main menu. Previous versions seemed to just hang on generating the galaxy, but as of the latest version, the game finally starts, but reports additional failed shader compiles. I manually edited the version number on these 3 as well, and finally have what appears to be a working game. However, given the manual process I used to edit the shaders (MESA_SHADER_DUMP_PATH+game crash+edit+MESA_SHADER_READ_PATH), I expect the game will fail randomly at some point in the future, as well. There are better solutions:
1) Ashdar Games could fix the shaders. Note that I cannot manually edit the shaders directly, as they are hidden in some archive. I expect this will involve fixing some cg compiler configuration.
2) A shim could auto-edit the shaders. I can't use Linux .so overrides, because Wine manually loads and binds the functions from the GL library. This leaves some sort of Windows library override or Wine redirect, neither of which I know how to do (and the latter of which is only available on staging, anyway).
3) Run a custom version of Wine and/or Mesa which addresses this issue. I don't really like munging system libraries just to play a game, unless it is an actual bug fix or feature extension.
Maybe I'll work on #2 and/or #3, or maybe somebody who actually knows what they're doing can tell me an easier fix. In the mean time, I'll just play other games.
At startup, it compiles a bunch of shaders, and fails (and exits the program) on many of them. Well, at least unlike many other modern games, it tells me that it failed, rather than assuming success and crashing later on. The reason they fail to compile is that Mesa considers texture2DLod to be a GLSL 1.3+ function, but all the shaders claim to be 1.2. I manually edited the version number on all failed shaders (24 of them), and got to the main menu. Previous versions seemed to just hang on generating the galaxy, but as of the latest version, the game finally starts, but reports additional failed shader compiles. I manually edited the version number on these 3 as well, and finally have what appears to be a working game. However, given the manual process I used to edit the shaders (MESA_SHADER_DUMP_PATH+game crash+edit+MESA_SHADER_READ_PATH), I expect the game will fail randomly at some point in the future, as well. There are better solutions:
1) Ashdar Games could fix the shaders. Note that I cannot manually edit the shaders directly, as they are hidden in some archive. I expect this will involve fixing some cg compiler configuration.
2) A shim could auto-edit the shaders. I can't use Linux .so overrides, because Wine manually loads and binds the functions from the GL library. This leaves some sort of Windows library override or Wine redirect, neither of which I know how to do (and the latter of which is only available on staging, anyway).
3) Run a custom version of Wine and/or Mesa which addresses this issue. I don't really like munging system libraries just to play a game, unless it is an actual bug fix or feature extension.
Maybe I'll work on #2 and/or #3, or maybe somebody who actually knows what they're doing can tell me an easier fix. In the mean time, I'll just play other games.