Proton: Natural Selection 2 (4920)

Created on 18 Jan 2019  路  29Comments  路  Source: ValveSoftware/Proton

Compatibility Report

  • Name of the game with compatibility issues: Natural Selection 2
  • Steam AppID of the game: 4920

System Information

  • GPU: Nvidia Geforce GTX 1070
  • Driver/LLVM version: Nvidia 415.25
  • Kernel version: 4.20
  • Link to full system information report as Gist:
    System Info
  • Proton version: 3.16-6

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Proton Log:
steam-4920.log

Symptoms

Game executable (NS2.exe) appears to start but instantly crashes and runs its own built in error handler (SparkCrashHandler.exe).

Reproduction

  • Use latest Steam client beta
  • Force-enable Steam Play for the title in properties and use the latest Proton version.
  • Start the game. It will appear as "running" but nothing else happens.
  • Manually end the processes as they will continue to run until killed.

Note: This title does have a native Linux binary, but is mostly unsupported/maintained by the devs.

Game compatibility - Unofficial

Most helpful comment

@mute55 and others affected, build 331 updated SDL2 to 2.0.10 and this is the cause of poor performance. (It has been determined to be caused by https://github.com/SDL-mirror/SDL/commit/e40839a7910ffc94595a8344376ae6051253a239) so a current workaround is to navigate to the x64 folder and replace SDL2.dll with one from an older version, for example https://www.libsdl.org/release/SDL2-2.0.4-win32-x64.zip

This issue is fixed on the soon-to-be-released build 332.
There were 3 ways to address the issue:

  • Revert the update and go back to 2.0.4
  • Revert the bad commit and keep 2.0.10
  • Downgrade to the last version before the bad commit

The third option was chosen because it keeps the advantages that motivated the upgrade to 2.0.10 without the maintenance burden of using a custom version of SDL.

All 29 comments

FYI this game uses a custom engine only used by this particular game. As I understand it, it tries to allocate a massive amount of memory upon startup. I tried PROTON_FORCE_LARGE_ADDRESS_AWARE=1 but it didn't help.

This game has Linux version, how did you install and test Windows build on Proton?

@nsivov, the Steam client beta now has a per-game override: Game properties -> Force the use of a specific Steam Play compatibility tool. Checking this box will make Steam get the windows version and the requested Proton version.

@kisak-valve, I see. Thank you.

@kisak-valve this patch set from Las fixes the issue for Natural Selection 2 (and possibly other LuaJIT 64 apps). Las submitted the patches upstream to the Wine project.

As far as I can tell, the patches only work fully with Proton 3.16. I tried compiling and using Proton 4.2 but the game fails to initialize with a renderer error. That's still further than I get without the patches, though.

wine-NtAllocateVirtualMemory.patch.txt

I updated Las patch to work with wine 4.14 (staging patches applied or not) :

las-4.14.patch.txt

However it seems there are regressions that prevents the game from going fullscreen when emulating a virtual desktop. expected behaviour.

There should be no need for Las' patch on 4.14+ since Codeweavers upstreamed patches that implement the needed zero_bits functionality. Just to be sure, I tried GloriousEggroll's 4.14 Proton build and NS2 launches and runs with no issues.

UWE is also (hopefully) fixing the LUA memory allocation for patch 329, so either way, this should be officially resolved when either the patch comes out or Valve re-bases Proton

@trilantis Ok, where can I find codeweavers patch?

Commits 1aa963 through 8a76553 on Wine's Github repo. 4.14 includes these commits. This one in particular is the one that fixes NS2:
https://github.com/wine-mirror/wine/commit/8a765533d6e19b0b8d51bf1ef7f316d79f9bb968

Try Glorious Eggroll's Proton build, it includes the latest Wine version:
https://github.com/GloriousEggroll/proton-ge-custom/releases

Thank, it indeed works.

Note that the developer, UWE, is officially ending support for their Linux client with the next release of the game:
https://unknownworlds.com/ns2/a-note-to-our-linux-users/

Running current build (328) through Proton results in a crash.
NS2.exe process uses 80% of my memory but does not exit.
Proton debug log:
steam-4920.log
Edit: fixed itself, disregard

@trilantis Do you get black screens with alt tabbing with that build? I've tried using fullscreen and fullscreened windowed to no success. The game doesn't recover from alt tabbing using wine/proton.

@metronidazole this should only happen during map loading, and start/end round animation.
I'll try to debug it.

I'm getting the same issue as @metronidazole, the game will go black when tabbing out and back in, I can play around with the windowed mode and get it to a state where the game remains visible after tabbing out and back but it always breaks mouse input and I start spinning rapidly, requiring a game restart to fix it.

Tried various Proton versions and video settings, I'll try to get a log posted soon.

Two bugs on latest proton: into video won't play and alt+F4 won't close game. Game is always trying to connect but never does: bug with the engine after alt+tabing makes the loading icon go slower or same speed every alternative time.

Proton 5.0-3, black screen after tabbing out and back in is still an issue. Have to restart the game every time to resolve it. Super annoying :/

@exezin yep, it is known but it's hard to debug unfortunately. From what I know it happens only when the game is tabbed out while loading map, starting a game or ending a game.

@terencode It's certainly happening to me during a game as well, not just when a game is loading or ending.

Ok then.

Just a note, you HAVE TO force Steamplay compatibility tool or else it thinks the game is Linux game but at same time it tries (and fails) to launch the windows executable as a Linux application.. After forcing Steamplay/Proton, it starts by creating a Proton prefix like it should.

The windows client runs under proton 5.0-5 but performance is terrible with everything turned off, does anyone have any tweaks that could make it playable?

I run it maxed out so I don't know what you're talking about. Try the usual startup parameters:
PROTON_NO_ESYNC=1 %command%

I run it maxed out so I don't know what you're talking about. Try the usual startup parameters:
PROTON_NO_ESYNC=1 %command%

Thanks for the suggestion, unfortunately it didn't work
I've got an i7 5930k, GTX TITAN X
Playing the game at lowest settings with proton 5.0-5 gives me around 60fps which isn't terrible but the issue is moving around/looking around causes my fps to drop to 5-10 or freeze entirely for a fraction of a second

@mute55 if possible drop your mouse refresh / polling rate. There's a bug in the engine right now. I believe they'll be fixing it in the next release.

I had the same issue, and dropping my polling rate from 1000 to 250 fix my issues enough for me to play.

https://trello.com/c/L9eHJU4q/1562-331-linux-performance-issues-from-build-331

@mute55 and others affected, build 331 updated SDL2 to 2.0.10 and this is the cause of poor performance. (It has been determined to be caused by https://github.com/SDL-mirror/SDL/commit/e40839a7910ffc94595a8344376ae6051253a239) so a current workaround is to navigate to the x64 folder and replace SDL2.dll with one from an older version, for example https://www.libsdl.org/release/SDL2-2.0.4-win32-x64.zip

This issue is fixed on the soon-to-be-released build 332.
There were 3 ways to address the issue:

  • Revert the update and go back to 2.0.4
  • Revert the bad commit and keep 2.0.10
  • Downgrade to the last version before the bad commit

The third option was chosen because it keeps the advantages that motivated the upgrade to 2.0.10 without the maintenance burden of using a custom version of SDL.

There's a new issue with the newer Proton, I experienced it at least in 5.9-GE but it's still present in the official 5.13. After several rounds and map changes I see severe FPS drops, from 160 to 70. r_stats command displays some basic renderer statistics and it seems that the game spends more time in the world update routine (the main game logic I assume), 2-3 ms instead of 0 when FPS is high. On the opposite, when the game has just been started and FPS is good it shows about 1-2 ms waiting for GPU instead. It's a clear case of regression, it's easy to reproduce (100% reproducible) but the biggest issue is the time it requires. I can tell for sure it manifests itself after ~3 map changes and active play but I'm not sure it happens if you just change maps without playing. Could be some sort of a leak from the looks of it.

The game still works fine for hours and multiple rounds and maps changes on Proton 5.0-9, no visible regression. There still might be though but it doesn't affect the gameplay as far as I can tell.

Hello @rkfg, please copy your system information from Steam (Steam -> Help -> System Information) and put it in a gist, then include a link to the gist in this issue report.

Sorry! This is my info from another report a couple of days ago: https://gist.github.com/rkfg/543f2eac2fb0c099a0e3c7f246d7a4fa

Was this page helpful?
0 / 5 - 0 ratings

Related issues

shanefagan picture shanefagan  路  3Comments

AwesamLinux picture AwesamLinux  路  3Comments

ArekPiekarz picture ArekPiekarz  路  3Comments

ghost picture ghost  路  3Comments

AwesamLinux picture AwesamLinux  路  3Comments