| ... | ... | @@ -32,7 +32,7 @@ Pelaaja voi lyödä monia eri elementtejä pelimaailmassa. Fysiikkaelementeissä |
|
|
|
|
|
|
|
### Tuhottavat elementit
|
|
|
|
|
|
|
|
Tuhoutuvat, mikäli pelaaja lyö niitä, tai niihin kohdistuu tarpeeksi suuri isku. Alunperin mallinsin tuhoutuneet kopiot tuhottavista elementeistä, mutta näiden negatiivinen vaikutus suorituskykyyn tuli nopeasti selville. Päätin siis käyttää elementin tuhoutuessa partikkeliefektejä.
|
|
|
|
Tuhoutuvat, mikäli pelaaja lyö niitä, tai niihin kohdistuu tarpeeksi suuri isku. Alunperin mallinsin tuhoutuneet kopiot tuhottavista elementeistä, mutta näiden negatiivinen vaikutus suorituskykyyn tuli nopeasti selville. Päätin siis käyttää elementin tuhoutuessa partikkeliefektejä. Lopputulokseen olin hyvin tyytyväinen. Käytin tuhoamiseen ShatterOnCollision-scriptiä, joka käy universaalisti kaikkiin tuhottaviin elementteihin. Scriptiin siis vain syötetään haluttu efekti (uusi modeli tai partikkeliefekti) ja scripti tuhoaa alkuperäisen elementin ehtojen täyttyessä ja luo halutun efektin tilalle.
|
|
|
|
|
|
|
|
### Staattiset elementit
|
|
|
|
Pelimaailman perusrakennuspalikat, joiden päällä voi kävellä. Tekoälyn navigaatio on myös leivottu näille pinnoille.
|
| ... | ... | @@ -44,7 +44,7 @@ Viholliset ovat kapseleita, joihin on liitetty navigaatioagentti. |
|
|
|
Liikkuminen tapahtuu navigaatioagentin avulla. Tämä osoittautui suureksi ongelmaksi ragdollausta suunnitellessa, mutta keksin omasta mielestäni suhteellisen kekseliään ratkaisun ongelmaan.
|
|
|
|
|
|
|
|
#### Ragdollaus
|
|
|
|
Kun viholliseen kohdistuu tietty määrä energiaa, tai pelaaja lyö vihollista, vaihtuu vihollinen ns. kuolleeseen tilaan. Toisin sanoen alkuperäinen gameObject tuhotaan, ja tilalle asetetaan kuollut fysiikkaelementti. Tähän vaikuttavat kaikki unityn fysiikan lait, eikä navigaatioagentti häiritse tapahtumia.
|
|
|
|
Kun viholliseen kohdistuu tietty määrä energiaa, tai pelaaja lyö vihollista, vaihtuu vihollinen ns. kuolleeseen tilaan. Toisin sanoen alkuperäinen gameObject tuhotaan, ja tilalle asetetaan kuollut fysiikkaelementti. Tähän vaikuttavat kaikki unityn fysiikan lait, eikä navigaatioagentti häiritse tapahtumia. Mikäli kuollut vihollinen lakkaa liikkumasta, synnytetään uusi vihollinen tämän tilalle. Reinkarnaatiota parhaimmillaan.
|
|
|
|
|
|
|
|
#### Hyökkääminen
|
|
|
|
Hyökkäys tapahtuu täysin identtisellä tavalla pelaajan kanssa. Hyökkäyksen osuessa pelaaja menettää elämäpisteitä. Näiden tippuessa nollaan pelaaja kuolee.
|
| ... | ... | @@ -60,4 +60,8 @@ HUD on toteutettu unityn UI-komponentteja käyttäen. Tässä ei mitään ihmeel |
|
|
|
|
|
|
|
## Suorituskyky
|
|
|
|
|
|
|
|
Suorituskyky on webbibuildissa täyttä kuraa. Sain nostettua tätä nostamalla webbibuildissa allokoidun muistin määrää, jota on siis varattu tällä hetkellä 512mb. Suurin suorituskykyyn vaikuttava asia on valojen paljous. Yritin säilyttää alkuperäisessä versiossa jonkinlaisen tasapainon leivottujen valojen ja dynaamisten valojen välillä, mutta webbibuildissa käytössä on vain dynaamisia. Myös fysiikkalaskutoimitukset kuormittavat hiukan laitteistoa, mutta omissa testeissäni vaikutus oli marginaalinen. |
|
|
\ No newline at end of file |
|
|
|
Suorituskyky on webbibuildissa täyttä kuraa. Sain nostettua tätä nostamalla webbibuildissa allokoidun muistin määrää, jota on siis varattu tällä hetkellä 512mb. Suurin suorituskykyyn vaikuttava asia on valojen paljous. Yritin säilyttää alkuperäisessä versiossa jonkinlaisen tasapainon leivottujen valojen ja dynaamisten valojen välillä, mutta webbibuildissa käytössä on vain dynaamisia. Myös fysiikkalaskutoimitukset kuormittavat hiukan laitteistoa, mutta omissa testeissäni vaikutus oli marginaalinen.
|
|
|
|
|
|
|
|
# Itsearviointi
|
|
|
|
|
|
|
|
Arvosanaehdotukseni on 4. Työtunteja kertyi arviolta 30-40. Käytin omasta mielestäni monipuolisesti Unityn erilaisia ominaisuuksia. Aikaa kului kuitenkin triviaalien ongelmien kanssa taistelemiseen, ja lopputulos on vesitetty versio alkuperäisestä. Peliin myös jäi joitain bugeja, jotka voidaan lähes kaikki jäljittää unityn heikkoon default collision detectioniin. Suurimpana syynä siis tuplacollisionit tai collisionin rekisteröitymättömyys, jotka aiheuttavat esim. vihollisen kuoleman laskemisen kahdesti tai sen laskematta jättämisen. |
|
|
\ No newline at end of file |