Also was Assets und Mods angeht, denke das ich dies noch etwas genauer erklären kann, aber Nagelt mich darauf bitte nicht Fest.
Was frisst Resourcen und Performance bei Cities-Skylines? warum gibt es andere Spiele mit sehr aufwendiger Grafik und laufen absolut Flüssig und warum gelingt dies bei Cities-Skylines nicht oder nur bedingt?
Als erstes muss man beide Arten von Spielen verstehen, was unterscheidet Cities-Skylines von anderen Spielen wie GTA, Metro 2033, Mass Effect Andromeda u.s.w.
Nun das ist recht schnell erklärt, Cities-Skylines ist nicht einfach ein Programm was nach und nach abgearbeitet wird, also Befehl für Befehl, sondern hier hat der Spieler einen mehr oder weniger großen Einfluss auf den Spielverlauf und den Ablauf der verschiedenen Programm-Module oder Programm-Abschnitte.
Einfacher gesagt, Spiele wie Metro 2033, Mass Effect (egal ob die ersten Teile oder der aktuelle) sind wie Spielfilme, Kinofilme, denn hier gibt es ein Storyboard nach dem diese Spiele entwickelt und Programmiert werden, der Spieler kann hier in gewissen Grenzen, die von den Programmierern vorgegeben werden, interagieren und seien Weg zum Ziel finden.
Kurz gesagt, es sind Statische-Spiele, Spiele die einen Ablaufplan haben.
Cities-Skyline dagegen, ist ein Dynamisches Spiel, denn der Spieler kann hier weit mehr auf den Spielablauf Einfluss nehmen, zwar gibt es auch hier Grenzen die von den Programmierern vorgegeben worden sind, aber eher durch die Hardwäre auf dem das Spiel entstanden ist, und dann kommt noch die Hardwäre der Spieler dazu.
Daher gibt es auch Angaben über die Mindestvoraussetzungen und Optimale Voraussetzung, was bedeutet diese für den Spieler und Cities-Skylines im Vergleich zu anderen Spielen.
Nehmen wir wieder die Statischen-Spiele, eine Mindestvoraussetzung oder Konfiguration, bedeutet meistens, das man hier das Spiel recht flüssig Spielen kann, aber oft Einbußen in der Darstellung hat, Landschaften sind nicht sehr Detailliert, Texturen für Oberflächen sind nur in geringen Auflösungen zusehen, und sehen halt nicht sehr Realistisch aus, z.B. eine Backsteinmauer sieht irgendwie Flach aus, hat keine Tiefe, Objekte wie Häuser, Gegenstände und auch sich Bewegliche Objekte, wie Autos sehen mehr Kantiger aus.
Wenn man nun die Optimale-Konfiguration nimmt, dann kann man das Spiel in seiner vollen Pracht spielen, also alles sieht Realistischer aus, die Auflösungen der 3D-Objekte ist viel höher und auch die der gebrauchten Texturen.
Objekte bestehen aus Punkten in einen 3D-Raum, diese Punkte werden mit Linien verbunden und ergeben eine Fläche, wenn sie aus mindestens 3 Punkten besteht und diese Punkte miteinander verbunden sind.
Eine Ebene Fläche kann entweder aus mindestens 3 Punkten bestehen aber genau so aus 1000 und mehr Punkten, die alle zusammen eine einzige Fläche ergeben wenn diese Eben ist, aber es werden auch einzelne Flächen aus 4 Punkten gebildet, bei 1000 Punkte wären das schon 250 Flächen, die aber nur dazu dienen mehr Details darzustellen, um so Detaillierter ein Objekt sein soll, umso mehr Flächen werden eingesetzt, aber oft auch Hoch aufgelöste Texturen, diese Flächen nennt man auch Polygone oder Faces.
Das ist auch mit ein Grund warum in Cities-Skylines Autos nicht sehr Detailliert sind, um so Detaillierter ein Objekt sein soll, um so mehr Polygone hat ein Objekt, also viele Punkte, und jeder Punkt belegt auch Speicherplatz sowohl im Arbeitsspeicher als auch im Speicher der Grafikkarte, ein einzelner Punkt braucht schon 3 Speicherplätze um die Position im 3D-Raum festzulegen, warum 3 Speicherplätze, ganz einfach, einen für X, einen für Y und einen für Z.
Dieser Raum kann mit mindestens 3-Bytes pro Punkt gespeichert werden, wenn man nur Koordinaten von 0-255 Speichert, aber so ein Punkt kann auch mit 12-Bytes pro Punkt gespeichert werden, und das bedeutet schon mal die 4 fache Speicherbelegung für einen einzigen Punkt im 3D-Raum, dieser kann aber auch 24-Bytes beanspruchen, was eine 8 fache Speicherbelegung für einen einzigen Punkt im Raum bedeutet.
So ein Punkt wird gebräuchlich als Fließkommazahl gespeichert, und diese werden halt mit 32-Bits dargestellt, 32-Bits bedeutet daher 4 Bytes-Speicherplatz, und da man 3 Fließkommazahlen für einen 3D-Punkt braucht, kommt man hier auf 12-Bytes, in wie weit hier schon 64-Bits eingesetzt werden ist mir nicht bekannt, aber um so mehr Bits umso genauer wird dieser Punkt im 3D-Raum bestimmt.
Nehmen wir mal ein ganz einfaches Objekt, einen Würfel, dieser kann auch im Spiel z.B. ein Gebäude darstellen, so ein Würfel besteht aus mindestens 8 Punkten, die alle zusammen diesen Würfel ergeben, pro Punkt brauchen wir 3 Koordinaten, also sind das insgesamt 24 verschiedene Koordinaten im 3D-Raum, jeder dieser Koordinaten braucht 4-Bytes Speicherplatz, das macht bei 24 also 96 Bytes, das klingt nicht nach sehr viel, aber wenn nun so ein Objekt z.B. aus 1000 Punkten besteht, dann sieht das ganze schon anders aus.
Bei 1000 Punkten x 3 Koordinaten x 4 Bytes pro Koordinate = 12.000 Bytes, das macht umgerechnet 11,72 Kilobytes Speicherplatz.
Wenn man sich nun vorstellt, dieses Objekt kommt 100 mal vor, dann ist man schon bei 1,14 Megabyte für alle 100 Würfel.
So hoffe bis hier ist mir kein Rechenfehler unterlaufen.
So ein 3D-Objekt alleine sieht nach nichts aus, denn die Textur ist hier das ausschlaggebende, was sind Texturen? Texturen sind einfach nur Grafiken/Bilder, ob selber Gemalt mit einen passenden Programm, oder bestehend aus Fotos, die man selber gemacht hat, es ist egal, all das sind Texturen wenn man sie in Verbindung mit einen 3D-Objekt bringt, auch so eine Textur kann unterschiedlich groß sein und entsprechend Speicherplatz in Anspruch nehmen, und das können echt gewaltige Speicherfresser werden.
Im aller günstigsten Fall braucht so ein Objekt keine Textur weil es Einfarbig ist, aber meistens werden in Spielen Texturen genutzt, und dann hat so ein Objekt nicht einfach nur eine einzige Textur sondern direkt mehrere, warum das, auch das ist einfach erklärt.
Ein Objekt hat seine Farben und Muster, dies entspricht schon mal einer Textur, dann kann ein Objekt schon mal Glanzstellen haben, oder stellen an dem es Spiegelt, das zusammen sind schon 2 weitere Texturen, dann kommen noch Texturen wo ein Objekt Transparent ist, dann noch eine für das vortäuschen von Höhen und Tiefen, und eine die Einfluss auf die Objekt-Geometrie nehmen kann, und zu guter Letzt noch eine wo eine Textur einfach Durchsichtig erscheinen soll, also alles was hinter dem Objekt ist, wird sichtbar.
Das ganze macht zusammen 7 verschiedene Texturen für nur ein einziges Objekt, und oft haben diese 7 Texturen alle die gleiche Größe, oder anders gesagt, die übrigen 6 Texturen sind genau so groß wie die 1. Textur, die halt für die Farbe des Objekts zuständig ist.
Texturen können 2 x 2 Pixel groß sein aber auch locker 4096 x 4096 oder sogar noch größer, dazu kommt noch das auch wieder jedes Pixel eine Farbe haben kann, also Rote, Grüne und Blaue, die zusammen dann eine Farbe ergeben.
Nehmen wir mal eine Textur mit einer Größe von 1024 x 1024, das macht 1.048.576 Pixel, ein Pixel entspricht 1 Bit, 8 Bits sind 1 Byte, das macht dann 131.072 Bytes = 128 Kilobytes, aber das ganze mal 3, denn für Rot, Grün und Blau, das sind dann 384 Kilobytes nur für die reine Farbinformation des Objektes, wenn man alle 7 Texturen einsetzt ist man dann bei 1,15 Megabyte.
Nimmt man nun 4096 x 4096 bei ca. 18,43 Megabyte, hat man nun 1000 verschiedene Objekte im Spiel die alle verschiedene Texturen haben und alle 7 einzelne Texturen brauchen, kommt man auf 18 Gigabyte, bei 1024 x 1024 wären es nur 1,13 Gigabyte für alle 1000 Objekte.
Nun sind nicht alle Objekte gleichzeitig im gleichen Abstand auf dem Bildschirm sichtbar, es kann auch das gleiche Objekt nochmals im Hintergrund in einer kleineren Version vorhanden sein, deshalb gibt es oft im Spiel jedes Objekt 2 mal und auch die eine oder andere Textur, das nennt man LOD-Objekt oder LOD-Textur, LOD steht für Level of Detail, zu Deutsch der Detaillierungsgrad, das sind dann Objekte mit weniger Details halt oder Texturen die nur halb so groß sind oder noch viel kleiner.
All diese Datenmengen muss eine CPU bearbeiten, also der Grafikkarte zur Verfügung stellen, vom Arbeitsspeicher in den Grafikkarten-Speicher kopieren, und das verbraucht schon mal gewisse CPU-Leistungen, die für andere Berechnungen nicht zur Verfügung stehen.
Fortsetzung "Der Einfluss von Mods" folgt