Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012



Samankaltaiset tiedostot
Fysiikkamoottori. Katri Roos. Seminaariraportti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Luento 3: 3D katselu. Sisältö

OHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki

Esityson kaksiosainen. Luento, jossa esittelen käyttämiäni työkaluja ja työpajaosa, jossa pääsette kokeilemaan niitä. Mutta ennenkö mennään sinne,

Selainpelien pelimoottorit

Reaaliaikainen yli 2 pelaajan moninpeli mobiilille!

PELIALAN KEHITYS POHJOIS-SAVOSSA

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

Kanta ja Kannan-vaihto

Johdanto: Parametrigrafiikka Parametriyhtälöiden piirtämisen vaiheet Parametri- ja funktiografiikan eroja

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

C-ohjelmointikielen perusteet, osa 1

JOHDATUS TEKOÄLYYN TEEMU ROOS

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

JOHDATUS TEKOÄLYYN TEEMU ROOS

2 Pistejoukko koordinaatistossa

Yleistä vektoreista GeoGebralla

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 3 /

Pelisuunnittelua tulevaisuudessa. Karoliina Korppoo / Colossal Order

Lineaarialgebra ja matriisilaskenta I

Tieteellinen laskenta 2 Törmäykset

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

UNITYN 2D-FYSIIKKAMOOTTORI

MS-A0305 Differentiaali- ja integraalilaskenta 3 Luento 8: Divergenssi ja roottori. Gaussin divergenssilause.

Tenniksen pistelaskusäännöt, lukio/ammatilliset oppilaitokset

Avaruuden kolme sellaista pistettä, jotka eivät sijaitse samalla suoralla, määräävät

Lappeenrannan teknillinen yliopisto Tuotantotalouden tiedekunta Tietotekniikan koulutusohjelma. Kandidaatintyö. Joona Hasu PELIOHJELMOINNIN ALKEET

Tekijä Pitkä matematiikka Suoran pisteitä ovat esimerkiksi ( 5, 2), ( 2,1), (1, 0), (4, 1) ja ( 11, 4).

811120P Diskreetit rakenteet

T Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mediatekniikan laitos / Informaatioverkostot

Pelejä tällä ikäluokituksella: FIFA-pelisarja ja Super Mario -pelisarja

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Oppimistavoitematriisi

JOHDATUS TEKOÄLYYN TEEMU ROOS

7 tapaa mallintaa maasto korkeuskäyristä ja metodien yhdistäminen

Newtonin ominaisuudet

JOHDATUS TEKOÄLYYN TEEMU ROOS

Geneettiset algoritmit

Matriisilaskenta Laskuharjoitus 5 - Ratkaisut / vko 41

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikka / ohjelmistotekniikka. Sami Husso 2D-PELIOHJELMOINTI UNITYÄ KÄYTTÄEN

MATEMATIIKKA 5 VIIKKOTUNTIA. PÄIVÄMÄÄRÄ: 8. kesäkuuta 2009

Pelin tekoäly. Aleksi Vuorela IIO14S1. Tietorakenteet ja algoritmit harjoitustyö Joulukuu 2015

Pistepilvestä virtuaalimalliksi työpolku

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

ELM GROUP 04. Teemu Laakso Henrik Talarmo

OHJELMOINTIA MONIPUOLISESTI MATEMATIIKAN OPETUKSESSA LUMA-PÄIVÄT, TAMPERE

S09 04 Kohteiden tunnistaminen 3D datasta

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Koodaamme uutta todellisuutta FM Maarit Savolainen

Törmäyksen tunnistus. Törmäyksen tunnistus tietokonopeleissä. Törmäyksen tunnistus. Sijainti pelisilmukassa. Timo Suomela

Kodu Ohjeet. Jos päivityksiä ei löydy niin ohjelma alkaa latautumaan normaalisti.

Millaiset mahdollisuudet avautuvat KODUpeliohjelmoinnilla. Lehtori Jarkko Sievi Virtuaaliopetuksen päivät

Matematiikan tukikurssi

Matlabin perusteita Grafiikka

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

A-osio. Tehdään ilman laskinta ja taulukkokirjaa! Valitse tehtävistä A1-A3 kaksi ja vastaa niihin. Maksimissaan tunti aikaa suorittaa A-osiota.

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Kaikkien paikallisten ääriarvojen haku

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Säätötekniikan matematiikan verkkokurssi, Matlab tehtäviä ja vastauksia

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Matematiikan tukikurssi

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

P e d a c o d e ohjelmointikoulutus verkossa

PELIPROJEKTIN TOTEUTUS UNITYLLÄ

Mobiilipelin toteuttaminen Unity 2D:llä

Matematiikan tukikurssi

Samuli Jylhä MOBIILIPELIOHJELMOINTI JA KÄYTTÖLIITTYMÄN TOTEUTUS UNITYLLÄ

Määrittelydokumentti

{ 2v + 2h + m = 8 v + 3h + m = 7,5 2v + 3m = 7, mistä laskemmalla yhtälöt puolittain yhteen saadaan 5v + 5h + 5m = 22,5 v +

Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6

MAA15 Vektorilaskennan jatkokurssi, tehtävämoniste

17/20: Keittokirja IV

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Luento 8. June 3, 2014

MS-A0402 Diskreetin matematiikan perusteet

Lineaarialgebra ja matriisilaskenta I

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Johdantoa. Jokaisen matemaatikon olisi syytä osata edes alkeet jostakin perusohjelmistosta, Java MAPLE. Pascal MathCad

Vektorit, suorat ja tasot

Matematiikan tukikurssi

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

T Vuorovaikutteinen tietokonegrafiikka Tentti

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

f(x 1, x 2 ) = x x 1 k 1 k 2 k 1, k 2 x 2 1, 0 1 f(1, 1)h 1 = h = h 2 1, 1 12 f(1, 1)h 1 h 2

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio. Mat Systeemien Identifiointi. 4. harjoitus

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

Peliteoria Strategiapelit ja Nashin tasapaino. Sebastian Siikavirta

Matematiikan tukikurssi

Alkuun HTML5 peliohjelmoinnissa

0, niin vektorit eivät ole kohtisuorassa toisiaan vastaan.

Projektityö ja pelikehitys

Transkriptio:

Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli - 16.11.2012 Teemu Saarelainen, lehtori teemu.saarelainen@kyamk.fi GameLab gamelab.kyamk.fi & facebook.com/kyamk.gamelab

Sisältö Miksi pelimatematiikkaa? Esimerkkejä moderneista peleistä Perusongelmia Matemaattisia työkaluja Esimerkkejä ohjelmointityökaluista Mahdollisuuksia kehittämiseen AMK-opetuksessa

Miksi pelimatematiikkaa? Pelien laatuvaatimukset nousseet Laskentatehon jatkuva kasvu Fysiikkaperusteisten pelien suosio - AB video Pelit ovat miljardibisnes

Esimerkkejä moderneista peleistä TOP 10 Games Finland, week 42 (FIGMA) 1. NHL13 (trailer) 2. FIFA13 3. SKYLANDERS GIANTS 4. DISHONORED 5. ANGRY BIRDS TRILOGY 6. XCOM: ENEMY UNKNOWN 7. WRC: FIA WORLD RALLY CHAMPIONSHIP 8. RESIDENT EVIL 6 9. BORDERLANDS 2 10. CALL OF DUTY: MODERN WARFARE 3 TOP 10 Games U.S., September 12 (NPD) 1.MADDEN NFL 13 2.BORDERLANDS 2 3.FIFA SOCCER 13 4.NEW SUPER MARIO BROS. 2 5.GUILD WARS 2 6.NHL 13 7.WORLD OF WARCRAFT: MISTS OF PANDARIA 8.NCAA FOOTBAL 13 9.LEGO BATMAN 2: DC SUPER HEROES 10.BATTLEFIELD 3

EA

EA

RedLynx

Perusongelmia Pelit ovat reaaliaikaisia ja sisältävät paljon objekteja Frame-rate eli kuvien määrä sekunnissa yleensä 60+ Pelimaailmassa tapahtuvat muutokset pitää pystyä päivittämään kahden peräkkäisen framen välissä Aiheuttaa yleensä ongelmia, mm. epäjatkuvuuksia Laskennassa joudutaan yksinkertaistamaan asioita

Perusongelmia Törmäystarkastelu (collision detection) erilaisille muodoille Liikeradat ja rotaatiot Dynamiikka Erilaiset projektiot Hyvin paljon mielenkiintoisia matemaattisia ongelmia

Perusongelma: törmäystarkastelu Peliobjektit ovat usein monimutkaisia ja koostuvat todella monesta pienemmästä osasta (vertices, triangles) Todellisen fysiikkamallin tai törmäysmallin käyttäminen on epärealistista yksinkertaistetaan asioita Toivotaan, ettei pelaaja huomaa eroa ja pelimaailma käyttäytyy järkevästi Fysiikkamallin laskenta tehdään yleensä erillään ruudun päivityksestä, mutta silti muutokset ovat diskreettejä epäjatkuvuusongelmia

Perusongelma: törmäystarkastelu Esimerkki mesh colliderien käytöstä alkuperäisen meshin päällä. Lähde: Unity3D dokumentaatio, RigidBody.

Perusongelma: törmäystarkastelu Halutaan käyttää yksinkertaisia muotoja: Ympyrät, suorakaiteet, pallot, kuutiot, laatikot Toimivat hyvin esitarkasteluna ennen tarkempaa törmäystarkastelua Nopeita toteuttaa eivät vie paljon prosessoriaikaa

Perusongelma: törmäystarkastelu Sphere collisions d C1 r1 r 2 C 2 Törmäys tapahtuu, jos d < r 1 + r 2 Pistetulo on äärimmäisen kätevä, sillä (C 1 C 2 ) (C 1 C 2 ) r 1 + r 2 2

Perusongelma: törmäystarkastelu Bounding boxes Oletetaan 2 laatikkoa A ja B, joiden koordinaatit ovat (A x_min, A y_min, A z_min ), (A x_max, A y_max, A z_max ) ja (B x_min, B y_min, B z_min ), (B x_max, B y_max, B z_max )

Perusongelma: törmäystarkastelu Törmäyksen tarkastelu helppoa: Tarkistetaan jokaiselle akselille ja kummallekin laatikolle, onko toisen laatikon maksimi pienempi kuin toisen minimi. Jos pätee jollekin akselille, niin laatikot eivät leikkaa Nopea laskea, mutta ei välttämättä hyvä sovitus monimutkaisiin objekteihin tarvitaan useamman bounding boxin yhdistelmä

Perusongelma: törmäystarkastelu Periaatteessa minkä tahansa kahden monitahokkaan törmäystarkastelu on ratkaistavissa Lasketaan jokaiselle objektien väliselle pisteparille erotusvektori Jos erotusvektorijoukko sisältää origon, niin objektit törmäävät Matemaattisesti hieman raskaampi operaatio kuin edelliset

Perusongelma: koordinaattimuunnokset Peleissä lasketaan asioita monessa koordinaatistossa: maailman koordinaatit peliobjektien koordinaatit Tekoälyä ja pelilogiikkaa lasketaan usein objektin suhteessa toiseen objektiin Lisäksi on erilaisia niveliä (joints) ja räsynukkemalleja (ragdolls), joita tarvitsee päivittää Tarve siirtyä nopeasti maailman koordinaateista peliobjektien koordinaatteihin Tehdään affiinimuunnos eli yksinkertainen matriisioperaatio

Perusongelma: interpolointi Paljon käytetty peleissä (myös tweening, easing) Esim. erilaiset efektit ja siirtymät Helppo ja nopea laskea Esim. siirtymään pitäisi mennä aika t, tiedetään frame rate eli fps ja päivitetään paikka jokaisella framella (iteraatiolla) x=x+(target-x)/(t*fps) Voidaan varioida ja saada aikaan erilaisia efektejä: http://grapefrukt.com/f/games/juicy-breakout/

Matemaattisia työkaluja Trigonometriset funktiot Vektorit Matriisit Matriisioperaatiot - pistetulo!!! Interpolointi

Esimerkkejä ohjelmointityökaluista Unity3D pelimoottori + editori + Pallon liikuttelua, tehty (nopeasti) Unity3D:llä: http://www2.kyamk.fi/~atesa/ball_test/ Unityyn on saatavilla paljon erilaisia lisäosia, esim. Box2D, jota on käytetty myös Angry Birdsin fysiikkamoottorina

Esimerkkejä ohjelmointityökaluista Matlab (tai Scilab) Helppo tehdä matriisilaskentaa ja (yksinkertaista) grafiikkaa Voidaan tehdä pelejäkin (GUI-komponentit, yms.) Ei vaadi kovin paljon ohjelmointitaitoa Voidaan simuloida erittäin vaativiakin asioita

Esimerkkejä ohjelmointityökaluista Tavalliset ohjelmointikielet, esim. Java Kohtuullisen helppo tehdä pieniä pelejä Eclipse SDK tarjoaa hyvän editorin ja kehitysympäristön Javalle Tehdyt Java Applet-sovelmat voidaan laittaa myös verkkoon Myös valmista koodia pelien tekoon sekä jopa fysiikkamalleja löytyy Verlet-demo: http://verlet.googlecode.com/svn/verletdemo/demo/index.html

Mahdollisuuksia kehittämiseen AMKopetuksessa? Ainakin ohjelmointitekniikan opiskelussa voitaisiin yhdistää matematiikkaa ja peliohjelmointia Ammusten lentoradat, maan vetovoima, pallon liike, törmäykset, Oma pelimatematiikan kurssi KyAMK:ssa järjestetään peliohjelmoinnin sv:ssa: Perusasiat ja fysiikkamoottorin opiskelua

Mahdollisuuksia kehittämiseen AMKopetuksessa? Otetaan sopivat (peli)työkalut käyttöön matematiikan opiskelussa? Käytännön tekemistä Näkyviä tuloksia Lisää mielenkiintoa opiskeluun

Mahdollisuuksia kehittämiseen AMKopetuksessa? Peleissä on miltei rajattomat mahdollisuudet käyttää matematiikkaa ja fysiikkamallinnusta sekä tekoälyä (AI) Tällä hetkellä pystytään hyödyntämään jo varsin uskottavia fysiikkamoottoreita Tekoälyä ja algoritmeja vaativat mm. järkevästi toimivien itsenäisten agenttien tekeminen Nykyään peleihin voidaan tehdä useiden satojen agenttien joukkoja sekä pienempiä joukkoja, jotka pyrkivät toimimaan yhdessä Tuloksena on uskottavampia ja parempia pelejä!

Kiitos kysymyksiä? Teemu Saarelainen, DI / Lehtori KyAMK GameLab gamelab.kyamk.fi teemu.saarelainen@kyamk.fi Lähteet: http://www.essentialmath.com/ Unity3D Documentation Physics for Game Programmers, Squirrel Eiserloh, GDC 08 Math for Gameplay / AI, John O Brien, GDC 12 Solving Rigid Body Contacts, Richard Tonge, GDC 12

Rovio