Should you develop mobile games?

Optimeringsguide til Mobilspiludvikling

22/02/2022

Rating: 4.23 (13359 votes)

At kaste sig ud i mobilspiludvikling kan føles som at dykke ned i et hav af kompleksitet, især for nye udviklere. Fra de første prototyper til portering af eksisterende projekter til mobile enheder, er udfordringen at sikre, at spillet kører flydende og effektivt. Denne guide er designet til at lette byrden og fungere som en praktisk ressource for alle, der ønsker at skabe velfungerende mobilspil, eller endda browserspil, der skal køre på ældre pc'er og netbooks. Optimering er et bredt emne, og den præcise tilgang afhænger stærkt af dit specifikke spil. Betragt derfor denne guide som en introduktion og et opslagsværk snarere end en trin-for-trin-manual, der garanterer et fejlfrit produkt.

Should you develop mobile games?
However, if you are developing mobile games, there is another consideration: The hardware that is on the market right now is very limited compared to the computers we are used to working with, so the risk of creating something that simply won’t run on the device balances out the risk of over-complication that comes with optimizing from the start.
Indholdsfortegnelse

Forstå Mobilens Unikke Landskab: Ikke Alle Enheder Er Skabt Lige

Informationen i denne guide tager udgangspunkt i hardware på niveau med Apple A4-chipsættet, som blev brugt i den originale iPad, iPhone 3GS og tredje generation af iPod Touch. På Android-siden svarer det til telefoner som Nexus One eller de fleste telefoner, der kørte Android 2.3 Gingerbread. De fleste af disse enheder blev lanceret omkring starten af 2010. I det app-hungrende marked udgør disse enheder den ældre, langsommere del, men de bør stadig understøttes, da de repræsenterer en betydelig del af markedet. Selvom nyere enheder er blevet eksponentielt kraftigere, vil en god optimeringspraksis sikre, at dit spil når ud til det bredest mulige publikum og giver en god oplevelse for så mange brugere som muligt.

De helt lavt-ydende Apple-mobilenheder, såsom iPhone 3G og første og anden generation af iPod Touches, er ekstremt begrænsede, og der skal tages endnu større hensyn til optimering for dem. Men det er værd at overveje, om forbrugere, der ikke har opgraderet deres enhed i så mange år, overhovedet er aktive på app-markedet. Så medmindre du laver en gratis app, der sigter mod maksimal udbredelse, er det måske ikke umagen værd at understøtte den helt gamle hardware, da indsatsen for at opnå acceptabel ydeevne kan overstige den potentielle indtjening eller brugerbase. Den beregningsmæssige kapacitet af mobile enheder stiger i en ekstraordinær hastighed; det er ikke uhørt, at en ny generation af en mobil-GPU er fem gange hurtigere end sin forgænger. Det er utroligt hurtigt sammenlignet med pc-industrien, hvilket understreger vigtigheden af at forstå den skiftende landskab og designe med fremtiden for øje, mens man stadig understøtter et rimeligt bagkatalog af enheder.

Optimering: En Designovervejelse, Ikke Et Sidste Skridt

Den britiske datalog Michael A. Jackson citeres ofte for sine regler for programoptimering: 'Den første regel for programoptimering: gør det ikke. Den anden regel for programoptimering (kun for eksperter!): gør det ikke endnu.' Hans begrundelse var, at i betragtning af hvor hurtige computere er, og hvor hurtigt deres hastighed stiger, er der en god chance for, at hvis du programmerer noget, vil det køre hurtigt nok. Desuden kan du, hvis du forsøger at optimere for meget, overkomplicere tingene, begrænse dig selv eller skabe fejl. Denne filosofi har sin berettigelse i mange softwareudviklingskontekster, især på kraftfulde PC-platforme, hvor overflødig optimering kan føre til unødvendig kompleksitet og længere udviklingstid.

Men hvis du udvikler mobilspil, er der en anden overvejelse: Den hardware, der er på markedet lige nu, er meget begrænset sammenlignet med de computere, vi er vant til at arbejde med. Risikoen for at skabe noget, der simpelthen ikke vil køre acceptabelt på enheden, opvejer risikoen for overkomplicering, der følger med at optimere fra starten. På mobile platforme er ressourcer som CPU-kraft, GPU-ydeevne, hukommelse og batterilevetid langt mere begrænsede. At ignorere optimering tidligt i processen kan resultere i et spil, der hakker, overopheder enheden eller dræner batteriet på få minutter, hvilket fører til en dårlig brugeroplevelse og negative anmeldelser. Gennem denne guide vil vi forsøge at påpege situationer, hvor en optimering ville hjælpe meget, kontra situationer hvor det blot ville være overflødigt, så du kan træffe velinformerede beslutninger.

Optimering Er Ikke Kun For Programmører: Kunstnerens Rolle

Optimering er ikke udelukkende en opgave for programmører; kunstnere og designere spiller også en afgørende rolle. De skal også kende platformens begrænsninger og de metoder, der bruges til at omgå dem. Dette gør det muligt for dem at træffe kreative valg, der giver udbytte i form af ydeevne uden at skulle gentage arbejde eller kompromittere den visuelle kvalitet unødvendigt. For eksempel kan valg af modelkompleksitet (antal polygoner), teksturstørrelser og -formater, samt kompleksiteten af materialer og shaders, have en massiv indflydelse på GPU-ydeevnen. En kunstner, der er bevidst om disse begrænsninger, kan skabe aktiver, der er både visuelt tiltalende og ydeevneeffektive.

Mere ansvar kan falde på kunstneren, hvis spildesignet kalder for, at atmosfære og belysning tegnes ind i teksturer i stedet for at blive 'bagt' (præ-renderet). Begrebet 'bagning' refererer til processen med at forudberegne komplekse lys- og skyggeeffekter og derefter gemme dem som teksturer, der kan påføres 3D-modeller. Denne proces reducerer den beregningsmæssige byrde betydeligt under spillets afvikling, da effekterne ikke skal beregnes i realtid. Når som helst noget kan 'bages' – det være sig belysning, skygger, eller endda visse partikeleffekter – kan kunstnere producere indhold, der udnytter denne teknik i stedet for at stole på realtidsrendering. Dette er en afgørende strategi for at opnå høj ydeevne på mobile enheder, hvor realtidsberegninger af komplekse visuelle effekter hurtigt kan overbelaste GPU'en.

Design Dit Spil Til En Flydende Kørsel

At designe et spil med ydeevne for øje handler om at tænke i optimering fra de tidligste stadier af udviklingen. Disse generelle principper detaljerer tendenser inden for spilydeevne og forklarer, hvordan du bedst kan designe dit spil til at være optimeret, eller hvordan du intuitivt kan finde ud af, hvilke ting der skal optimeres, hvis du allerede er gået i produktion. En god spildesignproces integrerer optimering fra start, hvilket kan spare utallige timer senere i udviklingscyklussen. Dette omfatter overvejelser om antallet af objekter, der skal være synlige på skærmen, kompleksiteten af 3D-modeller, hvordan interaktioner behandles, og selv hvordan UI-elementer er konstrueret. Ved at træffe smarte designvalg tidligt kan man undgå store omskrivninger og refaktoreringer, der ofte er nødvendige, når ydeevneproblemer opdages sent i processen. Tænk over, hvordan din spilmekanik påvirker antallet af draw calls, overtegningsproblemer (overdraw) og hukommelsesforbrug, da disse er almindelige syndere bag dårlig mobil ydeevne.

Profiler Tidligt og Ofte: Identificer Flaskehalse

Profilering er afgørende, fordi det hjælper dig med at skelne, hvilke optimeringer der vil give store ydelsesforbedringer, og hvilke der er spild af din tid. Uden profilering famler du i blinde, og du risikerer at bruge timer på at optimere en del af dit spil, der slet ikke er den primære årsag til dårlig ydeevne. På grund af den måde, rendering håndteres på en separat chip (GPU), er tiden det tager at rendere en frame ikke summen af den tid CPU'en tager plus den tid GPU'en tager. I stedet er det den længste af de to – den komponent, der er flaskehalsen, bestemmer den samlede framerate. Hvis CPU'en er den langsomste, venter GPU'en på CPU'en, og vice versa.

Det betyder, at hvis CPU'en bremser tingene (f.eks. på grund af for mange komplekse scripts eller fysikberegninger), vil optimering af dine shaders (som primært påvirker GPU'en) slet ikke øge frameraten. Ligeledes, hvis GPU'en bremser tingene (f.eks. på grund af for mange polygoner eller tunge teksturer), vil optimering af fysik og scripts (som primært påvirker CPU'en) slet ikke hjælpe på frameraten. Ofte yder forskellige dele af spillet og forskellige situationer også forskelligt. Dette betyder, at én del af spillet kan forårsage 100 millisekunders frames udelukkende på grund af et script, og en anden del af spillet kan forårsage den samme opbremsning, men på grund af noget, der bliver renderet. Du skal som minimum vide, hvor alle flaskehalse er, hvis du skal optimere dit spil effektivt. Regelmæssig profilering under hele udviklingscyklussen, især når nye funktioner tilføjes eller eksisterende ændres, er nøglen til at opretholde en god ydeevne.

Værktøjer Til Profilering

For at udføre effektiv profilering har du adgang til flere vigtige værktøjer:

Unity Profiler

Du kan bruge den primære Profiler i Unity, når du målretter iOS, Android eller Tizen. Se dokumentationen om Profiler for grundlæggende instruktioner om, hvordan du bruger den. Unity Profiler giver et detaljeret indblik i CPU- og GPU-forbrug, hukommelsesallokering, lyd, fysik, netværk og meget mere. Dette værktøj er uundværligt for at diagnosticere præcist, hvor dit spil taber ydeevne, og for at validere effekten af dine optimeringsforsøg. Det giver dig mulighed for at se realtidsdata og identificere specifikke komponenter, scripts eller draw calls, der forårsager problemer. Den visuelle repræsentation af data gør det nemt at spotte spikes i ydeevnen og bore ned i de underliggende årsager.

Interne Profilere (Android og iOS)

Både Android og iOS har en indbygget intern profiler, som spytter tekst ud hver 30. frame. Den kan hjælpe dig med at finde ud af, hvilke aspekter af dit spil der bremser tingene (såsom fysik, scripts eller rendering), men den går ikke i detaljer (f.eks. kan den ikke fortælle dig, hvilket script eller hvilken renderer der er synderen). Selvom disse interne profilers er mindre detaljerede end Unitys egen, kan de stadig give en hurtig indikation af den generelle retning for din optimeringsindsats. For eksempel, hvis den interne profiler konsekvent viser, at rendering er den største synder, ved du, at du skal fokusere dine anstrengelser der. Dette er især nyttigt, når du hurtigt vil tjekke, om en ændring har haft den forventede effekt på den overordnede ydeevnekategori.

Hvis profileren indikerer, at det meste af din behandlingstid bruges på rendering, bør du konsultere dokumentation om Rendering Optimizations. Dette omfatter typisk strategier som reduktion af polygonantal, optimering af shaders, brug af teksturatlases, reduktion af overdraw og effektiv brug af lys og skygger.

Hvis profileren indikerer, at det meste af din behandlingstid bruges uden for rendering, bør du se dokumentation om Scripting Optimizations. Dette kan involvere refaktorering af tunge scripts, optimering af algoritmer, effektiv hukommelsesstyring (f.eks. ved at reducere garbage collection) og intelligent brug af fysiksystemer.

Se dokumentation om Interne profilers for information om, hvordan de fungerer, og hvordan du slår dem til.

Sammenligning: CPU vs. GPU Flaskehalse

AspektCPU FlaskehalsGPU Flaskehals
SymptomerLav framerate, selv med simpel grafik; spillet føles "laggy" uanset visuel kompleksitet. Spillet kan fryse kortvarigt.Lav framerate, især med kompleks grafik, mange effekter, højopløselige teksturer; spillet ser godt ud, men kører langsomt.
Primære årsagerFor mange beregninger i scripts, kompleks fysik, for mange objekter at håndtere (draw calls), unødvendige opdateringer, overdreven brug af GetComponent.For mange trekanter/polygoner, for mange/komplekse shaders, overdreven brug af post-processing effekter, for mange tekstur-samples, overdraw.
OptimeringsfokusStrømlin scripts, optimer fysikindstillinger, batching af objekter (reducer draw calls), reduce antallet af dynamiske objekter, objektpooling.Reducer polygonantal, forenkle shaders, brug tekstur-atlases, reducer teksturstørrelser, undgå unødvendige gennemsigtigheder, LOD (Level of Detail).
VærktøjshjælpProfiler viser høj CPU-tid i "Scripts", "Physics", "Garbage Collection", "Other".Profiler viser høj GPU-tid, "Rendering", "Draw Calls", "Present", "Vsync".

Ofte Stillede Spørgsmål om Mobilspilsoptimering

Hvorfor er optimering så vigtigt for mobilspil, men måske mindre for PC-spil?

Mobil hardware er, selvom den udvikler sig hurtigt, stadig markant mere begrænset end de fleste PC'er. Der er mindre RAM, langsommere CPU'er og GPU'er (i absolutte termer), og batterilevetid er en kritisk faktor. En dårligt optimeret mobilapp kan dræne batteriet hurtigt, overophede enheden og tilbyde en frustrerende brugeroplevelse, hvilket fører til dårlige anmeldelser, lav fastholdelse af brugere og i sidste ende et mislykket produkt. På PC'er er hardwaren generelt kraftigere, og selvom optimering altid er godt, er konsekvenserne af at springe den over ofte mindre alvorlige, da de fleste brugere har rigelige ressourcer til at kompensere for ineffektiv kode.

Hvornår skal jeg begynde at optimere mit mobilspil?

I modsætning til den klassiske rådgivning om at 'vente med at optimere', bør mobilspilsudviklere tænke på optimering fra starten af design- og udviklingsprocessen. Selvom du ikke skal over-optimere alt fra dag ét, bør du være bevidst om platformens begrænsninger, når du træffer designvalg for grafik, fysik og gameplay-systemer. Regelmæssig profilering under udviklingen er afgørende for at fange flaskehalse, før de bliver uoverskuelige problemer. Ved at integrere optimering som en del af den løbende udviklingscyklus kan du undgå store og omkostningsfulde omskrivninger tættere på lanceringen.

Kan kunstnere bidrage til optimering?

Absolut! Kunstnere spiller en afgørende rolle i optimeringen. Deres valg af modelkompleksitet (polygonantal), teksturstørrelser og -formater, shader-kompleksitet og brugen af 'bagte' (præ-renderede) effekter i stedet for realtidsberegninger kan have en massiv indflydelse på spillets ydeevne. At forstå, hvordan man skaber indhold, der er effektivt for mobil hardware, er lige så vigtigt som at skrive effektiv kode. En dygtig kunstner kan skabe visuelt imponerende aktiver, der samtidig er optimerede til mobil, hvilket er en nøglekompetence i mobilspiludvikling.

Hvad er en "flaskehals", og hvordan identificerer jeg den?

En flaskehals er den del af dit spil, der begrænser den samlede ydeevne mest, og som holder frameraten nede. Det kan være CPU'en, der kæmper med komplekse scripts eller fysik, eller GPU'en, der er overbelastet med rendering. Identifikation sker primært gennem profilering. Værktøjer som Unity Profiler eller de interne profilers i Android/iOS giver dig detaljerede data om, hvor den meste behandlingstid bruges i hver frame. Ved at analysere disse data kan du finde ud af, om det er CPU'en (f.eks. for mange draw calls, tunge scripts, garbage collection) eller GPU'en (f.eks. for mange polygoner, komplekse shaders, overdraw), der holder dit spil tilbage. Det handler om at finde den længste stang i hjulet og derefter arbejde på at gøre den kortere.

Hvad er forskellen på Unity Profiler og interne profilers?

Unity Profiler er et omfattende værktøj, der giver dybdegående, realtidsdata om dit spils ydeevne på tværs af mange systemer (CPU, GPU, hukommelse, lyd, fysik, etc.). Den kan pege på specifikke scripts, komponenter eller objekter, der forårsager problemer, og giver en detaljeret tidslinje over execution. Interne profilers i Android og iOS er mere grundlæggende, ofte tekstbaserede, og giver et bredere overblik over, om flaskehalsen er generel rendering, scripts eller fysik, men uden den detaljegrad, der kan pege på den præcise årsag. De er gode til en hurtig overordnet vurdering, mens Unity Profiler er til den detaljerede fejlfinding og dybdegående optimering.

At mestre mobilspilsoptimering er en løbende proces, der kræver en kombination af teknisk viden, strategisk design og vedvarende profilering. Ved at integrere optimering i alle faser af udviklingen – fra den indledende designfase til den afsluttende polering – kan du skabe en robust og fornøjelig oplevelse for dine brugere, uanset hvilken enhed de benytter. Husk, at en god brugeroplevelse på mobil ofte handler mere om ydeevne og batterilevetid end om rå grafisk pragt. Fokusér på de områder, der giver den største effekt, og lad profilering guide dine beslutninger mod et succesfuldt mobilspil.

Hvis du vil læse andre artikler, der ligner Optimeringsguide til Mobilspiludvikling, kan du besøge kategorien Teknologi.

Go up