You are on page 1of 12

Univerzitet u Niu

Elektronski fakultet Ni

Programming assets for gaming


industry in java
-Struna praksa-

Petar Ljubi

296/15

Ni, 2016.
Contents
Uvod .............................................................................................................................................................. 3
Java je previe spora ................................................................................................................................. 3
Java ima curenje memorije ....................................................................................................................... 4
Evolucija jave u video igrama Mobilni telefoni .......................................................................................... 4
Konkurencija Javi kod kreiranja igara za Android OS .................................................................................... 5
Primer igre u Javi Match The Color ............................................................................................................ 6
Overview / Gameplay ............................................................................................................................... 6
Interface .................................................................................................................................................... 6
Home ..................................................................................................................................................... 6
Game ..................................................................................................................................................... 8
Finish ................................................................................................................................................... 10
Leaderboard ........................................................................................................................................ 11
Kljuna biblioteka Android Property Animation ...................................................................................... 11
Zakljuak ..................................................................................................................................................... 12
Uvod
Java jeste jedan od najpoznatijih i najpopularnijih objektno orijentisanih programskih jezika, koji
podravaju vie razliitih platformi, jezik za lak i jednostavan razvoj aplikacija uz dobru
dokumentaciju. Ovaj programski jezik je podran od strane Sun Microsystems-a, i omoguava da
uz malu cenu razvoja programa sa mogunostima korienja i ugradnje drugih jezika (na primer
C-a i C++-a) stvorimo razliite programe razliitih namena.

Velika grupa programera javu kao razvojno okruenje za pravljenje igara baca u senku drugih,
prilagodljivijih programskih jezikao kao to su C, C++, Assembler i drugi i to zbog sledeih
stavki:

- Java je previe spor programski jezik,


- Java ima veliko curenje memorije,
- Java je jezik visokog nivoa,
- Instalacija Java aplikacija je prava nona mora
- Java nije podrana u gejmerskim konzolama,
- Niko ne koristi Javu za pisanje pravih igrica
- Sun Microsystem nije zainteresovan za podrku igara u javi.

Vredno je rei da je veina gore navedenih konstatacija pogrena. Ovakvi zakljuci i uverenja,
odnosno predrasude o javi kao jeziku za programiranje igara nastali su kasnih devedesetih
godina prolog veka kada je ovaj programski jezik i njegove biblioteke bio manje sofisticiraniji i
sporiji. Java korisnici i programeri su zasluni za kreiranje razliitih novih alata, online podrke,
kao i velikog broja primera kodova. Konacno, gejmerski forumi prepoznaju javu kao jezik za
pravljenje igara dve hiljaditih godina (2006 - 2009) i time otvaraju put ovom programskom
jeziku. U nastavku teksta dati su argumenti na svaku od stavki koju programeri cesto daju kao
razlog ne korienja jave:

Java je previe spora


Ispravnije je rei da je Java sporija u poredjenju sa C ili C++ jezikom, koji je dominantan jezik
za kreiranje igrica jos od 1996-e godine. Java Development kit 1.0, po mnogim merenjima, bio
je 20 do 40 puta sporiji od C++-a, dok su kasnije verzije, poput J2SE 5.0, bile samo 1.1 puta
sporije. Istina je da svakim novim release-om, Java postaje sve bra i bra. Danas je gotovo
suludo govoriti i uporeivati brzine ovih programskih jezika pojavom JIT-a, koji je podran kroz
java virtuelnu mainu, ali i kroz .NET Framework. Krucijalna taka u brzini je znati ta okriviti
kada program ili igra reaguju sporo. Obino, veliki deo grafikog renderinga igrica je hendlovan
od strane hardvera ili softvera koji se nalazi van Javinog okruenja. Na primer, Java 3D
prosleuje svoje taskove za rendering OpenGL-u ili DirectX-u, koji mogu emulirati sposobnosti
hardvera.
Java ima curenje memorije
Kada C/C++ programer pria o curenju memorije u Javi, obino ne razume kako Java zaista radi.
Java ne podrava aritmetiku pokazivaa (pointera). Tipian stil C curenja memorije, kao to je
out of bounds kod nizova, je krivnja Java kompajlera.

Kako god, veina misli da objekat koji vie nije potreban programu nije pravovremeno uklonjen
pomou garbage collector-a. Ovo postaje problem kada program drii kreirani novi objekat i
zahteva jo memorije, i eventualno puca zbog dostignutog limita u memoriji.

Ovaj problem je konsekvenca loeg programiranja, od kako garbage collector moe da uradi svoj
posao samo kada je objekat u potpunosti dereferenciran, to znai da program vie ne referencira
nita iz tog objekta.

Evolucija jave u video igrama Mobilni telefoni


Mobilni telefoni su postali svakodnevica enormno velikog broja ljudi na planeti. Pojavom
operativnog sistema Symbian, a kasnije i njegovim irenjem, Java je poela dobijati sve vei
znaaj u kreiranju igara. Naime, Symbian operativni sistem je bio podran od strane vodeih
marki mobilnih telefona, a pre svega Nokie, i time je do 2009 drao ubedljivo prvo mesto medju
operativnim sistemima za mobilne uredjaje. Primarno razvojno okruenje za ovaj operativni
sistem je Qt, koji podrava C++ i kreiranje aplikacija za vie platformi. Medjutim, Java je kroz
Java ME (Java Micro Edition) poela da uzima sve vei primat u kreiranju aplikacija, a pogotovo
igara. Razvojno okruenje netBeans bilo je savreno za tu namenu.

Ipak, java doivljava svoj vrhunac u operativnom sistemu koji je veoma uspeno zamenio sada
ve prevazidjeni Symbian 2009- e godine. Android operativni sistem, koji je razvio Google, ve
godinama je najrasprostranjeniji i najkorieniji operativni sistem za mobilne telefone,
televizore, pametne satove i automobile na svetu. Kljuna injenica jeste da je vie od 90 %
aplikacija za Android koji se nalaze na Google Play Store-u napravljeno u Javi.

Java se ne kompajlira direktno na procesoru android uredjaja ve se to izvrava na Java


virtuelnoj maini. Google je za potrebe Android operativnog sistema razvio Dalvik, virtuelnu
mainu koja Java kod pretvara u kod slian mainskom kodu. Google je takoe krenuo sa
realizacijom virtuelne maine nove generacije pod nazivom ART, koja bi trebala da zameni
Dalvik i doprinese boljim performansama. Dalvik i ART tokirste JIT i AOT tehnologiju kako bi
ubrzali procese koji se izvravaju.
Google za razvoj Android aplikacija preporuuje Android Studio, razvojno okruenje koje se
moe pokrenuti na Windows, Linux i Mac operativnom sistemu. Za razliku od iOS-a koji koristi
native kompajler za pretvaranje Objective C i Swift jezika u ARM mainski kod, Java kompajler
pretvara source kod u byte kod.

Konkurencija Javi kod kreiranja igara za Android OS


Obzirom na popularnost Android operativnog sistema, veliki broj razvojnih okruenja pokuava
da prilagodi svoj produkt stanju na tritu, te tako nudi mogunosti razvoja aplikacija za Android
kroz njihovu platformu. Stoga treba napomenuti sledea razvojna okruenja kao glavne
konkurente:

- Cordova Razvojno okruenje koje dozvoljava konverziju web aplikacija u android


aplikaciju
- Phonegap Razvojno okruenje nastalo iz Cordova, upotpunjeno raznim bibliotekama
- Qt Omoguava programiranje Android aplikacija uz pomo C++ programskog jezika
- Xamarin Plug in za Visual Studio i okruenje za programiranje pomou C#
programskog jezika
- Unity Cross platform resenje sa bibliotekama i velikom podrkom za kreiranje video
igara.

Od svih gore navedenih reenja najveu pretnju Javi u kreiranju igara predstavlja razvojno
okruenje Unity. Unity je doista trenutno vodee razvojno okruenje za kreiranje sloenih i
robusnih igara ne samo za Android, ve i za iOS i Windows Phone operativne sisteme. Razlog
tome jeste neuporedivo bolja podrka i alati za rad sa grafikom karticom uredjaja, kao i
mogunost kreiranja aplikacije za sva tri operativna sistema iz istog koda pisanog u C#-u.

U emu je, onda, prednost Jave i da li ona uopte i postoji?

Pojam igra je robusna stvar, pod igrom se podrazumeva aplikacija pod imenom Subway surfers,
koja je jedna od najpoznatijih igara za mobilne telefone i raena je u Unity okruenju, ali se
podrazumeva i aplikacija pod nazivom aa, iji je dizajn veoma jednostavan i u kojoj je jedini
zadatak korisnik klik na ekran. Uzimajui u obzir same projekte / igre koje treba realizpovati i
njihovu kompleksnost, treba pravilo prosuditi i odluiti koje razvojno okruenje koristiti. U
koliko se u aplikaciji koriste 3D modeli koji se kreu veoma brzo i utiu jedan na drugog, gde je
bitno da programer vodi rauna o fizici kretanja svakog objekta, definitivno je reenje koristiti
Unity. Sa druge strane, u koliko se radi o igri u kojoj cirkuliu 2D objekti sa jednostavnim
fizikama dvo dimenzionalnog kretanja, reenje e verovatno biti Java i Android Studio.
Zakljuak je da je sve na timu programera i njihovom project manager-u koji treba da procene
teinu i zahteve samog projekta.

Primer igre u Javi Match The Color


U okviru prakse u kompaniji Webelinx, kao radni zadatak sam imao da na osnovu specifikacije
zahteva, uz pomo mentora i zaposlenih u ovoj kompaniji, izvedem procenu izvodljivosti i
donesem odluku koju tehnologiju je idealnije koristiti za realizaciju projekta. Na osnovu
istraivanja postojeih reenja i na osnovu prethodnog iskustva zaposlenih u kompaniji,
ustanovljeno je da je najoptimalnije mogue reenje koristiti programski jezik Java i razvojno
okruenje Android Studio.

Overview / Gameplay
MTC je mini igrica za Android operativni sistem. Cilj igre je da korisnik u pravom trenutku
pogodi odredjeni simbol. Simboli se kreu sa vrha ekrana ka odredjenoj zoni. Kada se simbol
nadje u toj zoni, korisnik treba da tapne na dugme koje predstavlja taj simbol. Igra se zavrava
ako simbol izadje iz zone a korisnik nije pritisnuo dugme ili je tapnuo na pogresno dugme. Kako
vreme prolazi igra postaje sve tea. Kada korisnik klikne prerano, prekasno ili na pogresan
simbol gubi ivot. Cilj igre je pogoditi to vie simbola. Simboli mogu biti razliiti.

Teina igre raste tako to se brzina dolaenja simbola poveava na svakih 5 sekundi i tako to se
na svakih 10 sekundi pojavljuje jo jedan novi simbol. Inicijalno su prisutna prva tri dugmeta u
donjem redu na sredini, nakon 10 sekundi se pojavljuju etvrto i peto sa leve i desne strane.
Nakon 10s ekundi se pojavljuju esto, sedmo i osmo iznad prva tri, i, na kraju, deveto i deseto
iznad etvrtog i petog. Na svakih 3.4 sekunde se elementi ubrzavaju.

Interface
Home
Ovo je pocetni ekran aplikacije. Sastoji se od: Logoa igrice ispod koga se nalaze dva dugmia:
Play i Leaderboard. Na vrhu ekrana, desno, se nalazi dugme music (on/off).

Dugme Leaderboard pokree leaderboard ekran ukoliko je korisnik nekada ranije pristupio ovom
ekranu, u suprotnom se otvara Change name popup.
Game

Ovaj ekran se otvara kada se klikne na dugme play.

Prilikom prvog pokretanja korisniku se prikazuje tutorial koji ga obavetava na koji nain se igra
ova igra. Tutorial se sam sklanja nakon 5 sekunde ili klikom na isti. Tutorial se pokazuje
prilikom svakog pokretanja sve dok korisnik ne napravi skor vei od 3. Nakon sklonjenog
tutoriala kree odbrojavanje nakon ega poinje igra.

U gornjem desnom uglu se nalazi dugme za pauziranje igre a u levom back dugme koje korisnika
vraa na poetni ekran. U sredini se nalazi broj pogodjenih simbola. Na dnu ekrana se nalaze
dugmii koji predstavljaju simbole na koje korisnik treba da tapne kad se taj simbol nadje u
oznaenoj zoni. Iznad ovog dela se nalazi pomenuta zona.
Klikom na pauzu igra se pauzira i otvara se popup koji sadri dugmie:

- Resume,
- Home,
- Music On/Off.

Resume dugme zatvara popup, kree odbrojavanje (3,2,1) i igra se nastavlja.

Ako korisnik pogrei boju, klikne prerano, prekasno ili uopte ne klikne izlazi dialog sa porukom
ta je korisnik uradio pogreno. Taj dialog stoji tu dok se ne tapne na njega ili dok ne prodju dve
sekunde nakon ega se pojavljuje dialog koji korisniku nudi da odgleda video i nastavi igru ili da
izgubi. U koliko video reward ne postoji odmah se prelazi na sledei ekran.
Finish

Ovaj ekran se otvara nakon zavrene igre. Na njemu se prikazuje ukupan broj pogodjenih
simbola. Ispod rezultata prikazana je i pozicija korisnika na leaderboardu ili znakovi pitanja ako
korisnik jo uvek nije uneo korisniko ime, ako proba da otvori Leaderboard, a nije registrovan
izlazi popup Change Name za registraciju. Klikom na ovaj deo otvara se Leaderboard ekran koji
je opisan dole. Na kraju ekrana je footer koji sadri dva dugmia share i new game. Kada
korisnik napravi highscore pored rezultata e stajati i ova oznaka.
Leaderboard

Sastoji se od liste rezultata sa imenima korisnika. Na dnu ekrana se nalazi dugme Change name
koje korisniku omoguava da promeni ime (otvara se popup za promenu imena). Iznad ovog
dugmeta se nalazi deo gde je prikazana pozicija i rezultat korisnika koji je registrovan na tom
uredjaju.

Kljuna biblioteka Android Property Animation


Property Animation je robusan framework koji dozvoljava animaciju skoro svega u Androidu.
Moemo definisati animaciju promene bilo kog objekta kroz vreme, bez obzira da li se taj
objekat iscrtava na ekranu ili ne. Property animation menja property vrednost preko
specifikovane duine vremena. Za animiranje neega, treba specificirati polje objekta koje
elimo da animiramo i vrednosti izmedju kojih treba da se krece.

Osnovne karakteristike animacije su sledee:

- Duina animacije (podrazumevana vrednost je 300 ms)


- Interpolacija animacije Linearna, odskakajua...
- Podeavanje ponavljanja animacije
- Set animacija Mogunost reprodukovanja animacija sekvencijalno ili paralelno
- Vreme osveavanja animacije Podrazmevana vrednost je 10 ms

Nain raunanja animacije dat je na sledeoj slici

Izvedena klasa koja ima veliku primenu u igrama jeste ObjectAnimator, naroito u sprezi sa
elementima koji se iscrtavaju na ekranu. U igri Match The Color ti elementi predstavljaju loptice
i rupu u koju upadaju loptice. Object animator nam koristi da animiramo poziciju , scale i alpha
vrednost elementa i da na odredjenoj uestalosti pratimo trenutnu lokaciju svakog elementa.

Primer korienja ObjectAnimator-a dat je u nastavku:

ObjectAnimator anim = ObjectAnimator.ofFloat(foo, "alpha", 0f, 1f);


anim.setDuration(1000);
anim.start();

Zakljuak

Zahvaljujui praksi koju sam obavljao u kompaniji Webelinx mogu izvesti dva zakljuka. Jedan
zakljuak odnosi se na samu temu koju sam obraivao. Dakle, odluku o korienju programskog
jezika ili alata za kreiranje igre ili bilo koje aplikacije treba doneti uz konsultaciju veeg broja
zaposlenih, koji se trebaju baviti razliitim poslovima na projektu (dizajneri, programeri,
menaderi...). Drugi zakljuak odnosi se na znaaj timskog rada. Prema tome, dobro sloen,
uigran tim, sa dobrom hijerarhijom i podelom posla, uz razumevanje i meusobno potovanje
ljudi u timu, moe biti klju uspeha u realizaciji skoro svakog projekta i problema koji naie.
Sama podrka nadreenih u velikoj meri pomae u samopouzdanju podreenih i time ih ini
produktivnijim.

You might also like