In diesem Leitfaden wird beschrieben, wie Sie die Größe eines Spiels reduzieren. Nach der Installation benötigt ein kleineres Spiel weniger Downloadzeit und weniger Daten. Beides führt zu mehr Installations-Conversions. Studien von Google zeigen, dass eine Erhöhung der bereitgestellten APK-Größe um 6 MB zu einer Senkung der Installationsrate um 1% führt. Viele Entwickler verschieben Assets aus dem APK in ein Content Delivery Network (CDN), verursachen dann jedoch Kosten sowohl für das Hosting des CDN als auch für die Entwicklung und Wartung des Asset-Management-Systems.
So verringern Sie die Größe eines Spiels:
- Verwenden Sie optimierte Übermittlungsmethoden wie App Bundles und Play Asset Delivery.
- Die Grundgröße des Spiels bestimmen und seine Struktur verstehen
- Suchen Sie nach Assets und anderen Dateien, deren Größe verkleinert werden kann.
- Prüfe die Grafiktexturen und ermittle Möglichkeiten zur Optimierung.
- Folgen Sie den allgemeinen Empfehlungen für Assets.
Optimierte Übermittlungsmethoden wie Android App Bundles und Play Asset Delivery verwenden
Berücksichtigen Sie die folgenden Übermittlungsmethoden:
Während Legacy-Projekte normalerweise ein APK zur Veröffentlichung ausgeben, sollte für die Veröffentlichung von Spielen bei Google Play ein Android App Bundle verwendet werden. App Bundles liefern optimierte APKs, die auf die Gerätekonfiguration des jeweiligen Nutzers zugeschnitten sind. App Bundles reduzieren die App-Größe um durchschnittlich 20%.
Wenn Sie Spiele-Assets über Google Play bereitstellen und das Downloadgrößenlimit von 200 MB für App-Bundles mit bis zu mehreren GB überschreiten möchten, verwenden Sie Play Asset Delivery (PAD). Es ist kein externes CDN erforderlich. PAD unterstützt drei verschiedene Übermittlungsmethoden, die jeweils in einem einzelnen Spiel verwendet werden können:
- Installationszeit:Laden Sie Assets nach der Installation herunter. Assets werden in Asset-Packs verpackt, die OBB-Dateien (Opaque Binary Blob) ersetzen.
- Schnell folgen:Laden Sie Assets nach der Installation herunter.
- On demand:Das Spiel startet bei Bedarf den Download des Assets.
Für PAD müssen Spiele im App Bundle-Format verpackt werden. PAD kann auch die Datenmenge reduzieren, die vom CDN eines Entwicklers verwendet wird (falls noch eins benötigt wird).
Google Play verwendet Android App Bundles, um für die jeweilige Gerätekonfiguration optimierte APKs zu generieren und bereitzustellen. Diese optimierten APKs enthalten einen einzelnen Satz von Textur-Assets, die mit dem optimalen Komprimierungsformat für das Gerät formatiert sind. Konfiguriere dein App-Bundle für verschiedene Texturkomprimierungsformate, um eine möglichst große Anzahl von Geräten zu unterstützen.
Die Grundgröße des Spiels bestimmen und seine Struktur verstehen
Führen Sie die folgenden Schritte aus, um sich mit dem Spiel vertraut zu machen, zu ermitteln, wie viel Arbeit für eine bestimmte Optimierung erforderlich ist, und zu ermitteln, ob für das Spiel zusätzliche Assets heruntergeladen werden sollen:
- Verwenden Sie einen Produktions-Build (nicht zur Fehlerbehebung) vom Entwickler oder dem veröffentlichten APK.
- Erfassen Sie die Größe der Binärdatei, entweder so, wie sie vom Entwickler bereitgestellt wird, oder, falls das Spiel veröffentlicht wurde, auf der Play Store-Seite des Spiels. Für die APK-Größe ist der wichtigste Faktor die Datenmenge, die ein Nutzer herunterladen muss, um das eigentliche Spiel auszuführen.
- Installiere das Spiel auf einem Gerät und führe es im ersten Spielmenü aus. Überprüfen Sie an dieser Stelle die von Android gemeldete Installationsgröße des Spiels (unter Einstellungen > Speicher). Einige Spiele haben eine geringe Größe für die anfängliche Installation, da dies die Schlüsselzahl für die Optimierung ist. Nach der Installation werden jedoch zusätzliche Daten heruntergeladen. Bei einigen Spielen werden nach der Installation mehrere Gigabyte an Daten heruntergeladen.
- Bei einigen Spielen werden Daten erst heruntergeladen, nachdem Sie sie gestartet haben. Sie sollten das Spiel eine Weile spielen, um festzustellen, wie viele zusätzliche Daten das Spiel für einen typischen Nutzer herunterlädt, der das Spiel zum ersten Mal spielt.
Nach Assets und anderen Dateien suchen, deren Größe verkleinert werden kann
In diesem Abschnitt wird beschrieben, wie Sie die Größe von Dateien in einem APK reduzieren. Mit dem App Bundle Explorer können Sie gerätespezifische APKs herunterladen.
Führe die folgenden Schritte aus, um die Größe der Dateien zu reduzieren, die direkt in das APK verpackt sind:
- Verwenden Sie das APK Analyzer von Android Studio. Wählen Sie in Android Studio Datei > APK-Profil oder APK debuggen und dann Ihre APK-Datei aus.
- Wählen Sie den Ordner Assets aus. Für jede Datei werden die Größe der Rohdatei und der Prozentsatz der gesamten Downloadgröße aufgeführt.
Überprüfen Sie den Ordner Assets und ermitteln Sie, wo sich die meisten Spieldaten befinden. Prüfen Sie, ob Assets vorhanden sind, die übermäßig viel Platz beanspruchen (d. h. mehr als 1% der Gesamtfläche). Achten Sie insbesondere auf Folgendes:
- Große Bild- und Videodateien (z. B. PNG-, JPEG- und MP4-Dateien): Diese Dateien werden in der Regel auf Ladebildschirmen, Hintergründen und Logos verwendet. Diese Dateien werden in den meisten Spielen selten verwendet und können weiter komprimiert werden, ohne die Nutzererfahrung zu beeinträchtigen. Verlustfreie PNG-Dateien sind besonders groß und eignen sich hervorragend für die Komprimierung.
- Große Schriftartdateien (z. B. TTF-Dateien): Wenn Sie Emoji-Unterstützung hinzufügen, kann die Schriftartdatei erheblich größer werden. Ist eine Schriftartdatei größer als ein paar Hundert Kilobyte, sollten Sie überlegen, wie Sie die Größe reduzieren können.
- Es gibt doppelte Audiodateiformate oder -versionen, die Sie kombinieren können.
Wenn im APK mehrere Binärschnittstellen (Application Binary Interfaces, ABIs) enthalten sind, wechseln Sie zu App Bundles oder erstellen Sie mehrere APKs.
Bestimmen Sie die Größe der binären freigegebenen Objektdateien (.so). Mit dem Tool „Bloaty McBloatface“ können Sie Binärdateien prüfen, um festzustellen, ob es Dinge gibt, die möglicherweise nicht enthalten sein müssen, wie z. B. Logdateien. Weitere Informationen zum Optimieren der Binärdateien finden Sie unter Flags und Optionen kompilieren.
Welche Grafikformate unterstützt werden, erfährst du in der Android-Manifestdatei. Prüfe, ob das APK mehrere
<supports-gl-texture>
-Tags enthält. Wenn das Spiel Formate für mehrere GPUs in einem APK unterstützt, sollten Sie die Verwendung von Binomial's Basis Universal in Betracht ziehen. Dieses GPU-Textkomprimierungssystem erstellt Texturdateien in einem Zwischenformat, das schnell in die GPU transkodiert werden kann.
Überprüfen der Grafiktexturen und Ermitteln von Möglichkeiten zur Optimierung
In diesem Abschnitt werden die Tools und Methoden beschrieben, die erforderlich sind, um zu bestimmen, ob die im Spiel verwendeten Grafiktexturen optimiert werden können.
Verwenden Sie zum Prüfen der Texturen im Spiel den Android GPU Inspector (AGI), RenderDoc oder, nur für Qualcomm Snapdragon-GPUs, Snapdragon Profiler.
Achten Sie auf Folgendes:
- Texturen, deren Größe auf eine kleinere Auflösung angepasst werden kann, z. B. eine große Textur für etwas, das im Spiel nur in kleiner Größe gerendert wird. Das Downsampling von Texturen ist rechenintensiv.
- Verwendung mehrerer kleiner Texturen, die zu einer Texturkarte kombiniert werden können.
- Texturen, die weniger Bits in den Farbkanälen verwenden können. Gut geeignet sind Texturen mit wenigen festen Texturen. Farbverläufe und Farbschattierungen erfordern mehr Auflösungselemente und sind daher keine guten Kandidaten.
- Untersuchen Sie bessere Algorithmen zur Texturkomprimierung von ETC1 bis ETC2 und ASTC.
Verwerfen Sie die oberste Mipmap-Ebene, wenn Sie die Texturen auf Low-End-Geräten laden, um Arbeitsspeicher zu sparen. Das ist mit dem Texture Streaming-System von Unity möglich.
Falls noch nicht geschehen, überprüfe die Android-Manifestdatei auf unterstützte Grafikformate. Prüfe, ob das APK mehrere
<supports-gl-texture>
-Tags enthält. Wenn das Spiel Formate für mehrere GPUs in einem APK unterstützt, sollten Sie die Verwendung von Binomial's Basis Universal in Betracht ziehen. Dieses GPU-Textkomprimierungssystem erstellt Texturdateien in einem Zwischenformat, das schnell in die GPU transkodiert werden kann.
Allgemeine Empfehlungen für Assets
Folgen Sie diesen Empfehlungen für die Assets eines APKs:
- Bild-, Audio- und Video-Assets (nicht GPU-Texturen): Legen Sie fest, ob die Größe der Assets noch weiter angepasst oder noch weiter komprimiert werden kann. Für Spiele sind in der Regel höhere Komprimierungsverhältnisse akzeptabel. Verlustfreie PNG-Dateien sind besonders groß und eignen sich daher hervorragend für die Komprimierung.
- Bild-Assets (keine GPU-Texturen): Sie können WEBP verwenden, ein Bildkomprimierungsformat für verlustbehaftete und verlustfreie Komprimierung. Verlustbehaftetes WEBP komprimiert Bilder 25 bis 34 % mehr als JPG.
- Reduzieren Sie die Texturauflösung: Eine Textur, die viel größer ist als die Anzahl der Pixel, die letztendlich auf dem Bildschirm gerendert werden, ist eine ineffiziente Nutzung von Raum und GPU-Ressourcen. Wenn Sie eine Textur ändern und sehen möchten, wie sie in einem Frame aussieht, ohne das Spiel neu erstellen zu müssen, verwenden Sie AGI.
- Texturformate von Grafiken ändern: Verwenden Sie Texturformate, die weniger Bits pro Kanal benötigen. Verwenden Sie beispielsweise ein 16-Bit-Texturformat wie RGB565 anstelle eines 32-Bit-Texturformats wie ARGB. Weitere Informationen finden Sie hier:
Weitere Informationen
- Aktuelle Verbesserungen des Android App Bundle und Zeitplan für neue Apps bei Google Play
- APK-Größe in Android Instant-Games reduzieren
- GPU-dekodierbare Superkomprimierte Texturen (Forschungspapier)