I know Proton has to fool the windows binary to some degree to make it think it is just running on windows, but I wonder if it is possible for a game developer to offer a “Played this game on a steam deck / steam machine”, or less specifically, “under SteamOS / Proton”, achievement without resorting to a separate Linux binary?
Check for the existence of Z:/etc/os-release and parse it
Check for the steamDeck environment variables set by Steam
Check that the current account’s username is “deck”
Use assembly to directly perform a Linux syscall that would crash the application on Windows but not on Linux.
It still can’t guarantee that the system is a Steam Deck, but combining all the above is reliable enough to that it would be easier to write an assembly patch for the game than to spoof all of those checks to pass.
That being said: any developer who adds an achievement just for playing on a specific piece of hardware deserves to be kicked in the groin.
I know Proton has to fool the windows binary to some degree to make it think it is just running on windows
That’s phrased a bit more adversarily than warranted. The game isn’t trying to only run on Windows and Proton isn’t trying to trick it; the game just uses Windows APIs and Proton reimplements them for Linux. It isn’t like circumventing DRM or anticheat or something like that.
I know Proton has to fool the windows binary to some degree to make it think it is just running on windows, but I wonder if it is possible for a game developer to offer a “Played this game on a steam deck / steam machine”, or less specifically, “under SteamOS / Proton”, achievement without resorting to a separate Linux binary?
Z:/etc/os-releaseand parse itsteamDeckenvironment variables set by SteamIt still can’t guarantee that the system is a Steam Deck, but combining all the above is reliable enough to that it would be easier to write an assembly patch for the game than to spoof all of those checks to pass.
That being said: any developer who adds an achievement just for playing on a specific piece of hardware deserves to be kicked in the groin.
7000 achievements available, one for each specific RAM kit. 6344 of these achievements earned by 0 people.
Achievement: kicked developer in the groin.
That’s phrased a bit more adversarily than warranted. The game isn’t trying to only run on Windows and Proton isn’t trying to trick it; the game just uses Windows APIs and Proton reimplements them for Linux. It isn’t like circumventing DRM or anticheat or something like that.