Tavoite

  • Oppia laatimaan libGDX kirjastoa ja Box2D rajapintaa hyödyntäviä pelejä Android-laitteille
  • Oppia laatimaan henkilökohtainen pitkän tähtäimen oppimisstrategia peliohjelmoinnin opiskeluun

 
Kohderyhmä

  • Henkilöille, jotka ohjelmoivat sujuvasti Javalla tai/ja C++:lla, mutta jotka eivät vielä tunne peliohjelmoinnin algoritmiikkaa, grafiikka- ja äänirajapintojen sekä valmiskirjastojen kuten libGDX ja Box2D käyttämistä Android-laitteissa. Henkilölle, joka tuntee jo Androidin peruskäsitteet, kuten Activity, Content Provider ja Service, hyvin ja osaa kirjoittaa Android-ohjelmia.
  • Henkilölle, joka ymmärtää pääpiirteissään mitä vektorit ja matriisit ovat ja mihin niitä voidaan käyttää
  • Henkilölle, joka ymmärtää fysiikan peruskäsitteet, kuten massa, nopeus, kiihtyvyys ja kitka
  • Lisätietoja libGDX ja box2d kirjastoista löydät linkeistä: http://en.wikipedia.org/wiki/Libgdx, http://en.wikipedia.org/wiki/Box2d

 

Miksi opiskella?

  • Monet pelit kutenHill Climb Racing, Fantastic Contraption, Incredibots, Angry Birds, Tiny Wings, Transformice, ja Happy Wheels on toteutettu Box2d kirjaston varaanKirjastojen avulla on mahdollista tehdä hyvin ohjelmistoja, joiden ylläpitäminen ja uusien versioiden tekeminen on kustannustehokasta.
  • Android on tällä hetkellä markkinoiden suosituin alusta tablet- ja kännykkäpeleille
  • LibGDX kirjaston avulla toteutetut ohjelmat on hyvin helppo saada pyörimään suosituimmissa mobiililaitteissa kuten iOS ja Android-pohjaisissa laitteissa, työpöytäkoneissa sekä ympristössä, joka osaa tulkita HTML5 kieltä (selaimet). LibGDX on todellinen Indie-kehittäjän cross-platform työkalu.

 

Sisältö

Päivä 1

Android-ympäristön erityispiirteiden ymmärtäminen pelien tekemisen kannalta

 

  • Peliteollisuuden globaalit trendit ja tunnusluvut lyhyesti
  • Pelikehitysympäristön valinta
    • Valmis ympäristö, kuten Unity, Unreal ja libgdx vs. käsin koodaaminen
    • Mitä ja miten kannattaa opiskella, jos haluaa peliohjelmoijaksi?
    • Laite vai emulaattori vai molemmat?
  • Peliohjelmoinnin perusalgoritmit ja tekniikat
  • Pelin kirjoittaminen yhdellä työkalulla usealle eri laitteelle
    • Mitä voi portata laiteperheeltä toiselle helposti ja mitä ei?
    • Mikä osa pelistä voidaan toteuttaa käyttöjärjestelmäneutraalisti ja mikä osa on käyttöjärjestelmä- ja laitekohtaista?
    • LibGDX kirjasto ja box2d fysiikkamoottori cross platform kehittäjän työkaluina
  • Android perusteet ja arkkitehtuuri lyhyesti
    • Kerrokset ytimestä käyttöliittymään, säikeistysmalli
    • Ääni- ja grafiikkapalvelujen tarjoaminen ohjelmistopinon eri kerroksissa
    • OpenGL ES, OpenSL, GPU:n hyödyntäminen
  • Pelaajan syötteisiin reagoiminen – tapahtumankäsittelyn toteuttaminen peliin
    • Kosketusnäyttö
    • Sensorit, kuten kiihtyvyysanturi
    • Muiden tapahtumien käsittely
  • Natiivisovellus, Dalvikissa pyörivä sovellus vai hybridi?
  • Natiivikirjastojen käyttö laskentaintensiivisissä operaatioissa
  • Tekoälyalgoritmien toteutus
    • Tutustumme tapoihin rakentaa älyä peleihin
    • Pelimaailman mallintaminen olioin
  • JNI perusteet
    • Datan kopiointiin liittyvät haasteet ja ratkaisut
    • Muistivuotojen ehkäiseminen
    • Tehokkaan puskuroinnin toteutus
  • Jaettujen resurssien suojaaminen, lukitukset, kilpailutilanteet monisäikeisessä pelissä
    • Monisäikeisyyden toteuttaminen Android-ympäristössä
    • Resurssien jakaminen säikeiden välillä tehokkaasti
    • Resurssien jakaminen natiivikoodin ja java koodin jakaessa samaa resurssia
  • Pelin pysyvyysratkaisut
    • Pelitilan tallentaminen ja palauttaminen pilvipalvelun avulla
    • Pelitilan tallentaminen paikallisesti
  • Pelien tehokas debuggaaminen laitteessa ja emulaattorissa (Android)
  • Java ja C++ koodin optimointi peleissä
    • Mikä on optimoitavissa
    • Mitä voi optimoida, mitä kannattaa optimoida
  • Tehokkaan muistinhallinnan menetelmät ja suorituskyvyn optimointi
  • Ääni- ja grafiikkarajapinnat ja niiden käyttäminen peleissä
    • Androidin natiivi ja Java-äänirajapinnat
  • NativeActivity pelikehityksessä
    • Android UI kirjasto pelikehittäjän kannalta, kannattaako sitä käyttää?
    • NDK:n käyttäminen, natiivikoodin debuggaaminen
    • Natiivikirjaston tekeminen ja integrointi
    • Käyttääkö NativeActivity –luokkaa vai tehdäkö perinteinen Android-sovellus?

Päivä 2

  • LibGDX:n soveltaminen peleissä - pelin toteuttaminen käytännössä
  • libGDX peruskäsitteistö ja projektin luominen Android-ohjelmointiympäristössä
    • Hello Worldin tekeminen
    • OpenGL konfigurointi
    • TextureAtlas –luokan käyttäminen
  • Grafiikan lisääminen peliin
  • Animaation lisääminen peliin
  • Hiiri- ja näppäintapahtumien käsittely
  • Kosketustapahtumien käsittely

 

Kurssin kesto
2 päivää

Kurssin luonne
30% luentoja 70% harjoituksia

Esitietovaatimukset
Hyvät Android ohjelmointitaidot