19-11-2008, Wednesday-00:46:55
Mein Plan für den Netzwerkmodus:
Stufe eins: Simutrans kann Dateien über das Netz lesen und schreiben. (3 Tage maximal)
Stufe zwei: Mit etwas zusätzlicher Logik gibt es einen kooperativen Server, bei dem man ein SPiel auschecken kann (während der Zeit is es dann gesperrt) und wieder einchecken kann, zusammen mit Mitteilungen für den nächsten Spieler. (Zwei Wochen)
Stufe drei: Echter Netzwerkbetrieb. Nach dem herunterladen einer Karte läuft Simutrans auf allen Systemen synchron. Dazu gibt es per UDP einen Beat mit dem jeweilig aktuellen Random-wert, um asynchronen Spielen vorzubeugen. Alle Aktionen gehen per (dank des neuen Werkzeugsystems sehr einfach) immer über den Server und werden dann erst lokal ausgeführ, wenn der Server sie zurückschickt. Wird vermutlich etwas ruckeliger, falls viele Schiff unterwegs sind (da sync_step und step dann nur noch abwechselnd laufen dürfen). Erste Funktion nach ca. zwei Wochen, die meiste Zeit wird das Erkennen von asynchronen Aktionen brauchen.
Was muss konkret gemacht werden:
- Sockets so ansprechen, dass dataobj/loadsave.cc auch auf Sockets schreibt.
- Ein GUI um von einem Masterserver (http://www.simutrans.com?) eine Liste mit Servern zu holen, die dann angeboten werden können. Direkte Eingabe sollte auch gehen. SOllte mit ipv6 und v4 zurechtkommen. GUI bekomm ich sicher recht schnell hin, wenn man den Rest soweit vorbereitet hat.
- Ein ganz bisschen zusätzliche Logik zu Verwalten (Begrenzung der im SPiel ablaufenden Zeit, kein schneller Vorlauf etc.)
- Für echte Netzwerkspiele ist simworld.cc so zu ändern, dass sync_step und step möglichst gleichmäßig abwechselnd laufen. Ist aber im FastForward modus schon weitgehend realisiert, nur ist das die Pause viel kürzer.
- simworld.cc so ändern, dass alle Klicks statt direkt auf das Werkzeug erst an den Server geschickt werden (bzw. das der Server solche Aktionen auch wieder an alle Client verteilt.) Dazu müssten vermutlich noch ein paar weitere Werkzeuge erstellt werden.
Der Plan ist schon zwei Jahre da, auch der Umbau des Werkzeugsystems ist im wesentlichen deswegen erfolgt. Wann immer ich was hinzufüge, denke ich an den Netzwerkbetrieb.
Stufe eins: Simutrans kann Dateien über das Netz lesen und schreiben. (3 Tage maximal)
Stufe zwei: Mit etwas zusätzlicher Logik gibt es einen kooperativen Server, bei dem man ein SPiel auschecken kann (während der Zeit is es dann gesperrt) und wieder einchecken kann, zusammen mit Mitteilungen für den nächsten Spieler. (Zwei Wochen)
Stufe drei: Echter Netzwerkbetrieb. Nach dem herunterladen einer Karte läuft Simutrans auf allen Systemen synchron. Dazu gibt es per UDP einen Beat mit dem jeweilig aktuellen Random-wert, um asynchronen Spielen vorzubeugen. Alle Aktionen gehen per (dank des neuen Werkzeugsystems sehr einfach) immer über den Server und werden dann erst lokal ausgeführ, wenn der Server sie zurückschickt. Wird vermutlich etwas ruckeliger, falls viele Schiff unterwegs sind (da sync_step und step dann nur noch abwechselnd laufen dürfen). Erste Funktion nach ca. zwei Wochen, die meiste Zeit wird das Erkennen von asynchronen Aktionen brauchen.
Was muss konkret gemacht werden:
- Sockets so ansprechen, dass dataobj/loadsave.cc auch auf Sockets schreibt.
- Ein GUI um von einem Masterserver (http://www.simutrans.com?) eine Liste mit Servern zu holen, die dann angeboten werden können. Direkte Eingabe sollte auch gehen. SOllte mit ipv6 und v4 zurechtkommen. GUI bekomm ich sicher recht schnell hin, wenn man den Rest soweit vorbereitet hat.
- Ein ganz bisschen zusätzliche Logik zu Verwalten (Begrenzung der im SPiel ablaufenden Zeit, kein schneller Vorlauf etc.)
- Für echte Netzwerkspiele ist simworld.cc so zu ändern, dass sync_step und step möglichst gleichmäßig abwechselnd laufen. Ist aber im FastForward modus schon weitgehend realisiert, nur ist das die Pause viel kürzer.
- simworld.cc so ändern, dass alle Klicks statt direkt auf das Werkzeug erst an den Server geschickt werden (bzw. das der Server solche Aktionen auch wieder an alle Client verteilt.) Dazu müssten vermutlich noch ein paar weitere Werkzeuge erstellt werden.
Der Plan ist schon zwei Jahre da, auch der Umbau des Werkzeugsystems ist im wesentlichen deswegen erfolgt. Wann immer ich was hinzufüge, denke ich an den Netzwerkbetrieb.