Open nickbailuc opened 9 months ago
I'm running through the supported mods list but most of the mods are precompiled for win-x86 and can't open on my daily driver (arm64-linux) I'm guessing due to the fact that the .dll's and .so's have to be compiled for the specific platform.
And what mods you tried to run?
From the hlsdk-portable repo, I tried compiling decay-pc for example, but it didn't generate anything like decay.so only libclient.so and libserver.so. Xash seems to think this is a multiplayer game as the single player options are greyed out. Launching a map through the console spits dlls/decay_arm64.so missing.
Don't use it! It's experimental development branch! Check this list at first.
What is up with all the libraries every mod requires in Half-Life. It seems every HL1 mod is like it's own standalone game just running on the HL1 engine. I thought mods, especially for older games, are mostly static assets that don't contain much functional code that requires compilation (I'm thinking of S.T.A.L.K.E.R. mods in this case for example).
Half-Life based on Quake Engine, Valve just removed virtual Machine for Quake C, and made game logic on C++. S.T.A.L.K.E.R. uses lua for mods. Also, some people just don't want to show code and many scripting languages has shitty syntax.
Why do HL mods require this extra step, is it some weird design choice Valve made with their engine? I don't even fully understand why these libraries are needed besides the basics explained in GoldSrc Wikis that menu options require them. Something like Blue Shift for example (which works perfectly thanks to hlsdk-portable), is essentially new maps and slightly changed weapon animations. Maybe the in-game cutscenes require something extra, but why does Blue Shift for example require its own set of compiled libraries?
Client library has hud and external model renderer, server library has game logic + all this libraries has weapons code. Blue Shift has new logic with new entities.
And what mods you tried to run? I tried decay, they hunger, azure sheep.
For example They Hunger, I got the Trilogy crossplatform from moddb, compiled they branch from hlsdk-portable which gave me client_arm64.so
and hl_arm64.so
, put those in cl_dlls
and dlls
respectively. Launch in Xash, the Single Player options are completely greyed out, cant start a new game or save/load. Trying to launch any map from console gives me
Failed to find library dlls/einar_arm64.so
The original einar.so
does exist in dlls
, but the hlsdk branch did not compile this library. From our previous talk from what I understood, this library is for starting an online server, however this error appears from just trying to load a map from the console. I thought maybe anytime you start a single player game in Xash (or in GoldSrc) it's essentially like starting a server, but regular HL1 in Xash doesn't seem to do this (if I put map c1a0
in the console, it doesn't start a LAN game).
For Decay, you're saying it's experimental (I've heard this before) but your link to Wiki/Mods only points to that same branch in hlsdk. Decay only compiled libclient.so
and libserver.so
and yet same issue single player options greyed out, and can't start any server Internet or LAN.
I'd like to point out that Half-Life, bshift, oppfor all run perfectly on my platform both single player and multiplayer (where applicable) after compiling Xash and their respective hlsdk branches.
For example They Hunger, I got the Trilogy crossplatform from moddb, compiled they branch from hlsdk-portable which gave me client_arm64.so and hl_arm64.so, put those in cl_dlls and dlls respectively. Launch in Xash, the Single Player options are completely greyed out, cant start a new game or save/load. Trying to launch any map from console gives me Failed to find library dlls/einar_arm64.so
Do you use cmake to compile this libraries?
Do you use cmake to compile this libraries?
yes, exactly as the instructions say (but without all the steam chroot stuff, just the cmake configure and build parts.
-Actually for They HUnger I used waf
because it was available in the branch
waf scripts was not updated in mod branches. I recommend to use cmake for hlsdk. And waf needed for engine builds on specific platforms at first.
waf scripts was not updated in mod branches. I recommend to use cmake for hlsdk. And waf needed for engine builds on specific platforms at first.
My god I just compiled it with cmake, they hunger worked (seems starting a new game from start or chapter 3 works)
I didn't know about this list you linked under the Wiki, I always refereed to the 2 mod lists under the Xash repo
So could this list be considered the one to use for non-x86 platforms? The one on xash3d-fwgs/Documentation just says dump the folder and launch with -game
which I'm guessing can only be used on Windows because the mod's dll's are compiled (usually) only with Windows as a target
So could this list be considered the one to use for non-x86 platforms?
Yes.
The one on xash3d-fwgs/Documentation just says dump the folder and launch with -game which I'm guessing can only be used on Windows because the mod's dll's are compiled (usually) only with Windows as a target
If mod uses original half-life libraries then you need to have native libraries for your platform in valve
folder or copy-and-paste this libraries to mod folder and rename if needed(or you can even remove cl_dlls and dlls folders if exists).
If mod uses opposing force libraries you need copy-and-paste opposing force libraries compiled for your platform in mod folder.
If mod uses spirit of half-life libraries you need copy-and-paste spirit of half-life libraries compiled for your platform in mod folder.
And you can change mod in-game via custom game
menu option.
Not rocket science.
Not rocket science.
it certainly is rocket science if you have 15 different instructions for compilation, and the project declares its moving to waf
but then pulls the rug by not updating the waf
files.
All of this could be avoided with up to date documentation, that's all that's needed. Explain the dlls and cl_dlls,add a 3rd instruction to the compilation commands to separate the compiled files from the rest of the mess like xash3d-fwgs
does so we dont have to find .
for every .so
that it compiled and manually copy each file, and guess if I have to rename it by adding the lib
prefix or _arm64
suffix.
it certainly is rocket science if you have 15 different instructions for compilation, and the project declares its moving to waf but then pulls the rug by not updating the waf files.
https://github.com/FWGS/hlsdk-portable/issues/105
And I do not maintain waf scripts anyway.
and guess if I have to rename it by adding the lib prefix or _arm64 suffix.
lib
prefix must exists only for android.
Is it possible to create a list of mods that may work on non-Windows x86 platforms?
I'm running through the supported mods list but most of the mods are precompiled for win-x86 and can't open on my daily driver (arm64-linux) I'm guessing due to the fact that the
.dll
's and.so
's have to be compiled for the specific platform.I haven't had much luck with the opensource mods list either. The links seem to be just an archive dump of C and C++ files. I wasn't able to compile them properly or make a Makefile.
From the
hlsdk-portable
repo, I tried compilingdecay-pc
for example, but it didn't generate anything likedecay.so
onlylibclient.so
andlibserver.so
. Xash seems to think this is a multiplayer game as the single player options are greyed out. Launching a map through the console spitsdlls/decay_arm64.so
missing.How does one normally go about launching a mod on platforms like the PSVita or NSwitch?
P.S. Serious Question What is up with all the libraries every mod requires in Half-Life. It seems every HL1 mod is like it's own standalone game just running on the HL1 engine. I thought mods, especially for older games, are mostly static assets that don't contain much functional code that requires compilation (I'm thinking of S.T.A.L.K.E.R. mods in this case for example).
Why do HL mods require this extra step, is it some weird design choice Valve made with their engine? I don't even fully understand why these libraries are needed besides the basics explained in GoldSrc Wikis that menu options require them. Something like Blue Shift for example (which works perfectly thanks to
hlsdk-portable
), is essentially new maps and slightly changed weapon animations. Maybe the in-game cutscenes require something extra, but why does Blue Shift for example require its own set of compiled libraries?