Kort gezegd: "optimaliseren op het eind" is hoe projecten sterven in certificering. Een performancebudget (frametijd- en geheugenplafonds afgesproken voordat content gebouwd wordt) verandert optimalisatie van een crisis in een routinecontrole. Budgetteer milliseconden in plaats van polygonen, deel het frame als een taart, meet bij drie vaste camera's, maak de cijfers zichtbaar waar het werk gebeurt, en trek de hendels in kosteneffectiviteits- volgorde wanneer een scène rood wordt. Dit artikel geeft het hele systeem, met startgetallen die je kunt aanpassen.
De vista is altijd de rekening: maximale tekenafstand, elk systeem tegelijk in beeld, elke LOD-ring actief. Budgetteer voor deze view: de gang zorgt voor zichzelf.
Budgetteer frametijd, niet polygonen
Polygoonbudgetten zijn een relikwie: moderne GPU's stikken op draw calls, overdraw, schaduwen en geheugenbandbreedte lang vóór ruwe driehoeken. Budgetteer wat je werkelijk meet: milliseconden per systeem, per view.*
Een 60-fps-game bezit 16,6 ms per frame; bij 30 fps, 33,3 ms. Dat is het hele budget, gedeeld door alles: gameplay, fysica, AI, VFX, UI en omgeving. De plak van de omgeving is een onderhandeling met rendering en gameplay, maar het moet een getal zijn, afgesproken en opgeschreven, anders stort elke discussie over of een scène "te duur" is in in smaak en anciënniteit. Naast frametijd, geef plafonds aan de grootheden die het binden:
- draw calls per view (ze binden de CPU lang voordat de GPU vollopt),
- textuur- en meshgeheugen per streamingzone (het getal dat beslist of je streamt of hapert),
- schaduwwerpende lichten in beeld,
- overdraw-hotspots: vegetatie en VFX zijn de gebruikelijke verdachten.
De exacte plafonds hangen af van platform en engine; de discipline van plafonds hebben is wat zich overdraagt naar elk project dat je ooit uitbrengt. Een getal waarover je fout kunt zitten verslaat een gevoel waarover je alleen kunt ruziën.
Deel het frame als een taart, in milliseconden
Geef elke afdeling een plak (gameplay, VFX, UI, omgeving), deel dan de omgevingsplak opnieuw: terrein, vegetatie, props, water. "Is dit bos te duur?" wordt een objectieve vraag.*
Een werkbare startverdeling voor een 60-fps-titel, per project te heronderhandelen: omgeving totaal 6–8 ms, waarvan terrein ~1,5, vegetatie ~2–2,5, props en structuren ~1,5, water en atmosfeer ~1. Het punt zijn niet deze exacte getallen: het is dat wanneer het bos 4 ms meet tegen een plak van 2,5 ms, het gesprek wordt "welke hendel trekken we" in plaats van "wiens schuld is het".
Plakken beschermen ook tegen over-optimalisatie, een echte en dure faling. Een systeem dat ruim onder zijn plak zit is een uitnodiging om de ruimte aan kwaliteit te besteden, geen trofee om te verdedigen. Teams zonder plakken neigen te optimaliseren wat de luidste engineer opmerkte, wat zelden het echte knelpunt is: de taartdiagram vertelt je waar de milliseconden echt heengingen.
Meet bij drie vaste camera's
Budgetteer voor de slechtste realistische view, niet het gemiddelde: kies drie vaste "budgetcamera's" per map (slechtste vista, dichtste gevechtsruimte, drukste interieur) en meet precies daar, elke keer.*
Willekeurige flythroughs produceren willekeurige getallen en onweerlegbare argumenten. Vaste camera's produceren trendlijnen: dezelfde view, wekelijks gemeten, toont precies wanneer en waar een regressie landde en aan wie het te vragen. De slechtste vista verdient de hoofdrol omdat hij alles tegelijk stapelt: maximale tekenafstand, elke LOD-ring, terrein, water en lucht tegelijk. Een map die het budget bij zijn vista houdt houdt het bijna overal; gangen vleien je, en vista's vertellen de waarheid.
Sla de cameraposities op in de map zodat iedereen de exacte shot kan reproduceren. "Het loopt goed op mijn machine onder een of andere hoek" is geen data; "budgetcamera 2 meet 9,2 ms op min-spec, op van 7,8 vorige week" is een bugrapport met een verdachte.
Maak het budget zichtbaar waar het werk gebeurt
Een budget in een wiki is dood: het leeft als stat-overlays tijdens set-dressing, een controle tegen plafonds vóór content-merges, en waarschuwingen wanneer een bake voorbij het instance-aantal zou schieten.*
Artiesten halen budgetten graag wanneer de feedback onmiddellijk is, en verafschuwen ze wanneer ze aankomen als een bugticket drie maanden nadat het werk verscheept is. De gereedschapskant telt hier op een stille maar beslissende manier: wanneer scatter en blending bakken naar engine-native primitieven (gewone instanced meshes en foliage, zoals Numivo doet), vertelt je bestaande profiler de onopgesmukte waarheid erover, zonder plugin-runtime die de cijfers vertroebelt, en elke standaardhendel (cull-afstanden, LOD's, instance-aantallen) geldt ongewijzigd. Een budget dat je alleen door een black box kunt meten is een budget dat je stilletjes zult stoppen te vertrouwen.
De reviewcadans die blijft plakken
Wekelijkse opnames van de drie budgetcamera's (vijf minuten), een geautomatiseerde plafondcontrole op content-merges, en een maandelijkse review van de plafonds zelf: budgetten zijn schattingen, en eerlijke revisie verslaat stille schending.*
- Wekelijks: screenshot de drie camera's met stats aan; log frametijd en geheugen in een gedeeld blad. Trends verschijnen binnen een maand, en een piek wijst naar het werk van een specifieke week.
- Bij merge: een geautomatiseerde controle vergelijkt de scène met de plafonds. Rode getallen openen een gesprek, geen build-break: het doel is bewustzijn, geen bureaucratie, en een harde blokkade traint mensen om de controle te omzeilen.
- Maandelijks: herbekijk de plakken zelf. Realiteit halverwege een project verschilt altijd van preproductie- gissingen; het budget openlijk aanpassen houdt het geloofwaardig. Een budget dat iedereen stilletjes negeert is erger dan geen, want het leert het team dat plafonds theater zijn.
Wanneer de cijfers rood worden
Trek hendels in kosteneffectiviteitsvolgorde: cull-afstanden en schaduwinstellingen eerst (minuten, enorme winsten), dan LOD's en impostors, dan instance-aantallen, en pas als laatste de kunst zelf.*
Optimalisatie is triage, geen sloop. Breek de kunst als laatste af: de meeste over-budget-vista's komen groen terug van onzichtbare instellingswijzigingen lang voordat je iets moet verwijderen dat een speler kan zien.
De dure fout is meteen springen naar "verwijder de helft van de bomen". Dichtheid is de meest zichtbare hendel en meestal niet de goedkoopste: een vista 2 ms over budget komt doorgaans groen terug van enkel schaduwafstand- en cull-afstand-tuning, beide onzichtbaar voor spelers. Content verwijderen is het laatste redmiddel juist omdat het de enige hendel is die spelers kunnen zien; elke sport erboven op de ladder is gratis vanuit kunstoogpunt. Werk de ladder af en je bewaart de look terwijl je de milliseconden terugwint; werk van onderaf op en je maakt de game lelijker voordat je de gratis winsten hebt geprobeerd.
Veldcijfers die het waard zijn te stelen
- Frame bij 60 fps: 16,6 ms, omgevingen onderhandelen doorgaans 6–8 ms
- Een werkbare omgevings-subverdeling: terrein 1,5 / vegetatie 2–2,5 / props 1,5 / water & atmosfeer 1 (ms)
- Budgetcamera's per map: 3 (vista, gevecht, interieur), opgeslagen in de map
- Wekelijkse meetkosten: ~5 minuten; waarde: trendlijnen in plaats van argumenten
- Hendelvolgorde bij rood: culling → schaduwen → LOD's → instances → kunst
Mini-FAQ
Wie bezit het omgevingsbudget? Eén benoemd persoon (meestal een tech artist) bezit de meting; de plafonds worden gezamenlijk met rendering bezeten. Budgetten zonder eigenaar vervallen binnen een maand tot folklore, want "iedereen is verantwoordelijk" betekent dat niemand meet.
Hoe werken budgetten met dynamische tijd-van-dag? Meet de slechtste lichtconditie bij elke camera, niet de mooiste. Dageraad met lange scheervolgende schaduwen kost vaak het dubbele van middag; een budget dat alleen bij middag houdt is een half budget, en spelers vinden het dure uur.
Heb ik dit allemaal nodig voor een klein indieproject? Schaal het af, niet weg. Eén budgetcamera, één plafond (frametijd op je min-spec-machine), wekelijks gecontroleerd. De vijf-minuten-gewoonte is wat de laatste maand redt, ongeacht teamgrootte is de faalmodus identiek: de kosten ontdekken wanneer ze duur zijn om op te lossen.
En geheugen versus frametijd? Het zijn verschillende budgetten met verschillende faalmodi: frametijd laat je FPS dalen, geheugen laat je streaming in haperingen of crashes vallen. Budgetteer beide; op console is geheugen vaak het hardere plafond, en het is degene die de certificering laat falen in plaats van alleen slecht te voelen.
Het budget is geen limiet op kunstenaarschap: het is de reden dat de mooie scène er nog steeds mooi uitziet bij 60 fps op de hardware die spelers werkelijk bezitten. Teams die performance behandelen als een gedeelde ontwerpbeperking brengen mooiere games uit dan teams die het behandelen als een eindbaas.