Jump to content

dedicated server under linux


poesel

Recommended Posts

I've tried to start a dedicated server under linux on a, well, server machine. smile.gif

This machine has no monitor and no audio, So no Xserver or other desktop machine features.

First problem is that Update didn't run without libaa.so. Hmm - why does the Updater need ASCII art (and it is not included)?

Ok, installed and here we go: the update runs without problems.

Searched the forums for the correct way to start the server:

</font><blockquote>code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">#!/bin/sh

cd bin

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:../lib ./SpaceVikings -enterlobby false -hostmode server

exit 0</pre>

Link to comment
Share on other sites

You can install Mesa to get the required OpenGL libs onto the system. Mesa is quite ubiquitous so it should be available through apt-get, portage, RPM, or whatever your distro uses for packages. We run all of our headless Linux servers this way (they also don't have displays).

If you want to give me a shell account on your server, I'll even do it for you. ;)

Link to comment
Share on other sites

Hmm, I'm not root on this server and so I have to talk to my sysadmin to install it for. And you know how sysadmins are about installing. ;)

Ok, will do. Should be stated somewhere in the prerequisites though (or just ship the libraries).

Still, and I hope you agree here: its a bit silly to install graphic libraries for a system without a monitor and a program without graphical output, no?

smile.gif

Link to comment
Share on other sites

Well, actually, not really that silly! tongue.gif

I've seen it before with other programs that came with dedicated servers (Tribes 2 IIRC?)

The graphic libraries do not provide only stuff for drawing to the screen, they also give you some generic functions (call them "utilities", if you want) that you may need to call in your program even if you don't blit a pixel.

E.g. in a database system library I had some functions dealing with string replacement (I had to call them in order to do stuff the way the db wanted it), and as such I needed to include the db libraries even if I didn't physically access the db but I only wanted to use the string replacement stuff.

Hope it makes sense. :D

Link to comment
Share on other sites

Hmm, I don't know anything specific about OpenGL but maybe the server has an internal representation of the battlefield and uses OpenGL for collision detection?

I copied the needed libraries from another machine to the lib directory and created some symlinks. These are:

libnvidia-tls.so.1 -> libnvidia-tls.so.1.0.7667

libaa.so -> libaa.so.1.0.4

libGLcore.so.1 -> libGLcore.so.1.0.7667

libGLU.so.1 -> libGLU.so.1.3.060302

libGL.so.1 -> libGL.so.1.0.7667

The server did start without complaining and I had it in the list when I hit the refresh button. So far so good.

Problem: when I tried to join, the client hung himself up. Had to kill the process.

Is that a limitation of the preview or some bug? Server and client were on different machines in different networks.

Another question: the server doesn't print any information about what hes doing (in the terminal). Is there an option to get it a bit more verbose or do I have to tail -f on the logfile?

Link to comment
Share on other sites

You need to do tail -f DropTeam.log to see what's happening on the server. And that is the best way to start looking into why the client had a problem. The log file might say something about why it was rejecting the client or otherwise not letting him play.

When you say the client hung, do you mean a hard lock-up, or a "server not responding" message, or something else?

There's no limitation on this for the public test - you can run your own dedicated server with it (but it's limited to those same 2 scenarios).

Link to comment
Share on other sites

Now it works. I didn't change anything. Maybe that was a coincidence with the authentification being down.

The client did a hard lock-up. I'm afraid that the log file is already gone so I can't check.

Thats a part from the log:

CLIENTIDMSG: szVersion = 0.9.91

CLIENTIDMSG: Client is using PAT?

CLIENTIDMSG: Swapped port = 32772 but msg port = 9968

SERVER: Request from host 62.143.162.249:32772

CLIENT: Account not found for poesel71; creating new one

SERVER: 30.303 frames per second

What is PAT?

The account mentioned is created locally I assume?

The fps message tells me that I'm probably right with the 'inner representation' through OpenGL. smile.gif

How many fps does a server need or is it capped anyhow?

Link to comment
Share on other sites

It probably was the authentication problem and nothing to do with your server.

PAT is port address translation. Almost any client connecting through a modern router will be using PAT, so to a remote host his port looks like some crazy number even though internally it is the known 9968 port. This message is nothing to worry about.

Yes, the account mentioned is purely local to that server. It used to be, and may someday again be, that when a client disconnects his unit(s) are not removed or changed. He could later reconnect and resume control right where he left off due to this local account on the server.

The server alwaya tries to run at 30Hz. This is the rate that the game's main simulation loop is running at - it is the "time slice" of the world being updated (physics, visibility, etc.)

Link to comment
Share on other sites

×
×
  • Create New...