To je normální. Jediné stabilní ABI v Linuxu je Win32. Autoři hry vytvoří Linux build, ale ten v Linuxu o 2 roky novějším pak už nefunguje. Autoři už nemají sílu tohle řešit pro 2-4 % uživatelů, když sám Valve doporučuje nechat to na Protonu, kde oni se sami starají o změny v linuxovém prostředí, a takto nad tím mají kontrolu. Stejná situace BeamNG, Linux binárka segfault už asi na nějaké knihovně, už při startu. Windows verze běží přes WINE/Proton dobře, akorát nefunguje fullscreen (mohl bych obejít dočasným zmenšením rozlišení v Linux ploše).
Jenže ten runtime (různé verze, obvykle podle LTS verzí Ubuntu) je právě zakonzervovaný starý Linux. Ten už na nový počítač nenainstalujete (ovladače, staré knihovny, starý prohlížeč, ...), pokud to chcete napřímo. Když hra používá tento Steam-specific runtime, tak už to není moc rozdíl proti použití Protonu. A vůbec to neřeší přímý běh linuxových verzí her (bez Steamu).
Proton je neúplná napodobenina windows api vzniknutá reverse engineeringom. Steam runtime je štandardné api linuxu pre steam.
Štandard na multiplatformné hry bez steamu je SDL. Nie je de iure, ale de facto. Má potom podporu platforiem, na ktorých je SDL, čo je viac platforiem, než proton.
Problem mini thiefa je, že je windows first. V opise je directx 11. Takže sami tvorci si takto obmedzili platformy. Predpokladám, že linux verzia bola robená cez winelib, čo je už skoro proton, takže to je jedno.
>>> Super, ale ve Windows se nainstalují ty redistributables (MSVC++ standardní knihovny, různé verze) automaticky, jen odklikám Next. Natož abych vytvářil link pro jiný (starší) název knihovny.
Vo windows tiež je treba robiť rôzne patche, aby staršie hry bežali. Prelinkovanie knižnice je oproti tomu minimum. V tomto je super GOG, že staré hry udržiavajú a rovno všetky tie patche pridajú. (Čo zas nie je dobré pre retrogaming, ale nemôže byť všetko naraz)
To neni pravda, Linux ma velmi stabilni ABI. Ja na x8664 6.6 kernelu provozuji programator puvodne vyvinuty pro i386 2.4 a normalne funguje. Podle me vam to nefungovalo, protoze jste pouzil spatnou verzi nejake externi knihovny, coz s Linuxem nema nic spolecneho a stejny problem by s tou knihovnou byl na jakemkoliv jinem systemu.
Tak 32bitový Windows (podpora zbývá ještě rok pro Desítky) umí i 16bit aplikace z Windows 3.x. Pro 64bitový Windows je emulátor NTVDMx64 (narozdíl od DOSBox nebo virtualizace okna aplikace se prolínají s host systémem, stejně tak soubory na disku). Ta nekompatibilní "knihovna" v mé tehdejší hře bylo C++ (libstdc++.so.5). A moderní zdroj problémů je zas přechod z X11 na Wayland (ten třeba roky neuměl relativní pohyb myši, nutný např. pro first person shooter hry).
20. 1. 2025, 00:05 editováno autorem komentáře
Vetsina aplikaci ve Windows si spolu vlaci i vsechny knihovny, aby se problemum s kompatibilitou vyhnula. Za cenu duplikace knihoven a rezignaci na opravy bezpecnostnich problemu v nich. Nic vam ale nebrani si stejne nainstalovat aplikaci i v Linuxu a poustet tak klidne i 20 let stary program.
Plna kompatibilita 32-bit Windows s Windows 3.x nebyla nikdy zajistena. Sam si pamatuji Win 3x GUI k simulatoru MIPS cpu, ktere uz pod Win XP nefungovalo, nicmene s Wine na Linuxu pracovalo bezproblemu.
Linux aplikace ale už taky přešly na model "vláčet si všechno s sebou". Zastaralý a neúplný seznam aplikací v repozitáři byl dlouhodobě neúnosný. Jenže ve Windows ty přibalené knihovny fungují i po letech, protože se nezměnilo ABI Windows. Zatímco třeba u SDL hry řeším environmentální proměnnou pro vynucení Wayland codepath, protože kód tehdejšího SDL je v pořádku, ale desktopová prostředí měla zabugovaný Wayland ještě víc nez dnes.
20. 1. 2025, 08:53 editováno autorem komentáře
To, o cem pisete neni ABI Linuxu. SDL je multiplatformni knihovna, ktera se pouziva vsude. Vemte si dnesni jadro a puste ho se starym userspace. Tim otestujete kompatibility Linuxoveho ABI. Treba Debian Lenny, ktery se distribuoval s 2.6.26, mi funguje s 6.12. Vim to, protoze mam devboard, kterej ma od vendora image zalozene na Lenny, ale ja tam aktualizuju kernel, protoze ten board pouzivam k udrzbe ovladace.
SDL interně volá API systému, které se mění. Např novější knihovny na práci s myší (přesnější pohyb na touchpadu - menší lag a jemně skrolování).
Samozřejmě jde udělat aplikaci s minimem závislostí. I standardní knihovna C/C++ jde zakompilovat do app. Extrémem je komunikace přímo s jádrem (a že taková řešení existují).
20. 1. 2025, 11:29 editováno autorem komentáře