FAF & Steam Deck

0

Hello everyone.

Can anybody tell me step-by-step how you got, if you got, FAF running properly on the Steam Deck?

The game SC:FA runs fine on the Deck (with a couple of proton command line additions), in both, Game Mode & Desktop Mode and I also followed the official Wiki to get FAF client running BUT... No matter what I do, when I actually try to launch a game, I get the "unable to create Direct3D" -error.

I have tried to add /window -mode options and other workarounds after the "%s" in the launch command without success. Also tried different Proton variants & protontricks tweaks (which I think shouldn't even affect since the game does run without FAF).

What I have done so far is I have followed the official wiki mostly to get the FAF client to work:

  1. Install SC:FA and set command line options to prevent the slideshow animations
  2. Run SC:FA with the debug switch to dump the "run" script
  3. Download FAF Client & java
  4. Launched FAF client and configured the game folder and set the launch command to use the run -script
  5. Attempted to host a game, but got error before making it to the lobby

So to summarize:

  1. SC:FA game launches fine and runs in single player mode without any issues (protondb mentions that someone even finished the single player campaign)
  2. The FAF client starts fine and I see running games, chats etc. and I can attempt to start a game
  3. Launching a game ends with a quick flash of the screen and a "Unable to create Direct3d" -error - both in Game Mode and Desktop mode.
0

I think it may be due to this command "d3d_WindowsCursor" which was added as workaround to fix bugs due to nvidia drivers.

My github repo with UI Mods

0

would you mind copy your complete LAUNCH OPTIONS line from Steam here?
We may have a peak at your Command lines from FAF; too.
Here are my commands:
FAF:
gamemoderun /home/frozen_byte/Games/faf/run "%s"
Steam:
PROTON_NO_ESYNC=1 PROTON_NO_FSYNC=1 PROTON_DUMP_DEBUG_COMMANDS=1 gamemoderun %command% /windowed 3840 2160

0

My Steam Deck is not intended to be used for RTS @Sheikah .

"Nerds have a really complicated relationship with change: Change is awesome when WE'RE the ones doing it. As soon as change is coming from outside of us it becomes untrustworthy and it threatens what we think of is the familiar."
– Benno Rice

0

@brutus5000 said in FAF & Steam Deck:

My Steam Deck is not intended to be used for RTS @Sheikah .

😭

0

I’ll be hetting one, eventually Sheikah ping me in 4 months if all goes as planned (October)

I’m a shitty 1k Global. Any balance or gameplay suggestions should be understood or taken as such.

Project Head and current Owner/Manager of SCTA Project

0

@Brutus5000 let me guess... factorio?

My github repo with UI Mods

0

I just finished Thief (2014). Probably Tomb Raider (2013) next. FIFA also works great.

"Nerds have a really complicated relationship with change: Change is awesome when WE'RE the ones doing it. As soon as change is coming from outside of us it becomes untrustworthy and it threatens what we think of is the familiar."
– Benno Rice

0

@brutus5000 said in FAF & Steam Deck:

My Steam Deck is not intended to be used for RTS @Sheikah .

Also not for checking out replays on the go?

Check out my maps here:

Madness 1 - 9

https://forum.faforever.com/topic/480/h-master-s-maps

0

@h-master Now that is sweaty af!

0

@frozen_byte I have tried several combinations but ended up with:

PROTON_NO_ESYNC=1 PROTON_DUMP_DEBUG_COMMANDS=1 %command% /nomovie  /windowed 1900 1000

From your example I tested with the gamemoderun addition, but it didn't change anything.

With this setup you will get black screen on first launch but if you hit enter the profile creation window will pop up. With your options the videos play without problems but either way this doesn't seem to affect the end result.

As for FAF in Steam, I use:

INSTALL4J_JAVA_HOME="/home/deck/.local/share/jdk-latest" %command%

Same here, I tried adding the gamemoderun before the %command% but it did not seem to affect anything.

I did also try to launch FAF from terminal instead of Steam but it made no difference, unsurprisingly.

As for FAF settings, I have the following:

Game Location

/var/run/media/mmcblk0p1/steamapps/common/Supreme Commander Forged Alliance

So the game is sitting on the SD card. I also tried it earlier from the SSD but I didn't get it to work then either.

Command Line Format for Executables

/home/deck/Apps/FAF/run_fa.sh "%s"

I tried adding the gamemoderun here too - no change. Also I have tried moving the /nomovie and /windowed 1900 1000 after the "%s" here in case it was causing problems but that too didn't seem to help.

The ICE adapter window pops up when FAF is trying to launch the game, but I end up with....

109d23d6-bf2b-49ed-bf28-9b56c335a4b0-image.png

As I was writing this and clicking around while the Direct3D popup was still active, I got another window to pop up:

61ab336e-a388-4fe2-811b-7763bc7f2201-image.png

I have no idea if this helps at all.

I also checked the FAF log, but it seems to simply end to:

warning: GAL Exception: file : c:\work\rts\main\code\src\libs\gpggal\DeviceD3D9.cpp(189)
         error: unable to create device
warning: GAL Exception: file : c:\work\rts\main\code\src\libs\gpggal\DeviceD3D9.cpp(189)
         error: unable to create device

Any suggestions I could try?
I take it that you are actually able to run FAF without problems on your Deck?

I have not changed the default proton settings so currently I'm using the default 7.0-3. The Deck itself is on the preview update channel.

0

@balanceslavenoob said in FAF & Steam Deck:

@h-master Now that is sweaty af!

That’s what I thought πŸ™‚

Check out my maps here:

Madness 1 - 9

https://forum.faforever.com/topic/480/h-master-s-maps

0

@tinhammer
Thanks for your informative post.

firstly, but not related to your error:
PROTON_NO_ESYNC should be used with PROTON_NO_FSYNC, so either enable or disable both at the same time.
gamemoderun is an application called gamemode from Feral Interactive, this should not apply to a steamdeck installation. If you are curious, have a look here: https://github.com/FeralInteractive/gamemode

The Problem looks like the compat layer for DirectX 9 is broken somehow.
Have you tried to install the winetricks a second time? protontricks 9420 dlls d3dx9 xact
Otherwise try the WINEDLLOVERRIDES="d3d9=n" trick, as explained in the FAF wiki: https://wiki.faforever.com/en/Linux-Install

Also have you browsed the protonDB thread? You may find some help there: https://www.protondb.com/app/9420

As a last resort, you may try to get the voodoo wrapper running πŸ˜•

0

@frozen_byte said in FAF & Steam Deck:

Sorry, I didn't have time to tinker with this recently so I'm replying a bit late.

firstly, but not related to your error:
PROTON_NO_ESYNC should be used with PROTON_NO_FSYNC, so either enable or disable both at the same time.

Ok, I did try now one more time to add the NO_FSYNC as well, but as you mentioned, it had no effect on the error.

gamemoderun is an application called gamemode from Feral Interactive, this should not apply to a steamdeck installation. If you are curious, have a look here: https://github.com/FeralInteractive/gamemode

Ok, it seems Steam Deck comes with that exact software pre-installed, which is why I had that command as well. I just didn't know it wasn't Steam Deck specific.

The Problem looks like the compat layer for DirectX 9 is broken somehow.
Have you tried to install the winetricks a second time? protontricks 9420 dlls d3dx9 xact

I had tried to play with these before but just in case, I had re-downloaded everything and installed the d3dx9 and xact using protontricks. No change.

Otherwise try the WINEDLLOVERRIDES="d3d9=n" trick, as explained in the FAF wiki: https://wiki.faforever.com/en/Linux-Install

I think this is already the proton default, which is included in the dumped "run" script:

#!/bin/bash
#Run game or given command in environment

cd "/run/media/mmcblk0p1/steamapps/common/Supreme Commander Forged Alliance"
DEF_CMD=("/run/media/mmcblk0p1/steamapps/common/Supreme Commander Forged Alliance/bin/SupremeCommander.exe" "/nomovie" "/windowed" "1900" "1000")
PATH="/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/bin/:/usr/bin:/bin" \
	TERM="xterm" \
	WINEDEBUG="-all" \
	WINEDLLPATH="/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/lib64//wine:/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/lib//wine" \
	LD_LIBRARY_PATH="/home/deck/.local/share/Steam/ubuntu12_64/video/:/home/deck/.local/share/Steam/ubuntu12_32/video/:/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/lib64/:/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/lib/:/usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/aliases:/usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu/aliases" \
	WINEPREFIX="/home/deck/.local/share/Steam/steamapps/compatdata/9420/pfx/" \
	SteamGameId="9420" \
	SteamAppId="9420" \
	WINEDLLOVERRIDES="steam.exe=b;dotnetfx35.exe=b;dotnetfx35setup.exe=b;beclient.dll=b,n;beclient_x64.dll=b,n;d3d11=n;d3d10core=n;d3d9=n;dxgi=n" \
	STEAM_COMPAT_CLIENT_INSTALL_PATH="/home/deck/.local/share/Steam" \
	WINE_LARGE_ADDRESS_AWARE="1" \
	GST_PLUGIN_SYSTEM_PATH_1_0="/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/lib64/gstreamer-1.0:/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/lib/gstreamer-1.0" \
	WINE_GST_REGISTRY_DIR="/home/deck/.local/share/Steam/steamapps/compatdata/9420/gstreamer-1.0/" \
	MEDIACONV_AUDIO_DUMP_FILE="/home/deck/.local/share/Steam/steamapps/shadercache/9420/fozmediav1/audiov2.foz" \
	MEDIACONV_AUDIO_TRANSCODED_FILE="/home/deck/.local/share/Steam/steamapps/shadercache/9420/transcoded_audio.foz" \
	MEDIACONV_VIDEO_DUMP_FILE="/home/deck/.local/share/Steam/steamapps/shadercache/9420/fozmediav1/video.foz" \
	MEDIACONV_VIDEO_TRANSCODED_FILE="/home/deck/.local/share/Steam/steamapps/shadercache/9420/transcoded_video.foz" \
	"/home/deck/.local/share/Steam/steamapps/common/Proton 7.0/dist/bin/wine64" c:\\windows\\system32\\steam.exe "${@:-${DEF_CMD[@]}}"

Also have you browsed the protonDB thread? You may find some help there: https://www.protondb.com/app/9420

Yes, I did mention that I had already checked that page out. The only mentions are that the game is completely playable, which I can also confirm and the only side remark about FAF was: "Didn't try multiplayer, because the multiplayer is dead for this game, only via Forged Alliance Forever client, which is a separate topic to launch on SteamDeck. "

As a last resort, you may try to get the voodoo wrapper running πŸ˜•

I could but I have a feeling I just don't feel motivated enough as I would need to install a bunch of stuff using the OS tools, which in turn means I would need to mount rootfs with write mode to make modifications.

On top of that, all changes will reset on every update so either I would have to opt out of updates or create scripts which will re-install everything back after every update. And finally there is no guarantee it will even help πŸ™‚

Anyway, thanks for the follow-up - I will keep looking for solutions. While this game might not be best played with the Deck's small screen but it runs perfectly fine docked at least on 1080p so it would be really nice to be able to plug the Deck to a dock and start playing vs. boot up my power hungry, old and noisy desktop PC for this.