ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.58k stars 1.07k forks source link

Distant Worlds 2 (1531540) #5664

Open brandonegbert opened 2 years ago

brandonegbert commented 2 years ago

Compatibility Report

System Information

I confirm:

steam-1531540.log

Symptoms

Launcher appears and game crashes without anything ever being visible

Reproduction

Install game. Click Play in the launcher.

brandonegbert commented 2 years ago

Forum thread with some additional troubleshooting. https://steamcommunity.com/app/1531540/discussions/3/5561388294332782864/

Appears to require dotnet472. Developer seems to have expressed some interest in seeing it work via proton.

brandonegbert commented 2 years ago

Other users have reported more success with Proton 4.11-3 and installing dot472 via protontricks. I still experience the same crash as experimental though. The game at least launches (though with graphical glitches, too dark) if you then force it back to proton experimental.

A couple of errors from the 4.11-3 log:

362875.641:006b:006c:err:eventlog:ReportEventW L"Application: DistantWorlds2.exe\nFramework Version: v4.0.30319\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.InvalidOperationException\n   at Xenko.Rendering.EffectSystem.CheckResult(Xenko.Core.Diagnostics.LoggerResult)\n   at Xenko.Render"...

Unhandled Exception: 362875.641:006b:006c:trace:seh:RtlVirtualUnwind type 0 rip 10753da rsp d36cb0

System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: Could not compile shader. See error messages.Error: Z:\home\begbert\.local\share\Steam\steamapps\common\Distant Worlds 2\log\shader_GaussianBlurEffect_d3c76beaa0e0f75f50556c7688581b1b.hlsl:33:8: error: syntax error, unexpected KW_CBUFFER

Error: Z:\home\begbert\.local\share\Steam\steamapps\common\Distant Worlds 2\log\shader_GaussianBlurEffect_d3c76beaa0e0f75f50556c7688581b1b.hlsl:33:8: error: syntax error, unexpected KW_CBUFFER

   at Xenko.Rendering.EffectSystem.CheckResult(LoggerResult compilerResult)
   at Xenko.Rendering.EffectSystem.CreateEffect(String effectName, EffectBytecodeCompilerResult effectBytecodeCompilerResult, CompilerResults compilerResult)
   at Xenko.Rendering.EffectSystem.<>c__DisplayClass21_0.<LoadEffect>b__0(Task`1 x)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at Xenko.Rendering.DynamicEffectInstance.ChooseEffect(GraphicsDevice graphicsDevice)
   at Xenko.Rendering.EffectInstance.UpdateEffect(GraphicsDevice graphicsDevice)
   at Xenko.Rendering.Images.GaussianBlur.GaussianBlurShader..ctor(GaussianBlur gaussianBlur, Int32 radius)
   at Xenko.Rendering.Images.GaussianBlur.DrawCore(RenderDrawContext context)
   at Xenko.Rendering.RendererBase.Draw(RenderDrawContext context)
   at Xenko.Rendering.Images.Bloom.DrawCore(RenderDrawContext context)
   at Xenko.Rendering.RendererBase.Draw(RenderDrawContext context)
   at Xenko.Rendering.Images.PostProcessingEffects.DrawCore(RenderDrawContext context)
   at Xenko.Rendering.RendererBase.Draw(RenderDrawContext context)
   at Xenko.Rendering.Compositing.ForwardRenderer.DrawView(RenderContext context, RenderDrawContext drawContext, Int32 eyeIndex, Int32 eyeCount)
   at Xenko.Rendering.Compositing.ForwardRenderer.DrawCore(RenderContext context, RenderDrawContext drawContext)
   at Xenko.Rendering.Compositing.SceneRendererBase.Draw(RenderDrawContext context)
   at Xenko.Rendering.Compositing.SceneRendererCollection.DrawCore(RenderContext context, RenderDrawContext drawContext)
   at Xenko.Rendering.Compositing.SceneRendererBase.Draw(RenderDrawContext context)
   at Xenko.Rendering.Compositing.SceneCameraRenderer.DrawCore(RenderContext context, RenderDrawContext drawContext)
   at Xenko.Rendering.Compositing.SceneRendererBase.Draw(RenderDrawContext context)
   at Xenko.Rendering.Compositing.GraphicsCompositor.DrawCore(RenderDrawContext context)
   at Xenko.Rendering.RendererBase.Draw(RenderDrawContext context)
   at Xenko.Engine.SceneSystem.Draw(GameTime gameTime)
   at Xenko.Games.GameSystemCollection.Draw(GameTime gameTime)
   at Xenko.Games.GameBase.Draw(GameTime gameTime)
   at DistantWorlds2.DWGame.Draw(GameTime gameTime)
   at Xenko.Games.GameBase.DrawFrame()
   at Xenko.Games.GameBase.TickInternal()
   at Xenko.Games.GameBase.Tick()
   at Xenko.Games.GamePlatform.Tick()
   at Xenko.Games.GamePlatform.OnRunCallback()
   at Xenko.Games.WindowsMessageLoop.Run(Control form, RenderCallback renderCallback, Boolean useApplicationDoEvents)
   at Xenko.Games.GameWindowWinforms.Run()
   at Xenko.Games.GameBase.Run(GameContext gameContext)
   at yGXkyp1syPbjXxxoBe.gqp8fjXjIYoUcJh9dy.qLG4ceILCReQeZDCurE(Object , Object )
   at yGXkyp1syPbjXxxoBe.gqp8fjXjIYoUcJh9dy.va1M7TW1U(Object  )
   at <PrivateImplementationDetails>{138FE442-AC49-4379-99EF-283B99FC85D7}.Main(String[] args)

steam-1531540.log

madewokherd commented 2 years ago

When trying with wine-mono I get this in the log:

[00000000000001ec:] EXCEPTION handling: System.InvalidProgramException: Invalid IL code in P7UnTGuCiI30tHLFZ7.V8h7RAqhjtUagQRdwn:UMRHH0p9Sj (): IL_3f37: switch    (IL_3ff3, IL_3f9c, IL_3fd6, IL_3f7f, IL_3fab, IL_3f59)

So it sounds like the blocker with wine-mono for now is an obfuscator generating invalid code.

ghost commented 2 years ago

@madewokherd I don't think it'll work with wine-mono anyway even if the game wasn't obfuscated - wine-mono is quite limited for things like games, especially the ones that require a modern version of .NET

brandonegbert commented 2 years ago

In the beta version (v1.0.5.0) the developer has upgraded the engine to .Net 6 and included the redistributable. The game now seems to work out of the box using Proton 7.0-3. Tested with a fresh prefix.

https://steamcommunity.com/app/1531540/discussions/0/3418809548715650662/

heregoesmarcel commented 1 year ago

Newest Aurora patch (1.1.0.9) plus current beta build (1.1.1.1) have both broken game compatibility again.

Installation of .NET 7 runtime also doesn't seem to solve the issue.