180 likes | 280 Views
Peliohjelmointia Jypelillä. Tero Jäntti Tomi Karppinen Vesa Lappalainen Jonne Itkonen Jyväskylän yliopisto/Tietotekniikan laitos. Helsinki 27.10.2009. Taustaa. Kesällä 2009 tietotekniikan laitos järjesti kaksi peliohjelmointikurssia yläasteikäisille
E N D
Peliohjelmointia Jypelillä Tero Jäntti Tomi Karppinen Vesa Lappalainen Jonne Itkonen Jyväskylän yliopisto/Tietotekniikan laitos Helsinki 27.10.2009
Taustaa • Kesällä 2009 tietotekniikan laitos järjesti kaksi peliohjelmointikurssia yläasteikäisille • Kursseja varten kehitettiin kirjasto 2D-peleille nimeltä Jypeli • Hauskaa oli
Motivaatio kurssin pitämiseen • Luonnontieteet eivät suosiossa koulussa • Mikä kiinnostaa nuoria? PELAAMINEN! 1. Motivointi fysiikan käsitteisiin: • syy-seuraussuhteet ja kappaleiden väliset riippuvuudet • fysiikan käsitteitä, kuten Maan vetovoima, kitka sekä voimista aiheutuvat liike- ja tasapainoilmiöt, erilaiset liikkeet ja voimien vaikutukset liikkeeseen • kappaleen massa ja sen vaikutukset • tasainen ja tasaisesti kiihtyvä liike • suureita, kuten aika, matka, nopeus, kiihtyvyys ja voima
2. Motivointi matematiikan käsitteisiin: • funktion käsite • lukuparin esittäminen koordinaatistossa • yksinkertaisten funktioiden tulkitseminen ja niiden kuvaajien piirtäminen koordinaatistoon • geometriasta suorat, suurennokset, pienennökset ja mittakaava sekä erilaiset muodot, esim. kolmiot, nelikulmiot, monikulmiot ja ympyrä • yhtälöt ja niiden ratkaiseminen • todennäköisyys ja satunnaisuus • loogisia elementtejä ja totuusarvoja • tapausten yhtäläisyyksiä ja säännönmukaisuuksia • ongelmanratkaisua • vektorit ja niiden esittäminen lukuparina tai napakoordinaatistossa • asteet ja radiaanit
Kurssin ohjelma • Alkuinfo
Toteutuksesta • Toteutettu C#-kielellä käyttäen XNA-kirjastoa • Toimii vain Windowsilla • Pelit pyörii myös XBox 360:llä
Esimerkkejä • Malli– ja esimerkkiohjelmia: • Tankkipeli 3, Avaruuslentely, Biljardi, Tasohyppelypeli • Ekan kurssin top-3: • Hyppija.exe, Last Tanks.exe, Rampege.exe • Tokan kurssin top-3: • Palikkatesti.exe, Square Defence beta.exe, SuuriKynttila.exe
Nettisivut • https://trac.cc.jyu.fi/projects/npo09 • https://trac.cc.jyu.fi/projects/npo09_pelit
Yleisiä periaatteita • Jypeli on sovelluskehys (framework) • ”Dont call us, we call you” • Kirjasto ajaa pelisilmukkaa, hoitaa piirtämisen, yms… • Ohjelmoija määrittelee mitä tapahtuu kun peli käynnistyy, kappaleet törmää, …
Fysiikka • Jypeli sisältää fysiikkamoottorin (Physics2D.NET) • Olioilla massa, nopeus, … • Törmäyksille voi asettaa tapahtumia (mitä tapahtuu kun ammus osuu pelaajaan…)
Valmiita luokkia (1/3) • RealTimeGame – pyörittää peliä • PhysicsGame – fysiikka mukana • GameObject – olio pelissä • PhysicsObject – tottelee fysiikan lakeja
Valmiita luokkia (2/3) • Level – sisältää oliot, taustan, ym. • Meter<T> - voi laskea vaikka autoja • ValueDisplay – näyttää laskurin arvon • Weapon – kantaluokka aseille • Tank – panssarivaunu • HighScoreList
Valmiita luokkia (3/3) • ScreenObject – näyttökoordinaatteja käyttäviä olioita (ikkunat, mittarit ym.) • RTGWindow – kantaluokka käyttöliittymän ikkunoille, ScreenObjectin jälkeläinen • AlertWindow – yksinkertainen viesti-ikkuna • ListSelectionWindow – listavalintaikkuna • yms.
Komponentti-esimerkkejä • Valikot • Lentokone • Laskuvarjo • Strategiapelipohja/hahmo (hiiriohjattava) • Minigolf-radan osat (kalteva pinta)
Esimerkkipeli • Aletaan koodaamaan… • Saa ehdottaa ominaisuuksia!