8 ms·
When I think epic: the unreal engine, a concurrent of the steam client (payment and internet distribution). Buildings binaries for distribution on linux OSes re
by sylware 5y ago
When I think epic: the unreal engine, a concurrent of the steam client (payment and internet distribution).
Buildings binaries for distribution on linux OSes requires more experienced and more work than on the other OSes. Being a user of steam games, and as a developer, the following is what I think of, that to maximize compatibily and augment binaries life time:
* Be pure ELF64 (exe and so), which depends only on libdl (static loading) and its 3 symbols (dlopen/dlsym/dlclose). Pure ELF64 means it must not use "main()" but the SYSV ELF ABI entry point (which is actually almost main()...) and use fine grained linking.
* use pthread TLS, and not ELF TLS symbols (do not know if compilers provides "switches" to do that).
* window system: wayland(static code)->x11(xcb libs) fallback.
* 3D, gfx acceleration: vulkan (GL... mmmh... I would drop it) if the binaries are a game or a GUI which _really_ needs some sort of hardware acceleration (CPU with media instructions are seriously fast for 2D).
* input: dynamically load libxkbcommon(wayland) libxkbcommon-x11(x11), that for the client side xkb state machine which is fed with keycode inputs. Joystick support would directly use kernel events and the evdev file protocol.
* sound: dynamically load libasound (pulse and pipewire are hidden behind the alsa api, if ever present since it could be a simple dmix/dsnoop).
Unfortunately, c++ being c++, gcc/clanc/etc c++ runtime must be forked to be libdl-ized (since it is not the case), and all 3rd party libs.
This is significant work, but brutal and supposely ez.
- smoldesu 5y agoThen don't write a Linux-native version. EAC explicitly supports a Wine passthrough mode that Epic wrote themselves. Of course, that would just push users to use Steam's Proton to play the game by Epic, but I don't really buy the "it's too technically hard" bit here. Valve ported all of their games to Linux even though they didn't need to. If Epic can't port a single game that makes them billions of dollars, then I have serious concerns vis-a-vis their development team.