Steam Link

Steam Link

Broken pointer input in AI: The Somnium Files
Apps affected
https://store.steampowered.com/app/948740/AI_The_Somnium_Files/
https://store.steampowered.com/app/1449200/AI_THE_SOMNIUM_FILES_nirvanA_Initiative/

Host environments tested
Steam Machine, Game Mode
Steam Deck, Game Mode

Client environments tested
Steam Link App on Android
Steam Deck, Game Mode

Steps to reproduce
1. Start game
2. (Android app) Enable touchscreen mouse (direct or trackpad)
3. Try to interact with launcher using touchscreen or client-attached mouse (unsuccessfuly, fail #1)
4. Use alternative controls to launch game
5. Get to a point in game were you can interact with elements in a scene using a cursor (point & click style, about 2 min of unskippable cutscene from new game)
Pointer input will not work correctly (if it originates in client; works if pointer device is host-attached or virtual pointer input is generated host-side like Steam Controller trackpads) (fail #2)

How it seems to manifest
"Trackpad" touchscreen mode seems constrained to a region.
Absolute touchscreen mode seems incorrectly transformed.

Workarounds
This problem will not manifest if the launcher window is never streamed during the game session.

I know two methods to do that:

A) Only start streaming after you're in the game proper.

B) Bypass the launcher.
E.g. by using these launch options, for Somnium Files:
args=(%command%) ; exec "${args[@]/Launcher.exe/AI_TheSomniumFiles.exe}" -popupwindow quality=2 window=2 msaa=8 width=1920 height=1080 vsync=1 filtering=1 hint=1
Or Somnium Files 2:
args=(%command%) ; exec "${args[@]/Launcher.exe/AI_TheSomniumFiles2.exe}" -popupwindow quality=1 window=2 msaa=0 width=1920 height=1080 vsync=1 filtering=1 hint=1

If you wish to customize the launch options, use the launcher and then while the game is running, get your parameters with:
readarray -d '' foo <"/proc/$(pgrep -nf "\AI_TheSomniumFiles.?.exe ")/cmdline" ; echo "${foo[@]:1}"


Non-workarounds
Things I tried but didn't help.
  • Restarting the client
  • Switching to another client device

This suggests there's inconsistent state on the host side at play.