Tuli mieleen tässä että miten kukin teistä toteuttaa koodatessaan erilaisia asioita peleissä? Esim. liikkuminen, vihollisten ja npc:n liikkumiset, kohteen haku, hyökkäykset, tavaroiden käyttö, ym. Eritoten kiinnostaa ratkaisut, joilla on saatu asiat puristettua mahdollisimman pieneen tilaan. Niin kunnollinen selitys, kuin pätkä koodia, kielestä riippumatta, kelpaa esimerkiksi.
Omista ratkaisuistani en voi sanoa muutakuin että yksinkertainen ja selkein on eniten mieleeni. Mitä vähemmällä koodilla pääsee ja mitä selkeämmäksi saa rakenteen, sen parempi. Voi tosin johtua osittain siitä että en jaksa esim. kommentteja kirjoitella, että parempi sitten tehdä koodista vain sellaista että sen käsittää pienellä tutkimisella. Vain jos olen omituisesti ajatellut jonkin pätkän, saattaa tulla ongelmia sitä ymmärtää, mutta sehän on sitten virhe ja sellainen korjataan..
-Grey-
Tähän tyyliin oli 2D-räiskintäpeliprojektissani: On sellainen perusolio kuin Hahmo, johon on liitetty tietorakenne Nappulat, jossa on kyseisen hahmon toimintaan liittyvien nappien tilat. Liikkumisessa on normaaliin tapaan suunta ja suuruus, joita muutetaan nappien mukaan. Nappirakenne täytetään joko näppäimistösyötteellä tai tekoälyn ohjeiden mukaan. Kovin ihmeellistä tekoälyä siitä ei sitten löytynytkään, ja muutenkin ominaisuudet olivat aika rajallisia. Toisaalta taas asejärjestelmä oli teoriassa hyvin pitkälle kehittynyt kaikkine double-aseineen ja kulkuneuvoineen. Harmi vain, etteivät nämä päässeet koskaan näkyville asti. :(
Nykyään panostan yleensä laajennettavuuteen ja monipuolisiin ominaisuuksiin, mikä onkin suurin syy sille, että projektit meinaavat levitä käsiin. Mutta joskus, joskus vielä teen jotain valmiiksi asti. :)
Teen kaikki olioiksi, ja c++:sta puhun. esim. npc: Luodaan luokka npc, alustetaan, ja pääloopissa kutsutaan tyyliin npc.paivita() ja sen jälkeen tarkistan törmäykset yms.
npc takana on kuitenkin jokin hahmo-luokka, joka periytetään siitä, siitä myös periytetään paahahmon luokkakin. Ja näin on npc:llä ja hahmolla samanlainen liikkuminen.
Hmm... Tekisin varmaan kentänkin yhdenksi olioksi jonka funktion parametreillä välittäsin hahmolle ja npc:lle.
hahmo-luokka josta on periytetty paahahamo ja npc on. Niin siellä sisällä (private) on Item luokka.
Kohteen haku. En osaa sanoa, koska en ole koskaan sellaista koodannu.
Ei kyllä ole pieneen tilaan puristettu, mutta sitäkin selkeämpi. Ja hyvä näin.
ERKKI-enginestähän kaikki tekemäni ratkaisut löytyvät... En käyttänyt luokkia koska halusin enginen toimivan myös pääasiallisesti C-kieltä käyttävien käsissä.
Kenttä on itsenäinen rakenne, joka koostuu pelkistä 'koukuista'. Jokainen 'koukku' on linkki tiettyyn, erilliseen objektiin (olioon/esineeseen), jonka kenttä sisältää. Tällöin kaikki hakeminen/vaikuttaminen on nopeaa ja helpohkoa kun tarvitsee vain noutaa 'koukut' halutulta alueelta. Jokainen erillinen objekti taas on taas rakenne, joka sisältää 'koukun' pääobjektirakenteeseen joka taas määrää ko. objektin pääasialliset, muuttumattomat vakiot (kuva, perusvahinko, kokemus, liput, varastot (jokaisella pääolioluokalla yksi 'päävarasto'; tällä tavalla voi mm. rakentaa erilaisille kenttäolioille rajatun esinevalikoiman) etc.) muun rakenteen kattaessa variaatiot pääobjektista (myös mahdolliset alivarastot). Tuossahan se kauniisti sanottuna. Ilman luokkia tosin kaikki hallinta on tehtävä funktioiden avulla, jotka pyrin pitämään niin yksinkertaisina kuin mahdollista; yksi funktio/tehtävä. Tällöin niitä pystyy käyttämään siten että koodin ymmärrettävyys säilyy ^_^
Aihe on jo aika vanha, joten et voi enää vastata siihen.