Idee: Resync

  • Hi,


    Ich spiele derzeit viel "Gilde 2 - Renaissance" mit meiner Freundin im Netzwerk und wir haben auch echt Spaß.
    Da wir ca. alle 1-2 Stunden aber einen Out-of-Sync Fehler haben, haben wir uns schon des Öfteren deswegen rumgeärgert.
    Gerade das hin und her kopieren des nachträglich erzeugten Spielstandes ist nervig, da wir dazu auch aus dem "laufenden" Spiel gehen müssen.


    Ich kann leider bei der Synchronisationsmethode nur raten, bin aber selbst öfter in Gamedesign und -programmierung tätig, um zumindest eine Idee anzusetzen. Wäre es nicht möglich, einen "Resync"-Button einzufügen? Hierbei könnte der Host, diesen Button betätigen (im ESC-Menü), was dazu führt, dass alle am Spiel teilnehmenden bzw. durch OOS verlorenen Spieler (betrifft das eigentlich immer alle oder können das auch einzelne treffen?) automatisch das Spiel unterbrechen, den Spielstand des Hosts empfangen (welcher diesen z.B. durch die IP an alle verschicken kann, die dabei waren) und dieses mit den jeweiligen Farben der Spieler neu lädt. Im Grunde wäre das dann wie als wenn man selbst den Spielstand kopiert und das Spiel neu geladen hätte. Hierbei würde zumindest der manuelle Teil wegfallen, wo man aus dem Spiel gehen und alles kopieren muss. So würde dieser Fehler sehr viel erträglicher sein und der zukünftige Support wäre nicht mehr so nötig (gewünscht wäre er natürlich schon ^^, aber durch den Button und die automatisierung wäre es nicht nötig).


    Was haltet ihr davon? Wäre sowas umsetzbar? Könnte man euch dabei vielleicht sogar irgendwie helfen?


    EDIT: Nein wir spielen nicht mit dem Beta-Patch, sondern dem "offiziellen" 4.15. Aber selbst mit dem aktuellsten Patch wird es sicher noch OOS-Fehler geben (was ich hier aber nicht anprangern möchte. keinesfalls.). Ich kenne den Programmieraufwand leider nicht, aber nach meiner Schätzung (korrigiert mich bitte), sollte die Einarbeitung einer solchen Funktion nur wenige Stunden dauern.


    Mit freundlichen Grüßen,
    SeelenGeier

  • Das mit den OOS ist ärgerlich. Daher sind auch schon einige aus der Community auf die Idee des Automatisierens gekommen. Afaik kam die ganze Idee für die Syncronization von einem Communitymitglied. :)
    Aber dazu kam die leider ernüchternde Antwort.

    Aktuell geht das nur händisch, dh. der Host speichert und schickt das Savegame an die Mitspieler.
    Das ganze zu automatisieren, ist leider ziemlich kompliziert :/.


    Ob es je möglich ist, steht also in den Sternen. Es wäre sicher möglich, aber sowas kann und will man von keinem verlangen. Zumindest unentgeltlich nicht. Und ohne Programmierer zu sein (oder was auch immer man für diese Beurteilung benötigt), wenn man dafür bezahlt wird, macht diese Aufgabe sicherlich auch keine große Freude. :meuh:

  • Hey,
    Um es mal als absoluter Laie zu sagen oder besser gesagt zu fragen:
    Sind die teilnehmenden Spieler denn noch verbunden?


    Soll heißen: Dass sie im Netzwerk verbunden sind ist klar. Aber inwieweit kann man im Spiel denn noch miteinander agieren. Ich habe schon laaaaange nicht mehr Ren im MP gespielt, aber soweit ich mich erinnern kann ist die De-Synchronisation so "stark", dass keine Interaktion über das Spiel mehr möglich ist. Also ein "Resync"-Button gar keinen nutzen hätte, da das Spiel bzw. der Host ja mit den Mitspielern nicht verbunden ist. Was vielleicht möglich wäre, wäre dass man mehrere Scripts macht, die außerhalb des Spiels das rüberkopieren vereinfacht oder nicht?*
    1. Script:
    Die Save-Datei wird in den öffentlichen Ordner kopiert. (Oder einen anderen Ordner der für Netzwerkteilnehmer zugänglich ist.)
    2. Script:
    Die Save-Daeit im öffentlichen Ordner wird auf den zweiten u. dritten u. vierten Computer geschoben.
    3. Script:
    Die Save-Datei auf dem zweiten (etc.) Computer wird in den eigentlichen Save-Ordner geschoben.*


    Wenn das geht, dann kann man den Prozess ja halbautomatisieren. Wobei ich nicht genau weiß, wie das mit dem Namen der Save-Datei aussieht. Denn wenn man den immer umändern muss, hat sich die Sinigkeit des Scripts verflüssigt.


    Gruß,
    Jens

  • Das es schwer ist, kann ich mir schon vorstellen. Die Frage hierbei ist eher, ob man dabei vielleicht helfen kann. Es kann sein, dass ich diesen Beitrag auch mal irgendwo gelesen hab (habt ihr noch den Link?) und deshalb da drauf gekommen bin. Man ist ja schließlich beeinflussbar ^^ Um hierzu direkte Hilfe anzubieten, wäre natürlich ein Blick in den Quellcode erforderlich, was aber sicher nicht gewünscht/möglich ist.


    Selbst wenn die Spieler komplett vom Host getrennt werden, so kann man diese immernoch anhand der IP "wiederfinden".
    Das war die Idee, sozusagen die Savegame-Datei zu nehmen und die IPs einfach mal abklopfen. Dann kann ja bei denen ein Fenster aufploppen, was sowas fragt wie "Wollen sie das Spiel neu synchronisieren?"

  • SeelenGeier und wie sieht es aus wenn bsp. bei einem Spieler der Router ausgeht(Stromausfall 24 disconnect, etc) und er dadurch ne neue IP Addresse bekommt? Dann weiß das Spiel wieder nicht wo es die daten hin schicken soll. Es gibt dort soviele möglichkeiten die Passieren können wodurch das Spiel nicht selbstständig handeln kann...


    MfG
    Sunpack


    Einzigste möglichkeit die mir aktuell einfällt wäre bsp.: ein Programm schreiben mit einem Festen Host(irgendein fester Server mit fester IP) wo sich die Spieler dann einloggen können, und die Savegames drüber austauschen. Das ganze könnte unter umständen auch automatiesiert werden.

  • Klar würde es Probleme geben, wenn der Router resettet.
    In diesem Fall müsste man weiterhin manuell den Savegame-Austausch vornehmen.
    Solch ein reset findet aber ohnehin nicht oft statt und ist sogar vorhersehbar.
    Wenn sich die IP ändert, wäre auch der einzige Fall, wo bei diesem System kein neusyncen möglich wäre.
    Bei einem Stromausfall wird meist keine neue IP vergeben, da der Provider diese meist 24 Stundenweise vergibt (was den 24 Stunden disconnect hervorruft).


    Solche Symptome wären auch nicht das Ziel dieses Systems (Button), sondern einfach der Out-of-Sync Fehler beim ganz normalen spielen, wo im Grunde kein Disconnect für verantwortlich war, sondern ein Bug im Spiel, welcher die Synchronization schädigt und damit bricht.

  • Out-Of-Sync heist allerdings vieles, ein OOS kann ein Fehler im Spiel sein, aber auch eine verlorene Verbindung, Es könnte eine unstimmigkeit der Scripte sein, sowie vieles anderes.


    Ach und was das mit der 24 Stunden vergabe beim Provider angeht also wenn ich meinem Router den Strom klau bekomm ich zu 100% eine neue IP-Addresse.


    Werde aber mal schaun ob die Idee die ich im letzten Post äuserte umsetzbar ist, villeicht lässt sich darüber das Verteilen der Savegames ja erleichtern.



    MfG
    Sunpack

  • Es ist möglich, das zu implementieren. Der Programmieraufwand wäre aber ziemlich hoch, da das Spiel keine "makeSavegameAndSendItToAllPlayers"-Methode hat.
    Genauer: Der Host-/ClientController des Spiels erkennt einen OoS und beendet das Spiel (der Controller kennt die Game-Componente). An der Stelle wäre es sogar möglich, sofort ein Savegame am Host zu erstellen, aber danach das Savegame einzulesen und binär zu verschicken ist nicht implementiert. Ich könnte den Aufwand nichtmal richtig abschätzen, aber das Verschicken des Files müsste sogar recht einfach gehen.
    Die richtigen Probleme sind folgende:
    - Das Savegame auf den Clients speichern (evt. nichtmal nötig)
    - Das MP-Game automatisch komplett beenden
    - Ein neues MP-Game auf allen Rechnern lt. Savegame zu konfigurieren und zu starten.


    Da nur das Savegame des Hosts verfügbar wäre, wäre es sogar extrem schwer (wenn nicht unmöglich), automatisiert zu erkennen, welcher Spieler welche Flagge hatte. Vermutlich müsste daher entweder das Spiel bis zu dem Startmenü eines neues MP-Spiel mittels altem Savegame zurückgespult werden oder ein neues Menü (=Riesenaufwand) implementiert werden. Letzteres alleine sind etwa 10h Arbeit, wenn alles gleich klappt.


    Das heißt aber nicht, dass die Idee bzw. auch alle alternativen Ideen dazu nicht umgesetzt wird - wir könnens nur einfach nicht versprechen :/

  • hmm es wäre also möglich ein Savegame zu erstellen, gut frage: welchen aufwand würde es den machen z.b. Beim erstellen eines Spiels ein Packet von jedem Client an den Host zu schicken wo Name und Farbe der Flagge drin steht und diese Info dann im Savegame zu hinterlegen? So könnten dann die Clients beim "neustarten" der MP sitzung automatisch anhand des Namens entscheiden welche Flagge sie nutzen müssen...


    Nur so ne Idee...