Texturen, Dateien & Packs · 4 Min. Lesezeit

FiveM-Warnung "oversized asset": was sie bedeutet und wie du sie behebst

Auch verfügbar auf: English · Español · Français · Português · Italiano · Polski · Türkçe · Русский

Du startest deinen Server, und die Konsole füllt sich mit Zeilen wie dieser:

text
Asset <resource>/<file>.ytd uses <size> MiB of physical memory.

Das ist FiveMs Warnung zu übergroßen Assets. Es ist kein Fehler, und die Datei wird trotzdem gestreamt, aber sie zeigt dir, welche Dateien schwer genug sind, um Ärger zu machen. Hier steht, was gemessen wird, warum die Größe der Datei auf der Festplatte wenig aussagt und wie du diese Dateien verkleinerst.

Was FiveM misst

Beim Serverstart liest FiveM den Header jeder Datei im stream-Ordner einer Ressource. Dieser Header sagt, wie viel Speicher die Datei geladen belegt, in zwei Teilen: physical (Grafikspeicher: Texturen und Vertex-Puffer) und virtual (Systemspeicher: der Rest des Assets). Die Schwellen, aus FiveMs eigenem Code gelesen, sind für beide gleich:

Speicher einer DateiWas FiveM tut
über 16 MiBgibt die Warnung aus
über 32 MiBgibt sie gelb aus
48 MiB und mehrfügt hinzu: "Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering)." (Übergroße Assets können und WERDEN Streaming-Probleme verursachen, etwa Modelle, die nicht laden oder nicht gerendert werden.)
über 64 MiBgibt sie rot aus

Die Warnung gilt pro Datei. Eine 20 MiB große .ytd wird markiert, auch wenn der Rest deines Servers leicht ist.

Warum die Größe auf der Festplatte täuscht

Gestreamte Dateien sind auf der Festplatte komprimiert, und die Warnung zählt, was sie geladen belegen. Bei einer Textur ist das ihre Größe im GPU-Format mit jeder Mipmap-Stufe, aufgerundet auf ganze Speicherseiten. Eine grobe Orientierung, vor dieser Rundung:

Textur (mit Mipmaps)DXT1 (ohne Transparenz)DXT5 (mit Transparenz)
1024 × 10240,67 MiB1,33 MiB
2048 × 20482,67 MiB5,33 MiB
4096 × 409610,67 MiB21,33 MiB

Eine einzelne 4096 × 4096 DXT5-Textur liegt also schon allein über der Grenze, und eine .ytd mit ein paar 2048er-Texturen kann sie überschreiten, obwohl sie im Dateiexplorer klein wirkt. Die Seitenrundung kann die Summe spürbar größer machen als die addierten Texturen.

Wenn eine Datei wegen des virtuellen (System-)Speichers markiert ist, liegt es nicht an den Texturen, sondern an anderen Daten des Assets, etwa seiner Kollision. Das Verkleinern der Texturen ändert daran nichts.

Alle übergroßen Dateien auf einmal finden

Statt die Konsole zu lesen, zieh deinen ganzen resources-Ordner in Server Budget. Das Tool liest dieselben Header im Browser (es wird nichts hochgeladen) und listet auf:

  • Oversized: die Dateien über 16 MiB Grafikspeicher, die schlimmsten zuerst.
  • By resource: was jede Ressource streamt, nach Speicher sortiert.
  • Streamed twice: Dateinamen, die mehr als eine Ressource streamt. Das Spiel bekommt nur eine davon, behalte also eine Kopie.

Die Liste Oversized von Server Budget zählt Grafikspeicher. Eine Datei, die die Konsole nur wegen des virtuellen Speichers markiert, steht nicht darin.

Texturen verkleinern

Nimm die Dateien, die Server Budget markiert (.ytd, .ydr, .yft, .ydd), und zieh sie in den Asset Optimizer:

  1. Stell Largest texture size (größte Texturgröße) ein. 1024 ist der Standard; 2048 ist eine übliche Wahl für Autos und Liveries, die du aus der Nähe ansiehst.
  2. Lass Add missing mipmaps (fehlende Mipmaps hinzufügen) angehakt: Texturen, die ohne Mipmaps gespeichert wurden, bekommen sie zurück.
  3. Prüfe die Schätzung ("At 1024 px: about … less texture memory", also etwa … weniger Texturspeicher bei 1024 px) und die Dateitabelle.
  4. Klick auf Download the lighter files (.zip) (leichtere Dateien herunterladen, .zip). Du bekommst jede Datei unter ihrem eigenen Namen zurück: Lege sie an die Stelle der alten.
Asset Optimizer mit vier hineingezogenen stream-Dateien: Größe jeder Datei, größte Textur und der Texturspeicher, den 1024 px sparen würde, mit angehaktem Add missing mipmaps
Vier Testdateien: eine hat 2048-px-Texturen und sechs ohne Mipmaps; bei 1024 px spart sie etwa 9 MB Texturspeicher.

Eine Textur mit Mipmaps wird verkleinert, indem ihre größten Stufen wegfallen, ohne neue Kompression. Daher sieht sie genau so aus wie aus etwas größerer Entfernung. Eine Textur ohne Mipmaps wird mit allen Stufen neu aufgebaut, in der Größe, die du gewählt hast, oder in ihrer eigenen Größe, wenn sie kleiner ist.

Packs, die dieselbe Textur in vielen Wörterbüchern wiederholen, können sie stattdessen teilen: Texture Dedupe verschiebt wiederholte Texturen in eine gemeinsame .ytd. Zieh den Ordner danach noch einmal in Server Budget, um das Ergebnis zu sehen.

Fragen

Ist 16 MiB eine harte Grenze?
Nein. FiveM streamt die Datei trotzdem und warnt nur. Ab 48 MiB sagt die eigene Warnung, dass solche Assets Streaming-Probleme verursachen, also behandle alles über 16 MiB als Datei, die du verkleinern solltest.
Zählt die Warnung die Größe der Datei auf der Festplatte?
Nein. Sie zählt den Speicher, den die Datei geladen belegt, gelesen aus dem Header der Datei. Eine Datei kann auf der Festplatte deutlich unter 16 MB liegen und geladen trotzdem über 16 MiB.
Sehen kleinere Texturen schlechter aus?
Aus der Nähe wirkt eine 1024er-Textur weicher als eine 2048er. Aus der Ferne zeichnet das Spiel ohnehin die kleineren Mipmap-Stufen, und genau die behält der Asset Optimizer.

Das passende Tool

Server Budget

Zieh deinen resources-Ordner hinein: Grafik- und Systemspeicher pro Ressource, jede Datei über 16 MiB und jede Datei, die zweimal gestreamt wird. Alles im Browser, nichts hochgeladen.

Server Budget öffnen

Auch hier nützlich: Asset Optimizer · Texture Dedupe

Weitere Anleitungen

Alle Anleitungen →

Jedes Tool kann kostenlos getestet werden, mit 5 Exporten pro Tag. Melde dich mit Discord an, um sie zu nutzen.