PDA

Prikaži potpunu verziju : Isometric Game... What is the difference?


Andross
27.5.2007, 16:17
Eno ja sam u temi ko hoce da se pridruzi pitao vec za izometrijsku igru al' da ne sirim offtopic otvorio sam novu temu.

Kako je uraditi? Koje su razlike? Koliki je to posao?

To su samo par pitanja iz mora drugih koja su mi u glavi. Posto nikad nisam pravio izometrijsku igru molio bih vas da mi odgovorite na ova pitanja, kako bih znao u sta bih se uvalio ako mi se bude pravila ista.

tab503
27.5.2007, 16:29
govoris o "pravoj" ili flash igri?

kish
27.5.2007, 16:40
Pa u cemu je tolika razlika sto se tice izometrije? Iz aspekta matematike je isto.. or not?

tab503
27.5.2007, 16:42
Evo ti link koji sam ja svojevrmeno gledao kad sam se zezao sa tim stvarima.
Pomocice ti da malo skapiras stvari

http://www.kirupa.com/developer/actionscript/isometric_transforms.htm

@kish
Valjda ti je jasno da se igre mogu programirati u raznim programskim jezicima. Cak sam svojevrmeno nasao i opengl uputstvo za Delphi (sto me je odusevilo jer sam ja moje programcice pravio u deplhiu, nikad nisam ucio c ili c++)

kish
27.5.2007, 17:56
@tab503
Pa u cemu je tolika razlika sto se tice izometrije? Iz aspekta matematike je isto.. or not?

tab503
27.5.2007, 19:01
@tab503

on je pitao za kompletno pravljenje igre, ne samo za matematiku. On nije trazio da mu se objasni izometrijski prikaz.
Covek hoce da napravi izometrijsku igricu i postoji razlika u cemu se radi.
On je konkretno pitaao kako je uraditi
Nadam se da sam bio jasan.

Piece.

EclipsE
27.5.2007, 19:16
Kako je uraditi? Tesko. To je jedino sto znam :)

btw nije Piece (kao parce) nego Peace (kao mir) lol :)

kish
27.5.2007, 19:16
Peace, of course. Ja samo pitam da li je u Flashu lakse uraditi tako nesto, posto Flash dosad nisam ni pipnuo...

bobi
27.5.2007, 19:17
Izometrijska igrica je isto što i full 2D igrica koja se gleda iz ptičje perspektive sa tim što se svi objekti uključujući i pozadinu posmatraju iz neke poluptičje perspektive.
Sad, mislim da oko izrade modela i ne bi bilo problema, ali oko izrade tileovane pozadine ja trenutno nemam ideju kako je lako izvesti. Možda ako bi tileovi bili romboidni ili tako nešto.
Starcraft, Stronghold, Diablo... sve su to igrice sa izometrijskim pogledom.
Nije loše pogledati u editoru Starcrafta ili Strongholda kako su oni rešili tileove.

Znači, što se izrade grafike tiče, mislim da je za izometriju najteže odraditi tile. Verovatno je i programiranje nešto komplikovanije.

tab503
27.5.2007, 19:46
btw nije Piece (kao parce) nego Peace (kao mir) lol :)

jbg omaklo se :a_whistli

kish
27.5.2007, 19:56
Za starcraft znam da se koriste kvadratni tile-ovi. Moze se lepo videti ako se u editoru ukljuci grid. Verovatno je i diablo tako radjen posto ga je radio isti tim. Ovo podrazumeva lakse programiranje sa tileovima jer se radi isto kao i sve druge top-down igre ali je teze izraditi ih tako da se sve uklapa kako treba. A romboidne tilesetove sam dosad video samo u Civilization trojci.

btw nije Piece (kao parce) nego Peace (kao mir) lol :)
Haha, jos ja prepisem rofl.

voodoo_
27.5.2007, 20:17
Ideja: koristiš običnu matricu kao grid, s tim što pri crtanju svaku parnu kolonu spustiš za pola visine tile-a (vidi sliku), neparne kolone malo sabiješ a parne, onako spuštene, "uglaviš" između. Uglavnom, računanje se svodi na prostu 2D matricu, a za crtanje koristiš rombove sa transparentnim bojama. Vrlo jednostavno.

kish
27.5.2007, 21:44
Ideja: koristiš običnu matricu kao grid, s tim što pri crtanju svaku parnu kolonu spustiš za pola visine tile-a (vidi sliku), neparne kolone malo sabiješ a parne, onako spuštene, "uglaviš" između. Uglavnom, računanje se svodi na prostu 2D matricu, a za crtanje koristiš rombove sa transparentnim bojama. Vrlo jednostavno.

Hmm... zar onda to nece ispasti ovako:
http://img529.imageshack.us/img529/4841/grid1gc8.jpg
Ja sam razmisljao, slicno kao kod tebe, da se uzmu dva grida, stime da je jedan pomeren za pola jedinice nadole i nadesno:
http://img152.imageshack.us/img152/6042/grid3sj5.jpg
Na taj nacin bi tile-ovi trebali da se uklope kako treba...

voodoo_
27.5.2007, 22:11
Nema potrebe za dva grida, dovoljno je ovaj gornji malo "zgusnuti" prilikom crtanja (dakle druga kolona se pomeri za pola širina, treća za jednu, četvrta za jednu ipo itd. - izračunajte koeficijent) i to je to.

EclipsE
27.5.2007, 22:18
pa to je taj fazon samo sto cesh tu prilikom crtanja non stop izracunavati pozicije, a tamo izracunash pozicije jednom i onda samo crtash

kish
27.5.2007, 22:20
da da, to je to... na to sam i ja mislio :D

voodoo_
28.5.2007, 0:02
pa to je taj fazon samo sto cesh tu prilikom crtanja non stop izracunavati pozicije, a tamo izracunash pozicije jednom i onda samo crtash
Nema tu nekog velikog izračunavanja, spremiš jednu funkciju i po njoj računaš za svako polje. Vidi se sa slike da će n-ti blok biti nacrtan na lokaciji n / 2 - 0.5, znači crtao bi s nečim tipa

Matrica[x, y]->DrawAt(itof(x)/2 - 0.5, itof(y)/2 - 0.5);

Mislim, jednostavnije je da upišeš celu mapu u jednu matricu, nego da održavaš dve. Logično je da ćeš sebi tako pojednostavljivati prikaz (kompjuter će ovo ionako brzo izračunati), nego da žongliraš sa dve različite matrice samo da CPU ne bi radio deljenje (podrazumeva se da mapa sastoji od različitih tileova raspoređenih ko zna kako, i ako se tu umešaju dve matrice, neće se znati ko pije ko plaća, tj. u koju matricu koje polje da staviš). Naravno svako može implementirati izometriju kako njemu odgovara, ja lično bih radio ovako ko na slici :)

bobi
28.5.2007, 0:10
Ali kako će tile da bude tileabilan ako ga spustiš za pola?

voodoo_
28.5.2007, 0:21
Eh, kad sve moram da crtam :)
Dakle to što nešto na slici izgleda kao gomila uglavljenih romboida uopšte ne mora da ima veze sa onim kako je to zaista organizovano u memoriji. Razlikuj ideju od implementacije :)
Primera radi, neka je ovo na donjoj attachovanoj slici jedan tile, element one matrice. I sad mi proglasimo rozu boju za providnu (recimo ako u Delphiju ili C++Builderu koristiš TImage objekat za poslove sprajta, i uključiš mu Transparent property, boja koja je u gornjem levom uglu biće proglašena za providnu).
Na gornjoj slici se vidi jedan Image objekat koji nije Transparent, i ostalih pet koji jesu, pa se roza ne vidi i možeš da ih uklapaš kako hoćeš. (Ovo je slikano u design timeu - program kad radi, ne vidi se okvir oko objekta niti tačkice iza)
Tako da je crtanje u stvari najmanji problem, ko što se vidi. Lepo, ako radiš u Delphiju ili C++Builderu, napraviš jednu logičku matricu,svakom elementu matrice pridružiš željeni tile bitmap, poređaš TImage objekte ko na slici i u svaki ucrtaš odgovarajući tile iz pripadajućeg elementa matrice.

kish
28.5.2007, 0:26
Nema tu nekog velikog izračunavanja, spremiš jednu funkciju i po njoj računaš za svako polje. Vidi se sa slike da će n-ti blok biti nacrtan na lokaciji n / 2 - 0.5, znači crtao bi s nečim tipa

Matrica[x, y]->DrawAt(itof(x)/2 - 0.5, itof(y)/2 - 0.5);

Mislim, jednostavnije je da upišeš celu mapu u jednu matricu, nego da održavaš dve. Logično je da ćeš sebi tako pojednostavljivati prikaz (kompjuter će ovo ionako brzo izračunati), nego da žongliraš sa dve različite matrice samo da CPU ne bi radio deljenje (podrazumeva se da mapa sastoji od različitih tileova raspoređenih ko zna kako, i ako se tu umešaju dve matrice, neće se znati ko pije ko plaća, tj. u koju matricu koje polje da staviš). Naravno svako može implementirati izometriju kako njemu odgovara, ja lično bih radio ovako ko na slici :)

Sa "dva grida" nisam ni mislio na dve razlicite matrice, nego samo da bi lakse prikazao ideju. Sto se matrice tice, ne bi je ni koristio. Radije bih napravio listu i pri renderu bi se tile-ovi redom izcrtavali. Globalno gledano, ne volim nizove uopste jer nemam kontrolu nad memorijom, koja mi je potrebna ako imam mape raznih velicina. Tako da... liste FTW! :alealeee:

voodoo_
28.5.2007, 0:36
Nema problema, mislio sam prvo da si govorio o dve različite matrice al sam posle drugog čitanja ukapirao šta si hteo da kažeš :)
Nije bitno, razumemo se :) u principu, nije problem strpati ni hex grid (kao u herojima 3, na primer) u 2D matricu, al tu temu bolje da ne potežemo :)

Mada opet ne znam kako misliš da nemaš kontrolu, svaki oo jezik podržava dinamičko kreiranje matrica proizvoljnih dimenzija u runtimeu, recimo int x[ , ] = new int[20, 30] u C#, i slično. Al dobro, neko više voli liste a neko nizove :) istina, u tradicionalnim jezicima velika matrica bi zauzela znatan prostor na steku, pa je lista verovatno bolje rešenje.

M.Silenus
28.5.2007, 13:14
Čudi kako se niko nije setio da pomene game dev...
Postoji tamo odeljak koji se zove Isometric and Tile-based Games (http://www.gamedev.net/reference/list.asp?categoryid=44). Ime sve kaže.

Andross
28.5.2007, 13:53
Uff nacitao sam se. Sad shvatam razliku. Jos ovaj game Dev clanak da procitam...