1.1.2014

Oma koodailuprojekti, osa VIII

Liikettä!

Kun ruudulle oli saatu jotain satunnaista möllöttämään, jatkoin lentelytoimintojen parissa. Pienen pyörittelyn jälkeen päätin pysyä entisessä nopeusvektorilähestymistavassani ja käyttää sen kaverina heading-tietoa, josta aluksen nokan osoittaman suunnan saisi irti suoraan. Koska näytettävä pelialue oli sidottu alukseen, aluksen liikkuminen vieritti automaattisesti näkymää ympäri sektoria.

Aluksen pyörittely akselinsa ympäri oli hyvin yksinkertaista, eikä siitä ja sen rotate-metodeista sen enempää. Nopeuden muutos oli iso osaprojekti aiemmallakin kerralla, joten ei siitä nytkään päästy helpolla. Tätä kirjoittaessani kaasuttelu oli vieläkin keskeneräinen, joten siihen on palattava myöhemmin. Nyt riitti, että sain sen kulkemaan ympäri sektoria edes puoliymmärrettävästi, joskaan en elegantisti.



Ensin lasketaan aluksen nokan (heading) ja kiihdytyksen perusteella dx ja dy -arvot. Sitten katsotaan, mihin suuntaan nokka osoittaa ja asetetaan sen perusteella dx:lle ja dy:lle etumerkki. Mikäli uusi nopeus olisi ylittämässä aluksen maksiminopeuden, kiihdyttäminen estetään. Kuten sanoin, nykytoteutuksessani on jotain omituista.

Sektorilta toiselle

Tässä vaiheessa esiin nousi seuraava kysymys: mitäs sitten, kun sektorin rajat ylitetään? Jatketaan seuraavaan tietenkin. Koska en ollut aiemmin asettanut ektoreille naapuriviittauksia, jouduin palaamaan pelimaailman inittiin. Samoin, koska sektorit luodaan vain yksinkertaisessa silmukassa, naapurien selvittäminen vaati vähän lisätöitä.

Loppujen lopuksi tähän meni muutama tunti muutamana iltana ja refaktorointia siellä sun täällä (ainakin luokissa Player, Sector, World ja Game). Maailmanluonti oli hidastumassa huomattavasti: kun sektorit on ensin luotu, ne käydään sitten uudelleen läpi ja kunkin sektorin pohjoinen, eteläinen, itäinen ja läntinen naapuri käydään kaivamassa ja asettamassa "koordinaattiensa" perusteella.

Sektorinvaihdon yhteydessä pelaajalle on asetettava uusi sektoritieto, alus on heitettävä uuden sektorin vastakkaiseen päähän (ylöspäin mennessä siirrytään siis pohjoisen naapurin eteläpäähän), irrotettava entisen sektorin rakenteista ja heitettävä uuden sektorin vastaavaan ja vielä ladattava maailman nelipuuhun uuden sektorin peliobjektit.





Olin taas kovin ylpeä tekeleestäni tässä vaiheessa. Kaiken muun lisäksi virittelin maailman inittiä nätimmäksi. Tässä vaiheessa sektoreille luotiin vain satunnaisia määriä asteroideja, vihannesviholliset kommentoin mäkeen perustoimintojen kanssa puljaamisen selventämiseksi.


Ei kommentteja:

Lähetä kommentti