Zum Inhalt springen

Was eine Resource einen Spieler wirklich kostet

Eine 40-MB-Resource kann einen Spieler mehr Speicher kosten als eine mit 300 MB. Auf der Platte ist alles komprimiert; die Grafikkarte hält die entpackte Form. Hier ist die Zahl, auf die es wirklich ankommt, wo es schiefgeht und was ein Optimiser gefahrlos ändern kann.

Die entscheidende Zahl ist nicht die Dateigröße

Eine .ytd ist auf der Platte komprimiert. Was die Grafikkarte eines Spielers hält, ist die entpackte Textur, und diese Zahl hängt von drei Dingen ab: den Abmessungen, dem Format und davon, ob sie Mips hat.

Eine unkomprimierte Textur kostet etwa achtmal so viel wie dieselben Pixel als BC1. Diese eine Tatsache ist bei den meisten Uploads der größte Gewinn, und sie ändert nichts daran, wie die Textur auf dem Bildschirm aussieht. Mips kommen grob ein Drittel obendrauf, und sie sind jedes Byte wert — eine Textur ohne sie wird auch von der anderen Seite der Map in voller Auflösung ausgelesen.

Deshalb zeigt der Scan Speicher an, nicht Megabytes. Zwei Resources mit derselben Downloadgröße können sich in dem, was sie einen Spieler kosten, um ein Vielfaches unterscheiden.

Was geändert wird, und in welcher Reihenfolge

Jede Textur im Upload wird direkt aus der Datei gelesen und durchläuft dieselben vier Fragen. Die Reihenfolge ist Absicht.

Zuerst die Untergrenze. Alles mit 256 Pixeln oder weniger an der langen Seite bleibt unangetastet, egal in welchem Format — eine kleine Textur neu zu komprimieren beschädigt sie sichtbar und spart fast nichts. Dann die Komprimierung: Eine unkomprimierte Textur wird nach BC1 verschoben, oder nach BC3, wenn sie tatsächlich Alpha nutzt. Dann die Obergrenze: Alles über der von dir gesetzten Grenze wird darauf herunterskaliert, gerundet auf eine Zweierpotenz. Dann nichts weiter — liegt eine Textur schon im Budget, wird sie gemeldet und in Ruhe gelassen.

1Untergrenzeklein? in Ruhe lassen2Formatunkomprimiert? packen3Obergrenzedrüber? skalieren4Berichtvorher/nachher, pro Datei
Wählbare Obergrenzen: 4096, 2048, 1024, 512, 256. Untergrenzen: 512, 256, 128, aus.

Ungenutzte und doppelte Texturen

Der Scan liest jedes Modell im Paket und sammelt die Texturen, die seine Shader benennen — alle, nicht nur die Diffuse. Eine Textur, die nur als Normal- oder Specular-Map genutzt wird, ist in Gebrauch, und sie wegzuwerfen würde das Modell ingame platt aussehen lassen.

Alles, was kein Shader benennt, wird als ungenutzt gemeldet, und du kannst es entfernen lassen. Diese Prüfung läuft nur, wenn das Paket auch wirklich ein Modell mitbringt: Hast du lose .ytd-Dateien hochgeladen, kann nichts als ungenutzt gelten, weil der Shader, der sie ausliest, in einer Datei liegen kann, die du nie bekommen hast. Identische Texturen unter verschiedenen Namen werden separat gemeldet — Duplikate sind in Packs, die aus mehreren Quellen zusammengestellt wurden, häufig.

Die eine Änderung, die standardmäßig aus ist

Eine Textur, deren Seiten keine Zweierpotenzen sind, kann keine vollständige Mip-Kette haben. Das Spiel liest auf jeder Entfernung die oberste Stufe aus: Sie flimmert auf Distanz und kostet die ganze Zeit vollen Speicher. Sie auf Zweierpotenzen zu bringen behebt beides.

Trotzdem ist das standardmäßig aus, denn die Korrektur bedeutet, eine Textur neu zu skalieren, die du nicht verkleinern wolltest — genau so ruiniert ein Optimiser ein Decal. Es wird bei jedem Scan gemeldet und nur angewendet, wenn du es anhakst.

Aus demselben Grund werden Modelle nie angefasst. Der Optimiser schreibt Texturen neu; Detailstufen für ein Modell zu erzeugen, das ohne geliefert wurde, ist ein separater, optionaler Schritt, der über die Job-Queue läuft, weil er bei einem Auto Minuten dauert.

Kostenlos ausprobieren

Erstelle ein kostenloses Konto, tritt für deine Credits dem Discord bei und baue dein erstes Asset in wenigen Minuten.