Quote:

Ich habe vorhin schon einmal kurz versucht, auf einem Rechner 3DGS zweimal im Server Mode zu starten. Mir scheint, als ob dies nicht möglich wäre.

Das ist möglich, allerdings müssen die Server auf verschiedenen Ports laufen. Dazu mehr:
Quote:
Quote:

Und ja, ein Laufender Server kann einen neuen starten.

Wie denn? grin


Du wirst ja sowieso eine Datenbank, z.b. MYSQL brauchen, um Login-Informationen o.ä. zu verwalten.
Du könntest dort also auch eine Tabelle anlegen, in der die Planeten gespeichert sind, mit einer ID, einer IP und dem Port der deren Server haben wird.
Du müsstest also mit COMMAND_STR dann die Planeten-ID übergeben, der Server schaut dann in der Datenbank nach welchen Port und Namen er haben soll und aktiviert sich mit session_connect.

Die Kommunikation zwischen den Server würde ich auch (passiv) über die Datenbank laufen lassen. Nur mit Hilfe der 3DGS Bordmitteln lässt sich das eh nicht realisieren, da bräuchtest du sonst auch noch z.b. sockets.

Was das Starten angeht würde ich es so machen:

Ein Login-Server mit eigenen Code (also quasi ein eigenes Projekt) wird als erster gestartet. Dieser verbindet sich zur MYSQL-Datenbank, liest die Liste der Planeten aus und startet mit exec alle "Planetenserver".

Beispiel: exec ("plserver.exe", "-planetid 3"); falls alle auf dem gleichen PC laufen. Sonst musste noch mit C++ oder so ne kleine App schreiben die das remote starten übernimmt. Michael_Schwarz hat ja schon beschreiben, wie man da eine physikalische aufteilig vornehmen könnte.

Die Planetenserver lesen dann wie oben beschrieben ihren Port mithilfe von COMMAND_STR und der Planeten-ID aus und starten.

Die Spieler verbinden sich zum Login-Server und senden Namen und Passwort. Der Login-Server schaut nun auf welchem Planeten sich der Spieler befindet und sendet ihm den Port und vlt auch die IP und eine Session-ID die auch in die datenbank geschrieben wird.
Jetzt verbindet sich der Spieler mit dem Planetenserver, gibt diesem die session-ID und dieser schaut wieder in die Datenbank, findet dort den Spieler, erstellt dessen Entity an der richtigen Stelle und synchronisiert die Welt mit dem Spieler. Möglichkeiten dazu hatten wir ja oben schon diskutiert, mir gefällt Michael_Schwarz Idee einer Datei, die beim ersten verbinden mit dem Planetenserver gesendet wird und alle Infos zum Level enthält am besten. Du könntest ein eigenes möglichst kleines Format entwickeln oder es mit ner WMB versuchen, solange das Level nur aus Entities besteht und keine Texturen in der WMB sind bleibt die klein genug.

Du siehst also, es wird nicht einfach. Ohne gute Konzeption wirst du wohl aber nicht weit kommen.

Last edited by SchokoKeks; 10/07/10 12:39.