Skip to content
Snippets Groups Projects
README.md 5.67 KiB
Newer Older
N2970's avatar
N2970 committed
# Foxxy Winter Adventure

Foxxy Winter Adventure on Peliohjelmointi-opintojakson harjoitustyönä toteuttamani yksinkertainen 2D-tasohyppelypeli. 

Linkki peliin: <https://simmer.io/@annamatela/foxxy-winter-adventure>

## Pelin esittely

N2970's avatar
N2970 committed
Foxxy Winter Adventure on perinteinen, sivustapäin kuvattu 2D-tasohyppelypeli, joka muistuttaa esimerkiksi sellaisia retropelejä kuin Super Mario. Pelaajan pelihahmona on kettu, jolla voi juosta, hypätä ja ryömiä pelimaailmassa. Kettua liikuttamalla pelaajan on edettävä tason loppuun ja kerättävä matkalla riittävästi timantteja (vähintään 20 kpl) tason läpäisemiseksi. Pelaajalla on lähtökohtaisesti kolme elämää. Törmätessään pommiin (ja ollessaan lähellä pommia sen räjähtäessä) pelaaja menettää yhden elämän, mutta löytäessään kirsikan hän saa yhden elämän. Mikäli elämät pääsevät loppumaan, ennen kuin pelaaja on läpäissyt tason, hänen on aloitettava taso alusta. Myös jos pelaaja tipahtaa yhteen tasolla olevista "vesiesteistä", taso on aloitettava alusta.

**Ensimmäisessä versiossa toteutetut toiminnalliset vaatimukset**
N2970's avatar
N2970 committed
- pelaaja voi seistä, juosta, hypätä ja ryömiä (animoidut liikkeet)
- pelaaja voi aukaista laatikoita hyppäämällä niiden päälle
- pelaaja voi törmätä esteisiin, kuten laatikoihin ja tasoihin pelimaailmassa
- pelaaja voi menettää elämiä (pommit) ja saada lisää elämiä (kirsikat)
- jos pelaaja menettää kaikki kolme elämäänsä, taso pitää aloittaa alusta
- pelaaja voi pudota "vesiesteeseen", jolloin taso pitää aloittaa alusta
- pelaaja voi kerätä timantteja päästäkseen tason läpi
- pelaaja läpäisee tason kerätessään vähintään 20 timanttia ja päästessään tason loppuun
N2970's avatar
N2970 committed

**Ensimmäisessä versiossa toteuttamatta jääneet toiminnalliset vaatimukset**
N2970's avatar
N2970 committed
- pelaaja voi löytää laatikosta aseen
- pelaaja pystyy ampumaan
- pelissä on liikkuvia vihollisia, joita pelaajan pitää väistellä ja ampua
- pelaaja kohtaa viimeisen tason lopussa loppuvihollisen, joka on voitettava pelin läpäisemiseksi
N2970's avatar
N2970 committed

**Toteutetut ei-toiminnalliset vaatimukset**
- peli on selkeä ja loogisesti etenevä
- visuaaliselta ilmeeltään ja äänimaailman puolesta peli on yhtenäinen kokonaisuus
- nopeus ja toimintavarmuus (ei vakavia bugeja)

N2970's avatar
N2970 committed
## Pelin toteutus

N2970's avatar
N2970 committed
Foxxy Winter Adventure on toteutettu Unity-pelimoottorilla (2019.4.17f1 Personal), ilmaisia Unity Asset Store -assetteja sekä Unityn paketteja käyttäen. Lisäksi taustamusiikkina on hyödynnetty YouTubesta löytyviä free licence -kappaleita. Toteutuksessa on tukeuduttu useisiin ohjevideoihin ja muuhun internetistä löytyvään materiaaliin, joista tärkeimpänä mainittakoon [Brackeys: How To Make A Video Game](https://www.youtube.com/watch?v=j48LtUkZRjU&list=PLPV2KyIb3jR53Jce9hP7G5xC4O9AgnOuL). 

**Käytetyt assetit**
- [2D Ice World](https://assetstore.unity.com/packages/2d/environments/2d-ice-world-106818)
- [Sunny Land](https://assetstore.unity.com/packages/2d/characters/sunny-land-103349)
- [2D Character Astronaut](https://assetstore.unity.com/packages/2d/characters/2d-character-astronaut-182650)
- [Achievement SFX Free](https://assetstore.unity.com/packages/audio/sound-fx/achievement-sfx-free-91639)
- [Sound FX Retro Pack](https://assetstore.unity.com/packages/audio/sound-fx/sound-fx-retro-pack-121743)
- [2D Beginner: Tutorial Resources](https://assetstore.unity.com/packages/essentials/asset-packs/2d-beginner-tutorial-resources-140167)

**Paketit**
- Cinemachine

**Taustamusiikki**
- [Kevin MacLeod - Itty Bitty 8 Bit](https://www.youtube.com/watch?v=DzFXGsRvSwA&list=WL&index=79)
- [Jeremy Blake - Powerup!](https://www.youtube.com/watch?v=l7SwiFWOQqM&list=WL&index=80)

**Tärkeimmät rakenteet**

Peli koostuu neljästä scenestä: menu (pelin aloitusruutu), level 1, level 2 ja score (pelin lopetusruutu). Siirtymistä scenestä toiseen ohjaa GameManager-olio. Level 1 ja 2 on rakennettu tilemap-periaatteella.

Pelissä on pääkamera, ja siihen Cinemachinen avulla liitetty virtuaalikamera. Virtuaalikameran avulla on asetettu pääkamera seuraamaan pelaajan liikkumista pelimaailmassa.

Pelihahmon (kettu) liikkeitä ja muita toimintoja hallitaan kahdesta skriptistä: PlayerMovement ja PlayerController. Näistä ensiksi mainittu on keskittynyt nimensä mukaisesti objektin liikkeiden ja liikkeisiin liittyvien animaatioiden hallintaan. Jälkimmäinen sisältää liikkeiden ohjaamisen ohella muitakin toimintoja kuten timanttisaldon ja elämien laskeminen, sekä erilaisiin tapahtumiin liittyvien audioklippien soittaminen. Esimerkiksi kun pelaaja kerää timantin, Player-objektiin komponenttina kuuluva AudioSource soittaa Gem-objektiin liittyvän audioklipin, jonka Gem-objekti välittää sille parametrina.

Pelaajan liikkeiden toteutuksessa on hyödynnetty [Brackeys'in Character Controlleria](https://github.com/Brackeys/2D-Character-Controller/blob/master/CharacterController2D.cs).

Pelissä "kerättäviin" objekteihin (laatikko, timantti, kirsikka, pommi) liittyy kuhunkin omat skriptinsä, joiden avulla ohjataan niiden triggeröimiä pelihahmon toimintoja, animaatioita ja ääniefektejä. Yksinkertaisin näistä on laatikko, jonka komponenttina oleva Edge Collider toimii triggerinä: kun pelaaja hyppää laatikon päälle, laatikko katoaa pelimaailmasta (Crate-objektiin komponenttina liittyvä skripti tuhoaa kyseisen peliobjektin). Monimutkaisin puolestaan on pommi. Kun pelihahmo törmää siihen, pommin Capsule Collider triggeröi pommin räjähtämisen. Siihen liittyy räjähdysanimaation suorittaminen ja räjähdysäänen soittaminen, sekä pelaajan elämien vähentäminen yhdellä (mikä puolestaan johtaa pelaajan "hit"-animaation suorittamiseen).

N2970's avatar
N2970 committed
## Onnistumiset, ongelmat ja jatkokehitys

N2970's avatar
N2970 committed


N2970's avatar
N2970 committed
## Ehdotus arvosanaksi
N2970's avatar
N2970 committed