Saturday 31 March 2012

Merpattuja ajatuksia

Hehheh, sanaleikki.

Tulinpa ajatelleeksi. Olen mieltänyt MERPGin kartta-arkkitehtuurin sellaiseksi, että yhteen karttaan sijoitetaan aina yksi looginen alue (kaupunki, reitti tjsp). Näitä karttoja pidettäisiin sitten muistissa niin paljon, että kaikki ruudulla oleva maasto on yhtenäistä. Muistimanageri sitten yrittää esiladata muistiin karttoja pelaajan liikkeiden perusteella niin, ettei missään tulisi lataustaukoa tai tyhjää tilaa, johon ilmestyy kartta muutama sekunti alueelle astumisen jälkeen.

Tässä on ymmärrettävästi omat haasteensa. Miten määritellä karttojen suhde toisiinsa, toivomalla että koodari hahmottaa kartan ja laittaa ne pikselintarkasti toisiaan vasten, niin kuin kartturi on suunnitellut? Tuskinpa. Entä algoritmi, jonka perusteella esiladata karttoja lennossa? En tiedä, voisi olla helppo jos innostuisin pohtimaan, sitä, mutta näin yötä vasten kuulostaa pelottavalta.

Tämän voisi siis tehdä fiksumminkin. Jos ruudulla näytetään koko ajan yksi ainoa kartta, jossa on tileihin upotettu data siitä mihin karttoihin mihin kohtiin kyseiset tilet vievät, voi kartturi määritellä karttojen suhteet vaivaamatta koodaria tällaisillä vaikeilla asioilla. Tämän pitäisi onnistua lisäämällä kartta-rakenteen tile-olioihin Stringillä kohdekartan tiedostonimi ja 2D-koordinaattina tile, jolle siirtymän kokenut hahmo spawnaa. Lisäksi tälle pitäisi rakentaa memapperiin käyttöliittymä ja moottoriin logiikkaa tarkistamaan tämän datan.

Toinen mitä pohdin on hahmojen jatkuva liike. Vanha käsitykseni oli, että yksi hahmo voisi olla yhden tilen, ja hahmot liikkuisivat aina tilen verran suuntaansa. Näin hahmojen sijainti olisi jaollinen 50 pikselillä. Tällä saattaisi olla jotain hyötyjä, joita ei nyt tule mieleen, mutta etenkin läheisyystarkistus tarvitsisi hassumpaa matikkaa. Jos hahmojen sijainti olisi jaollinen 1 pikselillä, läheisyyden tarkistuksesta tulee paljon helpompaa, kun ei tarvitse muuttaa koordinaatteja yksiköstä toiseen. Lisäksi kamerasysteemi saattaisi olla helpompi toteuttaa, jos hahmo on liian lähellä ikkunan jotain reunaa, liikuta kameraa samaan suuntaan, jolloin hahmo keskittyy taas.

Täytyy pohtia, täytyy toteuttaa, nyt hyvää yötä!

No comments:

Post a Comment