Hallo, meine Freunde! Hier schreibt Moah, der technische Leiter von Stellaris. Endlich kann ich darüber sprechen worauf Ihr alle gewartet habt: Wie viele neue Schnabeltiere wird es in den Föderationen geben? Nach Wochen der...
Nun, anscheinend sollte ich "technischer" sein. Aber bevor wir uns in die Geheimnisse des Stellaris-Codes stürzen möchte ich mir die Zeit nehmen ein wenig über das Gleichgewicht zwischen dem Hinzufügen neuer Funktionen, der Verbesserung der Leistung und der Stabilität zu sprechen - insbesondere im Hinblick auf den Mehrspieler-Modus und die gefürchteten Out-of-Syncs (zumindest von mir gefürchtet).
Die empfindliche Balance
Stellaris ist, wie die meisten anständig dimensionierten Code-Basen, wie ein komplexes Spiel von Mikado oder Jenga: Jeder Teil ist auf irgendeine Weise mit jedem anderen Teil verbunden. Wenn Ihr ein Feature hinzufügt, fügt Ihr weitere Verbindungen hinzu. Wenn Ihr vorsichtig seid, fügt Ihr nur einige wenige hinzu, wenn Ihr in Eile seid fügen Ihr etwas zu viele hinzu. Dies führt in der Regel zu ungeplanten Features (alias Bugs). Außerdem neigen wir, sobald wir sehen, dass sie im eigentlichen Spiel funktionieren, dazu, Funktionen auf neue unerwartete Weise zu erweitern, was zu mehr Ungeplanten Funktionen(tm) führt.
Sobald wir erkennen was passiert werden wir vorsichtiger. Vielleicht zu vorsichtig. Wir überprüfen zu oft und viele Dinge um sicherzustellen das diese Interaktion, die eigentlich nie stattfinden sollte, auch tatsächlich nicht stattfindet. Nicht jetzt und nicht später. Nie und nimmer.
Ihr haben also die ungeplanten Features entfernt, aber das Spiel ist ein bisschen, äh... zu vorsichtig. Manche würden sagen, es ist langsam.
Ihr entfernt also einige dieser Prüfpunkte. Ihr erkennt, dass Ihr nicht um die Galaxie herumlaufen müsst, sondern nur um diesen einen winzigen Planeten. Dann geht man einen Schritt weiter und denkt: "Nun, ich kann diese Prüfung vielleicht nur alle drei Wochen machen, und diese Berechnung, die für all diese Prüfungen benötigt wird, könnte ich hier speichern und, bis sie sich ändert, bis zum nächsten Mal wiederverwenden.
Jetzt ist das Spiel also nicht mehr so vorsichtig, wir sind wieder auf einem ungeplanten Feature-Gelände. Aber wenn das Caching (Speichern/Wiederverwenden von Berechnungen) zu verschiedenen Zeiten auf verschiedenen Rechnern erfolgt, erhält man leicht unterschiedliche Ergebnisse (wie wenn man einen Entwickler vor und nach dem Kaffee um etwas bittet).
Etwas unterschiedliche Ergebnisse sind das, wovon OOS lebt! Clients und Server haben 0,0001 Kostendifferenz, die sich im Laufe der Zeit zusammensetzt, da die Korvette auf dem Server, aber nicht auf dem Client gekauft wird.
Ihr entfernt also Ihren "intelligenten" Algorithmus. Ihr ersetzt ihn durch den richtigen Algorithmus. Ihr verliert die Hälfte von dem, was Ihr in Schritt 2 gewonnen habt, und führt einige Fehler wieder ein. Wahrscheinlich.
Bereinigen und wiederholen.
Aber genug von meiner morgendlichen Routine! Reden wir über... Leistung
Stellaris-Fans sind wie C++-Programmierer: Sie denken immer nur an die Leistung. Fairerweise muss man sagen, dass sie in letzter Zeit auch bei uns oft auf dem Plan steht. Wir wissen, dass es nicht alles ist, was es sein könnte, besonders im späten Spiel und bei den größeren Galaxien. In diesem Sinne haben wir uns die Zeit genommen, als wir es normalerweise können, die Leistung ein wenig mehr zu verbessern. Wir haben uns angesehen was am meisten Zeit in Anspruch genommen hat, und wie jeder weiß ist das...
Pops.
Es gibt viele Gründe warum Pops viel Zeit in Stellaris verbrauchen, aber der wichtigste ist, dass wir im Endspiel SO VIELE von ihnen haben. SO So so viele. Und sie tun so viel! Pops müssen sich ausrechnen, wie gut sie bei jedem Job wären (sie tun das alle 7 Tage). Dann müssen sie gegen jeden anderen Pop auf der Welt kämpfen, um den Job zu bekommen, in dem sie am besten sind. Sie müssen auch prüfen ob sie eine bestimmte Ethik haben könnten. Ob sie sich einer bestimmten Fraktion anschließen könnten. Wie glücklich sie sind. Wie glücklich sie sein könnten. Wie glücklich sie auf dem Planeten da drüben sein würden.
All diese Dinge lösen die Berechnungen der Modifikatoren aus. Wenn Ihr Euch an mein letztes Dev-Tagebuch erinnert, wisst Ihr, dass Modifikatoren das Einzige sind, das zahlreicher ist als Pops in Stellaris. Und sie hängen alle voneinander ab. Sie zu berechnen ist wie an einem Faden zu ziehen und den ganzen Pullover zu bekommen.
Das Video vergleicht die Leistung, beim Ausführen eines gespeicherten Spiels aus der Community, mit über 20000 Pops, von 2.5.1 "Shelley" mit 2.6 "Verne" welches diesem Beitrag beigefügt ist. Es wurde auf meinem Arbeitscomputer aufgenommen (Intel Core7-7900X @ 3,30Ghz, 10 Kerne und 20 Threads, und AMD R9 Fury). Ihr werdet nicht unbedingt die gleichen Ergebnisse erhalten, der genaue Leistungsunterschied wird je nach Computer und natürlich der genauen Situation in Euren eigenen gespeicherten Spielen variieren. Im Durchschnitt haben wir in späten Spielsituationen eine Verbesserung zwischen 15 und 30 % festgestellt.
Diese Rettung ist einfach ideal, um die Auswirkungen der Verbesserung der Pops zu zeigen.
Wie hoch ist dieser Durchschnitt überhaupt? Woher wisst Ihr das?
Nun, wir haben Rechner, die das Spiel die ganze Nacht spielen, jede Nacht. Morgens überprüfen wir wie weit sie in der Lage waren zu gehen. Wir fragen sie auch, wie viele Fehler aufgetreten sind, wie ihr Endspiel aussah, ob sie irgendein OOS bekommen haben, und dann stellen wir all das in Tabellen und Grafiken mit vielen Farben dar. Dann löschen wir die Rechner damit sie keine lästigen Fragen über Seelen und so weiter stellen.
Zum Schluss
Obwohl wir die Leistung im Auge behalten und unser Bestes tun, um sie vernünftig zu halten, sind wir froh, dass wir die Gelegenheit hatten uns tiefer in die Sache zu vertiefen. Wir hoffen, dass die Änderungen bei Euch ebenso viel Freude auslösen wird wie bei uns, und wir freuen uns auf Euren Feedback!
Nächste Woche wird es ein weiteres Entwicklertagebuch über die andere Sache geben, auf die Ihr alle gewartet habt ... MEHR PLATYPI!
PS: Die von uns verwendete Speicherdatei stammt aus der Community, einem der Performance-Threads. Wir sind jedoch unsicher woher wir sie ursprünglich bekommen haben. Wenn Ihr sie also wiedererkennt oder wenn sie Dir gehört, sagt uns bitte Bescheid damit wir Ihnen die entsprechende Anerkennung zukommen lassen können.
Quelle: https://forum.paradoxplaza.com…technical-issues.1335134/