How many triangles should a game have?

Optimal Trekantantal for Mobilspil: En Dybdegående Guide

17/11/2022

Rating: 4.53 (10533 votes)

At udvikle et mobilspil, der både ser fantastisk ud og kører problemfrit på en bred vifte af enheder, er en kunst i sig selv. En af de mest kritiske faktorer, der påvirker spillets ydeevne, er trekantantallet – altså det samlede antal trekanter, der udgør de 3D-modeller i dit spil. Især når man arbejder med lav-poly 3D-miljøer som øer, træer, græs, klipper og huler, opstår spørgsmålet: Hvad er det optimale trekantantal for at sikre en flydende spiloplevelse på mobile enheder?

Det er et spørgsmål, der ofte dukker op blandt spiludviklere, og svaret er sjældent et simpelt tal. I stedet afhænger det af en række faktorer, herunder den specifikke enhed, spillets kompleksitet, den ønskede billedhastighed (FPS) og den valgte kunststil. Lad os dykke ned i, hvad trekantantallet betyder, og hvordan du navigerer i optimeringsprocessen.

How many polygons should a mobile game have?
This can’t be determined unless the entire game is also taken into account. 20-30k polygons might be alright on mobile if not much of anything else is happening, limited FX, limited animations, limited vegetation, limited post effects, limited transparency, optimized textures and other considerations.
Indholdsfortegnelse

Hvad er Trekantantal, og Hvorfor er det Vigtigt for Mobilspil?

I 3D-grafik er trekanter de fundamentale byggesten, der udgør alle polygonale modeller. Jo flere trekanter en model har, desto mere detaljeret og glattere kan den se ud. Men denne detaljerigdom kommer med en pris: Hver trekant skal behandles af enhedens grafikkort (GPU). På mobile enheder, som har begrænsede ressourcer sammenlignet med stationære computere eller konsoller, kan et højt trekantantal hurtigt føre til flaskehalse, lav FPS og en dårlig brugeroplevelse.

Når vi taler om trekantantal i forbindelse med spilydeevne, refererer vi ofte til det antal trekanter, der skal tegnes på skærmen i en given ramme (frame). Dette inkluderer alle de objekter, der er synlige for kameraet på et bestemt tidspunkt. Det er derfor ikke kun det samlede trekantantal for alle modeller i spillet, men snarere det aktive trekantantal, der er afgørende for ydeevnen.

Faktorer der Påvirker det Optimale Trekantantal

Der er ingen universel 'magisk grænse' for trekantantal, da det optimale tal varierer betydeligt baseret på flere nøglefaktorer:

  • Målenhedens Hardware: Ældre eller billigere telefoner har betydeligt mindre processorkraft og GPU-kapacitet end nyere, high-end smartphones. Et spil designet til at køre på en iPhone 14 Pro kan have et markant højere trekantbudget end et spil, der skal køre på en ældre Android-enhed.
  • Spillets Genre og Komplexitet: Et simpelt puslespil med få objekter på skærmen kan tillade mere detaljerede modeller end et hurtigt actionspil med mange figurer, partikeleffekter og store miljøer.
  • Ønsket Billedhastighed (FPS): De fleste mobilspil sigter efter 30 eller 60 billeder per sekund (FPS) for en flydende oplevelse. Jo højere FPS, desto mindre tid har GPU'en til at tegne hver ramme, hvilket kræver et lavere trekantantal.
  • Antallet af Objekter på Skærmen: Selvom individuelle modeller er lav-poly, kan et stort antal af dem (f.eks. en stor skov af træer eller et tæppe af græs) hurtigt akkumulere til et højt samlet trekantantal per frame.
  • Shader-kompleksitet og Materialer: Ud over trekanter påvirker kompleksiteten af shaders og antallet af materialer også ydeevnen. Selv lav-poly modeller kan være tunge, hvis de bruger komplekse shaders eller mange forskellige materialer, da hver materialeskift (draw call) også koster ydeevne.

Lav-Poly og Mobilspil: En Perfekt Match

Du nævner, at du laver et lav-poly miljø, hvilket er en fremragende tilgang til mobilspiludvikling. Lav-poly kunststilen er ikke kun æstetisk tiltalende, men også yderst effektiv, når det kommer til ydeevne. Ved at reducere antallet af trekanter kan du opnå højere billedhastigheder og bredere kompatibilitet på mobile enheder. Desuden kan den simple, men effektive brug af materialer til farve, som du beskriver, yderligere reducere den nødvendige processorkraft sammenlignet med komplekse teksturer og belysningsmodeller.

Er 30.564 Tris OK? Hvad med 70-80k?

Dit nuværende trekantantal på 30.564 tris for hele dit miljø lyder umiddelbart meget fornuftigt for et lav-poly mobilspil. Mange moderne mobilspil opererer med et trekantbudget på mellem 50.000 og 200.000 trekanter per frame (altså det maksimale antal trekanter, der er synlige på skærmen på et givent tidspunkt) på high-end enheder. For ældre enheder kan dette tal være tættere på 20.000-50.000 trekanter per frame.

How many triangles should a game have?
Again the lower the triangle count, the better. And going much above those 1-3k triangles per object, should be reserved for big and high detail objects, or higher end computers. I’m not quite sure what you mean by testing if a game is laggy.

Hvis du ender på 70.000-80.000 trekanter, især på grund af græs, er dette stadig inden for et acceptabelt område for mange moderne mobilspil, forudsat at du implementerer effektive optimeringsstrategier. Det er vigtigt at huske, at dette tal skal overvejes som et maksimalt synligt trekantantal i den mest komplekse scene, ikke nødvendigvis det samlede trekantantal for alle dine modeller i hele spillet. Et spil med 70-80k trekanter per frame kan absolut være tillidsvækkende og køre glat, hvis optimeringerne er på plads.

Optimering af Miljøelementer

Græs er notorisk kendt for at være en ydeevne-synder i spil, da det ofte involverer et stort antal små, individuelle objekter. Her er nogle strategier for dine miljøelementer:

  • Græs: I stedet for at modellere hvert enkelt strå, brug instanciering (eng. instancing), hvor mange kopier af den samme geometri tegnes med et enkelt kald. Brug billedtavler (billboards) eller simple krydsformede modeller for fjerntliggende græs. Overvej at bruge en græs-shader, der simulerer bevægelse uden at kræve kompleks geometri. Implementer Level of Detail (LOD), hvor græs fjernes eller forenkles, når kameraet er længere væk.
  • Træer: Brug LOD for træer. Et træ tæt på kameraet kan have flere trekanter, mens træer i horisonten kan være simple plader (billboards) med et trætekstur på. Forenkle bladgeometrien betydeligt; ofte er simple kvadrangle eller endda polygoner med gennemsigtige teksturer tilstrækkelige.
  • Klipper og Huler: Da du bruger lav-poly, er disse naturligt mere optimerede. Sørg for at fjerne skjulte flader (backface culling) og optimer unødvendige trekanter, der aldrig ses af spilleren (f.eks. indersiden af klipper, der er inde i jorden).
  • Øer: Din ø-geometri vil sandsynligvis være den største enkeltstående model. Optimer den overordnede form og brug materialer til at give detaljer, som du allerede gør. Overvej at dele store øer op i mindre dele, der kan cullinges individuelt, hvis kun en del er synlig.

Generelle Optimeringsstrategier for Mobilspil

Ud over specifikke elementer er her nogle bredere optimeringsteknikker, der vil hjælpe dig med at holde trekantantallet nede og ydeevnen høj:

  • Level of Detail (LOD): Dette er en af de mest effektive teknikker. Opret flere versioner af dine modeller med faldende detaljegrad. Spilmotoren skifter automatisk til en lavere LOD-version, når objektet er længere væk fra kameraet.
  • Frustum Culling: Spilmotoren tegner kun objekter, der er inden for kameraets synsfelt (frustum). Sørg for, at dine objekter har korrekte afgrænsningsbokse (bounding boxes), så motoren effektivt kan bestemme, hvad der skal tegnes, og hvad der skal ignoreres.
  • Occlusion Culling: Denne teknik forhindrer tegning af objekter, der er skjult af andre objekter (f.eks. en bygning bag en anden bygning). Dette er mere avanceret og kræver ofte bagning af okklusionsdata.
  • Batching: Kombiner flere små objekter til én stor tegning (draw call). Dette reducerer CPU-overhead. Statisk batching for ubevægelige objekter og dynamisk batching for små, bevægelige objekter er almindelige teknikker.
  • Teksturatlasser: Selvom du primært bruger materialer til farve, er det værd at bemærke, at brug af teksturatlasser (hvor mange små teksturer er samlet på én stor tekstur) kan reducere antallet af materialeskift og dermed draw calls, selv hvis du kun bruger simple farveteksturer.
  • Profilering og Test: Den vigtigste optimeringsstrategi er at teste dit spil på faktiske mobile enheder og bruge profileringsværktøjer (som dem der findes i Unity, Unreal Engine eller andre motorer) til at identificere flaskehalse. Mål FPS, CPU- og GPU-brug og antallet af draw calls.
Trekantantal (ca. per frame)Forventet Ydeevne på MobilAnbefalinger / Bemærkninger
Under 50.000Meget høj ydeevne, bred kompatibilitet (også ældre enheder).Ideelt for casual spil, 2D-spil med 3D-elementer, eller meget stiliseret lav-poly.
50.000 - 100.000God ydeevne på de fleste moderne enheder. Kan kræve optimering for ældre enheder.Standard for mange mobilspil med 3D-miljøer. Kræver god LOD og culling.
100.000 - 200.000Acceptabel ydeevne på nyere, high-end enheder. Kan opleve fald i FPS på mid-range/low-end.Typisk for mere grafisk intense spil. Aggressiv optimering er nødvendig.
Over 200.000Udfordrende at opretholde stabil FPS, selv på high-end enheder.Bør undgås for de fleste mobilspil, medmindre det er et meget specifikt nichespil til de nyeste flagskibsmodeller.

Ofte Stillede Spørgsmål om Trekantantal i Mobilspil

Q: Er der et 'magisk tal' for trekantantal i mobilspil?

A: Nej, desværre ikke. Som beskrevet ovenfor afhænger det af mange faktorer, herunder din målgruppe, spillets kompleksitet og din kunststil. Fokus bør være på at opretholde en stabil og høj FPS på dine målenheder.

Q: Hvordan hjælper lav-poly design med ydeevnen?

A: Lav-poly design reducerer naturligt trekantantallet for dine modeller, hvilket betyder mindre data for GPU'en at behandle. Dette fører til hurtigere rendering, færre draw calls og dermed bedre ydeevne og lavere batteriforbrug på mobile enheder.

Q: Hvad er forskellen mellem polygoner og trekanter?

A: I 3D-grafik bruges 'polygon' ofte som en mere generel betegnelse for en flade. En polygon kan have 3 (en trekant), 4 (en quad) eller flere sider. Men for rendering formål nedbrydes alle polygoner til trekanter, da GPU'er er optimeret til at behandle trekanter. Derfor er trekantantallet den mest præcise metrik for ydeevne.

Do you trust a 70-80k Tri count game?
Now of course things like lighting, textures, ram management, cpu consumption also play a big role in overall performance, but generally speaking I'll trust a 70-80k tri count game to run smoothly, especially (easily) on today's phones. During my mobile development projects, I have found that generally tris does not seem to be the limiting factor.

Q: Hvordan tjekker jeg trekantantallet i Blender?

A: I Blender kan du se trekantantallet i statuslinjen nederst i vinduet, når du er i 'Object Mode' eller 'Edit Mode'. Sørg for, at 'Scene Statistics' er aktiveret (højreklik på statuslinjen -> 'Scene Statistics'). Det viser typisk Faces (polygoner), Tris (trekanter) og Verts (punkter).

Q: Hvad hvis mit spil er for tungt, selv med lav-poly modeller?

A: Hvis ydeevnen stadig er et problem, selv med et relativt lavt trekantantal, bør du fokusere på andre aspekter af optimering: Reducer antallet af draw calls (brug batching og teksturatlasser), optimer dine shaders, reducer antallet af lyskilder og overvej at bage lys (lightmapping) for statiske scener. Profilering er nøglen til at finde de reelle flaskehalse.

Konklusion

Dit nuværende trekantantal på 30.564 er et fremragende udgangspunkt for et lav-poly mobilspil, og selv 70.000-80.000 trekanter per frame kan håndteres effektivt med de rette optimeringsteknikker. Nøglen til succes ligger i en kombination af en effektiv kunststil (som lav-poly), kloge optimeringsstrategier som LOD, culling og instanciering, og frem for alt, grundig testning og profilering på de faktiske målenheder. Ved at mestre disse aspekter kan du skabe et visuelt tiltalende mobilspil, der kører glat og engagerer dine spillere uden at presse deres enheder til det yderste.

Hvis du vil læse andre artikler, der ligner Optimal Trekantantal for Mobilspil: En Dybdegående Guide, kan du besøge kategorien Teknologi.

Go up