Näin teet oman Angry Birds -kloonin

Discussion in 'Käyttäjien tekemät oppaat' started by Agent_007, Jun 26, 2011.

  1. Agent_007

    Agent_007 Senior member

    Joined:
    May 5, 2003
    Messages:
    29,936
    Likes Received:
    124
    Trophy Points:
    143
    Eli keskustelualueilla on muutamaan otteeseen näkynyt viestejä, joissa on kyselty pelien tekemisestä, joten päätin tehdä tällaisen pienen projektin (Hostile Objects), jotta kaikki halukkaat voivat tutustua pelin prototyyppiin ja halutessaan muokata sitä oman makunsa mukaan.

    Pelin toteutin Unityn avulla, koska sen käyttö on aloittelijoillekin kohtuullisen helppoa, ja se on saatavilla ilmaiseksi Windowseille ja Mac OS X:lle. Unityssä on valmiina kaikenlaista mukavaa (kuten fysiikka- ja grafiikkamoottorit), joten sen avulla saa nopeasti aikaa protoja (tähän projektiin käytin aikaa noin 6 tuntia).

    Lähtökohdaksi otin Angry Birdsin, koska se on suurimmalle osalle tuttu peli. Unityn kattavien ominaisuuksien myötä peliä varten piti tehdä seuraavia asioita:
    1. Kasata kenttä WYSIWYG-editorilla (palikoiden laittaminen paikoilleen, teksturointi ja skriptin kiinnittäminen)
    2. Kirjoitella hieman pelilogiikkaa ja muita juttuja JavaScriptillä
    3. Testailla ja säädellä asetuksia

    Unityssä aukeava projektipaketti löytyy täältä (5,6 megatavua) ja sen purkaminen haluttuun kansioon ja avaaminen Unityn File -> Open Project... -valinnalla riittää. Play-napilla pääsee pelaamaan suoraan editorissa, ja .exe-peliä kaipaavat saavat sen File -> Build Settings... -valikon kautta tai vaihtoehtoisesti voi ladata valmiin paketin täältä (8,1 megatavua) tai jos koneelle on asennettu Unity Web Player -laajennus, voi tuotetta kokeilla suoraan selaimen avulla täällä.

    Unityssä Scene-osio näyttää luodun pelimaailman ja siitä voi suoraan valita sen peliobjektin (GameObject), jota haluaa muokata. (kuvassa valittuna R eli suurempi pahis)
    [​IMG]

    Hierarchy-osio näyttää kyseisessä kentässä (eli Scene:ssä) olevat peliobjektit, joten peliobjekteja voi valita myös täältä.
    [​IMG]

    Project-osiosta löytyvät kaikki projektissa mukana olevat asiat (ts. Assetit), joita voi sitten lisätä kyseisellä hetkellä muokattavissa olevaan kenttään. Esim. kuvia ja ääniä voi raahata suoraan tänne Resurssienhallinnasta/Finderista, jonka jälkeen ne voi raahata haluamansa peliobjektin päälle.
    [​IMG]

    Inspector-osio kertoo sillä hetkellä valittuna olevan asian tiedot (tässä tapauksessa Pahis_isompi-peliobjekti). Transform-kohta kertoo peliobjektin sijainnin, pyöritykset ja skaalauksen. Box Collider -kohta kertoo, että peliobjektilla on törmäystarkisteluun käytettävä laatikkomalli mukana. Mesh Renderer -kohta kertoo peliobjektin piirtämiseen liittyviä tietoja. Rigidbody-kohta pitää sisällään fysiikkalaskentaan liittyviä tietoja. Script-osio kertoo peliobjektiin mahdollisesti liitetyt skriptit ja Shader-kohdan kautta on mahdollista valita lisää piirtämiseen liittyviä tietoja (kuten käytettävä tekstuuri).
    [​IMG]

    Esimerkkipelissä ohjaus tapahtuu hiirellä, jolla määritetään ammuksen voima ja kulma. Välilyönnillä voi vaihtaa räjähtävän ja tavallisen ammuksen välillä, m-napista saa taustamusiikin halutessaan päälle.

    Tarkoituksena on ammuksilla tuhota pahat R- ja C-kirjaimet, jotka ottavat suorien osumien lisäksi vahinkoa muista esineistä. Peliobjektit myös tuhoutuvat, jos ne lentävät pelialueelta ulos. Kenttiä on yksi, ja tuloksena on joko voitto tai tappio.

    Pelin pyörimisestä huolehtivat skriptit, jotka mm. pyörittävät aurinkoa, hoitavat hiiren liikkeisiin liittyvät toimet, laskevat kappaleiden törmäyksistä tulevat vahingot ja pitävät huolen pelin päättymisestä. Skriptien toimintaa voi tutkia tuplaklikkaamalla haluamaansa skriptiä, jolloin se aukeaa ohjelman omassa tekstieditorissa. Lähdekoodit ovat sekaisin suomea ja englantia, mutta toivottavasti kaikki saavat asioista selvää.

    Yleisimpiä muuttujia saa muokattua suoraan editorista vaikka kesken testaamisen, joten asioita voi muuttaa jossakin määrin myös ilman ohjelmointikokemusta.
    [​IMG]

    Alla vielä lista muutamista asioista:
    - Fysiikkalaskennasta vastaa PhysX, ja kappaleiden massaa, kitkakertoimia jne. voi muokata peliobjektin Rigidbody-kohdasta
    - Pelimoottori ja fysiikkalaskenta on 3D:nä, mutta toiminta on rajoitettu X- ja Y-tasoille
    - Ammus_luoja pitää huolen ammuksien luomisesta ja niiden loppumisesta (Ammusten_aloituspiste kertoo mihin ammukset syntyvät)
    - Peli_valvoja pitää huolen pelin päättymisestä (ammukset loppuvat tai pahikset kuolevat)
    - Pistelaskuri pitää huolen pisteiden kirjaamisesta ja niiden näyttämisestä (Highscore-toimintoa projektissa ei ole)
    - Puu_palkki on kenttien puinen rakennusaine, jota voi tarvittaessa monistaa Edit -> Duplicate -valinnalla
    - Sama Edit -> Duplicate toimii myös Pahiksille (pienet ja suuret)
    - Tuhoaja_palkki tuhoaa siihen osuvat peliobjektit
    - Uusi kenttä kannattaa luode File -> Save Scene As... -valinnan kautta, jolloin nykyinen kenttä toimii pohjana, josta voi poistaa haluamansa osat ja muokata muita
    - Uuden kentän lisääminen päävalikkoon vaatii kentän lisäämistä File -> Build Settings... -valikkoon ja Paavalikko_skriptin muokkaamista
    - Pelin toimivuus on riippuvainen kuvasuhteesta (eli esim. 1024x768-resoluutiolla ritsaa ei näy, joten pelaaminenkaan ei onnistu)

    Kysymyksiä saa esittää, ja pyrin vastaamaan niihin kerran päivässä
     
    Last edited: Aug 5, 2012

Share This Page