Hi there - my NWN is rusty (but I have been doing a lot of docker work lately):
On the dockerhub page, it mentions that the complete campaign content isn't available in the docker image. So I assume I need to mount that in somehow from my NWN installation (just talking about the standard campaign). Also in the dockerhub page, it lists three folders: modules/ hak/ tlk/
However, I don't see these folders in my vanilla NWN installation ... so maybe I don't need to copy anything to get the standard campaign working?
PS, I think in dockerhub you can create links to the repo with the dockerfile in it - might be handy for people to see what is going.
@Vardamir Did you get this working? I'm hoping to host the normal campaign for my friends. I tried mapping the data folder from my windows install to /nwn/data but got an error saying it was missing the executable. So i tried mapping it to /nwn/data/data but then I got an error "Could not divine nwn base data directory. Have to give up. Make sure you are starting the game with your working directory setto the appropriate platform directory (i.e. /bin/linux-x86)"
Then updated my docker-compose.yml to put the data in the container and update the modulename:
version: '2'
services:
nwn:
image: beamdog/nwserver:latest
container_name: nwn
ports:
- 5121:5121/udp
volumes:
- ~/nwn/server:/nwn/home
- ~/nwn/server/gamedata/data:/nwn/data/data
restart: unless-stopped
environment:
- NWN_PORT=5121
- NWN_MODULE=Chapter1
- NWN_SERVERNAME=My Server Name
Is there a modulename that will do the whole campaign though? Or do I need to swtich from Chapter1 to Chapter2 etc for the rest of the game?
I'm trying to run a test module I made on my Mac's standalone server. The module is in the modules directory, and it is called Test.mod. But when I try to run the server, this is what I get:
big-silver:macos admin$ ./nwserver-macos -module Test
Neverwinter Nights Server
Build:8166
Copyright BioWare Corp 1998-2004
Registering crash signal handlers.
Server: Loading...
Attempting to find game data.
Working Directory For Game Install Is: /nwnee-dedicated-8166
Working Directory For Your Resources Is: /Users/admin/Documents/Neverwinter Nights
Server: Running...
Server: Loading module "Test"
Server: Unable to load module
Server: Exiting...
Select Failure: UDP Thread Exiting...
What am I doing wrong here, and how can I get it to actually load the module? Thanks!
Hello guys! I have a problem with the nwnserver linux executable. I am trying to run the server on Debian 8 64bit environment. After installing a lot of "32bit" stuff (ia32-libs: lib32z1, lib32ncurses5, apt --add-architecture i386 and so on) when I run the ./nwnserver-linux I receive always the same error: "Segmentation fault". Can someone help me with this? Thanks in advance. Luigi.
I was wondering if anyone has tried to stand up a server on Google Cloud Platform? They have a free tier compute instance called f1-micro that I think meets the requirements of the linux server.
I first tried the container optimized instance and was able to get the docker image up and running. It did have some significantly high utilization at idle that seems to come from the container optimization. I just ran the linux image for a few days without anything running and it idles at 40% initially and quickly (after less than an hour) ramps up to 100% utilization. But it was successful at running the nwn server through the docker image and I could log in. Just concerned about lag and capacity.
I decided to try just a base f1-micro instance. It idles with nothing installed at less than 1% so that's good. I downloaded the latest version (nwnee-dedicated-8176.zip) and unzipped to $HOME/nwn. Going to $HOME/nwn/bin/linux-x86 and running ./nwserver-linux I get the following error:
-bash: ./nwserver-linux: No such file or directory
I did check permissions to ensure it's executable and it is:
-rwxr-xr-x 1 user group 4770832 May 31 22:00 nwserver-linux
I also did a file command against it to ensure it's a executable:
nwserver-linux: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=f03a0e4306f9df5c6d733e2f5d99a2f27bd82cd3, stripped
And everything seems correct. I do notice it's dynamically linked and I can't find the ld-linux.so.2 file on the system.
I do just have the server package installed and not the linux client. Reading the top of the thread I do see:
run the binary in bin/platform. It will use the same userdirectory as your client (on linux, that's ~/.local/share/Neverwinter Nights/).
... $HOME/nwn/bin/linux-x86 and running ./nwserver-linux I get the following error:
-bash: ./nwserver-linux: No such file or directory
I did check permissions to ensure it's executable and it is:
-rwxr-xr-x 1 user group 4770832 May 31 22:00 nwserver-linux
I also did a file command against it to ensure it's a executable:
nwserver-linux: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=f03a0e4306f9df5c6d733e2f5d99a2f27bd82cd3, stripped
And everything seems correct. I do notice it's dynamically linked and I can't find the ld-linux.so.2 file on the system. ...
That is the problem ... the "No such file or directory" actually is about the missing /lib/ld-linux.so.2. This is usually the case if you're on an amd64 machine and want to run a 32-bit program without libc6 support for i386. Just doing this for a non-EE non, recently, I had to install libc6-i386 and lib32gcc1 on my ubuntu box.
And everything seems correct. I do notice it's dynamically linked and I can't find the ld-linux.so.2 file on the system. ...
That is the problem ... the "No such file or directory" actually is about the missing /lib/ld-linux.so.2. This is usually the case if you're on an amd64 machine and want to run a 32-bit program without libc6 support for i386. Just doing this for a non-EE non, recently, I had to install libc6-i386 and lib32gcc1 on my ubuntu box.
Thank you for the response. I wasn't sure what library I would need to install to get that included. I will give that a go.
I have a similar situation to what Knight_Shield but his solution isn't working for me. Everything runs well with 8181 but when I upgrade to 8186 I can't start the server. The message is:
./nwserver-linux: /usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./nwserver-linux)
I have a similar situation to what Knight_Shield but his solution isn't working for me. Everything runs well with 8181 but when I upgrade to 8186 I can't start the server. The message is:
./nwserver-linux: /usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./nwserver-linux)
Any ideas or suggestions to try?
For any having this problem, this is how I was able to get the executable to run in 64-bit distro. You should download the following three packages (the first two are from a suggestion a couple posts up, and the third is to solve the error this post quotes):
Thanks for the response consist447. Unfortunately, it didn't work for me so I backed things up and started everything over from the beginning. I'm up and running with the current version now.
So, I'm trying to install onto the latest Raspberry Pi with RaspEX "Ubuntu" OS when the error message "cannot execute binary file" popped up. My research tells me that means I'm hosed -- the Linux version of NWN only runs on i386 architecture, NOT on ARM.
And I was so hoping to stack up a half dozen little Pi computers for a multiple module portals linked NWN universe....
Thank you for your reply. I did put it on a 64 bit and it ran. So the nwserver did run but it did not read the nwnplayer.ini file settings. Any thoughts?
It is using settings.tml now instead of nwnplayer.ini. However, if you're running it from docker, there's an issue where settings.tml is not loaded, and you can work around it with env vars. It should be fixed soon.
For build 8193.7 and greater, including the latest patch(8193.9), the GetName() function doesn't seem to be working with standard default items in the toolset. It does work if the item is custom.
It works fine with build 8193.6.
I would like someone to confirm before I file a bug report.
Set this script as your OnUnAcquireItem Event.
Dropping a standard item will return an empty string, dropping a custom item will return it's name.
So am I remiss in thinking that I can just overwrite my current files, which is from 8193.9 with the ones in the zip (example: server build 8193.5) and run the server in order for the server to run client 8193.5?
I'm trying to let my xbox friend join by hosting an 8193.5 server. He can't see my server and I figured it was because I'm on a newer build?
@niv, any chance you could use a less bleeding edge build system? 8193.13 worked on my opensuse 15.1 system fine. 8193.14 doesn't (I linked around the libsndio6.1 problem).
./nwserver-linux: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./nwserver-linux)
This is one probably requires an OS upgrade. Are you really using features that require a newer glibc?
Edit: Actually it's not even fixable with an OS upgrade since 15.2 is still on 2.26...
Edit2: It looks like libm.so works independently enough from the rest of glibc to be preloaded. At least that makes it run hopefully it'll stay up...
I'm running an older version of Ubuntu Server and I had the same issue with it missing 'libsndio.so.6.1', but after downloading it placing it in the directory, it then said it couldn't find 'libasound.so.2'. Determined to do it the quick, hacky way rather than fix the broken dependencies, I found the file here. After extracting it and placing it in /usr/lib, everything seems to be working.
If you are using the game download of 20.1, run a dedicated server off it, and see issues when hosting a NWSync-enabled game where the server kicks players off with "HAK files missing", please use this download instead. That will address the mentioned issue.
I run my server on Linux with Docker and NWNX:EE. How would I send a message via the server command "say" to all my players? Thanks a lot for your help!
@niv quick question.. my user has a server and wants to add a settings flag found in settings.tml but isn't in the supported NWN_ env vars for the docker container. I tried changing the settings.tml in /nwn/home docker volume but the setting didn't change. Is this expected and if so how do we pass other vars to the server?
Comments
On the dockerhub page, it mentions that the complete campaign content isn't available in the docker image. So I assume I need to mount that in somehow from my NWN installation (just talking about the standard campaign). Also in the dockerhub page, it lists three folders: modules/ hak/ tlk/
However, I don't see these folders in my vanilla NWN installation ... so maybe I don't need to copy anything to get the standard campaign working?
PS, I think in dockerhub you can create links to the repo with the dockerfile in it - might be handy for people to see what is going.
Make sure you are starting the game with your working directory setto the appropriate platform directory (i.e. /bin/linux-x86)"
edit:
I figured out what I needed to do.
First, need to get the game data onto the disk:
sudo docker run -it -v ~/nwn/server/gamedata:/tmp kmallea/steamcmd \ +login mysteamusername mysteampassword mysteamguardcode \ +force_install_dir /tmp \ +app_update 704450 validate \ +quit
Then updated my docker-compose.yml to put the data in the container and update the modulename:
version: '2' services: nwn: image: beamdog/nwserver:latest container_name: nwn ports: - 5121:5121/udp volumes: - ~/nwn/server:/nwn/home - ~/nwn/server/gamedata/data:/nwn/data/data restart: unless-stopped environment: - NWN_PORT=5121 - NWN_MODULE=Chapter1 - NWN_SERVERNAME=My Server Name
Is there a modulename that will do the whole campaign though? Or do I need to swtich from Chapter1 to Chapter2 etc for the rest of the game?
First, need to get the game data onto the disk:
sudo docker run -it -v ~/nwn/server/gamedata:/tmp kmallea/steamcmd \ +login mysteamusername mysteampassword mysteamguardcode \ +force_install_dir /tmp \ +app_update 704450 validate \ +quit
Then updated my docker-compose.yml to put the data in the container and update the modulename:
version: '2' services: nwn: image: beamdog/nwserver:latest container_name: nwn ports: - 5121:5121/udp volumes: - ~/nwn/server:/nwn/home - ~/nwn/server/gamedata/data:/nwn/data/data restart: unless-stopped environment: - NWN_PORT=5121 - NWN_MODULE=Chapter1 - NWN_SERVERNAME=My Server Name
Is there a modulename that will do the whole campaign though? Or do I need to swtich from Chapter1 to Chapter2 etc for the rest of the game?
big-silver:macos admin$ ./nwserver-macos -module Test Neverwinter Nights Server Build:8166 Copyright BioWare Corp 1998-2004 Registering crash signal handlers. Server: Loading... Attempting to find game data. Working Directory For Game Install Is: /nwnee-dedicated-8166 Working Directory For Your Resources Is: /Users/admin/Documents/Neverwinter Nights Server: Running... Server: Loading module "Test" Server: Unable to load module Server: Exiting... Select Failure: UDP Thread Exiting...
What am I doing wrong here, and how can I get it to actually load the module? Thanks!
By the way, if I start the binary with sudo no output is displayed.
I first tried the container optimized instance and was able to get the docker image up and running. It did have some significantly high utilization at idle that seems to come from the container optimization. I just ran the linux image for a few days without anything running and it idles at 40% initially and quickly (after less than an hour) ramps up to 100% utilization. But it was successful at running the nwn server through the docker image and I could log in. Just concerned about lag and capacity.
I decided to try just a base f1-micro instance. It idles with nothing installed at less than 1% so that's good. I downloaded the latest version (nwnee-dedicated-8176.zip) and unzipped to $HOME/nwn. Going to $HOME/nwn/bin/linux-x86 and running ./nwserver-linux I get the following error:
-bash: ./nwserver-linux: No such file or directory
I did check permissions to ensure it's executable and it is:
-rwxr-xr-x 1 user group 4770832 May 31 22:00 nwserver-linux
I also did a file command against it to ensure it's a executable:
nwserver-linux: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=f03a0e4306f9df5c6d733e2f5d99a2f27bd82cd3, stripped
And everything seems correct. I do notice it's dynamically linked and I can't find the ld-linux.so.2 file on the system.
I do just have the server package installed and not the linux client. Reading the top of the thread I do see:
run the binary in bin/platform. It will use the same userdirectory as your client (on linux, that's ~/.local/share/Neverwinter Nights/).
Am I missing a step? Any help is appreciated.
Thanks.
This is usually the case if you're on an amd64 machine and want to run a 32-bit program without libc6 support for i386.
Just doing this for a non-EE non, recently, I had to install libc6-i386 and lib32gcc1 on my ubuntu box.
edit: This worked. Thanks
i386-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found
i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
What fixed mine I think:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
./nwserver-linux: /usr/lib/i386-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./nwserver-linux)
Any ideas or suggestions to try?
apt-get install libc6-i386 lib32gcc1 lib32stdc++6
And I was so hoping to stack up a half dozen little Pi computers for a multiple module portals linked NWN universe....
8186 works like a champ! I have 6 PW instances running on one Docker host w/ zero issues.
Just built the second docker host, thinking about installing Kubernetes.
Is the operating system and PC 64bit? that'd be the first place I look seeing as how the server and game binaries are now all 64bit.
It works fine with build 8193.6.
I would like someone to confirm before I file a bug report.
Set this script as your OnUnAcquireItem Event.
Dropping a standard item will return an empty string, dropping a custom item will return it's name.
This is for the linux version,
void main()
{
object oPC = GetModuleItemLostBy();
object oItem = GetModuleItemLost();
SendMessageToPC(oPC,"ITEM DROPPED:"+GetName(oItem));
}
I'm trying to let my xbox friend join by hosting an 8193.5 server. He can't see my server and I figured it was because I'm on a newer build?
1) Download 'libsndio6.1.so': HERE
2) Take this file and drop it in:
3) Run server and the error should no longer persist.
Thank you to Varenx (on Discord) for the help troubleshooting the issue. Hopefully this assists anyone else hoping to test the Dev nwserver.
./nwserver-linux: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./nwserver-linux)
This is one probably requires an OS upgrade. Are you really using features that require a newer glibc?
Edit: Actually it's not even fixable with an OS upgrade since 15.2 is still on 2.26...
Edit2: It looks like libm.so works independently enough from the rest of glibc to be preloaded. At least that makes it run hopefully it'll stay up...
Thanks,
meaglyn
Thanks