Beiträge von LtJulius

    Moin,


    bevor ich kantig werde, brauch ich erst nen Kaffee am morgen, sonst kann ich für nichts garantieren ;)

    Trotz allem möchte ich mich in diesen morgentlichen Stunden einmal vorstellen. Man nennt mich Julius, wurde mit C++98 Standart kompiliert.

    Aktuell befinde ich mich in Berlin, wo ich als Fullstack Webentwickler und Student mein tägliches Leben bestreite.


    Nebenbei zähle ich Bouldern und Sportklettern zu meinen Hobbies. Außerhalb dieser Zeit bin ich meist in irgendwelchen Entwicklungsumgebungen oder Arma anzutreffen.


    Arma habe ich mit Arma II bzw. DayZ angefangen. Kurz nach Arma III Release bin ich dann zu diesem gewechselt um dort einige tausend Stunden InGame und InEditor zu verbringen. Meine Zeit hat mich über die GQRF zur GQRF - TFC gebracht, wo ich nach 1,5a ausgetreten bin und meinen eigenen Clan, die UCF [ United Cyber Forces ] gegründet habe. Anschließend haben wir uns als Clan ca. 2,5a gehalten, bis wir nun in diesem kaputten Haufen angelangt sind.

    In Arma bin ich neben dem Gameplay hauptsächlich als Modder, Techniker und wandelndes Lexikon unterwegs.


    Weiter Spiele abseits von Arma sind unter anderem Anno, Supreme Commander: FA, Factorio, Space Engineers o.ä. Dies ändert sich von Zeit zu Zeit ;)


    Wenn jemand weiter Schnittstellenbeschreibungen zu meiner Person benötigt, können diese gern angefordert werden. Alle Information sind unter einer CC BY-ND 3.0 veröffentlicht und geltend gemacht.


    Ich danke für die Aufmerksamkeit,

    std::exit(-1)

    In Anbetracht weiterer Problem und Personen, welche eventuell Hilfe benötigen um die letzten FPS / TPS aus Arma 3 herauszukitzeln werde ich einmal eine kurze Anleitung anhalten, inwiefern ihr dort etwas anstellen könnt.


    Grundlegend möchte ich vorweg greifen, dass die folgenden Erkenntnisse, Ergebnisse aus Recherche und Erfahrungen sind, diese jedoch nicht ausschließen, dass der Effekt bei jedem garantiert ist oder ggf. eine effektive Verbesserung aufweist.



    Parameter Optimierung

    Grundsätzlich bietet Arma III direkt Startparameter, welche sich auf die Leistung auswirken. Diese limitieren oder definieren bestimmte Ressourcen die ihr Arma zur Verfügung stellen wollt.


    Code
    1. -maxMem=<Arbeitsspeicher im MB>

    Diese Option erlaubt es euch Arma 3 die maximale Größe des genutzten Arbeitsspeichers festzulegen. Generell sollte man hier vorsichtig sein, da Arbeitsspeicher eine wichtige Ressource in eurem PC-System ist.

    Im groben kann man sagen, dass mehr Arbeitsspeicher ebenfalls mehr Leistung mitbringen kann. Natürlich hat alles seine Grenzen.

    Hier ist es wichtig:

    1. möglichst viel freien Arbeitsspeicher bereitzustellen.
    2. genug Arbeitsspeicher frei zu lassen, sodass Windows nicht anfangen muss zu komprimieren oder swappen und ggf. noch cachen kann.
    3. nicht unnötig viel Arbeitsspeicher zu reservieren.
    4. [ 32-Bit Relevant ] nicht über den maximale adressierbaren Speicher hinaus gehen.

    Gerade in Bezug auf diese Punkte sollte jeder einmal einen Blick in den Task Manager riskieren um die Verfügbaren Ressourcen einzusehen.

    Hier einmal eine Übersicht inwiefern sich einige Werte näherungsweise standardisieren lassen.


    64-Bit Systeme
    Ram: 8GB | Restsystem: ~4GB | Speichermenge: 3276MB ( (8192MB - 4096MB) * 0,8 )
    Ram: 16GB | Restsystem: ~5GB | Speichermenge: 8192MB ( (16384MB - 5120MB) * ~0,72 )
    Ram: 32GB+ | Restsystem: ~5GB+ | Speichermenge: 12288MB


    32-Bit Systeme
    Ram: 4GB | Restsystem: ~1,5GB | Speichermenge 2048MB
    ... :evil: Tut mit herzlich leid, aber dein Hamster ist zu schwach für deinen intelligenten Toaster


    Code
    1. -maxVRam=<Grafikspeicher in MB>


    Kurz und knapp: Nehmt die maximalen verfügbaren Mengen die ihr an dediziertem Grafikspeicher zur Verfügung habt.

    Solltet ihr nebenbei Aufnehmen oder Stream solltet ihr 200MB - 1024MB frei lassen um Speicher für das Encoding übrig zu haben.

    Grafikkarten wie eine Vega 56/64 besitzen zudem dedizierte Encoder als Hardware, welche i.d.R. euer System nicht so sehr belasten, wie ein Software Encoding.


    Code
    1. -enableHT | -cpuCount=<Core Anzahl>


    Diese Option lässt euch die Anzahl an Kernen, welche genutzt werden sollen definieren. Besitzt ihr eine Intel CPU könnt ihr einfach die Option -enableHT nutzen.

    Besitzt ihr eine AMD CPU solltet ihr die Anzahl der Kerne mithilfe von -cpuCount direkt angeben.


    Code
    1. -exThreads=<Nummerischer Ausdruck>


    Hier wird eine Bitflag definiert, inwiefern die Arma III Engine Parallelisierung nutzen soll. Ich kann jedem empfehlen der eine 4 Core+ CPU besitzt hier die Option -exThreads=7 anzugeben um das Modelloading, Textureloading und File Operationen auszulagern.


    Code
    1. -hugePages


    Solltet ihr eurem Spiel genug Arbeitsspeicher bereitstellen bzw. euer System genug Arbeitsspeicher besitzen, könnt ihr die Option -hugePages angeben. Dies verändert das Allozierungsverhalten des Memory Allocator ( also die Arbeitspeicherhandhabung ).


    Code
    1. -nosplash -skipIntro -world=empty -noPause -noBenchmark -malloc=tbb4malloc_bi_x64


    Der letzte teil der Parameter Optimierung sind einfache Angaben, welche Ladebildschirme und Hintergrundszenarien im Menu von Arma III deaktivieren bzw. das Verhalten beim heraustabben / minimieren aus dem Spiel und den spezifischen Memory Allocator definieren.


    -noPause sorgt dafür, dass ihr fließend auf Arma heraus und auch wieder hinein tabben könnt oder das Spiel minimieren. Unerwünschte Nebeneffekte sind fortlaufende Singleplayermissionen :sleeping:


    -malloc=tbb4malloc_bi_x64 oder -malloc=system gibt an, welche Allocator ihr nutzen wollt. Der Standard ist als tbb4malloc_bi_x64 ausgewiesen und sollte auch genutzt werden. Alternativ sollte es keine negativen Effekte haben in einem Win10 den System-Allocator zu nutzen.


    Beispiel System:

    • AMD Ryzen 7 2700X
    • AMD RX Vega 56
    • 2 x 16GB 3200MHz Arbeitsspeicher
    • Samsung Evo 860 Pro

    -cpuCount=16 -exThreads=7 -maxMem=12288 -maxVram=8192 -nosplash -world=empty -noPause -noBenchmark -malloc=tbb4malloc_bi_x64 -loadMissionToMemory -hugePages



    Executable Optimierung

    Es ist durchaus möglich, dass der ein oder andere diese Option bereits kennt.

    Aus dem Hause Bohemia gibt es weitere Executables, welche mehr Leistung als die Stable-Main-Branch bringt. Es gibt jedoch gewisse Nachteile, welche in den letzten 1,5a Erfahrung mit diesen nicht aufgetreten sind.

    Diese Probleme wären eine nicht garantierte 100%ige Stabilität und ein höherer Update Interval.


    Für die Modder ist im speziellen die Profiling Branch gedacht, da diese noch alle Debug Funktionen aus SQF enthält. Die Performance Branch schmeißte diese raus.


    Ob diese Punkte nun negativ oder nicht sind, muss jeder für sich entscheiden. Ich konnte bisher in all der Zeit jedoch keine Probleme feststellen.

    Die jeweiligen Dateien findet ihr in der Dropbox von Dwarden.

    Dort ladet ihr das jeweilige Paket herunter, entpackt es in euer Arma 3 Verzeichnis und wählt im Launcher die jeweilige Executable.



    Work in Progress...