Is Unreal Engine 4 bad for Android development?

Optimer UE4 Android Builds: Reducer Størrelse

24/04/2024

Rating: 4.17 (7717 votes)

Optimer Unreal Engine 4 Android Builds: En Guide til Reduktion af Filstørrelse

Unreal Engine 4 er kendt for at være en kraftfuld, men også ressourcekrævende motor, der kan generere betydelige datamængder og dermed store build-størrelser. Dette kan være en alvorlig udfordring, når man udvikler spil til mobile platforme som Android, hvor download-størrelse og lagerplads er afgørende faktorer for brugeradoption. Denne artikel dykker ned i en række effektive metoder til at minimere filstørrelsen på dine UE4 Android-projekter, lige fra de indledende indstillinger til mere avancerede optimeringer.

Can Unreal Engine 5 reduce the build size?
One of the most common needs when developing for mobile platforms is making sure the download size of the game and the storage size of the game on the mobile device. Unreal Engine 5 can be tuned to reduce the build size significantly. This article lists some procedures one can implement to reduce the game size.
Indholdsfortegnelse

Indledende Skridt til Størrelsesreduktion

Allerede inden du for alvor går i gang med udviklingen, er der vigtige beslutninger, der kan have stor indflydelse på den endelige build-størrelse. For at illustrere potentialet for reduktion, vil vi basere vores eksempler på en C++ version af et projekt bygget med UE4.21.0 fra kildekode, der understøtter armv7-arkitektur og kun OpenGL ES2, med teksturer i ETC2-format.

En af de første indstillinger, du bør overveje, er at aktivere "Package For Distribution" optionen i "Project Settings". Dette valg, når det kombineres med andre optimeringer som ProGuard, kan markant skrumpe din build. En initial størrelse af en udviklingsbuild kan virke skræmmende, men det er vigtigere at fokusere på shipping-builds. En shipping-build uden yderligere optimeringer kan stadig være betydelig, men aktivering af ProGuard kan reducere den yderligere.

Deaktivering af Plugins

Unreal Engine kommer med et væld af plugins, der tilbyder funktionalitet til et bredt spektrum af projekter. Når du udvikler til Android, er det dog sandsynligt, at du ikke behøver alle disse. Gennemgå omhyggeligt listen over aktiverede plugins i dine "Project Settings" og deaktiver alt, hvad der ikke er strengt nødvendigt for dit spil. Typisk vil kernefunktioner som "Android Movie Player", "Android Permission" og "Android File Server" være relevante for de fleste Android-projekter. Ved at fjerne unødvendige plugins kan du opnå en mærkbar reduktion i build-størrelsen.

Fjernelse af Debug Symbols

Debug symbols er uvurderlige under udviklingsprocessen, da de muliggør dybdegående analyse af crash logs. De gemmes typisk i en separat fil, ofte med filendelsen ".pdb" på Windows eller lignende på andre platforme. Disse symbolfiler kan dog optage en betydelig mængde plads. For at minimere din distributionsbuild kan du aktivere indstillingen "Strip Debug Symbols from Cocos2d Project" (eller en lignende indstilling afhængigt af din UE-version). Dette flytter debug symbols til en separat fil, der kan distribueres separat eller slet ikke distribueres, hvis du har tillid til din builds stabilitet. Uden disse symboler i din primære build, vil filstørrelsen falde yderligere. Bemærk, at denne funktion ofte kræver, at motoren er bygget fra kildekode.

Optimering af Assets og Indhold

Udover selve den eksekverbare fil, udgør spillets assets en stor del af den samlede størrelse. Unreal Engine indeholder forskellige indstillinger til at optimere, hvordan disse assets pakkes:

Komprimering og Fjernelse af Unødvendige Assets

Aktivering af indstillinger som "Use Database Compression" og "Disable Database Compression" kan have en indvirkning på filstørrelsen ved at ændre, hvordan data komprimeres. Yderligere kan du med fordel aktivere "Remove Unused Maps and Assets". Denne indstilling sikrer, at kun de assets, der faktisk er refereret i dine spilkort (maps), bliver inkluderet i den endelige build. Dette forhindrer, at gamle eller ubrugte ressourcer unødigt øger din build-størrelse.

Kontrol over Map Packaging

Unreal Engine pakker som standard alle kort og assets, der findes i "Content"-mappen. Hvis du har mange gamle eller test-kort, der ikke skal med i den endelige udgivelse, kan dette føre til en oppustet build. Ved at aktivere "Cook Only Maps" tvinger du motoren til kun at pakke de kort, du specifikt angiver som spilbare, samt alle de assets, der er direkte refereret af disse kort. Du kan også anvende "Pakaged Content" til yderligere at styre, hvilke assets der inkluderes.

Deling af Material Shader Kode

Når du arbejder med materialer i Unreal Engine, genereres der shader-kode for forskellige platforme og rendering-stier. Ved at aktivere "Share Material Shader Code" kan du potentielt reducere den samlede mængde shader-kode, der pakkes ind i din build, især hvis du har mange materialer med lignende funktioner.

Avancerede Teknikker til Størrelsesreduktion

Når du har gennemgået de grundlæggende optimeringer, er der stadig mere avancerede metoder, du kan anvende for at presse filstørrelsen yderligere:

Manuel Blacklisting af Filer

Selvom "Remove Unused Maps and Assets" er en kraftfuld funktion, kan der stadig være filer indeholdt i din build, som du manuelt ønsker at ekskludere. For at identificere disse filer, skal du først finde din ".pak"-fil i din Android-build (typisk placeret i "app/src/main/assets/"). Denne fil er i virkeligheden en zip-fil. Du kan udpakke den ved hjælp af et værktøj som UnrealPak.exe, der findes i din Unreal Engine-installationsmappe. En typisk kommando ville se således ud:

UnrealPak.exe [sti_til_pak_fil].pak -extract [sti_til_udpakningsmappe] 

Når du har udpakket filen, kan du gennemgå indholdet og identificere filer og mapper, der ikke er nødvendige for dit spil. Dette kan inkludere diverse "Engine"-mapper, "ArtTools", "Tutorials", eller specifikke plugins-assets. For at ekskludere disse filer fra fremtidige builds, kan du oprette en fil ved navn "Exclude.txt" i din projekts "Content"-mappe og liste de filer og mapper, du vil udelukke der. For eksempel:

../../../Engine/Content/ArtTools/ ../../../Engine/Content/EngineSounds/ ../../../Engine/Content/Maps/ ../../../Engine/Content/SlateDebug/ ../../../Engine/Content/Tutorial/ ../../../Engine/Plugins/Runtime/LeapMotionController/ ="../../../Engine/Content/Slate/Fonts/DroidSansFallback.ttf ../../../[DitSpil]/AssetRegistry.bin 

Deaktivering af Motor Moduler

Hvis du har adgang til kildekoden for Unreal Engine, kan du yderligere reducere build-størrelsen ved at deaktivere specifikke motor-moduler, som dit spil ikke bruger. Dette gøres ved at redigere en konfigurationsfil, typisk i "BuildSettings"-sektionen af din projekts ".ini"-fil. Her kan du indstille værdier som:

[ /Script/BuildSettings.BuildSettings] bCompileAPEX=False bCompileBox2D=False bCompileICU=False bCompileLeanAndMeanUE=True bIncludeADO=False bCompileRecast=False bCompilePhysXVehicle=False bCompileForSize=True 

Disse indstillinger hjælper med at trimme motoren for unødvendige funktioner, hvilket resulterer i en mindre og hurtigere build.

Is Unreal Engine 4 bad for Android development?
Unreal Engine 4 is considered to be a big, bulky engine that generates a lot of data and has huge build sizes. Such feature might be a serious issue when making a mobile game. Here are few steps to do at the beginning of Android development in UE4 to avoid problems with enormous build sizes.

Deaktivering af Movable Point Lights

Hvis dit spil ikke benytter sig af "Movable Point Lights", kan deaktivering af denne funktionalitet reducere størrelsen af shaders og dermed den samlede build-størrelse. Dette er en specifik optimering, der kan have en mærkbar effekt, hvis din grafikpipeline ikke afhænger af denne type lyskilde.

Opsummering og Yderligere Overvejelser

Ved at anvende disse teknikker, kan du potentielt reducere din UE4 Android-build fra flere hundrede megabytes til et betydeligt mindre tal. For eksempel, en shipping-build, der oprindeligt var omkring 50MB, kan efter alle disse optimeringer reduceres til under 20MB. Selvom dette stadig kan virke som en del for et mobilt spil, er det vigtigt at huske, at Unreal Engine er en avanceret 3D-motor. Den samlede reduktion kan variere afhængigt af dit projekts kompleksitet, anvendte assets og specifikke funktioner.

Kan Unreal Engine 5 Reducere Build-Størrelsen?

Med introduktionen af Unreal Engine 5 fortsætter arbejdet med at optimere motorer til mobile platforme. Mens de grundlæggende principper for størrelsesreduktion forbliver de samme, introducerer UE5 potentielt nye værktøjer og metoder til yderligere optimering. Det er altid en god idé at holde sig opdateret med den seneste dokumentation og best practices for den version af Unreal Engine, du bruger.

At opnå den mindst mulige build-størrelse er en iterativ proces, der kræver omhyggelig planlægning og testning. Ved at implementere disse strategier kan du sikre, at dine Android-spil er mere tilgængelige for et bredere publikum og leverer en bedre brugeroplevelse. Held og lykke med din udvikling!

Ofte Stillede Spørgsmål (FAQ)

Hvad er den primære årsag til store UE4 Android builds?

Den primære årsag er den omfattende funktionalitet og de mange assets, som Unreal Engine inkluderer som standard. Dette omfatter alt fra rendering-pipelines og fysiksystemer til et bredt udvalg af plugins og standard-assets.

Hvilken indstilling har størst indflydelse på build-størrelsen?

Kombinationen af at fjerne unødvendige plugins, strippe debug symbols og optimere asset-pakning (f.eks. ved at bruge "Cook Only Maps" og "Remove Unused Maps and Assets") har typisk den største samlede effekt på build-størrelsen.

Er det muligt at opnå en build under 10MB med UE4?

Det er ekstremt udfordrende og ofte upraktisk at opnå en build under 10MB med Unreal Engine, især for et 3D-spil med moderne grafik. De nævnte optimeringer kan reducere størrelsen markant, men den grundlæggende motorstruktur kræver en vis mængde plads.

Hvornår skal jeg overveje at bygge motoren fra kildekode?

Du skal overveje at bygge motoren fra kildekode, hvis du har brug for avancerede optimeringer som "Strip Debug Symbols" eller hvis du ønsker at foretage dybere ændringer i motor-modulerne for at reducere størrelsen.

Hvilken rolle spiller ProGuard i størrelsesreduktionen?

ProGuard er et værktøj, der primært bruges til at obfuskere, pakke og optimere Java-kode i Android-apps. Når det bruges sammen med Unreal Engine, kan det hjælpe med at reducere størrelsen af den del af builden, der håndterer Android-specifikke funktioner og Java-integration.

Hvis du vil læse andre artikler, der ligner Optimer UE4 Android Builds: Reducer Størrelse, kan du besøge kategorien Teknologi.

Go up