ghell
May 14, 2006, 3:54 pm
Hi, I'm a games and systems developer (small software house not EA or anything) and have a few nice servers that aren't quite living up to their potential. (Quad Xeon 3.2GHz @ 800FSB, 4096MB DDR2 ECC @ 533MHz, Windows server 2003 standard x64 edition) I was thinking about putting up a few soldat servers on this machine as it should be able to handle them with ease. I've seen a lot of servers listed on here for people to rent that are obviously bullcrap when it comes to saying what connection they are on etc but I'll mention no names.
These servers would be for playing not for other server admins to rent but the primary reason for me to consider this (appart from soldat being such a great game etc although I haven't actually played since 1.1.3) is to put up a bunch of servers that show up in the lobby with server names to promote my websites or whatever (I've noticed places like jolt advertise by running gameservers on other games so I thought why not soldat) I was wondering if there were any rules or restrictions on this type of advertising.
If its all fine and it would not be breaking any rules etc I would greatly appreciate any suggestions anyone would like to make about the actual content of the server and apps surrounding it (as I said, im a developer so most of my time I spend developing applications to administrate gameservers easily but other features such as indevidual player statistics etc could be added easily as well as dynamic signature images etc (although I write them in asp.net and most forums will disalow .aspx images and i dont really want to cron it to show up as .png or whatever. maybe i would just release an xml page and get some php dev to make an externally hosted php script working to save on bandwidth anyway))
As with most game servers there usually seem to be swarms of people who love the game but simply aren't happy with any services currently provided and since I'm a bit out of touch with soldat I thought it would be nice to make a bunch of servers where players can choose what happens to the servers, catagorising them or whatever :)
The main aim of the project would be to produce a popular, fun and high quality network of servers that listened to players etc, while promoting my sites (primarily games im working on etc) as I go.
mar77a
May 14, 2006, 4:32 pm
Well, welcome to the cummunity. Those servers look very nice. The only things i can tell are:
* U13 (www.u13.net) servers are down at the moment but they are the most popular, supporting all gamemodes plus 2 private CTF servers. When they get down, well, you'll have some competition.
* Advertising is just fine as long as it doesnt involve hacks/cracks/reverse engeneering, etc
* The most played gamemode is CTF. To set up a standard pub CTF, you can follow the soldat.ini setup for SCTFL (www.soldatworld.com) or similar.
A few questions: where would be the server/s located? How many? :o
Good luck with your project.
Leo
May 14, 2006, 4:41 pm
Well, Soldat is no different than any other online game. Players want good pings and a place to talk if they have any problems. Supporting forums would add a lot to your project. Other things that people like are, statistics, custom maps, different game mods. I run 3 popular Soldat servers in realistic mod, just ask me if you need any help :)
ghell
May 14, 2006, 4:45 pm
The server machines are located on the L3 pipe (http://www.level3.com/) which means that pretty much any country you are in you are only 2 or 3 hops away from the server anyway. I believe it is the largest intercontinental pipeline but I could be wrong.
I know how to set up the server etc I was just hoping to learn things such as CTF being popular and that kind of thing so thanks :)
Number of servers is undetermined as of yet, I wont be buying more machines for it but the spec I posted earlier can support quite a few dedicated servers at once anyway. If there is an x64 build of the soldat dedicated server that would be nice but I couldn't see one unfortunately so ill have to run them on WOW64 I expect :( (have tested and it at least works so thats ok :) x64 builds would be better for performance though.. i wonder how many sockets i can open on my nic before it fries)
Thanks for the info, will put a couple of dedis up in a sec and have a play with features im not familiar with in the client
Supporting forums would be provided (hell I've written a few bb systems myself, my next one will be in ajax though I'll prob get it done over the summer so I would probably use phpbb or something to start it off)
I was also tossing around with the idea of a bookable server or 2 for predetermined clanwars but I'm not sure how feasable this would be from a web-based system (might have to get into the protocols if there is some admin command for rebooting a server to reload settings etc?)
Kinder-Slauf
May 14, 2006, 4:51 pm
Yep Leo is the god in Realistic world!!!!!
Leo
May 14, 2006, 4:57 pm
Also, from my experience, windows servers have a lot of problems with custom maps in Soldat. Maybe you could try using a unix system.
mar77a
May 14, 2006, 5:01 pm
Errr, yes, forgot to add that: you better run servers on Linux if you down want them to be crashing every now and then.
ghell
May 14, 2006, 5:27 pm
Do they only crash on custom maps because my test server was up for 4 days without a glitch..
Leo
May 14, 2006, 5:32 pm
All dedicated Soldat servers crash now and then :) Problem with windows servers is that in some point they just stop sending the maps to clients. Also, there is no command to remotely reboot a server. From what I know hosts make their own interface for that, usually in .php.
ghell
May 14, 2006, 5:35 pm
Well if php can do it it shouldn't be a problem (C# can sure as hell do anything php can!), I will just have to find out how :)
I can't switch to a unix server anyway (well i have vmware installed but the virtual os generally sucks for performance) as I have buisness critical windows things working. Also I generally write websites etc in .net although php is installed on IIS6.0
We will have to just see how stable it is with and without custom maps then :) I'm sure if it has problems such as not being able to send map files I can find a way of sorting them anyway :)
Deleted User
May 15, 2006, 5:27 am
You can start/stop/restart the servers via PHP, I use it for my PHP-Commander control panel.
Quote:admin command for rebooting a server to reload settings etc?
There is a command for reloading Soldat.ini, which is '/loadcon'.
But yeah, the windows server binary is horrible. The file server crashes extremely often, custom maps give the server hell (as Leo mentioned), and has poor long-term stability. I dont know if you have tried using the new VMWare Server edition, I beta tested it afew weeks back on my windows server and ive been using it ever since to run all my client servers, haven't gotten any 'performace' issues or abnormal ping fluxes... The windows server instability issues are actually being fixed though.
Soulsnipa
May 15, 2006, 6:33 am
Well after reading its assumed you will have custom maps on your servers. I know I get bored of the default maps pretty fast, it is always nice to see a custom maps server as they usually are the most popular as well.
But yea www.u13.net is the king of stats servers in soldat. Even so big Flies has become a legend in soldat and an admin on these boards.
ghell
May 15, 2006, 12:25 pm
Ok the little server I put up (up atm as "forsaken nolag") seems to be running ok, it mystereously turned itself off after the first game on it but it hasnt since.. a colleague of mine was using that remote admin thing during that game though so im not sure if theres an instability in that or he accidentally turned it off somehow and wouldnt tell me or something hehe.. I AM supposed to be running the soldatserver.exe from the 249 pack arent I? All the guides seem to talk about running 249 for linux or normal soldat with the dedicated and start flags for windows but the exe is a windows binary.. the readme.txt talks soley about linux I believe too so was it originally a unix only server but ported to windows?
I only have vmware workstation 5.5 but compared to the physical server the performance on it is terrible (remembering that I'm running ws2k3 std x64) I'm running another game on it at the moment with 3 subservers, on the physical machine I could run 10 subs at once. (The problem is the latest version of the main gameserver module only runs on x86 machines) This may not be as noticable with soldat though as it requires such low power (the other game runs 60% cpu on a 2ghz celeron server with 1 sub or 2% cpu per sub on the large server specs i mentioned earlier.. or 10% cpu per sub if I run it on vmware). I may try putting a linux virtual server on later but for now windows seems to be ok.
Asside from that the only annoying thing is when I start the server up I have to get at least 2 people playing in there before anyone else joins hehe the test seems to be successful so far I'm just waiting for it to crash now (has been up for 18 hours so far on this run) the only map I have in the list is CTF_B2B
Are there any guides for soldat interactivity anywhere? For example the mentioned php scripts for rebooting the server etc? I'm sure I could port them to C# on windows if I could find any sources but I can't seem to find any.
EDIT: Incase it wasn't clear, I don't need any stats scripts etc I just need to know how php can reboot the server etc (eg if it uses sockets) and if its complicated a script to do it would probably help me work out how it works.. I understand code more than words in general (horrible as I find the php/perl syntax hehe)
Deleted User
May 15, 2006, 12:48 pm
Theres no 'guides' but heres the code I use: (Sorry but its for Linux)
If you plan on using winblows, you might need to make your own program to execute the server in a seperate process, and another seperate program to get the PID and kill it.
To start:
[CODE]
//Start server like normal.
$cmd = $soldatdir.'/'.$soldatexec.' >/dev/null &';
return $cmd; //Return the constructed command
--> shell_exec($cmd);
[/CODE]
To stop:
[CODE]
$getpid = shell_exec("ps auxw | grep -m 1 $soldatdir/$soldatexec | grep -v grep | awk '{print $2}'"); // Get the PID
$cmd = 'kill '.$getpid;
return $cmd; //Return the constructed command
--> shell_exec($cmd);
[/CODE]
or if your lazy, you can just create a TCP Socket to connect to the servers admin port and send the '/loadcon' command, which isnt quite a full restart, but gets the job done anyway.
ghell
May 15, 2006, 1:03 pm
Thanks C# can do all that process management kinda stuff anyway without needing shell but I'll have to work out the intricacies of doing it in ASP.NET (For example you can happily put a System.Windows.Forms.MessageBox.Show("Hello, World!"); in a c# page but it doesnt do much :) .. its just I couldnt find any web scripts that weren't just stats parsers or file editors (which are mindnumbingly easy to make anyway)
ghell
May 15, 2006, 11:44 pm
Ok been up for 28 hours so far no problems but I dont know whether thats because most of the time theres nobody on it and I'm not using custom maps so i was just wondering if this vbs/wsh script would be appropriate for crashes or if more than this is required:[code]Option Explicit
Dim strAppFile, objFSO, objTextStream, objShell, objApp
strAppFile = "soldatserver.exe"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.OpenTextFile("restart.log", 8, true)
Set objShell = CreateObject("WScript.Shell")
Set objApp = objShell.Exec(strAppFile)
Do While True
If objApp.Status = 0 Then
WScript.Sleep(5000)
Else
objTextStream.WriteLine(Now() & " Server crashed and restarted")
Set objApp = Nothing
Set objApp = objShell.Exec(strAppFile)
End If
Loop
Set objApp = Nothing
Set objShell = Nothing
objTextStream.Close()
Set objTextStream = Nothing
Set objFSO = Nothing[/code]
Deleted User
May 16, 2006, 1:14 am
When the server crashes, the process itself doesn't crash... you can:
a) Check the results of the REFRESH packet every 10 seconds.
b) Send the requesting game packet.
There are different 'kinds' of crashes, sometimes you can join the game but get a connection problem after 2 seconds, then theres the one where you can only request game but get no packet returned..
mar77a
May 16, 2006, 1:44 am
Mmm, and to test if a server will crash you better fill it up with connections, otherwise, it's pointless.
ghell
May 16, 2006, 11:37 am
Yea its had about 15 full 32 player games in it but I always have to start it going before going to work/sleep etc (I go in and get someone else to come on and in a few minutes there are 5 or so players on and I can leave, in another few minutes its generally full.) but after a couple of hours its empty again so although it has been full for about 1/4 of the time its been up its not really that great a test, which is why its still up.
So far its still going though but you did say "long term stability".. so I don't know if that means a week or a month or what (most gameservers with long term stability issues generally take 1 or 2 weeks to crash)
If I do get stability issues on windows, before turning to vmware unix I would probably first port it to C#, have a thread running for each server and check sockets (but I don't know much about soldat's protocols at the moment so I'll have to do a bit of research into that) The .NET process classes are pretty nice as regards to checking if its hanging or whatever too and catching any messages it gives out that are normally lost into the ether etc so sockets may not even be required.
I've had a few problems with other servers before about being able to connect but not receive data etc so I might be able to do something about that. Usually it has been something along the lines of C1 04 00 01 being a correct packet, C1 being the type, 04 being the length etc but when the client sends C1 04 00 01 C1 04 00 01 the server often reads the whole packet instead of just the first 4 bytes, says its an invalid packet and can't return any data because it doesn't know what is being asked for. In closed source TCP games the easiest fix for this is just to stick a little winsock forwarder between the server and the client to only forward packets as far as the length byte(s) go and return all data from the server to the client.
I made that script because the closest thing I have had to a crash so far was after the very first game on it, the process closed with no events handled, no exitcode and no error messages (and I haven't changed the settings since then so it cant be something like I had it on no looping, it could have just been my colleague on remote admin causing instabilities or accidentally shutting it down and not admitting it) Neither I nor any of the people I have actively asked to test it have had any connectivity issues as of yet (no data/disconnect after 2 seconds etc)
One issue I have been having (although strangely enough none of those testers have had problems with) is that I can hardly ever see the server in the lobby even if I filter it down to its exact settings.. I generally get around 300 dedicated servers showing up (im sure when I used to play 1.1.3 it was far more than that) and FORSAKEN NOLAG isnt in there anywhere.. I can connect still but only by IP. Is there something i should be changing in the config? I noticed that lobby.soldat.pl gives a plesk error, Is this simply because there is nothing on port 80 of that server or should i be changing my lobby list from default (I'm told by ASE users that its always visible there but I don't have ASE so I haven't tried)
EDIT: I've just tried and that WScript can't run soldatserver.exe properly anyway for some reason (not even with "%comspec% /c" .. I've never had problems with running command line apps before with the Exec() and its listed in msdn as ONLY running command line apps.. well it is the wshell object I suppose.. I probably just have to do something with stdin/out/err to stop it blocking or something as running a batch file which just has "echo hi" doesn't work but running one which contains "echo hi>>test.txt" does..) I wonder if C# would have the same problems or if i could use CScript (its supposed to be the command line version of WScript but I've never worked out how to use it.) When you run up a server (or even a batch file to run the server) it just comes up with a blank cmd.exe window.. how strange..
Also is there a good maplist I can use (atm I'm just on CTF_B2B looping) to get people to stay on long enough to give the server proper tests?
Deleted User
May 16, 2006, 12:36 pm
Ok well the Soldat protocol isnt really documented anywhere, except the TCP Admin stuff. Head over to the 'Developers Corner' and that might help abit. To login as admin via TCP all you need to do is connect, send 'MYADMINPASS\0x0D\0x0A', then send 'REFRESH\0x0D\0x0A' to get the current players and [CENSORED].
By 'long-term' I meant 3+ days ;). Ive got a 2.5.0 test server running now thats actually been going fine for 5 days now, with bots to make sure theres some action.
Server dissappearing from the lobby isnt only you, we all get it. Its just a bug with Soldat, the glory of UDP. MM has changed the lobby to use TCP/IP in the next ver so we might be able to forget the dissapeparing server bug. To actually view the soldat.pl lobby you needa use the URL http://lobby.soldat.pl:13073, but its down at the moment because of constant crashing. Luckily we have a backup lobby @ http://selfkill.com:13073.
Ya know, you can create your own maplist right... edit mapslist.txt in the server root folder and add some of the ctf_ maps.. like:
ctf_B2b
ctf_Voland
ctf_Kampf
ctf_Viet
ctf_Nuubia
ctf_Ash
ctf_Run
ctf_Laos
ctf_Maya2
ghell
May 16, 2006, 12:47 pm
Yea I've just been out of the loop for a while as you may have noticed so I wasn't really sure which maps were popular etc, I know B2B used to be very popular so thats all I had it stuck in at the moment.. Soldat seems a lot different from last time I played though (gun platforms, bouncing bullets, some bullets seem to go through people and kill multiple people, advanced mode, hold the flag etc I'm sure werent on here a while ago) having ONLY b2b gets a bit boring and it seems that players that get bored call votes but nobody else bothers to vote so it never changes and then everyone leaves and as you can imagine thats not a very good test.
Gotta love the unreliable/useless datagram protocol :) Thats what makes GunZ Online so fun to play with all those people who killsteal you that you can't see etc ;)
Is there a new version coming out soon then? I noticed that 1.3.1 has been there for a while so I wasnt sure if soldat was really still maintained etc. (If there is any information about it a link would be really useful :) )
Deleted User
May 16, 2006, 12:50 pm
Theres no dates for new versions of the Client(1.3.1), but there is a new server binary coming out soon with alot of new features.
ghell
May 20, 2006, 8:07 pm
Ok another feasibility test showed how easy it is to dev apps for soldat servers, here are samples of my current stats for that 32 player ctf server thats been up about a week now:[code]George
Barret M82A1: 0
Combat Knife: 3
Spas-12: 3
Desert Eagles: 1
USSOCOM: 0
Flamer: 8
Chainsaw: 0
Stationary gun: 0
XM214 Minigun: 0
Ak-74: 5
HK MP5: 6
Clusters: 1
LAW: 0
Hands: 0
Ruger 77: 7
Steyr AUG: 1
Grenade: 71
FN Minimi: 6
M79: 309
Kills: 421, Deaths: 383 (of which self kills: 29), Ratio: 1.099217
Gun Stats:
Barret M82A1: 11614
Combat Knife: 805
Spas-12: 5293
Desert Eagles: 1728
USSOCOM: 1107
Flamer: 299
Chainsaw: 1481
Stationary gun: 2383
XM214 Minigun: 1789
Ak-74: 2796
HK MP5: 4853
Clusters: 175
LAW: 1331
Hands: 1417
Ruger 77: 2583
Steyr AUG: 3524
Grenade: 13803
FN Minimi: 2664
M79: 24821[/code](excuse my terrible score and the fact I love the mess the M79 makes waaaaaay too much :))
Around 100k kills in total for 3200 players approx.
EDIT: PS, whats with the kill log sometimes showing only 1 player name in a kill (I just skipped all lines with any number of "\r\n"s other than 4) and if I missed any guns such as the rambow bow thing, if someone feels like telling me exactly how they appear in the log files that would be appreciated :)
mar77a
May 20, 2006, 8:34 pm
That's a bug. It will screw up all your kill logs so be aware to skip those logs. Happends to players who's name start with * or ^