Descentforum.DE Foren-Übersicht Descentforum.DE
Suchen | FAQ | Mitgliederliste | Benutzergruppen | Newsfeed Newsfeed  Registrieren
Profil | Einloggen, um private Nachrichten zu lesen | Login 
Chat | D3-Taktik | Downloads | Karte | Links | Serverliste | Teamspeak 

Die Erklärung für das „Levels don't match“-Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    Descentforum.DE Foren-Übersicht -> Pilotenbar - MessHall - Meckerkasten
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Marix
Forum-Nutzer


Anmeldungsdatum: 30.05.2001
Beiträge: 980
Wohnort: Germany

BeitragVerfasst am: 29.03.2016, 14:30    Titel: Die Erklärung für das „Levels don't match“-Problem Antworten mit Zitat

Hi,

Jetzt habe selbst ich als alter Descentforum-Hase mal einen Topic bei dem mir völlig unklar wo ich den hinpacken soll, also landet er mal hier im vermischten.

Vor kurzem wurde der Code der Engine von Serious Sam veröffentlicht, und Icculus, einer der Leute die damals bei Loki gearbeitet haben, twittert recht aktiv über alles Mögliche was ihm auffällt während er den Code des Linuxcodes jetzt da wieder integriert. Dabei postete er auch eine Checksummenroutine, worauf ich mal nachgefragt habe, ob das auch das D3-Problem wäre, und bekam darauf die Erklärung serviert, wieso das bei D3 nicht funktioniert: https://twitter.com/icculus/status/714466925871505409.

Hier meine grobe Übersetzung: D3 prüft ob die Level auf den verschiedenen Rechnern übereinstimmen nicht anhand der eigentlichen Leveldatei auf der Platte, sondern erst nachdem das Level beim Laden verarbeitet wurde. Hier sind allerdings Fließkommazahlen beteiligt, und das rechnen mit Fließkommazahlen ist aufgrund der beschränkten Genaugkeit mit der Rechner arbeiten nicht so richtig deterministisch. Das hat zurvolge, dass verschiedene Builds zu verschiedenen Ergebnissen kommen. Das trifft nicht nur Linux vs. Mac vs. Windows, sondern z.B. auch Debug vs. Release-Builds, oder Builds die mit verschiedenen Versionen des gleichen Compilers gemacht wurden.

Wie schön häufiger behauptet gibt es dafür auch einen Fix der aber leider erst in 1.5 steckt. Ob der jemals kommt…

Hilft uns zwar alles nichts, aber trotzdem cool mal zu wissen, was da falsch gemacht wurde.

_________________
„Der einzige Weg, die Grenzen des Möglichen zu finden, ist ein klein wenig über diese hinaus in das Unmögliche vorzustoßen.“
--Arthur C. Clarke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
D.Cent
Forum-Nutzer


Anmeldungsdatum: 05.03.2006
Beiträge: 493
Wohnort: Spalt

BeitragVerfasst am: 29.03.2016, 22:41    Titel: Antworten mit Zitat

Es gibt doch schon lange einen "endgültigen" Fix Smilie
Es ist ein Patch, der das D3-Binary unter Linux so patcht, dass die FPU (Floating Point Unit) die gleiche Genauigkeit wie unter Windows verwendet.

Das Ganze ist hier zu finden: http://descentbb.net/viewtopic.php?f=1&t=9855&start=60


Zuletzt bearbeitet von D.Cent am 29.03.2016, 22:58, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Marix
Forum-Nutzer


Anmeldungsdatum: 30.05.2001
Beiträge: 980
Wohnort: Germany

BeitragVerfasst am: 30.03.2016, 13:03    Titel: Antworten mit Zitat

Gut zu wissen. Aber es ist ja wohl nicht nur ein problem korrekt eingestellter Genauigkeiten. Wenn ein Compiler die Operationen anders sortiert kommen andere Werte raus bei Floating Point. Spannende frage ob man den originalen Compiler auf einem aktuellen System überhaupt noch zum laufen bekommt. Ansonsten dürfte es unmöglich sein aus den Quellen nochmal ein kompatibles Binary zu erzeugen, außer man geht halt wieder auf antike Win98-Systeme.
_________________
„Der einzige Weg, die Grenzen des Möglichen zu finden, ist ein klein wenig über diese hinaus in das Unmögliche vorzustoßen.“
--Arthur C. Clarke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
D.Cent
Forum-Nutzer


Anmeldungsdatum: 05.03.2006
Beiträge: 493
Wohnort: Spalt

BeitragVerfasst am: 30.03.2016, 13:32    Titel: Antworten mit Zitat

Als ich XInstaReap geschrieben habe, konnte ich das Windows-Binary mit MSVC6 unter WINE erstellen Smilie (eingestellt auf Windows XP). Auf originalem Windows habe ich es noch nicht probiert, aber ich vermute, dass dieser alte Compiler im Kompatibilitätsmodus wohl funktionieren würde. Ein komplettes Binary zu erzeugen, wäre aber vermutlich weitaus schwieriger, da alle Libraries und Includes ebenfalls auf dem alten Stand von 1999 sein müssten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Marix
Forum-Nutzer


Anmeldungsdatum: 30.05.2001
Beiträge: 980
Wohnort: Germany

BeitragVerfasst am: 31.03.2016, 13:10    Titel: Antworten mit Zitat

Das kompilieren von Mods ist eigenltich auch nicht das Problem. Diese müssen ja nur die korrekte ABI aufweisen. Von daher kann man die auch mit aktuellen Compilern übersetzen, dieser muss nur das ABI kompatibel erstellen, was sich aber normallerweise einstellen lässt.

Ein korrekter Code für die Prüfsumme würde selbst mit aktuellisierten Includes das gleiche Ergebnis liefern. Das Level ist ja das gleiche. Das Problem ist, das mit einem Floating-Point-Code selbst wenn alles auf dem alten Stand ist, ein aktuellerer Compiler wenig Chancen hätte kompatiblen Code zu erzeugen. Man muss wirklich den gleichen nehmen, und die gleichen Optionen.

_________________
„Der einzige Weg, die Grenzen des Möglichen zu finden, ist ein klein wenig über diese hinaus in das Unmögliche vorzustoßen.“
--Arthur C. Clarke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sanwa5000
Forum-Nutzer


Anmeldungsdatum: 29.12.2002
Beiträge: 185
Wohnort: Braunschweig

BeitragVerfasst am: 04.04.2016, 00:18    Titel: Antworten mit Zitat

Ist die Kommunikation der Clients verschlüsselt? Sonst könnte man ja hier einen einfachen Proxy bauen, der die Zahlen mal eben "ebnet".
_________________
Deep World - www.syberflex.de - Descent 1/2 Remake
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Do_Checkor
Administrator


Anmeldungsdatum: 19.11.2000
Beiträge: 7567
Wohnort: Oldenburg (Oldb.)

BeitragVerfasst am: 04.04.2016, 19:01    Titel: Antworten mit Zitat

Kurze Frage aus den Hinterreihen:

Wurde das hier übersehen / nicht verstanden:

D.Cent hat folgendes geschrieben:
Es gibt doch schon lange einen "endgültigen" Fix Smilie
Es ist ein Patch, der das D3-Binary unter Linux so patcht, dass die FPU (Floating Point Unit) die gleiche Genauigkeit wie unter Windows verwendet.

Das Ganze ist hier zu finden: http://descentbb.net/viewtopic.php?f=1&t=9855&start=60


oder hab ich einfach nur das Problem nicht verstanden? Smilie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Floyd
Forum-Orakel


Anmeldungsdatum: 20.03.2001
Beiträge: 2907
Wohnort: Dresden, Germany

BeitragVerfasst am: 04.04.2016, 20:39    Titel: Antworten mit Zitat

Der Patch ist zu einfach. Der Weg ist das Ziel zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Descentforum.DE Foren-Übersicht -> Pilotenbar - MessHall - Meckerkasten Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen


Descent is a trademark of Interplay Productions.
Descent, Descent II are © Parallax Software Corporation.
Descent III is © Outrage Entertainment.
Descentforum.DE and Descentforum.NET is © by Martin "Do_Checkor" Timmermann.
Powered by phpBB © 2001-2008 phpBB Group