Descentforum.DE Forum Index Descentforum.DE
Search | FAQ | Memberlist | Usergroups | Newsfeed Newsfeed  Register
Profile | Log in to check your private messages | Log in 
Chat | D3-Tactics | Downloads | Map | Links | Serverlist | Teamspeak 

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

 
Post new topic   Reply to topic    Descentforum.DE Forum Index -> Pilotenbar - MessHall - Meckerkasten
View previous topic :: View next topic  
Author Message
Marix
Forum-Nutzer


Joined: 30 May 2001
Posts: 1015
Location: Germany

PostPosted: 29.03.2016, 14:30    Post subject: Die Erklärung für das „Levels don't match“-Problem Reply with quote

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
Back to top
View user's profile Send private message
D.Cent
Forum-Nutzer


Joined: 05 Mar 2006
Posts: 506
Location: Stuttgart

PostPosted: 29.03.2016, 22:41    Post subject: Reply with quote

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


Last edited by D.Cent on 29.03.2016, 22:58; edited 1 time in total
Back to top
View user's profile Send private message
Marix
Forum-Nutzer


Joined: 30 May 2001
Posts: 1015
Location: Germany

PostPosted: 30.03.2016, 13:03    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
D.Cent
Forum-Nutzer


Joined: 05 Mar 2006
Posts: 506
Location: Stuttgart

PostPosted: 30.03.2016, 13:32    Post subject: Reply with quote

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.
Back to top
View user's profile Send private message
Marix
Forum-Nutzer


Joined: 30 May 2001
Posts: 1015
Location: Germany

PostPosted: 31.03.2016, 13:10    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Sanwa5000
Forum-Nutzer


Joined: 29 Dec 2002
Posts: 186
Location: Braunschweig

PostPosted: 04.04.2016, 00:18    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
Do_Checkor
Administrator


Joined: 19 Nov 2000
Posts: 7768
Location: Oldenburg (Oldb.)

PostPosted: 04.04.2016, 19:01    Post subject: Reply with quote

Kurze Frage aus den Hinterreihen:

Wurde das hier übersehen / nicht verstanden:

D.Cent wrote:
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
Back to top
View user's profile Send private message
Floyd
Forum-Orakel


Joined: 20 Mar 2001
Posts: 2912
Location: Dresden, Germany

PostPosted: 04.04.2016, 20:39    Post subject: Reply with quote

Der Patch ist zu einfach. Der Weg ist das Ziel zwinkern
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Descentforum.DE Forum Index -> Pilotenbar - MessHall - Meckerkasten All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum
PayPal


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