Zitat:Original von Dwachs
Das dumme bei diesen Synchronisationsfehlern ist, das man vorher nicht weiss, was man loggen soll. Die '-debug n' Parameter helfen da wenig.
Ich hatte nie so recht Vertrauen in dieses synchron-halten der Clients. Irgenwann schrieb ich mal, dass ich der Meinung bin, dass das Prinzipbedingt nie klappen wird. Kann aber schon gut 10 Jahre her sein, dass ich das schrieb, zu einer zeit als die TTDPatchler versuchten eben dieses Verfahren stabil zu bekommen ...
Das war unter anderem auch der Grund, warum ich euch für die Netzwerkimplementierung nie gelobt habe. Dann hat man mir vorgworfen, ich würde die Arbeit nicht wert schätzen. Ihr habt da sehr viel Aufwand hineingesteckt, das ist wahr, aber das Verfahren ist auch das schwierigste von allen. Ich denke man hätte das besser lösen können, und mit weniger Aufwand.
Ich wollte das nur als Erklärung anmerken, warum ich die aktuelle Netzwerkimplementierung in Simutrans nie gelobt habe. Meiner Meinung nach hätte man es so machen sollen:
Es hätte gericht, die Clients als reine Anzeigeprogramme zu bauen, und den jeweils sichtbaren Auschnitt der Karte vom Server streamen zu alssen (als Sequenz von object-ids, nicht die Grafikdaten). Das wären nur ein paar KB pro Frame, und es gäbe niemals ein desync, weil es die Karte nur einmal gibt, auf dem Server. Ausserdem entfällt der zeitraubende Download der karte, und es gibt keine Probleme mit unterschiedlichen pak-Versionen.
Neben der Anzeige hätten die Clients noch die Aufgabe geahbt, die Eingaben vom Benutzer entgegenzunehmen und an den Server zu senden. Auch hier wieder 100% desync-frei weil der Server alle Eingaben auf seiner einen Karte verarbeitet.
Das Verfahren wäre sehr robust, während das was jetzt in Simutrans drin ist, beim geringsten Fehler zerbricht.
Aber ich traue euch auch zu mit noch viel mehr Zeit und Mühe als Ihr eh schon hineingesteckt habt, das dann tatsächlich stabil zu bekommen. Es ist halt nur _viel_ mehr Arbeit als notwendig.
Nun habe ich doch etwas über meine Ideen zu Simutrans verraten, und Ihr könnt das jetzt als erste umsetzen