Stellaris News - Stellaris Dev Diary #170 - Leistung und andere technische Fragen
Es gibt eine neue News zu dem Steam Game Stellaris vom 20.02.2020. Folgendes hat dabei der Entwickler von Stellaris veröffentlicht:
Hallo, meine Freunde! Hier ist Moah, der technische Leiter von Stellaris beim Tippen. Endlich kann ich darüber sprechen, worauf Ihr alle gewartet haben: Wie viele neue Schnabeltiere wird es in den Verbänden 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).
Das empfindliche Gleichgewicht
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 eine Funktion hinzufügen, fügen Ihr weitere Verbindungen hinzu. Wenn Ihr vorsichtig sind, fügen Ihr nur einige wenige hinzu, wenn Ihr in Eile sind, fügen Ihr etwas zu viele hinzu. Dies führt in der Regel zu ungeplanten Features (aka Bugs). Außerdem neigen wir, sobald wir sie im eigentlichen Spiel sehen, dazu, Features auf neue, unerwartete Weise zu erweitern, was zu mehr ungeplanten Features(tm) führt.
Sobald wir erkennen, was passiert, beginnen wir, vorsichtiger zu sein. Vielleicht zu vorsichtig. Zu viele Dinge zu oft überprüfen, um sicherzustellen, dass diese Interaktion, die eigentlich nie stattfinden sollte, auch tatsächlich nicht stattfindet. Nicht jetzt, nicht später. Niemals.
Ihr haben also die ungeplanten Features entfernt, aber das Spiel ist ein bisschen, äh... zu vorsichtig. Einige würden sagen, dass sie langsam sind.
Ihr entfernen also einige dieser Schecks. Ihr erkennen, dass Ihr nicht um die Galaxie herumschleifen müssen, sondern nur um diesen einen winzigen Planeten herumschleifen könnt. Dann geht man einen Schritt weiter und denkt: "Nun, ich kann diese Prüfung vielleicht nur alle drei Wochen durchführen, und diese Berechnung, die für all diese Prüfungen erforderlich ist, könnte ich hier speichern und bis zur nächsten Änderung wieder verwenden.
Jetzt ist das Spiel also nicht mehr so vorsichtig, wir sind wieder auf ungeplantem Spielfilmgelände. Aber wenn das Caching (Speichern/Wiederverwenden von Berechnungen) zu verschiedenen Zeiten auf verschiedenen Rechnern erfolgt, erhalten Ihr leicht unterschiedliche Ergebnisse (z.B. wenn Ihr einen Entwickler vor und nach dem Kaffeetrinken um etwas bitten).
Leicht unterschiedliche Ergebnisse sind das, wovon OOS lebt! Clients und Server haben eine Kostendifferenz von 0,0001, die sich im Laufe der Zeit dahingehend auswirkt, dass die Korvette zwar auf dem Server, nicht aber auf dem Client gekauft wird.
Ihr entfernen also Euren "intelligenten" Algorithmus. Ihr ersetzen ihn durch den richtigen Algorithmus. Ihr verlieren die Hälfte von dem, was Ihr in Schritt 2 gewonnen haben, und führen einige Fehler wieder ein. Wahrscheinlich.
Spülen und wiederholen.
Aber genug von meiner morgendlichen Routine! Lass uns reden...
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).
Das empfindliche Gleichgewicht
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 eine Funktion hinzufügen, fügen Ihr weitere Verbindungen hinzu. Wenn Ihr vorsichtig sind, fügen Ihr nur einige wenige hinzu, wenn Ihr in Eile sind, fügen Ihr etwas zu viele hinzu. Dies führt in der Regel zu ungeplanten Features (aka Bugs). Außerdem neigen wir, sobald wir sie im eigentlichen Spiel sehen, dazu, Features auf neue, unerwartete Weise zu erweitern, was zu mehr ungeplanten Features(tm) führt.
Sobald wir erkennen, was passiert, beginnen wir, vorsichtiger zu sein. Vielleicht zu vorsichtig. Zu viele Dinge zu oft überprüfen, um sicherzustellen, dass diese Interaktion, die eigentlich nie stattfinden sollte, auch tatsächlich nicht stattfindet. Nicht jetzt, nicht später. Niemals.
Ihr haben also die ungeplanten Features entfernt, aber das Spiel ist ein bisschen, äh... zu vorsichtig. Einige würden sagen, dass sie langsam sind.
Ihr entfernen also einige dieser Schecks. Ihr erkennen, dass Ihr nicht um die Galaxie herumschleifen müssen, sondern nur um diesen einen winzigen Planeten herumschleifen könnt. Dann geht man einen Schritt weiter und denkt: "Nun, ich kann diese Prüfung vielleicht nur alle drei Wochen durchführen, und diese Berechnung, die für all diese Prüfungen erforderlich ist, könnte ich hier speichern und bis zur nächsten Änderung wieder verwenden.
Jetzt ist das Spiel also nicht mehr so vorsichtig, wir sind wieder auf ungeplantem Spielfilmgelände. Aber wenn das Caching (Speichern/Wiederverwenden von Berechnungen) zu verschiedenen Zeiten auf verschiedenen Rechnern erfolgt, erhalten Ihr leicht unterschiedliche Ergebnisse (z.B. wenn Ihr einen Entwickler vor und nach dem Kaffeetrinken um etwas bitten).
Leicht unterschiedliche Ergebnisse sind das, wovon OOS lebt! Clients und Server haben eine Kostendifferenz von 0,0001, die sich im Laufe der Zeit dahingehend auswirkt, dass die Korvette zwar auf dem Server, nicht aber auf dem Client gekauft wird.
Ihr entfernen also Euren "intelligenten" Algorithmus. Ihr ersetzen ihn durch den richtigen Algorithmus. Ihr verlieren die Hälfte von dem, was Ihr in Schritt 2 gewonnen haben, und führen einige Fehler wieder ein. Wahrscheinlich.
Spülen und wiederholen.
Aber genug von meiner morgendlichen Routine! Lass uns reden...
Die vollständige News zu Stellaris Dev Diary #170 - Leistung und andere technische Fragen findet ihr auf der Stellaris Steam Seite