Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi "ReSyncronisierung" (https://www.delphipraxis.net/136747-resyncronisierung.html)

RedShakal 7. Jul 2009 11:12


"ReSyncronisierung"
 
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 :wink:

Blup 7. Jul 2009 12:08

Re: "ReSyncronisierung"
 
Vergiss diese Idee am besten sofort wieder, auf diese Art kannst du das Programm nur zum Absturz bringen.
Entweder du änderst am Grundkonzept des Datenaustauschs etwas oder du lässt es.

RedShakal 7. Jul 2009 13:26

Re: "ReSyncronisierung"
 
Ich kann das Grundkonzept nicht ändern, weil das Spiel von 1998 ist und ich den Quellcode nicht habe.

generic 7. Jul 2009 16:22

Re: "ReSyncronisierung"
 
Welches Game?

für viele Games gibt es inoffizelle Patch oder Remakes.

RedShakal 7. Jul 2009 17:48

Re: "ReSyncronisierung"
 
Das alte Spiel KKND2 jedoch gibt es dafür weder ein Remake noch einen Patch

generic 7. Jul 2009 19:21

Re: "ReSyncronisierung"
 
Patch gibt es:
http://melbournehouse.kknd2.com/patch.html

RedShakal 7. Jul 2009 19:54

Re: "ReSyncronisierung"
 
Der Patch bringt mich nicht wirklich weiter :wink:

1. Ist Melbourne Haus seit vielen Jahren pleite und die Links sind defekt
2. Spielen wir seit vielen Jahren mit dem Patch
3. Möchte ich es selber machen :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz