Optimering...

Medlem
Optimering...

Optimering av ett program innebär att man skriver om koden på ett sådant sätt att det ger samma resultat som tidigare, men kräver färre klockcykler av datorn att genomföra. Förr i tiden var man tvungen att optimera minsta lilla detalj, men nu har kompilatorerna blivit så smarta att de hjälper en med att automatiskt utveckla loopar eller skriva om beräkningar. Det som är kvar för människan är främst att optimera på den "stora skalan", dvs se till att beräkningar inte sker i onödan genom att välja en bättre algorithm.

Den senaste veckan har vi väntat på att en Oxeye-medlem ska komma tillbaka från semestern, så vi valde att jobba lite på Dawn of Daria istället för Harvest. Det vi gjorde var att experimentera med att lägga in höjdskillnader i marken. Daria, liksom våra andra spel, är i 2D fast renderade med hjälp av 3D-accelererade polygoner. Detta är ganska praktiskt, för då får man skalning och lite andra roliga effekter "gratis".

Problemet är dock att alla objekt renderas ortogonalt med skärmplanet, så alla ljupledseffekter vi vill ha måste vi beräkna själva och fejka genom att ändra renderingsordningen av saker (objekt som står längre bort ska ritas före objekt som är närmre). När det gäller våra höjdskillnader i Daria så innebar det alltså att räkna om objektens vertikala position (y-led) baserat på deras z-koordinat (höjd över havet). För att få en bättre känsla av höjdskillnaderna så ändrade vi även färgen på sluttningarna. Dessa beräkningar kan inte grafikkortet göra åt oss, för när den får informationen så ligger alla polygoner i samma plan, så ljuseffekterna måste sättas i förväg.

Summan var iallafall att renderingen på min dator sjönk från hälsosamma 105 bilder per sekund till 60. 60 är fortfarande helt spelbart, men även om min dator inte är den hetaste på marknaden så kan den inte användas som referens för vår publik. Jämförelsevis får jag 350 FPS i Harvest i början av en ny spelomgång.

Så nu funderar jag över hur jag ska optimera den nya renderingskoden. Den måste ge samma resultat, men med mycket färre beräkningar. Det hjälper inte att sitta och stirra på koden, för det är inte några loopar som ska fixas. Jag behöver göra lite forskning i om det finns något mer jag kan lägga ut på grafikkortet (utan att använda pixel shaders, för det är för modernt), eller kanske bege mig ut och promenera och hoppas på gudomlig inspiration.

Hittar jag ingen lösning som åtminstone ger mig 20 mer i FPS så kanske denna feature måste strykas från listan...

#blogg

Medlem
Optimering...

Jag beundrar folk som verkligen lyckas klämma ur varenda uns ur en maskins prestanda eller hur någon hittar på något fyndigt sätt att få ut mer ur hårdvaran, så jag hoppas att du lyckas med din optimering. Det spel som jag gjorde som projektarbete blev o-optimerat och drog otroligt mycket onödig processorkraft och minnesutrymme.

Lycka till!

Medlem

Lycka till!
Jag är inte väldigt insatt i hur andra utvecklare optimerar sin kod, men jag är ställer mig definitivt bakom oss andra som tycker att optimera är kung
För övrigt tycker jag personligen att det är ganska skoj också.

1
Skriv svar