kirides / GD3D11

D3D11-Renderer for Gothic and Gothic 2
GNU General Public License v3.0
200 stars 18 forks source link

Abstürze in Archolos mit RDNA3 #152

Open NobbiHabogs opened 7 months ago

NobbiHabogs commented 7 months ago

Ich kopier das jetzt einfach aus der WoG hier rein, weil es zu umständlich wäre. Ich hab schon Tage damit verbracht und das Problem 100 mal erklärt, ich kann langsam nicht mehr. Hoffe du findest den Fehler:

Beim Speichern bekomme ich ständig (jedes ~5. mal) folgende Fehlermeldung: Unbenannt (1)

Spiele mit der Steamversion und habe sonst keinerlei Probleme abseits dessen. Das Spiel ist gerade erst frisch installiert. Ich benutze folgende Mini-Mods: Advanced Inventory Sprint Archolos Edition SAIS Archolos Edition QuickLoot SneakFix

Update:

Der Absturz passiert sogar auch, wenn ich speichern auswählen und dann per Mausrad durch die Spielstände scrolle. Also ich habe hochgescrolled, und als er auf Slot 15 gehen sollte stürzte das Spiel ab. Ist aber immer die gleiche Fehlermeldung. Ohne Plugins habe ich kein Absturz feststellen können nach kurzem Test (und 15 mal speichern), mit Sprint Plugin alleine allerdings schon. Ich teste das jetzt nochmal gegen und benutze 4 besagte Plugins, aber ohne Sprint.

U2:

Es passiert auch ohne jegliche Plugins.

U3:

OHNE Renderer aber MIT allen Plugins ist es bisher nicht abgestürzt. Verwendet habe ich den aktuellsten 17.8-dev14. Werde jetzt mal dev10 probieren, aber glaube nicht, dass das helfen wird. Könnte auch einfach daran liegen, dass ich eine aktuelle RX 7800 XT nutze. Auch die Einstellungen im AMD Tool habe ich mal so konservativ wie möglich eingestellt (Radeon Enhanced Sync off)

U4:

Ich werd das Game jetzt zum dritten mal noch mal ganz neu installieren und wenn es dann nicht geht, ist es halt so. Keine Lust da ewig rumzudoktorn. Habe noch nie eine Gothic2 Installation oder Mod gehabt (auch wenn ich nicht viele gespielt habe), die so krasse gamebreaking Bugs hatte. Auch seit Jahren immer mit DX11 und Sprintmod/Quickloot, das schlimmste war in den Anfängen des Rendereres, wo es alle 2-4h mal abgestürzt ist. Aber nicht alle 15 Minuten wenn man gerade speichern will...

U5:

Wieder das gleiche wie vorher auch. Archolos stürzt auch das erste mal ab, wenn man vom Schiff an Land kommt: ArcholosCrash Achievement Des Weiteren komplett eingefroren, als ich Silbach betreten habe. Und kurz darauf wieder den Fehler beim Speichern gehabt. Weiß echt nicht, was man da noch Positives sagen soll. Am Renderer liegts ja auch nicht, habe zuletzt noch meinen letzten Run unter Gothic 2 L'Hiver 2.0.4DE abgeschlossen mit Plugins. Da lief es 10 Stunden ohne Probleme. Hätte Archolos gerne mal gespielt, aber das ist doch kacke...

U6:

In Steam gibt es im Community-Bereich von Archolos ein Unterforum "[EN] English - Issues reporting", wo man "Technical FAQ - How to launch Archolos" findet: https://steamcommunity.com/sharedfiles/filedetails/?id=2874729582 Dort findet sich rechts eine Übersicht mit "DX11 -- recommended settings". Diese habe ich ausprobiert und seitdem keine Abstürze mehr beim Speichern gehabt. Da sich das die Konfigurationsdatei von meiner inhaltlich kaum unterschied, hab ich die Einstellung gesucht, die das Problem verursacht. Letztendlich kam ich zu dem Schluss, dass man im F11-Menü die "Dynamic Shadows" deaktivieren muss! Sobald die Schatten aktiv sind, stürzt das Spiel regelmäßig ab. Zwar nicht immer, aber wie weiter oben geschrieben ist es praktisch unspielbar.

Ich bin mir sehr sicher, dass das ein Phänomen ist welches nur bei AMD RX 7000er Karten respektive dem aktuellen Treiber in Verbindung mit Archolos und dem Renderer auftritt. Ich hab mit der gleichen Hardware erst kürzlich meinen L'Hiver 2.0.4DE Run beendet und in den verbleibenden 10h keinen einzigen Absturz gehabt, daher ist der Fehler äußerst spezifisch.

Anmerkung für Github: Dynamic Shadows (wieso auch immer) einen höheren RAM-Verbrauch. Ist das aktiv und lädt man ein Savegame, steigt der RAM Verbrauch von beispielsweise ca 1700 auf 1900 MB an. Dadurch ist man natürlich deutlich schneller an der Grenze zum Absturz, das ist alles. Dynamic Shadows selbst verursachen keinen Absturz

U7:

Mir ist aufgefallen, dass trotz gesetztem LAA-Flag die Anwendung nicht über ~2048 MB RAM belegen kann. Somit hat die Grafikkarte oder deren Treiber nix damit zu tun. Der Fehler tritt nur bei Benutzung des Resource Managers auf, bei manueller Installations des Playerkits und Union arbeitet die Anwendung korrekt und belegt auch mehr Speicher. Mehr dazu hier.

U8:

... Stürzt dann aber doch wieder unerwartet beim Speichern ab, obwohl bereits über 2100 MB belegt sind. Klicke auf die Grafik für eine größere Ansicht g2 crash crash.txt

Ich weiß auch schon gar nicht was wo wie genau passiert, ich hab alles über Wochen ausprobiert immer mal wieder. Es geht allerdings einfach nicht. Folgende Werte werden auch nicht mehr in der UserSettings.ini vom Renderer gespeichert: VisualFXDrawRadius=6000.000000 OutdoorVobDrawRadius=40000.000000 OutdoorSmallVobDrawRadius=30000.000000 SectionDrawRadius=6

Also diese Werte werden weder in die INI-Datei geschrieben, noch werden sie gelesen wenn man sie manuell hinzufügt. Sie werden einfach ignoriert. Ingame können sie aber verändert werden (und funktionieren auch). Irgendetwas stimmt mit dem Renderer in Verbindung mit RDNA3 Karten scheinbar nicht, obwohl ich mir die Verbindung nicht erklären kann, wieso es dann bei ~2 GB RAM abstürzt.

System:

Unbenannt

Additional context

Ich bin am Ende mit meinem Latein, ich nutze als letzten Hinweise evtl. noch DXVK oder lebe mit dem "Workaround", dass ich aktuell die Steam-Installation nutze, wo sich der Absturz ankündigt durch die fehlenden Bilder im Speicherstand.

kirides commented 7 months ago

Dynamische Schatten haben immer schon zu Problemen geführt und von der Verwendung abseits Nur Statisch als wert dafür ist abzuraten.

Zum Arbeitsspeicher und LAA-Flag:

Speicher ist nicht gleich Speicher.

Man muss sich RAM als Blöcke vorstellen.

1mb 1mb 1mb ...

Jedes Mal wenn eine Anwendung RAM will, fragt sie nach einem oder mehreren freien Blöcken, egal ob die Menge kleiner ist als ein ganzer block.

Wenn jetzt etwas viele freie aneinander-liegende blöcke braucht, aber es keine mehr gibt, dann bekommt man ebenfalls ein OUT OF MEMORY Fehler.

Es ist so wie mit Festplatten und Fragmentierung.

Die dynamischen Schatten sorgen für eine starke Fragmentierung von Arbeitsspeicher für die Anwendung, was zu crashes führen kann.

NobbiHabogs commented 7 months ago

Das Problem passiert aber permanent auch unabhängig der dynamischen Schatten, ich habe halt nur durch das ganze Testen gemerkt, dass diese den Absturz beschleunigen.

NobbiHabogs commented 7 months ago

Im polnischen Archolos Discord konnte man mir Gott sei Dank helfen und einen Workaround zeigen:

Die Ursache scheint doch wie zuerst vermutet der DX11 Renderer zu sein in Kombination mit AMDs neuester Grafikkartengeneration RDNA3 (RX 7000). Es liegt daran, dass AMD schon vor einiger Zeit angefangen hat den Treiber für neuere Karten (RDNA+) neu aufzubauen und der sog. "Driver Stack" bearbeitet wurde. Es gibt auch eine Anleitung dazu das wiederherzustellen, das ist zwar nicht ratsam, macht aber das Problem klarer.

Grundsätzlich ist das Update eine gute Sache, bringt kostenlos mehr Leistung und verbessert den Treiber selbst (was ich aus Erfahrung auch bestätigen kann). Es müsste also eine Anpassung des GD3D11 Renderers erfolgen, damit auch neueste Hardware und Treiberversionen unterstützt werden. Im polnischen Archolos Discord vermutete der User "Shouη" auch, dass deshalb auch die Einträge "VisualFXDrawRadius", "OutdoorVobDrawRadius", "OutdoorSmallVobDrawRadius", "SectionDrawRadius" weder gelesen, noch geschrieben werden können. Der GD3D11 Renderer arbeitet nicht 100%ig korrekt mit der Karte und es käme deshalb zu Komplikationen, unter anderem auch den Abstürzen oberhalb der 2 GB RAM, weil Daten falsch allokiert werden.

Die Alternative dazu ist DXVK, eine Art Übersetzer von DirectX11 zu der Vulkan API. Dabei ist Vulkan eine quelloffene API, die ursprünglich von AMD angestoßen wurde und generell laufen Spiele auf AMD Karten auch oft besser oder ressourcenschonender mit Vulkan. Ein Beispiel was mir einfällt ist Red Dead Redemption 2, wo die API standardmäßig implementiert wurde (da vermutlich auch auf der PS4 genutzt, die eine AMD CPU und GPU hat). Auch Gothic 2 kann dadurch über Vulkan laufen, braucht nebenbei deutlich weniger Ressourcen und hat außerdem ein etwas besseres Bild. Einzig das DX11-Menü geht jetzt nicht mehr, das ganze muss über die UserSettings.ini eingestellt werden (oder man stellt es vorher ein und benutzt DXVK erst danach). Dazu muss man die 32-Bit-Varianten der "d3d11.dll" und "dxgi.dll" in den Gothic\system Ordner kopiert werden.

Der RAM wird nun zu Beginn nur mit 1300 MB belegt, vorher waren es mindestens 1700 MB. Nach 3 Stunden Spielzeit ware es gerade mal 1700 MB. Das Spiel lief stabil und ist nicht abgestürzt. Ich bin immerhin glücklich, dass ich jetzt einen funktionierenden Workaround habe.

kirides commented 7 months ago

Ich finde das interessant, weil ich selbst eine AMD RX 7900 xtx habe und keine probleme bisher hatte.

Ich spiele aber auch immer mit der "nightly" Version. (Über den Releases-Reiter erreichbar)

NobbiHabogs commented 6 months ago

Das Problem besteht mit jeder GD3D11 Version, was ja auch Sinn ergibt. Und das lässt sich auch nur reproduzieren, wenn du Archolos spielst um über 2 GB RAM Nutzung zu kommen. Sonst hatte ich bisher auch keine Probleme.