Android Programjaim

Android, Flutter/Dart, Kotlin, Java, Unity, HarmonyOS

Android Opengl ES játékfejlesztés - még néhány tapasztalat

2011. április 27. 16:38 - lacas8282

Először is legutóbb kihagytam egy elég jó kis játékmotort, most pótolom! Libgdx
Ez egy nagyon jó kis motor, JNI-vel megírva.

Lássuk akkor a játékfejlesztés tapasztalatokat.

-használjunk glCullingot ahol lehet, ezzel pár FPS-el több lehet
-a vertex kezelésnél GL_FLOAT helyett GL_SHORT kell, mivel a SHORT fele annyit foglal a memóriában és gyorsabb.
-használjunk VBO-t
-minél kevesebb texture bind-ot alkalmazzunk egy frame-kor, mivel ez sokat eszik
-használjunk ahol lehet static-et, illetve final static-et
-azt írták máshol, hogy interface-t ne használjunk, mert lassít
-ami még lassít: alpha cuccok, átlátszóság, tehát ezt is kéne hanyagolni... 
-rögtön a GL kontextus után kell inicializálni a fontosabb dolgokat, példa: gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);       gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
ezeket hülyeség már a .draw híváskor hívogatni, ez is nagyon lassít...

-végül azt kell tudni, hogy mindezek pár FPS-et javítanak a játékunkon, de mindez óriásit számít végül...

-JNI hívások: elvileg hogyha a GL kontextus létrehozásakor meghívunk egy JNI hívást (natív hívást), és az egész renderelést/számításokat C-ben megírjuk lehet, hogy gyorsabb lesz, mint a java verziója.:) ezt azért még nem próbáltam...Aki csinált már ilyet androidon az jelezze, kíváncsi vagyok mennyivel gyorsabb egy JNI-s opengl egy java-snál...

-végül olyan apróságok, hogy ne használjunk mezei array-t, hanem HashMap-et, Listeket
-nagy textúrákat sem igen szereti a GL
-hülyeség Scale-elni egy közepes cuccot teljes képernyőre, ettől az FPS csökken, inkább használjunk glTranstale-et!

-Végül pár PRO dolog: tömörített textúrák kezelésével újabb értékes FPS időt nyerünk, de ez már tényleg PRO...ugyanis minden gyártónak külön textúra "típusa" van, így pl a .pvr az olyan tömörített textúra, ami a PowerGSX GPU-kra írt formátum. (PNG helyett) Na most ezzel megint az a gond, hogy van ebből is 4-5, és nem igazán van hozzájuk konverter. Eddig legalábbis egyedül a .pvr(PVRTC 4bpp or 2bpp)-hez találtam, de persze betölteni se tudtam...aztán pl ahány gpu készítő van, annyi ilyen formátum. Mellesleg pedig az androidos GL-ben nem igazán volt glCompressedTextured opció. Aki csinált már ilyet androidon az jelezze!:)
 
#Update:
Galaxy S-es értékek: 100-150 square-nél kb 30-45 FPS (alphával, transparent bg-s png-kkel), 50-55 FPS kb 80-100 textured square-ig.
 
Live Wallpapernél: olyan 70-80 square-re: 30-40FPS. Persze HTC Legenden az értékek már rosszabbak.:( Ott vehetjük ennek a harmadát is.

komment

Újra itt - munka jövőhéttől

2011. április 21. 08:30 - lacas8282

Újra itt! Mivel még nem sok energiám van, ezért mostanság próbálgatom a Tablet emulatort, illetve tervezgetek pár új játékot, ötletelek.

Amúgy jövőhéttől újra vállalok kisebb/nagyobb android munkákat, ha kell keressetek nyugodtan.

Pár referencia: Beszamolok.hu app, Cégfürkész / Prémium app. /Napilapok

UI.: az Amazon egyelőre nagyon döcögősen halad, ilyen e-mail ide-oda szinten, szóval addig elvagyok mással. Új cuccokat is felraktam, de őrület mennyit kell várni.

Az új árakat is lejjebb vittem az 1,0$ soknak bizonyult, mivel mondjuk egy Angry Air 0,99$. Tehát levittem 0,69$-ra. Szerintem ennyiért simán megéri a jól kinéző és eléggé testre szabható Live Wallpapert letölteni. Persze, mint tudjuk egyelőre ezt is csak Amerikaiak használhatják, de sebaj, lesz még jobb is! Az Android Market nekem egy nagy csalódás, ha majd egyszer talán lehet, hogy végre lesz fizetős app is MO.-on Marketen, akkor hajrá. De addig egy vicc..:(


 

1 komment
süti beállítások módosítása