http://store.steampowered.com/app/70/ is available for Mac/Linux now. You can install the Linux server binary, but it won't start from the Steam GUI.
If you try to do so via the command-line it backfalls to Half-Life 1 (player models are barneys, VGUI is broken, ...) because the cl_dlls is Windows-only.
As a huge fan I offer my help to port Natural-Selection 1. Can you publish the source code of the client library?
What about creating a linux shared object .so that "tunnels" the client.dll through it, returning whatever function calls the game needs to the linux binaries?
GISPBattle GorgeJoin Date: 2004-03-20Member: 27460Posts: 873Members, Forum Moderators, Constellation, NS2 Playtester, Squad Five Blue, Squad Five Goldmod
The best way to get your hand on the sourcecode, if its even posible, would be to email Charlie expressing your interests. Some examples of previus work would work wonders aswell.
Have questions about NS2? Need help promoting NS2? Found a bug, or exploit? Or just want to say hi. PM me. UWE server admin, contact me for any imidiate needs. Buy NS2 here - Official stream - NS2HD youtube - Wiki
I don't have a FPS shooter development or GoldSrc modding resume that would impress anyone. My GitHub account will only show that I am an active contributer to http://www.open-ra.org/ Already sent an e-Mail to Flayra and got ignored. Guess they don't care for their HL 1 mod anymore since the development of NS 2 started.
The people at Valve who did the GoldSrc port might help us a little, but they need some kind of an okay from the mod devs. I had a look at the ns mod folder because I thought at first that the missing models/animations indicate path problems only. In fact you already can play NS 1 v3.2 on Linux (and probably Mac, too) it is only insanely glitchy. I found some problems in https://developer.valvesoftware.com/wiki/The_liblist.gam_File_Structure of the NS 3.2 release. Obviously the url_dl is broken because of the numerous website updates, but Charley also inserted a string for the cldll= settings which is a boolean value: should be "1" instead of the name of the dll, but I guess the GoldSrc engine interprets it as true.
According to http://www.winehq.org/docs/winelib-guide/winelib-introduction you need the source code of your Win32 application to compile with WineLib for Unix. I also expect no platform depended source code in the mod's DLL. Well, if Charley lost the code.. I think we are ****, but I can't believe this. They must have stored this in source code management repositories on servers and Natural-Selection was not a 1 man project. How can everybody have lost the code.
I know, I'm talking about creating a native shared object from scratch, that will use winelib to call the functions in client.dll (560 of them...), and then link that new shared object against vgui.so provided with the linux client.
I too have no experience in this, I don't know a whole lot of C or C++ beyond the basic syntax (I can make it work, just takes time, buried in documentation for me to make things happen), just a bit of JavaScript and Python. I had already downloaded the Windows SDK from ModDB before you posted that link, what sorts of patches are in there?
So long as client.dll doesn't call kernel32.dll (It doesn't as far as I can tell) it should be possible.
I have, with that, created a shared object from the dll, edited liblist.gam to include cldlls_linux, but the engine doesn't load it. http://bordersonabsurd.com/ns/cl_dlls.tar.gz
Also, what command did you use to launch NS (albeit broken) from the terminal?
I have, with that, created a shared object from the dll, edited liblist.gam to include cldlls_linux, but the engine doesn't load it. http://bordersonabsurd.com/ns/cl_dlls.tar.gz
It won't work for me, too. Says "could not load library /home/matthias/.local/share/Steam/SteamApps/common/Half-Life/./ns/cl_dlls/client.so" if I try to load the game with client.so copied to cl_dlls folder. This is my liblist.gam:
////////////////////////////
// Natural Selection //
// by Charlie Cleveland //
////////////////////////////
game "Natural Selection"
developer "Unknown Worlds"
developer_url "http://www.unknownworlds.com/ns/"
url_info "http://www.unknownworlds.com/ns/"
url_dl "http://unknownworlds.com/ns/download-files/"
icon "ns"
version "v3.2"
size "165000000"
svonly "0"
secure "0"
cldll "1"
hlversion "1111"
// How to allow training but disable "New game"?
type "multiplayer_only"
// Don't show models in browser
nomodels "1"
nohimodel "1"
// Only show NS-compliant maps
mpentity "info_mapinfo"
// Using HPB_bot support for now
gamedll "dlls\ns.dll"
gamedll_linux "dlls/ns.so"
// Training map
//trainmap "ns_training"
fallback_dir "ns"
My guess is that this is not a real wrapper, but still depended on Wine somehow. Is there anything left to do with those files except copying them to ~/.local/share/Steam/SteamApps/common/Half-Life/ns/cl_dlls/?
Any wrapper will depend on wine/winelib, but only for the game logic, not for the engine. I'm going to do a bit of studying the MPlayer codec loading bits, I doubt I'll understand it, but...
Ignore the .so I posted earlier.
I'm using 64 bit Ubuntu, which has been causing trouble. I set up a 32 bit install last night.
I don't suppose there are any more experienced programmers who care to comment?
I doubt it will work that way: http://forum.winehq.org/viewtopic.php?t=14307#p70330 The winelib solution is extremely ugly. It requires a specific version of wine and it is not stand-alone plus it will be problematic together with GUI and networking. Might be easier to rewrite the cl_dll as it consists only of the VGUI and weapon animation scripts. If we don't replicate it exactly this might not matter.
Ok, well, if we compare ns's client.dll, with the 1.1.1.1 valve client.dll, we can probably determine which functions they share, and wouldn't need to rewrite. Valve's .so depends on
the .dll on:
KERNEL32.dll
USER32.dll
vgui.dll
WSOCK32.dll and
SDL.dll
then, make a client.so that depends on winelib and windows.h
Use LoadLibrary("client.dll") then to call only the functions from ns's client.dll that are specific to, or significantly differ in some way from valve's.
But, as I said, I'm by no means an expert, just an optimist.
If someone could objdump -x the 1.1.1.0 dll, I'd bet the SDL stuff isn't there so really, just need to call the ns specific game functions, I think, unless my understanding of computers is wrong, which it may be.
I guess the first step then would to build a vanilla client.so like it was a new mod.
puzlThe Old FirmJoin Date: 2003-02-26Member: 14029Posts: 4,092Retired Developer, NS1 Playtester, Forum Moderators, Constellationmod
It should be really straight forward to port ns1 to linux. We have previously ported all OS calls to their steam equivalent years ago when we had ns1 installing over steam. I still have ns1 source, but don't have a working build system. I'm very busy at work at the moment, but when things ease up a bit I'll put a build together.
Retired NS1 Developer, currently making myself useful as a forum moderator - message me for any mod related requests.
puzlThe Old FirmJoin Date: 2003-02-26Member: 14029Posts: 4,092Retired Developer, NS1 Playtester, Forum Moderators, Constellationmod
Okay, so I had a quick look at this tonight just to get an idea of what is involved. I tried to build on my ubuntu gaming laptop and had to install a fairly old version of gcc just to get past a few gazillion compile errors due to changes in C++ over the last few versions of gcc.
After that, the build was looking better but I realised fairly quickly that I only archived the main NS source repository and not the tools repository, which contains all our dependent libraries. I disabled some of the ones that aren't really necessary ( Lua??? ) but I can't find the library we used for managing particle systems. FYI, I'm simply trying to rebuild the linux server to start with before I even consider looking at building the linux client. I'm wondering if it will be even possible to do this cleanly. Do any of you know of another HL1 Mod that has realised a client.so since Valve released a native linux client for steam? I'm worried that there are some updates to the SDK that haven't been released to the public yet.
I might send a mail off to some of our old contacts at valve.. but last time we spoke the dinosaurs roamed the earth.. so I doubt they'll even recognise my name.
I guess the other option is to build a clean windows client.dll. NS makes some direct windows32 calls to do some stuff to files and sockets etc, and back when we did the work to get NS on linux we rewrote all that stuff to use the Steam equivalent. I'm guessing that if I rebuild for windows with no direct calls to win32 that you guys will have a lot easier a time getting ns to run in a wrapper.
Retired NS1 Developer, currently making myself useful as a forum moderator - message me for any mod related requests.
Maybe, if we could overload(?) the valve client.dll, that has already presumably replaced those calls with the equivalent Linux ones already.
It looks like they replaced Winsock with libpthreads, and it also looks like you guys used winsock2 (I honestly don't know how significant that is). They also use SDL instead of GDI it appears for both Windows and Linux now.
The whole winelib thing still confuses me a bit, though.
You might get help or at least find the right person to send an e-Mail to on #steamlug at irc.freenode.org
The other possibility I see is you Open Source everything preferably on http://www.github.com so that the community can help fix up the build and whatever else is broken.
There are currently a number of issues with the new halflife client in NS even on windows, so the NS1 community has moved back to the older version. They are still compatible for online play, but they have two different voice codecs so mic support between versions does not work.
Do any of you know of another HL1 Mod that has realised a client.so since Valve released a native linux client for steam? I'm worried that there are some updates to the SDK that haven't been released to the public yet.
I don't think any mods have been released with Linux/Mac support yet.
Apparently an updated SDK will be released once everything is more stable. It didn't say whether this SDK update would include Mac/Linux support but I'd assume it would.
There are currently a number of issues with the new halflife client in NS even on windows, so the NS1 community has moved back to the older version. They are still compatible for online play, but they have two different voice codecs so mic support between versions does not work.
I don't have any issue on NS1, what are these?
In NS1, no matter which class you are, you can feel really powerful and a threat to anyone, while being greatly threatened by anyone at the same time.
In NS2, you just feel crappy against nearly everything, but at the same time, you feel as much crappy when the role are reversed.
This is what fun is about, feeling as an asset to the game, and feeling that you can change something.
I can't make an progress until we resurrect the original NS1 sources from source control. Looking at that repo anyway, it is just HL SDK 2.3, which is years old and doesn't provide anything for building on the new platforms anyway.
Retired NS1 Developer, currently making myself useful as a forum moderator - message me for any mod related requests.
Just dropping a line of encouragement, any effort put towards bringing NS1 to Linux are very much appreciated. I do have some experience porting software (moving C++ code between GCC versions... *shrugs*) and I am sure that there are plenty of others willing to help with testing as well if it can be of any help at a later stage.
Posts
What about creating a linux shared object .so that "tunnels" the client.dll through it, returning whatever function calls the game needs to the linux binaries?
NS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree Awesomeif its even posible, would be to email Charlie expressing your interests. Some examples of previus work would work wonders aswell.Buy NS2 here - Official stream - NS2HD youtube - Wiki
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeI could be wrong though.
NS1&2 Custom Steam Gridview images.
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeMPlayer does something similar with video codecs from win32 dll's using winelib, so I don't see why it's not possible here.
Here's a list of function calls from ns/cl_dlls/client.dll
http://bordersonabsurd.com/ns/Exported Functions List.html
Call the client.dll into a .so and divert the calls from vgui.dll to vgui.so or something.
NS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • 1Disagree Agree AwesomeNS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeAlso, check this out. http://wine-wiki.org/index.php/WineLib#Running_a_Dll
So long as client.dll doesn't call kernel32.dll (It doesn't as far as I can tell) it should be possible.
I have, with that, created a shared object from the dll, edited liblist.gam to include cldlls_linux, but the engine doesn't load it.
http://bordersonabsurd.com/ns/cl_dlls.tar.gz
Also, what command did you use to launch NS (albeit broken) from the terminal?
NS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree AwesomeAccording to the README he added some patches Valve added without releasing a new SDK version and silenced gcc compiler warnings.
Steam has to be running.
according to http://www.reddit.com/r/linux_gaming/comments/17ahm3/how_to_install_and_run_half_life_mods_on_steam/ but you can short it up with
It won't work for me, too. Says "could not load library /home/matthias/.local/share/Steam/SteamApps/common/Half-Life/./ns/cl_dlls/client.so" if I try to load the game with client.so copied to cl_dlls folder. This is my liblist.gam:
My guess is that this is not a real wrapper, but still depended on Wine somehow. Is there anything left to do with those files except copying them to ~/.local/share/Steam/SteamApps/common/Half-Life/ns/cl_dlls/?
- Spam
- Abuse
0 • Disagree Agree AwesomeIgnore the .so I posted earlier.
I'm using 64 bit Ubuntu, which has been causing trouble. I set up a 32 bit install last night.
I don't suppose there are any more experienced programmers who care to comment?
Also, here is the output of '# objdump -x' on valve/cl_dlls/client.[so/dll]
:edit: jjust text files, BTW
http://bordersonabsurd.com/ns/client.dll.lookatme
http://bordersonabsurd.com/ns/client.so.lookatme
It looks like the dll IS linked to kernel32.dll after all...
NS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeKERNEL32.dll
USER32.dll
vgui.dll
WSOCK32.dll and
SDL.dll
then, make a client.so that depends on winelib and windows.h
Use LoadLibrary("client.dll") then to call only the functions from ns's client.dll that are specific to, or significantly differ in some way from valve's.
But, as I said, I'm by no means an expert, just an optimist.
:edit 2:
ns's client.dll depends on:
WINMM.dll Joystick stuff
WS2_32.dll
vgui.dll
KERNEL32.dll
SER32.dll
GDI32.dll
If someone could objdump -x the 1.1.1.0 dll, I'd bet the SDL stuff isn't there so really, just need to call the ns specific game functions, I think, unless my understanding of computers is wrong, which it may be.
I guess the first step then would to build a vanilla client.so like it was a new mod.
NS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeNS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
2 • Disagree Agree 2AwesomeNS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree AwesomeAfter that, the build was looking better but I realised fairly quickly that I only archived the main NS source repository and not the tools repository, which contains all our dependent libraries. I disabled some of the ones that aren't really necessary ( Lua??? ) but I can't find the library we used for managing particle systems. FYI, I'm simply trying to rebuild the linux server to start with before I even consider looking at building the linux client. I'm wondering if it will be even possible to do this cleanly. Do any of you know of another HL1 Mod that has realised a client.so since Valve released a native linux client for steam? I'm worried that there are some updates to the SDK that haven't been released to the public yet.
I might send a mail off to some of our old contacts at valve.. but last time we spoke the dinosaurs roamed the earth.. so I doubt they'll even recognise my name.
I guess the other option is to build a clean windows client.dll. NS makes some direct windows32 calls to do some stuff to files and sockets etc, and back when we did the work to get NS on linux we rewrote all that stuff to use the Steam equivalent. I'm guessing that if I rebuild for windows with no direct calls to win32 that you guys will have a lot easier a time getting ns to run in a wrapper.
- Spam
- Abuse
0 • Disagree Agree AwesomeIt looks like they replaced Winsock with libpthreads, and it also looks like you guys used winsock2 (I honestly don't know how significant that is). They also use SDL instead of GDI it appears for both Windows and Linux now.
The whole winelib thing still confuses me a bit, though.
NS2 Voice Control System
- Spam
- Abuse
0 • Disagree Agree AwesomeThe other possibility I see is you Open Source everything preferably on http://www.github.com so that the community can help fix up the build and whatever else is broken.
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeI don't think any mods have been released with Linux/Mac support yet.
Apparently an updated SDK will be released once everything is more stable. It didn't say whether this SDK update would include Mac/Linux support but I'd assume it would.
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree AwesomeIn NS2, you just feel crappy against nearly everything, but at the same time, you feel as much crappy when the role are reversed.
This is what fun is about, feeling as an asset to the game, and feeling that you can change something.
- Spam
- Abuse
0 • Disagree Agree AwesomeI can't make an progress until we resurrect the original NS1 sources from source control. Looking at that repo anyway, it is just HL SDK 2.3, which is years old and doesn't provide anything for building on the new platforms anyway.
- Spam
- Abuse
0 • Disagree Agree Awesome- Spam
- Abuse
0 • Disagree Agree Awesome