FWGS / xash3d-fwgs

Xash3D FWGS engine.
1.53k stars 229 forks source link

Dealing with game libraries on platforms unsupported by GoldSrc #735

Open a1batross opened 2 years ago

a1batross commented 2 years ago

Hello!

You probably noticed by hundreds of closed issues, there are problems for users who get AMD64 or ARM64 engine builds that just useless for them. It's obvious to us that to run, for example Half-Life, user need to compile game libraries for their platform. However, it may be usually not possible for user to do so. They may not be qualified enough, not have compile tools, it's easier for them to just throw the Xash out of the window and do something else, more productive.

The solution is obvious, we need to provide binaries. But let's think about it. By looking at current GitHub Actions configuration and minimizing that list from GoldSrc platforms, we get:

As a first step, I suggest sharing GitHub Actions configuration between the engine and hlsdk-xash3d, just to see what gets broken.

As a second step, we need somehow deliver binaries to users. It must be trusted, reliable and what's more important convenient for users. It's also must be easy to support for us, remember we don't want to increase "technical debt".

cc @nekonomicon @mittorn

mittorn commented 2 years ago

For ilp32 it would be possible to emulate popular game dlls, but it will not work for lp64/llp64 engine

a1batross commented 2 years ago

@mittorn we need solution as simple as AK-47, not it works one way, it doesn't another.

At least, emulation can be added on top later.

mittorn commented 2 years ago

Each mod may be packaged separately in binary repo. We may open link with shell/xdg or even download it automaticly. Android a bit tricky if we use GP because it does not allow downloadable code, but we still may load, not map library to memory and use linker api to link libraries directly until google notice that

RomkaZVO commented 2 years ago

Ты говорил про appimage со всеми либами. Точно не стоит. Уж лучше самому собрать, чем тащить жирноту.

Velaron commented 2 years ago

For android I proposed a launcher for hlsdk which can be easily configured with a single file, or you can generate packages that contain just the libraries that follow some naming convention, e.g. "su.xash.valve", then install those packages and load the libraries directly from those, using the engine itself. I've seen some apps do this but don't know how practical is this. I could write a front-end for Android, which handles this.

TheAwesome98-Real commented 2 years ago

what if we could use wine as a library somehow to run windows gamebinaries on linux and osx