Android Programjaim

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

Játékfejlesztés - openGL-ES Android

2011. március 14. 14:28 - lacas8282

Készül az én kis játékom! Viszont kipróbáltam Legenden, ahol ugye gyengébb a vas, mint egy Galaxy S-en, itt már bizony szaggatott erősen. Plusz ugye még nem volt rá optimalizálva, felbontás, etc.

  • A menük/szövegek teljesen el voltak csúszva itt, ezért optimalizáltam erre is.
  • Kiraktam egy threadbe a ténylegesen kalkulációkat.
  • VBO-t kezdtem el használni, Vertex Buffer Object-et, ami az OpenGL egy kiterjesztése, a lényege annyi, hogy elvileg nagyobb elemszámnál gyorsabban pakolja ki a vertexeket a képernyőre, ezáltal nagyobb lesz az FPS. Végülis ez egy áthidalás, hogy rögtön a vertexeket belepakolja a GPU-ba a CPU-GPU idő helyett.
  • Kiszedtem a kódból a szemetet. Volt pár class, ami még benne maradt, de semmi haszna nem volt. Plusz a felesleges változókat.
  • Egy észrevétel: Link. Itt feltettem pár kérdést, amire kaptam is megfelelő válaszokat. Köszönet érte!
  • Rájöttem, hogy a kódom 20%-a hülyeség, mivel Pathmodifierekkel dolgoztam, azaz létrehoztam a path-okat minden objektum elkészítése után. Nem gondoltam lassabb/gyorsabb Hardware-ekre, illetve felbontásra sem. Ezért ezt a részt teljesen újra kellett írnom. :(
  • Kiterjesztettem a font kezelő osztályom 3d-re is, lehet animálni, stb.
  • Vibrate funkciókat helyeztem el.
  • Lett egy új fegyver. EMP.
  • Létrehoztam egy Animator osztályt, néhány tartalom animálásra, példa: Fifa11 alatti menü csíkok animálása. (nem egy nagy dolog, de szép:))
  • FPS-t néz, és általában az FPS-től függ a megjelenés is, ezáltal nem akadozik, lassul.
  • A fejlesztéseknek köszönhetően, felgyorsult minden, olyan 80-100 vertexre is 55-60 FPS. Persze mivel az android a háttérben futtathat mindenféle Service-t, így nem garantálható ez se.
  • Pár BUG-ot javítottam...

 Végülis, fasza lesz a cucc, kezd élvezhető lenni, még készül, egyelőre TALÁN optimalizálom Legendre is, meg szarabb gépekre, bár ez nem biztos még ténylegesen... A lényeges a Tablet-en való játék is lenne, de ezzel sem tudom, hogy mi lesz. Kéne egy Tablet:( Várható megjelenés, mert már sokan kérdezték: amikor késznek látom, tökéletesnek! Mostanság mindent tökéletesre akarok fejleszteni, maximalista lettem, ezért nem adok ki a kezemből olyat, ami nem az. Hátra van még a főellenségek kitalálása amúgy, illetve pálya nehézségek kalibrálása.

 

komment

Android performance up - startMethodTracing

2011. március 05. 12:36 - lacas8282

Lassú a progink/játékunk, esetleg laggol néha? Mi lehet a megoldás? Kell egy performance viewer, jelen esetben az android tools könyvtárában található traceview.exe. Ha esetleg nem találna java-t, akkor a tools/lib/find_java.bat filet írjuk át így: set java_exe="F:\jre1.6.0_07\bin\java" nekem a java.exe-m itt található ugyanis. Persze a Windows környezeti változókkal is bütykölhetünk, de nekem ehhez nem volt kedvem.

Hogyan készítsünk trace-t a proginkról?
Egyszerűen az apk-nkban a kívánt function elé és utána tesszük ezeket a sorokat, pl.:

Debug.startMethodTracing("mygame");
   draw_all();
Debug.stopMethodTracing();

Ezek után a mi kis programunk létrehozott egy trace filet az SD kártyánk gyökerébe mygame.trace néven. Ezt átmásoljuk mondjuk ide: C:\mygame.trace

a \tools\ könyvtárba beírjuk a következőt: traceview C:\mygame

Ekkor egy következő ablakot kapunk ha minden jól ment:


 

Ügyes ugye? Az előjött ablak persze elsőre elég kusza, talán még másodikra is... Aztán észrevesszük, hogy ms-ben a methodok által lefoglalt időket látjuk, grafikusan is. Így ha valamelyik sor túl nagynak tűnik, ott valószínűleg hiba lehet a programunkban, tehát lehetne rajta optimalizálni. A fenti példakód az én játékom trace-je, ami jelen esetben még eléggé laggol néha. (teszem azt 20 ellenfél, particle-kkel, rakétákkal, de leginkább a hülyén megoldott Font rajzolástól is, plusz az animált texturecoords is sok időt lefoglalt, ezeken javítanom kell:)!) Gondoltam leírom, hogyan kell ezt, mert csak külföldi pár oldalon láttam. Esetleg valakinek majd jól jön:)

UI.(tapasztalatok):
1, egy játékban mindig a legfontosabb dolgokat rajzoljuk ki! Felesleges pl kondenz-csikot húzni egy repülő után, akkor már inkább jobb, ha egy sprite sheeten lépegetünk. Ezek ugyanis értékes real-time időt vesznek igénybe.

2, A betűket/szövegeket ugye ki kell rajzolnunk valamilyen módon egy openGL ES-ben. Ennek általában megint van többféle módja. A fentebb látható képen látható, hogy ott bizony elbarmoltam a font kirajzolást (persze dinamyctext-ről van szó), ugyanis real time készítettem a textúrákat a szövegből, ami szintén nem jó. Valamilyen kompromisszumot mindig kötnünk kell: általában jobb ha kezdetben töltjük be egyben a textúrákat, és akkor ott lesz lassabb, de akkor feltehetően nem fogja bántani már a renderelési időt... Az általam írt engine-ben jelenleg még van pár olyan megoldás, amit jelenleg nem tartok túl elegánsnak, előnyösnek, tehát a már említett textureCoords-al való babrálás real time-ban, ami megint sok időt zabál. Mi lehet a jó megoldás? Fogunk egy Fontbitmap sprite sheetet, amire ki van rajzolva 256 karakter. Kezdetben mind a 256 karakterről (vagy amennyi kell) készítünk egy texturát Canvasból. Nevén nevezzük a dolgokat, hogy később hivatkozhassunk rá: "font32" pl jelzi a 32-es ASCII texturáját. Persze így meg elég sok textúránk lesz, viszont nem nagy méretűek. Teszem azt a textúra mérete 512*512, és egy karakteré 32*32, akkor lesz egy sorban 16 karakterünk. Tehát az ebből kivágott kis textura csak 32*32 px lesz, amiből viszont lesz vagy 256, vagy csak annyi, amennyit szeretnénk. (pl csak a numerikus karakterek, vagy a-z)

3, ahol lehet használjunk static-ot, final-t, ha lehet akkor lokális változókat használjunk a legtöbbször a metódusainkban. (példa, iterálás egy arraylisten, hashmapen, tömbön)

4, renderelés közben a String dolgok lassúak, pl.: string.startsWith("akarmi") akár 2-5 ms-t is elvehetnek.

Folyt köv.


 

komment

Helyzetjelentés 2.0 - idézet a marketről

2011. március 01. 20:11 - lacas8282

-Túl az 50.000 Barcelona Live Wallpaper letöltésen

-Túl a 20.000 Best Soccer Live Wallpaper letöltésen
pár újdonság, idézet a marketről:

Barcelona, Manchester United, Bayern Munchen, Arsenal, Real Madrid, Chelsea, Juventus, LiverPool, AC Milan

UPDATED:
-bigger crest
-bugfixed
-Liverpool
-AC Milan


-new teams: boca juniors, newcastle, celtic rangers

közben készül a saját kis játékom, ami egyre szebb és jobb! (jelenleg ugye mobilra fejlesztek, minimum 1 GHZ-es procikra, de tabletre is átírom, amint lesz Tabletem)

-Sajnos az amazon.com appstore-ja eléggé bénázik, lassú, és BUG-os is, nekik is segítek a fejlesztésben teszterként :/

ezért valószínű, hogy a következő játék megoldás teljesen ingyenes lesz, admob reklámokkal fűszerezve.

-a játék 1-2 héten belül készen lesz. grafikák megvannak úgy ahogy, a hangokra várok, illetve van még pár fejleszteni való rajta.

 

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