|
|
Master Server programmieren
#251902
02/15/09 15:13
02/15/09 15:13
|
Joined: Sep 2005
Posts: 980 Aue, Sachsen, Germany
Wicht
OP
User
|
OP
User
Joined: Sep 2005
Posts: 980
Aue, Sachsen, Germany
|
Nehmen wir mal an, Ihr wollt einen eigenen Master Server programmieren.
Was fällt Euch dazu ein? Wie würdet Ihr an die Sache herangehen? Welche Techniken sind da eher zu bevorzugen? Was muß man dabei beachten? Welche Risiken gibt es? ... ...
Für diejenigen, die nicht wissen, was ein Master Server ist:
Stellt Euch vor, Ihr wollt über das Internet mit anderen ein Spiel spielen. Zuallererst lasst Ihr euch eine Liste an verfügbaren Spielen anzeigen. Um aber nicht das gesamte Internet nach möglichen verfügbaren Hosts absuchen zu müssen, was auch unsinnig wäre, fragt Euer Spiel einfach bei einem bestimmten Server nach (eben dieser Master Server), welche Spiele zurzeit vorhanden sind.
Jeder PC, der als Host ein Spiel eröffnet, sendet ganz bestimmte Daten an den Master Server und erscheint dort genau in jener Liste, die einem als Client angezeigt wird, wenn man sich ein Spiel heraussuchen möchte. Mögliche Daten wären: IP-Adresse, Port, Name des Spiels, maximal erlaubte Anzahl an Spielern, Passwort nötig (ja/nein), usw. usf.
Edit:
Ich habe noch etwas vergessen. Es kann ja sein, daß der Host abstürzt oder die Internetverbindung abbricht. Also eher unerwartet das Spiel abgebrochen wird. In diesem Fall würde aber der Host immer noch in der Liste stehen. Um das zu umgehen, muß der Host alle x Minuten einen "HeartBeat" an den Master Server senden, um seine Anwesenheit zu signalisieren. Wird diese Zeitspanne überschritten, fliegt der Host aus der Liste raus.
Last edited by Wicht; 02/15/09 15:27.
|
|
|
Re: Master Server programmieren
[Re: Wicht]
#251905
02/15/09 15:26
02/15/09 15:26
|
Joined: Nov 2002
Posts: 913 Berlin, Germany
SchokoKeks
User
|
User
Joined: Nov 2002
Posts: 913
Berlin, Germany
|
ich hab das mal (sehr simpel) mit einem php-webserver und einer mysql datenbank gemacht:
die 3dgs server hatten ein http-plugin, mit dem sie auf den webserver zugriffen um ihre ip, namen, spieleranzahl usw beim start und alle x minuten übermittelten. wurde ein server normal beendet, konnte er sich selbst abmelden. hatte ein server x+1 minuten nichts mehr gesendet, wurde er aus der liste gelöscht, weil er vermutlich abgestürzt oder vom netz getrennt war. die clients konnten sich die liste dann auch per http besorgen, darstellen und über die ip verbinden. da ich nur die commercial edition habe (kein session_connect), habe ich einen externen starter gebastelt, der das alles gemanaged hat.
vorteil: -schnell und kostengünstig zu realisieren, nur normales webhosting notwendig
nachteil: -erreichbarkeit der einzelnen server kann nicht ohne weiteres überprüft werden (port-weiterleitung wenn privatpersonen server eröffnen) -sicherheit nicht 100%, wenn man sich mit php und mysql nicht so gut auskennt
in der praxis zeigte sich, dass der erste nachteil ein "show-stopper" war, weil man auf die meisten server in der liste nicht drauf kam, was für anfänger schnell frustrierte.
ich hoffe das hat dir ein wenig weitergeholfen, Tilman
Last edited by SchokoKeks; 02/15/09 15:27.
|
|
|
|