FakeFishGames / Barotrauma

A 2D online multiplayer game taking place in a submarine travelling through the icy depths of Jupiter's moon Europa.
http://www.barotraumagame.com/
1.77k stars 409 forks source link

Dedicated Server not showing in Server List #4089

Open daemocles opened 4 years ago

daemocles commented 4 years ago

Description I am hosting a Dedicated Server using Lidgren networking

After launching the server, it isn't listed in the server browser I am "sometimes" able to join the server anyways with the Direct Join option (when using the public IP) However, I am always able to join the server when I Direct Join using the internal IP

Version Barotrauma Dedicated Server 0.10.5.1 (ReleaseLinux, branch release, revision 9e259b2148) ServerOS: Ubuntu 18.04.5 LTS ClientOS: Windows 10 Home

Additional information Here is the callstack of the Barotrauma Server after launching...

root@164d15bd1a37:~/.steam/SteamApps/common/Barotrauma Dedicated Server# ./DedicatedServer
Barotrauma Dedicated Server 0.10.5.1 (ReleaseLinux, branch release, revision 9e259b2148)
Loading game settings
Loading MD5 hash cache
Initializing SteamManager
Initializing GameAnalytics
Initializing GameScreen
Loaded languages: English, German, French, Russian, Polish, Brazilian Portuguese, Castilian Spanish, Latinamerican Spanish, Simplified Chinese, Traditional Chinese, Japanese, Turkish, Korean
dlopen failed trying to load:                                                   steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/root/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')
CAppInfoCacheReadFromDiskThread took 1 milliseconds to initialize
RecordSteamInterfaceCreation (PID 11): SteamGameServer013 /
RecordSteamInterfaceCreation (PID 11): SteamUtils009 /
Setting breakpad minidump AppID = 602960
RecordSteamInterfaceCreation (PID 11): SteamGameServer013 /
RecordSteamInterfaceCreation (PID 11): SteamUtils009 /
RecordSteamInterfaceCreation (PID 11): SteamNetworking006 /
RecordSteamInterfaceCreation (PID 11): SteamGameServerStats001 /
RecordSteamInterfaceCreation (PID 11): STEAMINVENTORY_INTERFACE_V003 /
RecordSteamInterfaceCreation (PID 11): STEAMUGC_INTERFACE_VERSION014 /
RecordSteamInterfaceCreation (PID 11): STEAMAPPS_INTERFACE_VERSION008 /
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils003 before SteamAPI_Init succeeded.
RecordSteamInterfaceCreation (PID 11): SteamNetworkingUtils003 /
RecordSteamInterfaceCreation (PID 11): SteamNetworkingSockets008 /
Warning: failed to set thread priority: set failed for 8: -1: setpriority() failed
Warning: failed to set thread priority: set failed for priority 8
Warning: support for elevated priorities is most likely unavailable, suppressing future warnings
CApplicationManagerPopulateThread took 118 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
Loaded languages: English, German, French, Russian, Polish, Brazilian Portuguese, Castilian Spanish, Latinamerican Spanish, Simplified Chinese, Traditional Chinese, Japanese, Turkish, Korean
Selected sub: Azimuth
Selected shuttle: Selkie
[10/15/2020 18:17:29]
  Starting the server...
[10/15/2020 18:17:29]
  Using Lidgren networking. Manual port forwarding may be required. If players cannot connect to the server, you may want to use the in-game hosting menu (which uses SteamP2P networking and does not require port forwarding).                
[10/15/2020 18:17:30]
  Server started

I noticed that S_API FAIL error but am not sure if that is the cause, or how to fix

daemocles commented 4 years ago

I have been able to reproduce this error on my Linux Server (Ubuntu 16.04.6 LTS) via docker As always, make sure the correct ports are forwarded

Steps to Reproduce

  1. Install docker if you don't have it, and pull the latest steamcmd image:

    apt install docker
    docker pull steamcmd/steamcmd
  2. Create the docker container

    docker run --entrypoint /bin/bash -p 27015:27015/udp -p 27016:27016/udp -p 27060:27060/tcp -it steamcmd/steamcmd:latest
  3. Update container repositories and download necessary packages For me, I had to install the libsdl2 package for the Dedicated Server to work. Install whatever text editor you want, I picked vim

    apt-get update
    apt install vim -y
    apt install libsdl2-2.0-0:i386 -y
  4. Download Dedicated Barotrauma Server

    steamcmd +login anonymous +force_install_dir /data +app_update 1026340 validate +quit
  5. Link steamclient.so to ~/.steam/sdk64 Barotrauma won't be able to find this file unless we link it to this directory

    mkdir ~/.steam/sdk64
    ln -s ~/.steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
  6. Edit DedicatedServer.runtimeconfig.json System.Globalization.Invariant Barotrauma complains unless we add a few lines to DedicatedServer.runtimeconfig.json DedicatedServer.runtime.json.txt

  7. Edit server settings Most importantly we want to edit public="true" Also edit the name so you know which server is yours serversettings.xml.txt

  8. Run server /data/DedicatedServer

  9. From another computer, open a Barotrauma Client and find that the Dedicated Server isn't in the Server list. Attempt to Direct Join via local IP if server is within your local network to test if the server is online Attempt to Direct Join via pulblic IP until you are able to get in

mygamingaccount commented 4 years ago

I could not reproduce this issue.

I created my own image with the Dockerfile I brewed up:

FROM cm2network/steamcmd:root

ENV STEAMAPPID 1026340
ENV STEAMAPPDIR /home/steam/bds

RUN set -x \
        && apt-get update \
        && apt-get install -y --no-install-recommends --no-install-suggests libicu-dev libsdl2-2.0-0 \
        && mkdir $STEAMAPPDIR \
        && chown -R $USER:$USER $STEAMAPPDIR

USER steam
WORKDIR $STEAMAPPDIR
VOLUME  $STEAMAPPDIR

ENTRYPOINT ${STEAMCMDDIR}/steamcmd.sh \
  +login anonymous +force_install_dir ${STEAMAPPDIR} +app_update ${STEAMAPPID} +quit \
  && ${STEAMAPPDIR}/DedicatedServer

EXPOSE 27015/udp 27016/udp

And ran the server by running docker run -it -p27015:27015/udp -p27016:27016/udp <image_name>

Once it started up, it appeared in the server browser.

edit: I also edited the serversettings.xml to switch on the public setting

ajioe1111 commented 3 years ago

I run a dedicated server on my computer. Does not appear in the server list. Ports are forwarded. You can connect via direct connection.

Same problem.

JoneKone commented 2 years ago

We have the same issue, we run 2 different servers 2 sets of ports, one of the server might show on server listing with a ? in ping and the other doesn't show.

Our workaround is to bind them to different IP addresses, this is done with a custom modification (irrelevant to the issue maybe?)

We only have 2 IP's on our Dedicated server and would like to run more than 1 server per IP.

(Debian 9.x)

mrmangoz commented 2 years ago

I have the same issue, running Ach Linux 5.18.16, my output is:

Barotrauma Dedicated Server 0.18.15.0 (ReleaseLinux, branch release, revision a7b22109e9)
Loading game settings
Loading MD5 hash cache
Initializing SteamManager
Initializing GameScreen
Selected sub: Azimuth
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/ciaran/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')
CAppInfoCacheReadFromDiskThread took 3 milliseconds to initialize
Setting breakpad minidump AppID = 602960
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils003 before SteamAPI_Init succeeded.
Selected shuttle: Hemulen
[08/07/2022 22:26:35]
  Starting the server...
[08/07/2022 22:26:35]
  Using Lidgren networking. Manual port forwarding may be required. If players cannot connect to the server, you may want to use the in-game hosting menu (which uses SteamP2P networking and does not require port forwarding).

[08/07/2022 22:26:35]
  Server started
mrmangoz commented 2 years ago

I have the same issue, running Ach Linux 5.18.16, my output is:

Barotrauma Dedicated Server 0.18.15.0 (ReleaseLinux, branch release, revision a7b22109e9)
Loading game settings
Loading MD5 hash cache
Initializing SteamManager
Initializing GameScreen
Selected sub: Azimuth
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/ciaran/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')
CAppInfoCacheReadFromDiskThread took 3 milliseconds to initialize
Setting breakpad minidump AppID = 602960
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils003 before SteamAPI_Init succeeded.
Selected shuttle: Hemulen
[08/07/2022 22:26:35]
  Starting the server...
[08/07/2022 22:26:35]
  Using Lidgren networking. Manual port forwarding may be required. If players cannot connect to the server, you may want to use the in-game hosting menu (which uses SteamP2P networking and does not require port forwarding).

[08/07/2022 22:26:35]
  Server started

If anyone is still having this issue, turns out it was just a port forwarding issue - mistakenly didn't open the query port. Not a problem with the server on my side...

Tsunder commented 2 years ago

Still happening, on both remote servers and local machines (windows 10) - reports of servers not being in the server list for some people (maybe about 1/5 people?), but being in the list for the rest. (joinable via IP.)

Could try comparing with in-game client launched server?

KagurazakaNyaa commented 1 year ago

Same problem occurs in version 1.0

https://github.com/KagurazakaNyaa/barotrauma-docker

I can connect directly via IP+port number, but I can't see it in the server list

version: "3"
services:
  dedicated-server:
    image: kagurazakanyaa/barotrauma
    restart: unless-stopped
    ports:
      - "27030:27030/udp"
      - "27031:27031/udp"
    volumes:
      - "./data:/data"
    environment:
      - SERVER_NAME=<redacted>
      - PASSWORD=<redacted>
      - OWNER_STEAMNAME=<redacted>
      - OWNER_STEAMID=<redacted>
      - MAX_PLAYERS=10
      - GAME_PORT=27015
      - QUERY_PORT=27016
      - IS_PUBLIC=true
      - LANGUAGE=Simplified Chinese
AtFreezingPoint commented 1 year ago

Still happening. @Regalis11 please make this high priority, I'll be trying to contribute as i experiment with this situation a bit more.

Trump-ster commented 1 year ago

@Regalis11 I'm trying to launch my server and have everything working, but it's still not showing up on the Server Browser. Can only join via direct connect. Dedicated server hosted on an enterprise-grade Ubuntu system.

I've opened holes in firewall for relevant ports, then tried disabling the firewall, so it's not a firewall issue. public="true" in serversettings.xml

I have no idea what's causing this. One clue though, on the picture on the top left, where you get the "Serious" or "Casual" image etc... It says private, in a blue box.

Regalis11 commented 1 year ago

@Trump-ster I think the issue in your case is that the setting should be "ispublic", not "public".

AtFreezingPoint commented 1 year ago

@Trump-ster I think the issue in your case is that the setting should be "ispublic", not "public".

Hey, we've been a bit not-doing Barotrauma for a while now though i can indeed confirm that it was not due to that. PS: I'm with Trumpster.

Jasontti commented 1 year ago

Could not get server to show up in browser, Debian 11. Upnp works and service is added to router ok.

This could be issue on ISP side, need to test on external machine.

BigDeeZKnutz commented 11 months ago

Server Info: Server type: Dedicated OS: Ubuntu 22.04.3 LTS Host network: Ports open 27005-27100 UDP + TCP UFW: Ports open 27005-27100 UDP + TCP IsPublic = true GamePort: 27016 QueryPort: 27017 Game Ver: 1.2.7.0

Barotrauma Debuging
=================================
Distro:          Ubuntu 22.04.3 LTS
Architecture:    x86_64
Kernel:          6.2.0-39-generic
Hostname:        Ubuntu-2004-focal-64-minimal-hwe
tmux:            3.2a
Avg Load:        0.25, 0.17, 0.13
Free Memory:     61GB
Free Disk:       819G
glibc required: 2.17
Game Server IP: 0.0.0.0:27016
Internet IP:    externalip:27016
Server password:        NOT SET
Start parameters:
 ./DedicatedServer.exe

Use debug for identifying server issues only!
Press CTRL+c to drop out of debug mode.
Warning! If btserver is already running it will be stopped.
[ INFO ] Debuging btserver: Stopping any running servers
[ INFO ] Stopping btserver: Title is already stopped
[  OK  ] Debuging btserver: Starting debug
Barotrauma Dedicated Server 1.2.7.0 (ReleaseLinux, branch release/winter-update-hotfix-1, revision db76a66fce)
Loading game settings
Initializing SteamManager
Initializing GameScreen
[S_API] SteamAPI_Init(): Loaded local 'steamclient.so' OK.
CAppInfoCacheReadFromDiskThread took 2 milliseconds to initialize
dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
Setting breakpad minidump AppID = 602960
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  ID [API loaded no]
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
Selected sub: Azimuth
Selected shuttle: Hemulen
[12/28/2023 23:37:32]
  Starting the server...
[12/28/2023 23:37:32]
  Using Lidgren networking. Manual port forwarding may be required. If players cannot connect to the server, you may want to use the in-game hosting menu (which uses SteamP2P networking and does not require port forwarding).
[12/28/2023 23:37:33]
  Server started
[12/29/2023 00:00:49]
  Dave has joined the server.

if I run default ports it works, problem is I run other source servers on my dedicated server machine hosted with a company and specifically 27015 and 27005 is in use (this game allows binding of multiple ports from the same IP and lists them in the browsers no problem and works as intended)

If I disable firewall rules and run htop i can verify the server software is running plus it running in LinuxGSM debug mode in ssh window. While in this state it does not show up in the server list nor does it let me direct connect.

When i enable the firewall rules then the behaviour is it allows me to direct connect but still does not appear in the server list, when checking recent it appears but its ping isnt listed asif its not online.

Its almost asif on my server if i run anything other than 27015 computer says "no" maybe a clientside bug/issue I will try keeping query port as 27016 but try game port as 27017 and update this post with result.

Update: The server appears in the list with port 27016 set as query port so it appears the port has to be that for the query which is fine, but unable to connect via the browser or direct connect now i tried 27017,27020,27050 for game port all the same result.

Set to port 27015 and left my other server running to see if it would failover and then work but instead got this error


[ INFO ] Debuging btserver: Stopping any running servers
[ INFO ] Stopping btserver: Pragmatic Servers - Campaign Day 1 is already stoppe
[  OK  ] Debuging btserver: Starting debug
Barotrauma Dedicated Server 1.2.7.0 (ReleaseLinux, branch release/winter-update-
Loading game settings
Initializing SteamManager
Initializing GameScreen
Barotrauma Dedicated Server crash report (generated on 12/29/2023 04:56:15)

Barotrauma seems to have crashed. Sorry for the inconvenience!

Game version 1.2.7.0 (ReleaseLinux, branch release/winter-update-hotfix-1, revis
Language: English
Selected content packages: Vanilla (1F10678)
Level seed: no level loaded
Loaded submarine: None
Selected screen: None
Server (Round hadn't been started)

System info:
    Operating system: Unix 6.2.0.39 64 bit

Exception: Address already in use (System.Net.Sockets.SocketException)
Target site: Void UpdateStatusAfterSocketErrorAndThrowException(System.Net.Socke
Stack trace:
   at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(So
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at Lidgren.Network.NetPeer.BindSocket(Boolean reBind) in <DEV>\Libraries\Lidg
   at Lidgren.Network.NetPeer.InitializeNetwork() in <DEV>\Libraries\Lidgren.Net
   at Lidgren.Network.NetPeer.Start() in <DEV>\Libraries\Lidgren.Network\NetPeer
   at Barotrauma.Networking.LidgrenServerPeer.Start() in <DEV>\Barotrauma\Barotrcs:line 60
   at Barotrauma.Networking.GameServer.StartServer() in <DEV>\Barotrauma\Barotra
   at Barotrauma.GameMain.StartServer() in <DEV>\Barotrauma\BarotraumaServer\Ser
   at Barotrauma.GameMain.Run() in <DEV>\Barotrauma\BarotraumaServer\ServerSourc
   at Barotrauma.Program.Main(String[] args) in <DEV>\Barotrauma\BarotraumaServe

Last debug messages:
   12/29/2023 04:56:15 - [12/29/2023 04:56:15]
  Saving banlist
   12/29/2023 04:56:15 - [12/29/2023 04:56:15]
  Using Lidgren networking. Manual port forwarding may be required. If players cich uses SteamP2P networking and does not require port forwarding).
   12/29/2023 04:56:15 - [12/29/2023 04:56:15]
  Starting the server...
   12/29/2023 04:56:15 - Selected shuttle: Hemulen
A crash report("servercrashreport.log") was saved in the root folder of the gamedisabled, but if you'd like to help fix this bug, you may post it on Barotrauma'led exception. System.Net.Sockets.SocketException (98): Address already in use
   at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(So
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at Lidgren.Network.NetPeer.BindSocket(Boolean reBind) in E:\Barotrauma-develo
   at Lidgren.Network.NetPeer.InitializeNetwork() in E:\Barotrauma-development\L
   at Lidgren.Network.NetPeer.Start() in E:\Barotrauma-development\Libraries\Lid
   at Barotrauma.Networking.LidgrenServerPeer.Start() in E:\Barotrauma-developmer\LidgrenServerPeer.cs:line 60
   at Barotrauma.Networking.GameServer.StartServer() in E:\Barotrauma-developmen
   at Barotrauma.GameMain.StartServer() in E:\Barotrauma-development\Barotrauma\
   at Barotrauma.GameMain.Run() in E:\Barotrauma-development\Barotrauma\Barotrau
   at Barotrauma.Program.Main(String[] args) in E:\Barotrauma-development\Barotr
./DedicatedServer.exe: line 2: 14109 Aborted                 ./DedicatedServer
[ ERROR ] Debuging btserver: Server has stopped: exit code: 0
[ ERROR ] Debuging btserver: Press ENTER to exit debug mode
[  OK  ] Debuging btserver: Stopping debug

Stop other server and start and everything works as intended, shows up in browser and allows you to connect through the browser + direct connect. For now im gonna let barotrauma be 27015 but please change this, on my other server all users will now have it disappear from their history tabs due to me changing ports :(