Hallo, ich habe mit meinem Programm mittlerweile erhebliche Fortschritte gemacht, habe allerdings eine Frage.
Da das Spiel sehr alt ist, neigt es manchmal dazu bei einem Multiplayer Spiel Asyncron zu werden. Das bedeutet irgentein Spieler hat durch einen Lagg oder einen Programmfehler andere Werte im Speicher wie alle anderen, was dazu führt das das Spiel für diesen Spieler nichtmehr richtig läuft. Gebäude tauchen aus dem nichts aus, Einheiten spawnen wilkürlich usw.
Nun die Idee:
ein Resyncronisierungsprogramm schreiben.
die Theorie:
Eine Procedur erstellen die vom Host sämtliche Adressen im bereich von bsp. 0050000 bis 0080000 ausliest und an die Clients schickt.
Diese werten das ganze aus und tragen es entsprechend in den Speicher ein. In der Theorie sollte das Spiel dadurch wieder Syncron werden.
Leider wirft dieser Gedanke Fehler auf. Einzelne Adressen Syncronisieren wie Geld usw stellen kein Problem dar.
Einheitenpositionen aber leider schon. Da die einheiten Positionen in einer dynamischen Adresse stehen, die sich bei jedem Start ändert. Wenn ich die oben genannte Idee umsetzen würde, würde das Spiel vermutlich Crashen, da ja auch Werte die SpielerID und SpielerFarbe usw mitgeändert werden würden. Ausserdem weiß ich nicht genau ob die Position von Einheit 1 bei Spieler 1 die selbe Adresse hat wie die gleiche Spieler 4 z.b.
Relevant sind in diesem Fall wirklich nur Positionen der Einheiten, Geld ( Statisch ), Anzahl der Einheiten und die zugehörigkeit,
Als Ziel wird der Host genommen zur Syncronisierung.
Hat jemand eine bessere Idee wie man dies am besten Realisieren könnte? Die Positionen sind leider ja dynamisch da man ja immer Einheiten nachbauen kann.
Ich habe auch schon überlegt die "Savegame" funktion aus dem Singleplayer so zu Manipulieren das er evtl ein Multiplayer Savegame anlegt.
Hat jemandzufällig eine gute idee?
PS: Ich weiß das es schwer werden wird