[ NikolaVeber @ 01.03.2005. 10:38 ] @
Pozdrav!

U dilemi sam kako sledeci problem da resim:
Igru koju uskoro zavrsavam treba da osposobim za rad na sto vise telefona. Posto nisam koristio nikakve device-specific klase, ne verujem da ce biti puno problema sto se tice samog programa.
Problem je medjutim velicina ekrana. Da li postoji nacin da se programski resi prilagodjavanje za razlicite velicine ekrana, ili ipak sleduje "rucno", tj za svaku rezoluciju posebno?

Hvala

[ mucky @ 01.03.2005. 11:50 ] @
To u velikoj meri zavisi od igre koju pravis, i nacina na koji si je napravio.

Ako si od samog pocetka sve pravio da bude relativno u odnosu na
visinu/sirinu ekrana
(a te dve vrednosti dobijas pomocu metoda getWidth() i getHeight()
klase Canvas, FullCanvas
ili GameCanvas), onda bi trebalo da uopste nema intervencija. Naravno,
ovo je u praksi
veoma tesko postici, jer veci ekran trazi i vece slike, ako si
stavljao vise slicica u jednu
vecu i koristio clipping onda se moraju menjati i offset-ovi tih
manjih slicica u vecoj,
collision detection se mora menjati, mozda i velicina fontova... Dakle
moguce je uraditi
to sto zelis ali iz iskustva kazem da ces za svaku velicinu ekrana
morati uraditi fina
podesavanja, cak i ako si sve radio relativno u odnosu sirinu/visinu ekrana...
[ NikolaVeber @ 01.03.2005. 13:46 ] @
nisam radio relativno u odnosu na sirinu i visinu...

ali mi je palo na pamet da uzmem 4 - 5 rezolucija koje su najcesce koriscene i da pozadinu povecam tako da, ako je rezolucija za recimo 10x10 veca, tih 10 piksela desno i dole bude pozadina, a da sve ostane na svojim originalnim pozicijama, vezanim za 0,0.
[ mucky @ 01.03.2005. 14:37 ] @
Ako hoces da prodas igru, tesko da ce ti proci tako nesto...

--
Until Eve arrived, this was a man's world. -- Richard Armour
[ NikolaVeber @ 01.03.2005. 18:57 ] @
Druga stvar o kojoj sam mislio je da pravim pozadinu koja ce se prostirati preko vidljivog dela ekrana, da "akciju" vezujem za odredjenu tacku na pozadini i da sve to centriram zavisno od velicine ekrana.
Tako bih sa 10ak "standardnih" velicina grafike pokrio skoro sve rezolucije.

Ne znam kakva je inace praksa, nigde jos nisam video neki tutorial koji bas ovaj momenat pokriva. Svaki savet je dobrodosao.

Btw, ima li negde lista rezolucija po modelima, na jednom mestu?
[ shima @ 01.03.2005. 23:38 ] @
>Svaki savet je dobrodosao.

Jel' ima u J2ME mogucnosti da uradis resize: skalirannje, afine transformacije, ... slike kao u
J2SE?
[ NikolaVeber @ 02.03.2005. 00:05 ] @
Cini mi se da nema menjanja velicine slika, bar ne sa MIDP1.0...
[ mucky @ 02.03.2005. 00:40 ] @
Jako mi je tesko da zamislim o cemu govoris zato sto ne znam kakva je
igra u pitanju i sta se desava sa pozadinom, da li je staticna ili se
pomera, da li nesto u igri zavisi od nje itd...

U svakom slucaju, rezolucije ekrana mobilnih telefona mozes potraziti
na forumima sajta JavaSvet ( http://www.javasvet.net ), i MIDP 2.0
takodje ne podrzava skaliranje slika...

--
Until Eve arrived, this was a man's world. -- Richard Armour
[ shima @ 02.03.2005. 01:18 ] @
Mozda mozes da napravis metod(e) za skaliranje slika?
Kada se igra ucita, ocita velicinu ekrana, uporedi to sa velicinom originalnih slika npr. pozadine,
odredi tako faktor skaliranja i onda skalira sve slike/sprajtove na potrebnu velicinu.
"Negativna" poledica ovoga je da se i pocetne pozicije sprajtova moraju skalirati pa se igra od
pocetka mora (pre)projektovati da moze da se skalira.
Ako se odlucis za ovo treba ti (najmanje) kod za bilinearno filtriranje (interpolaciju) pixela
slike a jos bolje je bikubno. Mozda se ovo moze naci po apletima na Internetu a mozda ima nesto i
Open Source?
Mozda se moze kupiti naruciti takav kod? Ne znam da li J2ME ima potrebnu matematiku za ovo npr.
realne brojeve(ako trebaju), rad sa pixelima ili nizovima i bajtovima slike itd...

Ako ti grafika nije komplikovana ...da li J2ME ili "MIDP 1/2..." podrzava (geometrijske) Shapeove
(Bezierove Krive..., GeneralPath, za vektorsko crtanje)?
Ovde je implementacija skaliranja daleko jednostavnija nego kod bitmapa. Samo pomnozis ili sabiras
koordinate...
[ NikolaVeber @ 02.03.2005. 12:58 ] @
@shima:
mislim da je to tesko (ako je uopste moguce) izvesti i da se ne isplati... tx anyway


@micky:
http://www.kr3m.de/game-a-lot/...tower.php?game=rushtower2&
ovo je igra u flashu po cijem se principu pravi sporna igra. Znaci pozadina je fiksna. "Ljudi" dolaze sa desne strane, gomilaju se u redu, a igrac treba da ih rasporedi po liftovima.
[ filmil @ 02.03.2005. 15:34 ] @
Citat:
mislim da je to tesko (ako je uopste moguce) izvesti i da se ne isplati... tx anyway
Da ubacim 2 centa u mašinu.

Filtriranje slika (dakle skaliranje i ostalo što uz to ide) na mobilnim telefonima verovatno nije ono što hoćeš da uradiš, bar još godinu dana ili možda malo jače.

Bolje je da napraviš nekoliko tipskih veličina bitmapa, i ručno odrediš koja tipska veličina će se koristiti za koji ekran. (kao što je izgleda već bilo predloženo) Ekran koji je tačno veliki koliko i tipska veličina X se naravno odmah poveže sa njom i koristi. Ekran koji je malo veći od X-1 ali malo manji od X se opet preslika u X, tako da se na ekranu iscrta manje od 100% cele mape, a akciju prilagodiš na stvarnu veličinu ekrana. Na ovaj način koristiš sigurno ceo ekran za igru, a razlike u apsolutnim veličinama sličica za različite ekrane su male.

f
[ NikolaVeber @ 02.03.2005. 17:45 ] @
To bi verovatno zavrsilo posao. Jedino ostaje pitanje da li sve to drzati na gomili, ili praviti posebnu verziju za svaki X?
[ filmil @ 02.03.2005. 19:01 ] @
Citat:
Jedino ostaje pitanje da li sve to drzati na gomili, ili praviti posebnu
Držati sve na gomili. To em nije poseban problem (Kolike su bitmape uostalom? Ne prevelike) em je stari štos kod pravljenja igara.

f
[ mucky @ 02.03.2005. 21:57 ] @
Za svaki tip telefona se pravi posebna verzija igrice, ni slucajno
stavljati vishak png slichica u jar fajl... Mozda je to stari stos
kod pravljenja nekih drugih igara, ali ovde je svaki bajt bitan jer
korisnik placa download po kilobajtu tako da...

--
Until Eve arrived, this was a man's world. -- Richard Armour
[ srdjandakic @ 03.03.2005. 07:33 ] @
Mislim da je memorijsko ograničenje telefona kritičniji problem od količine podataka za download...

To Nikola: pogledaj TiledLayer klasu u MIDP 2.0 dokumentaciji
[ mucky @ 03.03.2005. 07:51 ] @
Srdjane, apsolutno si u pravu da je skuchenost memorije josh vazhnija :)

Mada, ako se vec igra pravi za MIDP 2.0 onda memorija i nije veliki problem
kao nekada jer svi MIDP 2.0 telefoni imaju po vishe (2+) megabajta za heap,
shto je zaista dosta za vecinu igrica cak i sa viskom slika :)

Inache, ako ne koristish MIDP 2.0, ovo shto se postizhe pomocu TiledLayer klase
je vrlo lako postici pomocu setClip(int x, int y, int width, int height) metode klase
Graphics. Ogranichenje klase TiledLayer je sto svaki tile mora biti iste velicine!
[ NikolaVeber @ 22.07.2005. 22:38 ] @
Moram da reanimiram temu :)

"Portovanje" smo manje vise pretresli. Zanima me samo, da li je bolje praviti posebne verzije za svaki telefon, ili napraviti nesto poput installera koji ce da utvrdi velicinu ekrana, downloaduje potrebne slike (po filmilovoj shemi, vise tipskih velicina) i saruva ih u record store-u?

Zanima me da li je moguce poslati fajl on-demand putem mms-a i da li to prodavci usluga tog tipa (bulk sms, mms...) podrzavaju? (Scenario: Multiplejer igra, mogucnost pozivanja saigraca sms-om. Sta se desava kada on nema instaliranu igru? Odgovori na sms i dobije mms sa pomenutim installerom.)

Takodje, da li neko ima podatke o broju telefona na trzistu? Zapravo, sa kolikim procentom ucestvuju MIDP1.0 telefoni (u poredjenju sa midp2.0)?


Hvala!