Peliohjelmointia Jypelillä Tero Jäntti Tomi Karppinen Vesa Lappalainen Jonne Itkonen Jyväskylän yliopisto/Tietotekniikan laitos Helsinki
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! 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
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 Ekan kurssin top-2-3… Tokan kurssin top-2-3…
Nettisivut trac.cc.jyu.fi/projects/npo09/
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 - 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!