Performance-Workarounds für die Aussenwelt

Hier geht es rund um den für 2013 angekündigten Teil 10 der RPG-Reihe

Moderatoren: Mighty, Thies, mara, Castore

Antworten
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Performance-Workarounds für die Aussenwelt

Beitrag von Incriminated »

Mit dem OSD des Rivatuners (MSI AFterburner) kann man sehr schön erkennen, dass die Grafikengine von MMX zwar auf maximalen Einstellungen selbst Grafikkarten der Enthusiasten-Klasse gut ausreizt, dies jedoch nicht für die Laggs in der Aussenwelt verantwortlich ist.

Immer wenn man sich ein paar Schritte bewegt limitieren selbst die dicksten 4-Kern-Prozessoren und die Grafikkarte fängt an sich zu langweilen. DIe limitieren abe rnicht wirklich, die Auslastung ist ebenfalls gering und man fragt sich... warum laggt das eigentlich.

Weil die CPU und GPU beide gemeinsam erstmal die GANZE Zeit darauf warten, das Dinge dynamisch von der "Platte" gestreamt werden, kaum ist das erledigt ist man aber shcon 6 Felder weiter.... das kann ja garnicht gutgehen... die Spiele-Hardware steht sich buchstäblich die Beine in den Bauch während es dank SSDs überhaupt grad so noch funktioniert :D

Demnächst sollte SSD also zu den Mindestanforderung geschrieben werden, denn ich mag mir garnicht ausmalen was es für ein Krampf ist dieses Spiel von einer HDD zu zocken.

Dies liegt daran, dass das Spiel zwar ein bischen mehr Speicher addressieren kann als non-LMA 32-Bit-Anwendungen in der aktuellen Version, aber leider nunmal eine 32-Bit-Anwendung bleibt und daher die Arbeitsspeicherkapazität modernen Spielecomputer garnicht richtig ausnutzen kann und somit der Sichtradius deutlich begrenzt.

Die Folge ist, dass die Prozessoren permanent damit beschäftigt sind von den Speichermedien Daten anzufordern. Diese "Call-Funktionen" bleiben offen, linken bis zum "Write" - also bis sie bedient werden ins Leere und dadurch sieht man selbst in unmittelbarer Nähe ständig Objekte reinpoppen.

Selbst die relativ kurzen Reaktionszeiten (<1ms) von Solid-Ste-DIsk reichen da einfach nicht aus... was das Spiel zum cachen benötigt sind Reaktionszeiten pro Draw-Call von <100 Nanosekunden.

Ein Lösungsansatz ist, sich eine RAM-Disk anzulegen die sich beim Herunterfahren des Computers oder bei jeder Änderung (Schreibzugriff) selbsständig backuped und beim hochfahren des COmputers automatisch läd. Auf diese RAM-Disk verschiebt man den Ressourcen-Ordner (StreamingAssets\res\ - 7,29 GB) und Symlinked diesen im original Spielverzeichnis einfach zu der RAM-Disk.

Nun befinden sich sämtliche Streaming-Ressourcen bereits von vorneherein im Speicher... wenn von diesem Ordner gelesen werden soll, verweist das Dateisystem im Spielverzeichis auf die RAM-Disk, wo dann der RAM-Disk-Gerätetreiber für jedem Streaming-Call auf die Adresse im Speicher verweist. Der Prozessor wendet daraufhin den "Copy/Remap"-Befehl an und die Daten sind mit maximaler RAM-interner Geschwindigkeit geladen.

Man braucht dafür mindestens 16 GB Speicher.

Ich werde das mal testen und wenns klappt eine kurze genauere Anleitung posten.
Zuletzt geändert von Incriminated am Do 13.02.2014 - 21:55, insgesamt 6-mal geändert.
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

Edit: Läuft prächtig.
1. RAM-Disk erstellen zB Primo-RAM-Disk, diese so einstellen, dass die beim Boot vom Festplattenimage läd abe rgarnicht automatishc speichert (load-only).

2. Ordner StreamingAssets\res\ aus dem Spielvereichnis sicherheitshalber irgendwo hinkopieren (sichern)

3. Diesen Ordner anschließend auf die RAM-Disk verschieben (ausschneiden).

4. DOS-Box öffnen und zu StreamingAssets\ navigieren

5. EIngeben: " mklink /J res X:\res "
*X ist der Laufwerksbuchstabe eurer RAM-Disk

6. In PrimoDisk noch einmal rechte Maustaste auf die Disk und das Abbild einmalig speichern.

7. Fertig. Das SPiel checkt den Untershcied garnicht, Uplay auch nicht. Sollte ein Update kommen müsst ihr anschließend nur noch einmal rechte Maustaste und das Abbild noch einmal abspeichern :D
Stromausfall kein Problem.. das Block-RAM-Gerät läd das Abbild zuverlässig ziemlich flux (SSD vorausgesetzt) in einem Zug beim hochfahren einfach neu. Geht mit jedem Spiel. Ich habe verschiedene RAM-DIsks getestet, Primo geht am besten ab... ist 30-Tage Trial... kostet aber soonst für solche Zweck rund 38 Euro (Professional). WIll aber keine Werbung machen... andere RAM-DIsks solltens auch tun... gibt sie in Scharen!
Zuletzt geändert von Incriminated am Do 13.02.2014 - 20:56, insgesamt 1-mal geändert.
Wolveri
Fahnenträger(in)
Fahnenträger(in)
Beiträge: 81
Registriert: Mi 31.08.2011 - 23:23

Beitrag von Wolveri »

Ich wart erstmal auf den Patch, aber der Beitrag ist gut :top:
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

OMG mein CPU war nach dem Neustart noch im Power-Save Profil..und hat sich immer auf 800MHZ runtergetaktet, so kann das auch nich besser sein... lol hat ich vergessen auf Performance zu stellen ich Stromsparopfer... (ich starte sonst nicht so oft neu)... es ist deutlich besser mit ner RAM-Disk.

+Bessere Ladezeiten

Ausgang Agyn-Halbinsel in kaum mehr als 10 Sekunden... das hat vorher auch mal deutlich länger gedauert, trotz SSD.

+Viel weniger Cache-Laggs / Pop-ins

Selbst im Bereich Eschenhügel/Brücke-Richtung-Seehafen laggts nurnoch ganz kurz wenn man zwischen den großen Bereichen Navea Prärie und Eschenhügel wechslet, selbst wenn die Lichteffekte dazu kommen gehts noch.... und die Objekte fehlen auch nich mehr Sekundenlang. Popins gibts größtenteils nurnoch weit in der Ferne! YAY!

Zu was der gute alte Phenom 2 auf AM3 noch alles taugt :unschuldig:

Plötzlich wird die Grafikkarte in der Außenwelt tatsächlich auch mal so laut wie bei den Händlern :D ROFL

Geil. Ausprobieren! :smokin:

ABer ein echter Fix an der Engine ist es natürlich nich... man zwingt dass Spiel nur irgendwie mehr Arbeitsspeicher zu nutzen und auf Streaming von Harddisks zu verzichten. :top:

Wenn das Spiel schon nich mehr Speicher selbst addressieren kann, dann soll es sich das doch alles von einer virtuellen RAM-DIsk laden. Was besseres kriegt Ubi auch nur hin wenn die richtig 64-Bit kompilieren würden und DAMIT sollte man absolut nicht rechnen. ;)
Zuletzt geändert von Incriminated am Do 13.02.2014 - 22:00, insgesamt 1-mal geändert.
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

Das hier ist auch sehr Performance-Relevant und vom Aufwand her Pillepalle:

Die Geschwindigkkeit der Sonnenrotation kann man auch zusätzlich noch nach einigen getätigten Änderung in der Datei "config " nach Belieben besänftigen.
[gametime]
dawnStartHours = 8
dayStartHours = 10
duskStartHours = 18
nightStartHours = 20
minutesPerTurnOutdoor = 5
minutesPerTurnCity = 1
minutesPerTurnDungeon = 2
minutesPerRest = 480
Aktuell häufen sich die vier Zustände dawn,day,dusk,night zu nah bei einander.. und die Zeit zwischen 8 und 10 sowie 18 und 20, vergeht mit 24 Schritten (2 Stunden = 12xSchritt a 5 Minuten) viel zu schnell.

Nun macht es - realitätsbewusst wie wir sind :D - wenig Sinn, die gegenteilig zu weit auseinander zu legen, genausowenig wie die Zeit total zu verlangsamen, sonst steht man in der Tat bei einigen Quests vor nem Problem....aber ein bischen Gegensteuern tut überhaupt nicht weh.

Wir lassen nun einfach den Sonnenaufgang schon etwas früher beginnen, vielleicht um 6.. ich persönlich mag den Sommer eh lieber und den Nacht um 22 Uhr einfach etwas später hereinbrechen, ist nichtmal abwegig.. dafür gibt es ja dawn und dusk, wo es entsprechend morgens schon heller oder abends schon dunkler ist. Außerdem genehmigen wir uns 3 Schritte extra pro Stunde.
[gametime]
dawnStartHours = 6
dayStartHours = 10
duskStartHours = 18
nightStartHours = 22
minutesPerTurnOutdoor = 4
minutesPerTurnCity = 1
minutesPerTurnDungeon = 2
minutesPerRest = 400
Wir verteilen also die Konzentration der Laggs und lassen sie insgesamt zusätzlich seltener auftreten, denn die Zeit vergeht nun geringfügig langsamer (minutesPerTurnOutdoor) und die zwischen den Laggs wurde ausgedeht.

So hat Outdoor immer mindestens 60 Schritte Ruhe bis zum nächsten Lichteffekt, Tags und Nachts sogar 120 Schritte. :D Vorher waren es Auf/Untergang 24 Schritte und Tag/Nachts auch exakt 120.... im Prinzip haben wir nur die Phase AUf/Untergang passender gestreckt.

Andere gleich wirkende Variante:
[gametime]
dawnStartHours = 7
dayStartHours = 11
duskStartHours = 17
nightStartHours = 21
minutesPerTurnOutdoor = 4
minutesPerTurnCity = 1
minutesPerTurnDungeon = 2
minutesPerRest = 400
So ists Tag von 7 - 21 Uhr.. whatever.. hauptsache zwischen den Phasen sind genügend Schritte und mind 4 Stunden damits nich permanent 2x am Tag konzentriert auftritt und alles überläd!

Ich kann ja verstehen dass Sonnenauf- und Untergang normalerweise keine 4 Stunden dauert... aber von dem her wie es praktisch funktioniert sind das nur optische voneinander unterscheidbare Zyklenstufen.. anstelle von Momenten in denen es tatsächlich haargenau auf und Untergeht,denn das ist ja die ANIMATION zur Phase... der ungefähre Sonnenstand am Horizont kann ja ruhig ein bischen länger weilen.

Außerdem trödeln wir nicht mehr beim rasten, 6 Stunden Schlaf plus 40 Minuten fürs Zelt aufschlagen und hinterher Sachen packen muss ja wohl reichen :D
Zuletzt geändert von Incriminated am Do 13.02.2014 - 21:40, insgesamt 6-mal geändert.
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

Also man kann seinen Speicher besser für Spiel benutzbar machen und man kann das Problem mit den Lichteffekten relativieren ohne die Qualität runterzudrehen... mehr wüsst ich konkret nicht was man machen kann um ohne Engine-Update und Effekte-Qualität-rausdrehen was verbessern zu können

Kann kaum glauben wie wenig Laggs ich noch hab... kommt natürlich immernoch regelmäßig kurz vor,.. aber um Welten nich mehr so gravierend über mehrere Sekunden....

Ich will mich ja nich selbst loben, würd mich aber freuen wenn ein paar Leute die beiden Dinge mal ausprobieren könnte, berichten würden und der Thread ggf. gestickt wird, denn das Spiel krankt hier ungemein und es fühlt sich jetzt aus meiner Sicht bedeutend besser an.

:bounce:
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

Kommen wir zu einem weiteren Problem: Grafikkartenspeicher.

Es nützt wenig wenn der ganze Level, alle Objekte und Grafiken in den Arbeitsspeicher passen und das Streaming durch größere virtuelle RAM-Disks erweitert ist, wenn die Engine einfach nicht zu überreden ist mehr Grafikspeicher zu nutzen.

Das Spiel ist für die Mindestanforderung 512MB VRam konzipiert.

Das gelingt, weil die entsprechend kleinen Auflösungen bereit stehen und die ganzen nötigen VRam-Caches klein genug ausgelegt sind....(ob da nich jegliches Tool-Tip Quest Hinweis sowieso ausm Bildshcirmbereich ragt).

Trotz der besten Grafikkarte mit dem größten Speicher erklärt die Engine VRam-Speicherbereiche als verworfen, obwohl sie die praktisch noch sehr gut brauchen könnte. Der CPU hat dann die Aufgabe permanent die neuen Arbeitsspeicheraddressen in den kleinen Heap zu kopieren. Das generiert sogar nebensächlich unnötige CPU-Auslastung.

Der Heap ist so klein, dass er manchmal schon nur beim Sichtwechsel nachladen muss... das Fass das gerade schonmal vor einem aufgepoppt ist, tut das also nochmal wenn man sich 8 Felder später nochmal umdreht ^^ Da man gezwungen ist permanent überall hin und herzurennen ist das echt schmerzlich. Ein größerer VRam-Speicherkontingent wirkt da Wunder!

Und da liegt auch der Hase im Pfeffer. Moderne "fertige" Spiele bieten Performance-Presets und die Engines sind in der Regel soweit fortgeschritten sich an die Hardware des Kunden anzupassen.

DAU-mäßig erklärt wird das in den einzelnen "erweiterten Grafikptionen" der Spiele dann als: Big-Cache. Oder es wird einfach automatisch umgestellt wenn man bie gewissen Settings zB "Ultra" wählt. Die Engine legt sich dann vram-mäßig selber nicht mehr für Mindestanforderungs-hardware aus sondern für High-End. MMX kann das nicht, ich hab auch noch nichts gefunden wo ich diese "GPU-Memory-Budgets" vielleicht selber tweaken kann. Leider.

FUll HD - World MAP: konstant <1GB ohne Antialiasing. :(

Man muss da schon Antialiasing ohne Ende reinknüppeln um seinen High-End-2GB-Standard-VRam auszulasten, obwohl ein größerer Heap DEUTLICH gesünder wär.

Schade, schade, ich versteh nich warum Ubi das nich mit den Entwicklern (schneller, falls überhaupt) hinbekommt.

;( ;( ;(

Ich kenn die Engine zwar nich genauer... aber wenn man SOWAS nich ohne viel Aufwand feiner anpassen kann, dann ist sie nicht viel wert. Soweit ich weiß ist das auch nur ein bischen gescripte für die Entwickler dank klickibunti-SDKs... optionen im menü anlegen... variablen für die engine-settings anlegen... kurz testen und Heilung verspühren... noch neukompilieren und als update-verteilen. fertig. :D
Zuletzt geändert von Incriminated am Do 13.02.2014 - 23:07, insgesamt 1-mal geändert.
Wolveri
Fahnenträger(in)
Fahnenträger(in)
Beiträge: 81
Registriert: Mi 31.08.2011 - 23:23

Beitrag von Wolveri »

Für dich sollte man hier im Forum eine eigene Modding-Rubrik eröffnen.
Wäre toll wenn du deine Posts etwas kürzer und übersichtlicher hälst und vielleicht die unwesentlich Dinge weglässt. Soll nicht böse gemeint sein, eher ein Anstoss, damit andere sich nicht von deinen Textergüssen naja ich sag mal überfordert fühlen. :)
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

Diverse eigene Unterforem bzw. mehrere Bereiche für MMX wären vielleicht nicht verkehrt auch um alles übersichtlicher zu gestalten.

Wenn ich mir die Anzahl Threads und Anzahl Views für MMX Legacy hier im Forum im Vergleich zu den anderen schon länger existierenden Bereiche ansehe ist das doch schon ordentlich für so relativ kurze Zeit inkl pre-release.

Ist ja aktuell alles Kreuz und Quer zum Thema, man geht um 3 Uhr Nachts pennen und um 8 Uhr morgens sind 20 Threads neu oder aktualisiert.... O.o

Community-News <--- Patch-News und Page-relevantes sticken, wie die bisherigen Sticks
Modding <--- dort benutzbare Mods sticken
Quest-Fragen/Hilfe <--- häufige Hints sticken
Bugs und technische Hilfestellungen <--- known Bugs sticken, auch inoffizielle Patches so deklariert sticken


Das wäre echt fein. Aber ich seh hier zu keinem anderen MM-Forum irgendwelche Unterforen, wird also wohl nich passieren.
Benutzeravatar
Zarron
Dieb(in)
Dieb(in)
Beiträge: 72
Registriert: Di 28.01.2014 - 21:41
Wohnort: Berlin

Beitrag von Zarron »

hehe, nich schlecht soweit, is ja ne menge stoff zum ....
vielleicht sollteste das ganze zeug den Machern von MMX schicken, dann ham'se was um am Wochenende nachzudenken :)) :respekt: :))
* I'm "Ivan the Smart" the smartest man ever...^^ *
Incriminated
Ranger(in)
Ranger(in)
Beiträge: 297
Registriert: Do 06.02.2014 - 17:03

Beitrag von Incriminated »

Wenn ich mir solche Videos angucke:

https://www.youtube.com/watch?v=2Sf7pkGMfbA

Der Kerl hat ALLES auf LOW/OFF gesteltl :D

Das hab ich definitiv nicht mehr. Bei mir is alles High/Ultra/Max und ich kann die GANZE Map durchlaufen... nur bei EIntritt in großen Bereichen laggt der einmal ganz kurz weil er einfach ZU VIEL cachen muss. :D
Benutzeravatar
Zarron
Dieb(in)
Dieb(in)
Beiträge: 72
Registriert: Di 28.01.2014 - 21:41
Wohnort: Berlin

Beitrag von Zarron »

LOL, auweja...so schlimm is das bei mir nich nur bei paar Stellen in der Aussenwelt und dann nur kurz...das tut weh :D
* I'm "Ivan the Smart" the smartest man ever...^^ *
Antworten

Zurück zu „Might and Magic X: Legacy“