( search forums )
Dedicated server on other platforms
Soldat Forums - Soldat Talk - Developers Corner
Jailbreaker
December 22, 2002, 12:10 pm
Anyone ever thought of porting the dedicated server code to run on other platforms (e.g Linux) ? IMHO the code currently is very Windows specific, but is there anyone willing to port the code ?

Ardaen
December 22, 2002, 6:04 pm
Maybe next version if I take the time to figure out the protocol again or Michal is willing to give me help/info.

Shadowfax
January 8, 2003, 12:16 pm
linux all the way

MasterPee
January 29, 2003, 7:05 pm
If anyone knows something about the Netcode i would be pleased to here of it cause were courently working on somekind of a Linux Server...

barf
February 4, 2003, 1:21 am
please make a linux server, i bet if there was a linux server available for this game there would be ALOT more servers.

RyF
February 9, 2003, 7:35 pm
That's for sure... but a distant web control would be cool, with admin password of course. So that the admin will be able to control server from distant (home) PC =^__^=

deophite
March 8, 2003, 7:41 am
Protocol?
It's either UDP or TCP.

Michal Marcinkowski
March 12, 2003, 3:50 pm
Currently I'm porting the server code to DOS. So it will be very easy from that point to port it to linux.
Does anybody have experience with server daemons on linux? Maybe even programmed some in Kylix?

mat
March 13, 2003, 11:22 pm
dos sounds phine too... i can host it at work :))) just make it somehow invisible :D

Shadowfax
April 6, 2003, 5:08 am
login as system32 by doing something i forget how to do.. Then no-one can close it.. and it will be under the processes list in Ctrl-Alt-Del window.

Wow.. this is my first post in about 6 months :P

golob
April 10, 2003, 5:53 pm
Linux dedicated server works fine, but ...
Very often (every 1,5 hour or more often - especialy when there are more than 4 people) server hangs with the error:
Exception EZeroDivide in module <unknown> at 08055831.
Floating point division by zero.

Michal Marcinkowski
April 10, 2003, 7:04 pm
Yes, as soon as I fix the server hang-problems I'll release a patch.

Psieonic
April 17, 2003, 4:28 pm
Got a bit of a problem. I try to connect to the Linux Server from another computer on my lan, it sits there saying Requesting Game. On the linux console it says that the client is requesting the game, but doesn't do anything else. Logged in under root. soldatadmin works fine. Got my settings all put in, map list, soldat.ini. Always says server renamed to (X) Soldat Server. I know the (X) is meant to be there, but is it normal for it to say it's renamed the whole thing like that?

chrisfu
April 29, 2003, 10:54 pm
Soldier has joined the game!
217.228.159.187 Requesting game...
[Lime-Man |BR|] diarreia tu eh brasileiro?
diarreia tu eh brasileiro?
Exception EIdSocketError in module soldatserver at 0806E986.
Socket Error # 111
Connection refused.
195.14.220.68 Requesting game...
24.131.193.174 Requesting game...
200.102.60.225 Requesting game...
200.217.16.78 Requesting game...
200.217.16.78 Requesting game...
213.250.117.108 Requesting game...

I'm getting that error very often with the Linux dedicated server. I can't login remotely as admin, it says that my password is invalid (it isn't). The server doesn't show up in the lobby anymore. When I connect to the IP directly, the server says it's full. This is happening very often.

I have to 'killall soldatserver' and start it again. This error is very, very odd. :|

Dragon88
August 19, 2003, 8:53 pm
I too would be curious about the netcode and how data is sent over the network.

wormdundee
August 19, 2003, 8:59 pm
SHADOWFAX?!?! as in the shadowfax i know?

pyth
September 11, 2003, 6:48 pm
would be very nice with a port for linux. since the current beta eats WAY to much ram :(

Stealth
April 30, 2004, 5:16 pm
Michal. I have some experience coding Daemon's in Kylix. Are you talking about making the Daemon a hook onto the Soldat program itself? If so I have a little bit of code to manage that.
quote:unit DaemonManager;

interface

uses
SysUtils, Types, Classes, Libc, Contnrs;

type
TDaemonExceptionEvent = procedure(Sender: TObject; Ex : Exception) of object;

TDaemonManager = class(TComponent)
private
{ Private declarations }
FHookList : TObjectList;
FDaemonName : string;
aUsr1, aTerm, aHup, aInt : TSigAction;
t, tr, tMaster : timespec;
sigset : TSigSet;
FDaemonize: boolean;
FDaemonVersion: string;
FOnShutdown: TNotifyEvent;
FOnStartup: TNotifyEvent;
FOnUserInterrupt: TNotifyEvent;
FOnReset: TNotifyEvent;
FOnException: TDaemonExceptionEvent;
FOnRun: TNotifyEvent;
procedure DaemonizeIt;
procedure CheckSignals;
procedure SetDaemonize(const Value: boolean);
procedure SetDaemonName(const Value: string);
procedure SetDaemonVersion(const Value: string);
procedure SetOnReset(const Value: TNotifyEvent);
procedure SetOnShutdown(const Value: TNotifyEvent);
procedure SetOnStartup(const Value: TNotifyEvent);
procedure SetOnUserInterrupt(const Value: TNotifyEvent);
procedure SetOnException(const Value: TDaemonExceptionEvent);
procedure SetOnRun(const Value: TNotifyEvent);
procedure SetupHooks;
procedure TriggerHooks;
procedure GetFactors(n: integer; FactorList: TList);
function GetHighestFactor(DataList: TList): integer;
protected
{ Protected declarations }
public
{ Public declarations }
procedure AddHook(const Hook : TObject);
procedure Run;
procedure Terminate;
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property DaemonName : string read FDaemonName write SetDaemonName;
property Daemonize : boolean read FDaemonize write SetDaemonize;
property DaemonVersion : string read FDaemonVersion write SetDaemonVersion;
property OnStartup : TNotifyEvent read FOnStartup write SetOnStartup;
property OnReset : TNotifyEvent read FOnReset write SetOnReset;
property OnShutdown : TNotifyEvent read FOnShutdown write SetOnShutdown;
property OnUserInterrupt : TNotifyEvent read FOnUserInterrupt write SetOnUserInterrupt;
property OnException : TDaemonExceptionEvent read FOnException write SetOnException;
property OnRun : TNotifyEvent read FOnRun write SetOnRun;
end;

procedure GenerateUserInterrupt;
procedure Register;

And then from there you can impliment the hook and register it to the program.

FliesLikeABrick
January 8, 2006, 7:39 pm
i'm un-stickying this thread because it is older than my mom

rabidhamster
January 9, 2006, 12:52 am
if it's okay, i would like to add something.

is the dos server code still in progress? if so, i would love to see this.

b00stA
January 9, 2006, 8:51 pm
quote:Originally posted by rabidhamsterif it's okay, i would like to add something.

is the dos server code still in progress? if so, i would love to see this.

http://www.soldat.pl/down-s.html
...