Luku 5: Rajapinnat. Grafiikkarajapinnat Fysiikkamoottorit Äänet Kontrollilaitteet

Samankaltaiset tiedostot
Kontrollilaitteet. Arsenaali

Peliohjelmointi: Kontrollilaitteet. Teppo Soininen

Mekaniikan jatkokurssi Fys102

Mekaniikan jatkokurssi Fys102

Jypelin käyttöohjeet» Millaisia olioita on olemassa?

Integrointialgoritmit molekyylidynamiikassa

Jakso 1: Pyörimisliikkeen kinematiikkaa, hitausmomentti

Liike ja voima. Kappaleiden välisiä vuorovaikutuksia ja niistä aiheutuvia liikeilmiöitä

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Fysiikan valintakoe , vastaukset tehtäviin 1-2

Jypelin käyttöohjeet» Miten lisään ohjaimet peliin

Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?

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

Luento 10: Työ, energia ja teho. Johdanto Työ ja kineettinen energia Teho

Tieteellinen laskenta 2 Törmäykset

Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli

Monissa fysiikan probleemissa vaikuttavien voimien yksityiskohtia ei tunneta

Luvun 10 laskuesimerkit

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu , tehtävien ratkaisut

DYNAMIIKKA II, LUENTO 5 (SYKSY 2015) Arttu Polojärvi

PAINOPISTE JA MASSAKESKIPISTE

Luento 4: Liikkeen kuvausta, differentiaaliyhtälöt

on radan suuntaiseen komponentti eli tangenttikomponentti ja on radan kaarevuuskeskipisteeseen osoittavaan komponentti. (ks. kuva 1).

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Harjoitellaan voimakuvion piirtämistä

Newtonin ominaisuudet

Nopeus, kiihtyvyys ja liikemäärä Vektorit

Luento 2: Liikkeen kuvausta

Mekaniikan jatkokurssi Fys102

Nyt kerrataan! Lukion FYS5-kurssi

Luento 13: Periodinen liike. Johdanto Harmoninen värähtely Esimerkkejä F t F r

Vanhoja koetehtäviä. Analyyttinen geometria 2016

Voima F tekee työtä W vaikuttaessaan kappaleeseen, joka siirtyy paikasta r 1 paikkaan r 2. Työ on skalaarisuure, EI vektori!

Esimerkkejä vaativuusluokista

Tarkastellaan tilannetta, jossa kappale B on levossa ennen törmäystä: v B1x = 0:

VUOROVAIKUTUKSESTA VOIMAAN JA EDELLEEN LIIKKEESEEN. Fysiikan ja kemian pedagogiikan perusteet (mat/fys/kem suunt.), luento 1 Kari Sormunen

Fysiikan ja kemian perusteet ja pedagogiikka Kari Sormunen Kevät 2012

Mekaniikan jatkokurssi Fys102

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Luvun 5 laskuesimerkit

Mekaniikan jatkokurssi Fys102

Harjoitustyö 3. Heiluri-vaunusysteemin parametrien estimointi

Fysiikka 1. Dynamiikka. Voima tunnus = Liike ja sen muutosten selittäminen Physics. [F] = 1N (newton)

Luento 5: Käyräviivainen liike

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

Luento 3: Liikkeen kuvausta, differentiaaliyhtälöt

Simulointi. Varianssinhallintaa Esimerkki


MS-C1340 Lineaarialgebra ja

Luvun 8 laskuesimerkit

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Lineaarialgebra MATH.1040 / voima

Mekaaninen energia. Energian säilymislaki Työ, teho, hyötysuhde Mekaaninen energia Sisäenergia Lämpö = siirtyvää energiaa. Suppea energian määritelmä:

KALTEVA TASO. 1. Työn tavoitteet. 2. Teoria

TEHTÄVIEN RATKAISUT. b) 105-kiloisella puolustajalla on yhtä suuri liikemäärä, jos nopeus on kgm 712 p m 105 kg

Luvun 5 laskuesimerkit

Kon Simuloinnin Rakentaminen Janne Ojala

Numeeriset menetelmät TIEA381. Luento 5. Kirsi Valjus. Jyväskylän yliopisto. Luento 5 () Numeeriset menetelmät / 28

Perusopintojen Laboratoriotöiden Työselostus 1

Vedetään kiekkoa erisuuruisilla voimilla! havaitaan kiekon saaman kiihtyvyyden olevan suoraan verrannollinen käytetyn voiman suuruuteen

Luento 5: Käyräviivainen liike

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

2 Pistejoukko koordinaatistossa

a) Piirrä hahmotelma varjostimelle muodostuvan diffraktiokuvion maksimeista 1, 2 ja 3.

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 3 Kevät E 1 + c 2 m 2 = E (1) p 1 = P (2) E 2 1

Fysiikan perusteet. Voimat ja kiihtyvyys. Antti Haarto

Kitka ja Newtonin lakien sovellukset

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35

FYSA210/2 PYÖRIVÄ KOORDINAATISTO

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 1: Parametrisoidut käyrät ja kaarenpituus

C-kasetin digitointi Audacity-ohjelmalla

L a = L l. rv a = Rv l v l = r R v a = v a 1, 5

Kun yhtälöä ei voi ratkaista tarkasti (esim yhtälölle x-sinx = 1 ei ole tarkkaa ratkaisua), voidaan sille etsiä likiarvo.

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

= 6, Nm 2 /kg kg 71kg (1, m) N. = 6, Nm 2 /kg 2 7, kg 71kg (3, m) N

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

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Luento 10: Työ, energia ja teho

Luento 3: Käyräviivainen liike

Matemaattisesta mallintamisesta

Tietotekniikan valintakoe

VUOROVAIKUTUKSESTA VOIMAAN JA EDELLEEN LIIKKEESEEN. Fysiikan ja kemian perusteet ja pedagogiikka, luento Kari Sormunen

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

1. Kuinka paljon Maan kiertoaika Auringon ympäri muuttuu vuodessa, jos massa kasvaa meteoroidien vaikutuksesta 10 5 kg vuorokaudessa.

Luento 7: Pyörimisliikkeen dynamiikkaa

Luku 8. Mekaanisen energian säilyminen. Konservatiiviset ja eikonservatiiviset. Potentiaalienergia Voima ja potentiaalienergia.

BM30A0240, Fysiikka L osa 4

FYSA2031 Potentiaalikuoppa

Konfiguraatiotyökalun päivitys

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Transkriptio:

Grafiikkarajapinnat Fysiikkamoottorit Äänet Kontrollilaitteet

Ohjelmointirajapinnat Peliohjelmoijalle on nykyään tarjolla lukuisia valmiita kirjastoja sekä kaupallisena että ilmaisena Nopeuttavat pelin tekemistä huomattavasti Grafiikka: OpenGL, DirectX, SDL, SFML,... Fysiikka: ODE, Havok, PhysX, Box2D... Audio, syöttölaitteet, verkko, animaatio, AI,... Proseduraaliset tekstuurit, maasto ja kasvit

OpenGL Open Graphics Library oli aluksi tähdätty ammattikäyttöön tehovaatimusten takia Alustariippumaton, standardi, dokumentoitu Käytetään etenkin vähemmän tehoa vaativissa ohjelmissa, mutta myös peleissä Ohjelmoijan kannalta rajapinta on joukko funktioita, joiden avulla voi määritellä objekteja ja hallita niiden piirtämistä ES-versio tärkeä mobiilipeleissä

DirectX Microsoft halusi tehdä OpenGL:ää vastaavan rajapinnan viihdekäyttöön Olennaista oli houkutella pelintekijät tekemään pelejä Windowsille DOSin sijaan Vähitellen muodostunut tärkeimmäksi grafiikkarajapinnaksi AAA-luokan peleille Hyvä tuki 3d-korttien valmistajilta, uusimmat ominaisuudet aina käytössä, nopeat ajurit Sisältää paitsi 3d-grafiikan, myös paljon muuta

SDL/SFML Omia pikkupelejä on helppo tehdä esim. SDLtai SFML-kirjastoilla Tukea 2d-grafiikalle, syötelaitteille, audiolle, tapahtumille ym. paljon peleissä käytetyille ominaisuuksille SDL vanha ja tuettu, esim. paljon bindingejä Ada, Java, Lua, Perl, PHP, Python (PyGame), Ruby,... Suosittu vaihtoehto SFML

Fysiikka Pelien yhteydessä fysiikka tarkoittaa yleensä jäykkien kappaleiden simulointia voimat liikuttavat kappaleita, törmäykset Usein käytetään valmiita fysiikkamoottoreita Esimerkkejä käyttökohteista peleissä: törmäily, jousisysteemit, tuhoutuva ympäristö, sädetarkastelut, interaktio esineiden kanssa, toimivat koneet, ansat, ajoneuvot, räsynuket, vaatteet, vesi, ammukset, kranaatit, kamera... Myös hiukkasefektit kuuluvat fysiikkaan

Fysiikkamoottorit Tyypillisesti peli tarvitsee siis kahdenlaista fysiikkaa: jäykkien (rigid) kappaleiden liikkeet ja hiukkaset (particles) Pelimaailman esineet ja olennot ovat yleensä jäykkiä kappaleita Hiukkasmalleja käytetään räjähdyksissä, nesteissä, sumuissa ja muissa efekteissä Jäykkien kappaleiden liikkeitä simuloiva moottori voidaan puolestaan jakaa kahteen osaan: törmäystarkistus ja dynamiikka

Fysiikkamoottorin toiminta Pelin kuluessa tyypillisesti moottorille kerrotaan, mitä voimia tai impulsseja esineisiin kohdistuu Moottoria pyydetään simuloimaan tilannetta jokin sopivan mittainen aika Δt eteenpäin Törmäystarkistus kertoo, mitkä kappaleet ovat törmänneet toisiinsa (jolloin voidaan esim. soittaa ääniä, aiheuttaa vahinkoa jne.) Kappaleiden uudet sijainnit ovat luettavissa ja ne voidaan siirtää pelimaailmaan piirtoa varten

Fysiikkamoottorin käyttö Osa peliobjekteista fysiikan ohjaamia, osa pelilogiikan ( kinemaattiset esineet) esim. pelihahmon liike perustuu yleensä pelaajan syötteeseen koko hahmon liikuttaminen sopivan kokoisilla impulsseilla tai säätämällä suoraan paikkaa/nopeutta yksittäiset osat animaatiomoottorin hallussa vasta hahmon kuollessa fysiikka ottaa vallan esineet hahmon käsissä animaation hallussa, ilmassa fysiikan, maassa liikkumattomia

Törmäystarkistus Törmäystarkistus on tarpeen useimmissa peleissä Tarvitaan vain kappaleiden muodot Törmäystarkistuksessa käytetyt mallit ovat suorituskyvyn vuoksi usein yksinkertaisempia kuin piirrossa käytettävät Yleisiä laatikot (pääakselin suuntaiset tai ei), ympyrät, kapselit, konveksit peitteet

Törmäysmallit Esimerkki pelihahmon törmäysmallista (McShaffry) Vaihtoehto esim. yksinkertainen kapseli Erikseen räsynukkemallit mm. kuoleville hahmoille Nykyään rajoitetusti varaa myös kolmioverkkoihin

Törmäystarkastuksen hitaus Törmäystarkistus on luonnostaan O(n²), missä n on kappaleiden lukumäärä jokainen kappale voi törmätä jokaiseen muuhun jos tiedetään, että jotkin kappaleet eivät voi törmätä toisiinsa, se kannattaa kertoa moottorille (esim. liikkumattomat esineet) Optimoimiseksi jaetaan tarkastus kahteen osaan: broad phase: etsitään mahdolliset törmäykset narrow phase: tarkempi leikkaustesti

Broad phase Broad phasessa käytetään usein hyvin yksinkertaisia rajausmuotoja, esim. AABB (axisaligned bounding box) tai pallot tuotetaan pari, jos rajausmuodot leikkavat väärät positiiviset ok, väärät negatiiviset eivät Aikakoherenssi: edellisen framen tulokset melkein samat, voidaan hyödyntää sweep-and-prune (insertion sort) Avaruuden tietorakenteet (tasajakoinen laatikointi, octree, BSP-puu, kd-puu)

Narrow phase Narrow phasessa tarkka lopputulos kallista, mutta ajetaan vain lähekkäin oleville kappaleille eli broad phasen tulospareille Tuottaa törmäystiedon lisäksi normaalin kosketuskohdassa ja läpäisyn syvyyden tarvitaan oikean törmäysvasteen tuottamiseksi Lukuisia algoritmeja muodoista riippuen konveksisuus helpottaa huomattavasti engine valitsee kullekin parille taulukosta sopivimman algoritmin

Törmäyksen tapahtuessa Moottori voi simuloida liikettä joko (a) 1. törmäykseen asti tai (b) koko annetun aikavälin (a) on vaikeampaa ja mahdollisesti hidasta eikä silti voida taata, etteivät kappaleet päädy joskus sisäkkäin... (b):ssa kpl:t voivat olla hieman sisäkkäin aikaaskelen lopussa, pahimmillaan aiheutuu tunneloituminen Törmäyksen seurauksen voi ratkaista säilymislaeista tai mallintaa rajoitteilla

Törmäysten seuraukset Todellinen törmäys: kokoonpuristuminen, laajeneminen, energian häviäminen simulaatiot yksinkertaisempia: ideaalinen impulssi, kitkattomuus, kimmoisuus (coefficient of restitution) Olennaista etsiä impulssi, joka saa kappaleet olemaan menemättä sisäkkäin Onnistuu perustapauksessa, mutta entä jos monta törmäystä samaan aikaan? ratkaistaan peräkkäin tai kerralla...

Törmäykset jousina Toinen vaihtoehto: sakkovoimat lisätään törmäyskohtaan väliaikainen jäykkä jousi, joka vetää kappaleet erilleen jousen jäykkyys säätelee törmäyksen kestoa jousi voi myös hukata halutun määrän energiaa Edut: helppo, toimii monille yhtäaikaisille törmäyksille Haitta: epärealistisia tuloksia kovilla vauhdeilla, numeerinen epästabiilius vs. hidas toiminta

Kitka Törmäysten lisäksi voi tapahtua myös kontakti, jossa kappale nojaa toiseen Jos tätä ei mallinneta, kappaleet liukuvat kitkattomasti toisiaan pitkin Todellisuus : Coulombin kitkavoima F T = μf N Fysiikkamoottoreiden ratkaisut vaihtelevia, hyvin hankala ongelma ratkaista

Pysähtyminen Tarkassa simulaatiossa energian katoaminen saisi kappaleet vähitellen pysähtymään, mutta käytännössä näin ei välttämättä tapahdu liukulukujen epätarkkuus, numeerinen integrointi ja muut käytetyt approksimaatiot Heuristiikkoja, joilla päätellään pitäisikö esineen olla pysähtynyt esim. liikemäärä tai -energia alle kynnyksen pysähtynyt kappale voidaan nukuttaa

Muuta käyttöä törmäyksille Törmäystarkastelut toteuttavaa osaa enginestä voi käyttää muuhunkin, esim: sädetestit (ray cast): ammutaan säde pisteestä a suuntaan x: näkeekö hahmo toisen (line of sight), mihin ammus osuu ja mitä esinettä kursori ruudulla osoittaa (picking) esinetestit (shape cast): kuinka pitkälle esine voi kulkea suuntaan x (esim. hahmon liike) tai voiko se kulkea reitin törmäämättä (AI:lle) etsi kaikki tyypin x esineet säteellä r pelaajasta

Dynamiikka Dynamiikkamoottori soveltaa yleensä Newtonin lakeja jäykkiin kappaleisiin (tai hiukkasiin) jäykkä kappale: muoto ei voi muuttua Kappaleista tarvitsee tietää vain massakeskipiste ja massaominaisuudet: massa ja hitaustensori (miten massa on sijoittunut keskipisteen ympärille) moottoreissa valmiit massafunktiot peruskpl:ille lineaarinen ja pyörivä liike käsitellään erikseen

Lineaarinen liike Kpl:n massan ajatellaan olevan yhdessä pisteessä: massakeskipiste Lineaarinen liike määräytyy diff.yhtälöistä: v(t) = dr(t)/dt ; a(t) = dv(t)/dt (r = sijainti) voidaan laskea komponenteittain (x, y, z) Voimien vaikutus tutusti: F(t) = ma(t); p(t) = mv(t) Voimat tunnetaan, ratkaise v ja r (p = liikemäärä) 2 diff.yhtälöä

Integrointimenetelmistä Liikettä kuvaavien diff.yhtälöiden analyyttinen ratkaisu ei onnistu (varsinkaan reaaliajassa) Huijataan approksimoimalla numeerisesti Tutkitaan aluksi vain lineaarista liikettä Euler-integrointi on yksinkertaisin menetelmä: a = F/m (F on kpl:seen vaikuttavien voimien summa) v 1 = v 0 + aδt; x 1 = x 0 + vδt Epätarkka, koska Δt ei ole infinitesimaalisen pieni; olettaa että v vakio aika-askeleen ajan

Euler-integrointi r(t) r 1, todellinen v 0 r 1, laskettu r 0 t 0 t 1 t

Integrointimenetelmistä Numeeristen integrointimenetelmien ominaisuuksia: konvergoituvuus: kun aika-askel pienenee, useimmat menetelmät konvergoivat kohti todellista ratkaisua kertaluokka (order): virheen suuruusluokka voidaan usein ilmaista O-notaatiolla aikaaskelen suhteen vakaus: jos menetelmä lisää järjestelmään energiaa, systeemi voi räjähtää ; jos vähentää, systeemi on vakaa

Kertaluokka Verrataan Euler-integroinnin tulosta tarkan ratkaisun Taylorin sarjaan: Euler: r(t 2 ) = r(t 1 ) + v(t 1 )Δt Tarkka: r(t 2 ) = r(t 1 ) + v(t 1 )Δt + 1/2 a(t 1 )Δt 2 + 1/6 b(t 1 )Δt 3 +... Virhe: E = 1/2 a(t 1 )Δt 2 + 1/6 b(t 1 )Δt 3 +... = O(Δt 2 ) Euler-integrointi on 1. kertaluokan menetelmä ( order one ) Euler-integrointia käytetään tästä huolimatta paljon, koska se on helppo toteuttaa eikä kuluta paljoa laskentaresursseja Vaihtoehtoja: Verlet, Runge-Kutta-perhe (esim. RK4 suosittu)

Verlet-integrointi Verlet-integroinnissa nopeuden sijaan tallennetaan kaksi edellistä sijaintia r(t+δt) = r(t) + v(t)δt + 1/2 a(t)δt² + 1/6 b(t)δt3 + O(Δt 4 ) r(t-δt) = r(t) - v(t)δt + 1/2 a(t)δt² - 1/6 b(t)δt 3 + O(Δt 4 ) r(t+δt) = 2r(t) - r(t-δt) + aδt² + O(Δt 4 ) Vakaa, 3. kl. Katso myös velocity verlet Tarvitsee (tässä muodossaan) kaksi alkuarvoa Ilmanvastus : x i+1 = (2-p)x i - (1-p)x i-1 + aδt²

Pyörimisliike 2d-pyörimisliike analoginen lineaarisen kanssa asento on vain yksi kulma kulmanopeus, kulmakiihtyvyys hitausmomentti on massan vastine mitä lähempänä massa on painopistettä, sitä helpompi pyörittää eli pienempi hitausmomentti vääntömomentti M = r x F = F r sin(θ) voiman vastine, voidaan summata samoin saadaan samat diff.yhtälöt kuin lineaariselle liikkeelle, voidaan ratkoa esim. Eulerilla

3d-pyörimisliike Hitausmomentti korvataan hitaustensorilla 3x3 matriisi, diagonaalilla hitausmomentit pääakselien suhteen ei-diagonaalit joskus peliengineissä vain 0:ia fysiikkamoottoreissa valmiit funktiot peruskappaleiille Asento voidaan kuvata monella tavalla 3x3 rotaatiomatriisi, kvaterniot, Euler-kulmat Pyörimisliikettä kuvaa pyörimisakseli + kulmanopeus Yksi vektori: akselin suuntainen, pituus on nopeus Ei säily vaikka kappaleeseen ei kohdistu momentteja Usein käytetään säilyvää suuretta, pyörimismäärää

Rajoitteet Rajoitteilla kpl:iden 6 vapausasteesta poistetaan jokin osa Rajoitteet ovat yleensä jousia: jos kappaleiden etäisyys poikkeaa halutusta, kohdistetaan niihin poikkeamaan verrannollinen voima Raskaita simuloida tarkasti Epätarkkuus taas johtaa epästabiiliuteen jäykkien jousien tapauksessa Liian löysät jouset taas huonoja esim. törmäysten yhteydessä

Rajoitteet Joissain tilanteissa äärettömän jäykät jouset ovat toimiva ratkaisu Hitman: vaatteet ja räsynuket Hiukkasia, jotka on yhdistetty toisiinsa äärettömän jäykillä jousilla Nykyään varsin monimutkaisia räsynukkeja

Ongelmia Simulaatio ei ole tarkkaa, vaan sisältää useita approksimaatioita, ja virheet kasautuvat Aiheutuu epästabiiliutta, joka näkyy esim. esineiden villinä lentelynä ympäri maailmaa Fysiikkaengineiden dokumentaatioissa on niksejä, joilla näitä ongelmia voidaan välttää erityisesti jäykät jouset tuottavat ongelmia lyhyempi aika-askel auttaa usein, mutta vie tietysti enemmän prosessoriaikaa Animaation ja fysiikan yhdistäminen on vaikeaa

Fysiikka Pelifysiikan käytössä huomioitavaa: ennakoimattomuus ja huono kontrolloitavuus emergenssin hyvät ja huonot puolet käyttöliittymä/interaktio objektien kanssa? pärjääkö AI dynaamisten ympäristöjen kanssa? visuaalisuus: väpätys, läpäisy piirto voi hidastua, kun ei voida olettaa esineiden paikoista mitään epädeterministisyys verkkopeleissä

Esimerkki ODE:lla Auto koostuu laatikkorungosta, neljästä pyörästä ja neljästä rajoitteesta Ei välttämättä hyvä ratkaisu ajopeliin parempi esim. raycast vehicle

Esimerkki: NVIDIA PhysX/APEX PhysX on NVIDIA:n GPU-kiihdytetty fysiikkaengine APEX sitä käyttävä systeemi, jolla artistit pääsevät suoraan tekemään fysiikkajuttuja Esimerkkejä YouTubesta...

Äänet Ääni on keskeinen (ja usein aliarvostettu) tunnelman luoja peleissä Ääniä tarvitaan monenlaisissa tilanteissa ääniefektit törmäyksistä, liukumisesta, jne käyttöliittymäkomponenttien palautteena taustahäly tunnelman luomiseen taustamusiikki hahmojen puhe

Samplet Nykyään pelien äänet koostuvat (yleensä) ennakolta äänitetyistä sampleista Samplessa analoginen äänisignaali on muutettu digitaaliseksi ottamalla siitä näytteitä (sampling) tasavälein Toinen vaihtoehto olisi tuottaa ääntä laskennallisesti (esim. MIDI)

Tiedostomuodot Samplet voidaan tallentaa eri tyyppisiin tiedostoihin Yleisimmät WAV, MP3 ja Ogg Vorbis WAV on yksinkertainen pakkaamaton muoto; vie paljon tilaa, mutta käyttö ei vaadi prosessorilta paljoakaan MP3 ja Ogg pakattuja (ja häviöllisiä), joilla säästää tilaa, mutta purkaminen vie aikaa Usein efektit WAVeja, musiikki MP3/Ogg

Äänirajapinnat Äänten soittamiseen liittyy monia hankaluuksia: miksaus, rinnakkaisuus (lukija kirjoittajaongelma) Onneksi äänikortit ja äänirajapinnat kätkevät kaiken tämän, joten äänten soittaminen on helppoa Kullekin kanavalle annetaan äänidata puskurissa Voidaan soittaa, pysäyttää, tarkkailla etenemistä, säätää voimakkuutta jne. Äänille annetaan usein myös 3d-sijainti stereo/surround, vaimeneminen, Doppler, ympäristön vaikutus (kaiku ym.)

Synkronisointi Pelikokemuksen kannalta on olennaista, että ääni ja kuva ovat synkronisoidut - pienetkin virheet häiritsevät kokemusta (varsinkin kasvot ja puhe) Tämä voidaan tehdä esim. niin, että tarkkaillaan äänen soimista ja aktivoidaan animaatio sen mukaan Helpompaa kuin toisinpäin, koska äänen soittonopeutta on hankalaa muuttaa, mutta animaatio voidaan tahdistaa sopivasti

Ohjaus PC:llä ohjaus yleensä hiirellä ja näppäimistöllä Konsoleilla kullakin oma ohjaimensa Wii remote, Kinect, Move Myös kaikki muu, jolla saadaan tietoa maailmasta: kamera, GPS, kiihtyvyysanturit,... Lisäksi suuri kirjo erilaisia lisävarusteita: tanssimatto, soittimet, onkivapa,... Syötteen lukemisen yksityiskohdat riippuvat laitteistoalustasta ja ohjelmointiympäristöstä

Ohjaus Yleensä syöte koostuu pohjimmiltaan seuraavista: Napit: ylhäällä tai alhaalla Analogiset ohjaimet: 1 tai useampia akseleita, joiden tila on liukuva arvo joltakin väliltä Monimutkaiset ohjaimet ovat enimmäkseen kokoelmia yo. tyyppejä liike/kiihtyvyysanturit vähän eri henkisiä Analogisten ohjainten tarkkuus vaihtelee: konsolin liipasin vs. hiiri

Näppäimistö Näppäimistö mahdollistaa valtavan määrän toimintoja yli sata nappulaa + yhdistelmät kaikki silti heti saatavilla ilman valikoissa kahlailua vaatii kuitenkin opettelua ja muistamista Koko näppäimistön tilan voi yleensä lukea yhdellä systeemikutsulla Vaihtoehtoisesti tapahtumat

Näppäimistö Hahmon liikuttaminen näppäimistöllä hyvin tyypillistä peleissä; eräs yleinen tapa: päivityksen yhteydessä katsotaan kullekin napille, onko se pohjassa voidaan pitää kirjaa tapahtumien perusteella nopeus kasvaa a*dt, a vakio (Euler-integrointi) rajoitetaan maksiminopeuteen hidastuvuus vähentämällä nopeudesta x % Parametreja kannattaa testailla huolella

Hiiri Hiiri palauttaa yleensä 2-ulotteiset koordinaatit ja näppäinten (yleensä 1-3 kpl) tilat mouse lookia varten useissa kirjastoissa erillinen tila, jossa osoitin ei liiku eikä näy, luetaan muutoksia Nappulat toimivat samoin kuin näppäimistöllä Käyttäjälle erittäin helppo oppia kriittiset toiminnot kannattaa tehdä mahdolliseksi myös hiirellä monista diskreeteistä vaihtoehdoista valitessa hitaampi kuin näppäimistö

Joystick Vanhat tikut digitaalisia: vain arvot 0 ja 1 kullekin ilmansuunnalle Nykyään arvot analogisia, eli kaksi arvoa (x- ja y-suunnassa) joltakin väliltä min...max Voi olla myös muita akseleita (esim. kierto) Napit kuten hiiressä ja näppäimistössä Hyvin helppo oppia

Konsolien ohjaimet Konsolien ohjaimet (padit) ovat yhdistelmiä napeista, joystickeista ja liipasimista Esim. 2 analogista peukalotikkua, 2 liipasinta, 1 digitaalinen suuntaohjain ja vajaat 10 nappia Teknisesti käsittely hyvin samanlaista kuin joystickin ja näppäimistön nappien Ei yhtä yksinkertaista kuin hiiri tai tavallinen joystick, mutta monipuolisempaa

Kosketusnäytöt Teknisesti käsittely muistuttaa hiirtä tosin kosketuksia voi mahdollisesti tulla useita ei ole erityisen vaikeaa Pelisuunnittelullisesti vaikuttaa tuntumaan erittäin paljon tyypillisesti erilaiset pelit menestyvät kosketusnäytöillä kuin perinteisillä ohjaimilla ei ole yhtä tarkka kuin hiiri, mutta luonteva, erilaiset eleet helposti opittavissa sormi ruudulla estää näkyvyyttä

Vastekäyrät Joystickin ja konsolien analogisten ohjainten vastekäyrä on vakiona yleensä lineaarinen siis jos liipasimen upottaa puoliväliin, antaa ohjain luettaessa arvon (max-min) / 2 Yleensä tämä ei tuota miellyttävää ohjaustuntumaa, vaan käyrää täytyy muuntaa jonkin funktion mukaisesti

Vastekäyrät Kuolleet alueet pienen liikkeen vaikutus halutaan nollata Normalisointi muuten viisto liike tapahtuu sqrt(2)-kertaisella nopeudella Kiihdytys keskialue hienovaraiseen säätöön ja reunaalueet isoille liikkeille

Liikkeentunnistus Wiin remote-ohjain: 3:n akselin kiihtyvyystunnistimet jotka mittaavat remoteen kohdistuvia voimia IR-ledeihin ja valosensoreihin perustuva tunnistus, joilla voi osoittaa ruudulle

Kinect Microsoftin lisälaite Xbox 360:een Mahdollistaa ohjaamisen ja keskustelun ilman erikseen pideltäviä laitteita Kamera + infrapunapohjainen syvyysmittaus + mikrofoneja Syvyys kolmiomitataan infrapunasäteilyllä Hahmontunnistussofta löytää kasvot ja nivelet käyttäen kameran ja syvyysmittarin tuloksia

PlayStation Move PS Move perustuu valopalloon ja kameraan 3d-sijainti kameralla, etäisyys valopallon koon perusteella Valon väriä voidaan säätää vapaasti Lisäksi kiihtyvyysanturit varalla Kuva: Christian Steen Jensen

Vinkkejä Älä vaadi turhaan jatkuvaa naputusta tai pohjassa pitoa (Ultima VIII ja kävely/juoksu) Kaikki eivät osu hiirellä pikselin tarkkuudella (ristikon muotoinen sprite) Kontekstiherkkyys virtaviivaistaa ohjausta, mutta se vaatii palautteen (esim. hiiren kursorin muuttuminen aktivoituvan toiminnon mukaan) Oikotiestä ei ole hyötyä, jos pelaajat eivät löydä sitä (maininta manuaalissa ei riitä)