Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Tilen animaatio

Mobel [04.01.2009 03:01:10]

#

Kotiutumisen ja nollien puhaltelun jälkeen aioin taas jatkaa ohjelmointiprojektiani, jota aion nyt remontoida järkevämpään ja helpommin jatkettavaan muotoon.

Kyseessä 2D, tilepohjainen, NESin Zelda/FinalFantasy -tyylienn peli(ks. kuva http://www.vidaextra.com/images/2007/03/zeldalink.jpg ). Luon Tile-luokan, joka sisältää tilen eri tasojen kuvat, tilen paikan, tiedon voiko ks. tilessä kävellä jne. Tästä luokasta sitten luodaan instansseja kartan jokaiselle tilelle karttatiedoston ohjeiden mukaan.

Nyt ihan ideatasolla tai pseudona - miten mielittekään - haluaisin vastauksia, miten toteuttaa tilejen animaatio. Varmasti halutun tason(layerin) kuvaa pitäisi loopata parin kuvan välillä jonkinnäköisessä animaatiomoottorissa, mutta miten kannattaisi liikkuvat ja liikkumattomat kuvat eritellä ja ladata muistiin(kuvat ladataan isosta tile sheetistä, jossa kaikki tarvittavat kuvat)? Miten ylipäätään itse toteuttaisitte animoidut tilet tällaisessa pelissä?

Kielenä on Java, mutta se nyt ei juuri vaikuta näin teoriatasolla liikuttaessa.
Kiitoksia vastauksista.

Grez [04.01.2009 03:19:20]

#

No tässähän taitaa olla kolme vaihtoehtoa

A) Jos piirrät joka piirtokerralla kaikki tilet "näytölle", niin laitat vaan kuhunkin tileen animaatiolaskurin jota kasvatat piirrettäessä ja joka pyörähtää ympäri tarpeen mukaan.

B) Jos teet välipuskurin pelialueesta (jossa on siis kaikki alueen tilet ja vähän yli meneviä valmiiksi piirrettynä), niin kannattaa miettiä kumpi on parempi

B1) Piirrät n. kappaletta valmiita puskureita, joissa on kussakin eri animaation vaiheet. Tällöin jokaisen tilen loopin pituus täytyy olla n tai n/kokonaisluku.

B2) Piirrät vain yhden (tai montako nyt piirrätkään) valmispuskurin ja piirrät siihen aina muuttuvat eli animoidut tilet uudelleen. Tämä on varmaan järkevämpi jos animoituja tilejä on vain vähän.

Mobel [04.01.2009 12:55:24]

#

Kiitokset vastauksesta. "B2-tapasi" vastaakin tyyliä, jota oli suunnitellut rutiinia hoitamaan. Animoituja tilejä tosiaankin on murto-osa staattisten tiilten määrästä ja näytölle piirtämisessä käytän itse värkättyä Panel-luokan jatketta, joka piirtää kuvat puskurin kautta. Luokan säie kutsuu loopissa metodeja
gameUpdate(päivittää pelitilanteen),
gameRender(renderöi puskuriin) ja
gamePaint(piirtää näytölle).
Kirjoittaessani jouduin tosissaan ajattelemaan ongelmaa ja saatoinkin osaksi itse vastailla itselleni, mutta uudet näkökulmat ovat toki tervetulleita ja ihmettelemistä tässä kyllä riittää.

Tuollaista "animaatiolaskuria" olin tile-luokkaan miettinytkin. Mutta miten saisin ohjelman tunnistamaan animoidun tilen, jos luetaan kartasta, että tähän tileen tulee kuva nro. 42 ja nyt siis kuvia pitäisikin ladata kolme yhden sijasta.

Kannattaako pitää esimerkiksi taulukkoa, joka sisältää kaikkien animoitujen tiilien numerot(tai sitten "jos tilen numero on suurempi kuin 100, lataa tiilelle kolme kuvaa ja merkkaa animoitavaksi")? Ajattelin ladata animoitavat tilet omalta tileSheetiltään ainakin näin aluksi selkeyttämään touhua.

Jos ideoita keksii, niin olen kiitollinen niistä.

Grez [04.01.2009 19:12:04]

#

Mobel kirjoitti:

Tuollaista "animaatiolaskuria" olin tile-luokkaan miettinytkin. Mutta miten saisin ohjelman tunnistamaan animoidun tilen, jos luetaan kartasta, että tähän tileen tulee kuva nro. 42 ja nyt siis kuvia pitäisikin ladata kolme yhden sijasta.

No jos määrittelet kullekin tilelle animaatiokuvien määrän. Sitten kun päivität sitä, niin niitä, joissa määrä on 1, ei tarvitse päivittää.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta