Hallo Gast!
» Benutzerkonto erstellen » Anmelden
Downloads: 13792279
Benutzername:
Titel des Themas/Beitrags:
Beitrag: [quote=InstantMuffin]Mit IDA zu editieren ist mir noch nicht so gelungen. Ich lasse mir einfach die Opcode Bytes anzeigen und zieh mir eine Signatur raus, die ich dann im Hex-Editor suche. Da setze ich dann die Bytes um, die ich nachgegooglet habe. In der Tracedatei sehe ich nur die Adresse bei der der Fehler eintritt, nicht den Callstack. Bzw. der ist "leer". "Stack dump: 0023:00468bd0 0x00000000 0x00000000 0x00000000 0x00000000" So kam ich ja überhaupt erst auf die Stelle. Woher hast du denn den von dir geposteten ASM? S4 fängt bei mir erst bei 0x00400000 an und geht auch nur bis etwas 0x0059... Ich beziehe mich jetzt ausschließlich auf den Access Violation Absturz. Um ehrlich zu sein bezweifle ich, dass die Desyncs fixbar sind von uns aus. Wenn der Abschnitt von S4_Main.exe kommt, poste mal die Opcode Bytes dazu, du weißt ja wie das geht, sind ja bei dir unten bei. Dann kann ich das bequem bei mir finden. Ich sehe gerade du postet Ausschnitte aus der Economy ddl. Also noch mal zur Übersicht. Ich beziehe mich gerade auf den Access Violation Absturz in der S4_Main.exe, der durch Marktplätze und Häfen verursacht wird. Fehlerentstehung ist ein Getter der mit Nullzeiger aufgerufen wird. Hier der auslösende Ausschnitt (das mov) .text:00468BD0 ; int __thiscall Concurrency::details::SchedulingRing::Id(Concurrency::details::SchedulingRing *__hidden this) .text:00468BD0 ?Id@SchedulingRing@details@Concurrency@@QBEHXZ proc near .text:00468BD0 ; CODE XREF: sub_43E4E0+11F↑p .text:00468BD0 ; sub_43EE50+146↑p ... .text:00468BD0 mov eax, [ecx+0B8h] .text:00468BD6 retn .text:00468BD6 ?Id@SchedulingRing@details@Concurrency@@QBEHXZ endp .text:00468BD6 4 Stellen rufen das auf. Drei davon sind sehr ähnlich im Ablauf. Hier ein Beispiel im Pseudocode. switch ( *(_DWORD *)(v5 + v2 + 4) ) { case 1: v10 = (int)*(&dword_738A4C + v6); if ( v10 ) v11 = (Concurrency::details::SchedulingRing *)((*(_BYTE *)(v10 + 10) == 2 || *(_BYTE *)(v10 + 10) == 4) != 0 ? v10 : 0); else v11 = 0; if ( !*((_BYTE *)v11 + 189) && Concurrency::details::SchedulingRing::Id(v11) == 2 ) sub_4687D0(a2); break; case 2: v9 = (int)*(&dword_738A4C + v6); if ( !v9 || *(_BYTE *)(v9 + 10) != 1 ) v9 = 0; if ( !*(_BYTE *)(*(_DWORD *)(v9 + 100) + 104) && sub_449340(*(_DWORD *)(v9 + 100)) == 2 ) sub_448DC0(a2); break; case 3: v8 = (int)*(&dword_738A4C + v6); if ( v8 && (*(_BYTE *)(v8 + 10) == 2 || *(_BYTE *)(v8 + 10) == 4) ) { if ( sub_461BB0(*(&dword_738A4C + v6)) == 2 ) sub_461910(a2); } else { sub_43D230(v6, v7); } break; } Man achte auf die Zuweisung von v11 in Abhängigkeit von v10. Das wurde durch den Compiler schön optimiert durch den ternären Vergleich. Der kommt übrigens mit dem ummantelnden If auch noch an zwei weiteren Stellen vor. Die (doppelte) Nullzuweisung ist so eigentlich sehr offensichtlich. Deswegen erkläre ich mir ein Übersehen des Programmierers so, dass das if und der ternäre Vergleich mal in eine inlined Methode ausgelagert wurde. Kann ich denn in IDA Opcodes hinzufügen und die Offsets werden alle automatisch angepasst? Das könnte das Fixen und die evtl. Suche einer Codecave überflüssig machen.[/quote]
Spamschutz: Löse die folgende Aufgabe: Welche Screenshots stammen aus dem Spiel 'Die Siedler 4'? Screenshot 1 Screenshot 2 Screenshot 3
Oh hey mein alter Freund. (Interpretiere das "alter" gerne in Zusammenhang mit Freund oder ohne) Habe im Ubiforum mal einen längeren Beitrag verfasst. https://forums-de.ubi.com/show...l-seltener-Auftreten-zu-lassen
Hallo InstantMuffin, ich hab vor einiger Zeit mal getestet im Multiplayer und Forenbeiträge gelesen. Der desync ist sicher erreichbar wenn du mit KI-Ggnern spielst. Ohne KI kann ich stundenlang auf 2 Rechnern spielen. Desync-> In gleichen Bildausschnitten laufen verschieden viele Pios rum und solche Dinge. Den Fehler ignorieren hilft nicht weil das Savegame nicht mehr lädt. Kann ich mit Bytepatch allerdings ignorieren und weiterspielen ohne load. Wichtig ist auch: Rechnerleistung hilft. Wenn 1 Rechner bremst ist ein desync wahrscheinlicher. Möglich könnte sein den Programmablauf so zu ändern daß zwar ruckeln entsteht aber dafür keine Fehler. Mehr Ideen habe ich jetzt nicht dazu, Gruss
Erstmal, entschuldige die 2 im Namen, ich bin zu faul zum Login. Also zunächst zum Desync: Einige berichten davon keine mehr gehabt zu haben, andere das Gegenteil. Genau dasselbe wie bei dem vermeintlichen Fix von Morphy, also nichts wirksames. Interesse die HE zu kaufen habe ich natürlich nicht. Die ausführlichen Berichte anderer reichen doch aus (und bestätigen dass selbst Tippfehler in Config-Dateien, die zu dem Maya-Musikbug führen nicht behoben worden sind). Ich wäre doch mehr als blöd, wenn ich für ein noch verbuggteres Spiel als das Original Geld ausgeben würde. S4 war damals das erste von mir gekaufte Computerspiel. Ich kann mich noch genau daran erinnern, wie ich im Laden stand und aufwändig gestaltete Boxen des Spieles aufgetürmt standen und ich sagte "Ich will das hier". Das waren damals 70DM. Mit Inflation sind das 46,50€. Für einen Drittklässler damals allerdings kommt sowas dem Kauf eines Kleinwagens gleich. Unentgeldlich an dem Spiel zu arbeiten habe ich im Ubiforum sogar angeboten. Keine Rückmeldung. Bzgl. Teilbehebung eines Fehlers warte ich seit genau einem Monat und zwei Tagen auf Antwort der Devs. Bis jetzt hat mich nur ein Communitymanager vertrösten können. Tut euch mal zusammen und nervt die, evtl. kriege ich dann Post. Düsseldorf ist nicht weit weg.
Verdammt... ich konnte es selbst nicht glauben als im Log plötzlich der Desync Fix stand. Nur noch mal Klartext, es hat sich also wirklich gar nichts in der HE geändert und Ubisoft hat bezüglich des Desync Problems nur gelogen ? Ich hätte auch Interesse an dem kleinen Savemanager. Wäre echt praktisch so ein kleines Tool zu haben welches die Spielstände ganz automatisch abspeichert. Zumindest ist das momentan wohl der einzige Workaround. Nochmal Danke, dass du dich so reininvestierst. Ich hoffe es kommt der Tag, an dem ich endlich mal normal Siedler spielen kann haha. EDIT: Ok es scheint mir als hättest du schon echt verdammt viele Stunden in die Analyse der Fehler investiert. Kauf dir doch erstmal die HE und beurteile selbst wie die Lage ist. Wenn noch Verbesserungsbedarf besteht, melde dich doch einfach mal bei Ubisoft und engagiere dich als ehrenamtlicher Mitarbeiter. Ich glaube du würdest damit ein Paar tausend Siedlerfans sehr glücklich machen.
Dieser Beitrag wurde von Nicklander am 25.01.2019 um 13:57 editiert.
Desync Probleme sind in der HE NICHT behoben worden. Changelog hin oder her, entsprechende Beiträge finden sich im Ubi-Forum.
SiteEngine v1.5.0 by nevermind, ©2005-2007 Design by SpiderFive (www.siedler-games.de) - English translation by juja Impressum