How to find out if a game is native for sure?
Page: «2/2
  Go to:
Lib-Inst Mar 29
Quoting: CatKiller
Quoting: InstallI checked the depots on steamdb for other games that are native like shadow tactics and overload and I saw some dll files in them. So are these games false claiming that they are native? Unless I am missing something....
You're missing that Unity uses Mono.

what is mono?
Quoting: Install
Quoting: damarrinMyrhan has a much more complete answer above, but basically you should be searching for .exe and .dll files.

Out of curiosity, why do you want to know that so precisely?
Quoting: MyrhanSource engine Linux games are using ToGL. You can still see this in the depots if you search for 'togl' in the files section. Take a look at these two Left 4 Dead 2, and Half Life 2.

Try 'readelf' on the binary, you can try loading up those games and typing 'lsof' and grep it to see if it gets loaded or not. There's also a bunch of command line options for these game you can toy with if stuff is not exposed in the settings. ie. '-vulkan', '-gl'.

I didn't verify any of these, check them out. For instance DOTA 2 has been upgraded to Source 2 engine and is using vulkan now, with openGL support being dropped.

MangoHUD seem to have something to detect DXVk, etc.

I checked the depots on steamdb for other games that are native like shadow tactics and overload and I saw some dll files in them. So are these games false claiming that they are native? Unless I am missing something....

SteamDB is is not very precisely here. I often times saw devs to still re-package some DLLs or even exes out of accident or laziness with their Linux depots even though they weren't used.

Latest incident is Wrath: Aeon of Ruin, which even uses an open source game engine first hand available for Linux called darkplaces engine. Or better of a slightly modified fork of it called darkplaces-wrath. However they offer a true native Linux version bc the engine does but still re-package the entire windows DLLs and exes in their Linux depot. Primarily because there is no dedicated Linux depot but rather a switch of launch options happening.
Like instead running wrath-steam.exe they will launch wrath-steam on Linux.

See here:

 
.../stream/steamapps/common/WRATH> LC_ALL=C ll
total 28848
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  398385 Feb 28 19:21 SDL.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 2509824 Feb 28 19:21 SDL2.dll
drwxr-xr-x. 1 vortexacherontic vortexacherontic     662 Mar 17 17:17 kp1
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  242176 Jan 20 21:10 libcurl-4.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  189256 Jan 20 21:10 libd0_blind_id-0.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  130439 Jan 20 21:10 libd0_rijndael-0.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  562176 Jan 20 21:10 libfreetype-6.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  509691 Jan 20 21:10 libgmp-10.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  640953 Jan 20 21:10 libjpeg-8.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic   46306 Jan 20 21:10 libogg-0.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  231911 Jan 20 21:10 libpng16-16.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  395696 Feb 28 19:21 libsteam_api.so
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  186364 Jan 20 21:10 libvorbis-0.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic   40685 Jan 20 21:10 libvorbisfile-3.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic   59404 Jan 20 21:10 libwinpthread-1.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  268136 Feb 28 19:21 steam_api.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  301928 Feb 28 19:21 steam_api64.dll
-rwxr-xr-x. 1 vortexacherontic vortexacherontic       7 Feb 28 19:21 steam_appid.txt
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 3761952 Mar 13 20:05 wrath-64-glx
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 3381888 Mar 13 20:05 wrath-dedicated
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 3574272 Mar 13 20:05 wrath-dedicated.exe
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 3743968 Mar 13 20:05 wrath-sdl
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 3973120 Mar 13 20:05 wrath-sdl.exe
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  123773 Feb 28 19:21 wrath-steam
-rwxr-xr-x. 1 vortexacherontic vortexacherontic  152064 Mar 13 20:05 wrath-steam.exe
-rwxr-xr-x. 1 vortexacherontic vortexacherontic 3967488 Mar 13 20:05 wrath.exe
-rwxr-xr-x. 1 vortexacherontic vortexacherontic   93720 Jan 20 21:10 zlib1.dll


Point being, neither are SteamDB, ProtonDB and not even PCGamingWiki a reliable source of information. As of now I do not know a reliable way of finding ture natives version except for in fact reading the file headers (which requires you to have access to the files and probably own it by then) and even then you can not be sure bc it might just be a left over or an actual Windows executable run via some kind of wrapper.

I think what we might need it some kind of community funded database to list native linux games and if they are true native or if they do use some sort of wrapper. Or we Linux users start expanding PCGamingWiki to list these information as well. At least it is community driven after all.

Edit: I missed to mention something. Even though native Linux games might use some wrapper they often time, like the native Valve games or in case of eON, do nothing but to translate the Dircet3D shaders to OpenGL or Vulkan. While everything else might probably still be native Linux code.

What however is a clear indicator for example in Earth 2160 the occurrence of the word "Wine" (https://steamdb.info/depot/383398/ search for Wine in the search field) that 100% is not native Linux at all as it is in fact ran with a bundled version of Wine which is a Win32 to POSIX translation layer. Or in layman terms: It translated software written for Windows using Windows interfaces to use the appropriate Linux interfaces while still thinking they run on Windows. Also Wine has it's own DIrect3D to OpenGL translation layer called WineD3D. Just like eON is one.

Last edited by Vortex_Acherontic on 29 March 2024 at 12:52 pm UTC
CatKiller Mar 29
Quoting: Vortex_AcheronticSteamDB is is not very precisely here. I often times saw devs to still re-package some DLLs or even exes out of accident or laziness with their Linux depots even though they weren't used.
You can have Linux-native .exe files. Windward, for example, is properly packaged and depoted, but ships an .exe file for the dedicated server (the client's executable gets an x86 filename extension). Still native. Filenames don't matter. C#/.Net is cross-platform because of Mono.
Quoting: CatKiller
Quoting: Vortex_AcheronticSteamDB is is not very precisely here. I often times saw devs to still re-package some DLLs or even exes out of accident or laziness with their Linux depots even though they weren't used.
You can have Linux-native .exe files. Windward, for example, is properly packaged and depoted, but ships an .exe file for the dedicated server (the client's executable gets an x86 filename extension). Still native. Filenames don't matter. C#/.Net is cross-platform because of Mono.

Yes but the issue remains, there is no clear way to tell if a games does this or not.

Mono is a cross platform C# compiler and runtime for Linux, Windows and MacOS.
DotNET is not. It serves as a C# compiler and runtime solely for Windows.
However .NET Core is in fact a cross-platform C# compile and runtime developed by Microsoft but Regular .NET is not.

But you can perfectly write C# code which does only run on Windows simply by calling OS specific functions or libraries from your C# code or stuff which is only implemented in .NET but not Mono or .NET Core.

Last edited by Vortex_Acherontic on 29 March 2024 at 1:11 pm UTC
CatKiller Mar 29
Quoting: Vortex_AcheronticYes but the issue remains, there is no clear way to tell if a games does this or not.

Mono is a cross platform C# compiler and runtime for Linux, Windows and MacOS.
DotNET is not. It serves as a C# compiler and runtime solely for Windows.
However .NET Core is in fact a cross-platform C# compile and runtime developed by Microsoft but Regular .NET is not.

But you can perfectly write C# code which does only run on Windows simply by calling OS specific functions or libraries from your C# code or stuff which is only implemented in .NET but not Mono or .NET Core.

Which is irrelevant to OP's fear that they're somehow being misled. Including Windows-specific stuff wouldn't make it "non-native," it would just make it not work.
whizse Mar 29
Just to add to the confusion. Adventure Game Studio games sometimes package the entire game, data and all, in one humongous .exe. Linux ports used to be shipped with this .exe, but it was not executed, just read as data.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.