Newtonin ominaisuudet



Samankaltaiset tiedostot
Luku 11: Verkkopelit. Resurssit Ennustaminen Huijaus. Lähde: Smed, Hakonen

Tehtävä 2: Tietoliikenneprotokolla

Luku 11: Verkkopelit. Resurssit Ennustaminen Huijaus. Lähde: Smed, Hakonen

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

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

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

AV-muotojen migraatiotyöpaja - ääni. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

Käyttäjätarinat perinteisessä hankkeessa. Sisältö ja käytännöt

Algoritmit 1. Luento 1 Ti Timo Männikkö

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Pohjan ja leikkauksen tekeminen Casa Parrista

Fysiikan perusteet. Voimat ja kiihtyvyys. Antti Haarto

Sarjallistaminen. Juha Järvensivu 2007

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

MP3 Manager Software for Sony Network Walkman

Tietorakenteet ja algoritmit - syksy

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

Ti LÄHIVERKOT -erikoistyökurssi. X Window System. Jukka Lankinen

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

OHJ-2710 Peliohjelmointi. Syksy 2012 Timo Kellomäki

Pelimatematiikka ja ohjelmointi ATMOS, Mikkeli

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

JOHDATUS TEKOÄLYYN TEEMU ROOS

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

4 / 2013 TI-NSPIRE CAS TEKNOLOGIA LUKIOSSA. T3-kouluttajat: Olli Karkkulainen ja Markku Parkkonen

Matematiikan tukikurssi

HiTechnic -kompassisensorin käyttäminen NXT-G -ympäristössä

Peli-idea puolustuspeli. Hyökkäysalueella puolustaminen (muoto)

Videon tallentaminen Virtual Mapista

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ Merkitään f(x) =x 3 x. Laske a) f( 2), b) f (3) ja c) YLIOPPILASTUTKINTO- LAUTAKUNTA

Monimutkaisempi stop and wait -protokolla

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

Tilanhallintatekniikat

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

ActionTrack-sovellus

Signaalien generointi

Luku 4: Peliarkkitehtuuri

Monissa fysiikan probleemissa vaikuttavien voimien yksityiskohtia ei tunneta

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Havainnoi mielikuviasi ja selitä, Panosta ajatteluun, selvitä liikkeen salat!

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

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

g-kentät ja voimat Haarto & Karhunen

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

FYSIIKKA. Mekaniikan perusteita pintakäsittelijöille. Copyright Isto Jokinen; Käyttöoikeus opetuksessa tekijän luvalla. - Laskutehtävien ratkaiseminen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Turingin koneen laajennuksia

Tiedostojen siirto ja FTP - 1

3. Käsiteanalyysi ja käsitekaavio

Videon tallentaminen Virtual Mapista

Linuxissa uusi elämä 1

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

JOHDATUS TEKOÄLYYN TEEMU ROOS

Tutkimustiedonhallinnan peruskurssi

MS-C2105 Optimoinnin perusteet Malliratkaisut 5

MAASTOKARTOITUSAINEISTON VISUALISOINTI. Kai Lappalainen, Ramboll Finland Tampere

Projektisuunnitelma ja johdanto AS Automaatio- ja systeemitekniikan projektityöt Paula Sirén

AMMATTIKORKEAKOULUJEN TEKNIIKAN VALINTAKOE

10.2. Säteenjäljitys ja radiositeettialgoritmi. Säteenjäljitys

HOJ J2EE & EJB & SOAP &...

JOHDATUS TEKOÄLYYN TEEMU ROOS

Luvun 5 laskuesimerkit

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

MIKROAALTOUUNI VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Tuomas Karri i78953 Jussi Luopajärvi i80712 Juhani Tammi o83312

Mekaniikan jatkokurssi Fys102

ELEKTRONISET TOIMINNOT

Salausmenetelmät (ei käsitellä tällä kurssilla)

HSMT J2EE & EJB & SOAP &...

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

PÄÄSET PERILLE NOPEAMMIN

Luvun 10 laskuesimerkit

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Luvun 5 laskuesimerkit

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Gimp perusteet. Riitta, Jouko ja Heikki

{ 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 +

Varavoiman asiantuntija. Marko Nurmi

OHJ-7400 Graafisen käyttöliittymän ohjelmointi 4/6 op

Numeeriset menetelmät

Kontrollilaitteet. Arsenaali

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

PAINOPISTE JA MASSAKESKIPISTE

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?

Ensimmäisen myyntiprojektin tarjouksen luonti

Luokka- ja oliokaaviot

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

Peliteoria luento 3. May 27, Peliteoria luento 3

Transkriptio:

Verkkopeli Newton

Newtonin ominaisuudet Reaaliaikaisuus Fysiikan simulointi Verkkopeli Tikku-ukko grafiikka Ikkunan koosta riippumaton (eri resoluutiot) Skrollaava, sisältää näkymän peliin Ei ääniä

Fysiikkamoottori Simulaattori joka simuloi pelin objektien elämää ja tekemisiä Toteuttaa tavallisesti jonkinlaista fysiikan mallinnusta, mutta usein realistisuus ei ole tavoite Etenee iteroiden Iteraatiotaajuus määrää simulaation tarkkuuden Suuremmalla taajuudella parempi simulaatio, mutta tarvitaan enemmän tehoa Fysiikkamoottori sisältää pelin tilan

Grafiikkamoottori Osaa visualisoida näkymän pelin tilaan FPS, eli frames per second on grafiikkamoottorin taajuus Taajuus ei ole vakio, vaan riippuu piirrettävän näkymän monimutkaisuudesta Mitä isompi taajuus, sitä sulavammin peli etenee

Äänet Nykyään ääniefektit näytteitä (sample), jotka laukeavat fysiikkamoottorin simulaation edetessä 3D-äänten aikakaudella näytteen sijainti ja tapahtumapaikan ympäristö vaikuttavat näytteeseen Äänimoottori miksaa kuuluvat äänet yhteen ja soittaa ne taustalla Osoittautui, että tämä pitää paikkansa (toistaiseksi?) vain PC-peleillä

Peliobjektit Pelin maailma koostuu joukosta keskenään vuorovaikuttavia peliobjekteja Aktiiviset peliobjektit ovat olioita jotka tekevät itse jotain (pelaaja itse, hirviöt, botit) Mitä enemmän aktiivisia objekteja, sitä isompi fysiikkamoottorin kuorma Passiiviset peliobjektit eivät itse tee mitään, ne vain vaikuttavat aktiivisten toimintaan tai reagoivat aktiivisen objektin toiminnan seurauksena (seinät, maasto, jne) Kaikki näkyvät peliobjektit generoivat kuormaa grafiikkamoottorille

Peliobjektien luokkahierarkia Peliobjektin tyyppi kuvautuu luonnollisesti suoraan olioluokaksi Eri peliobjekteilla on tavallisesti paljon yhteisiä ominaisuuksia. Peliobjektien luokista muodostuu luonnostaan luokkahierarkia Luokkahierarkian ylimmällä tasolla abstrakteja yleisiä ominaisuuksia Alimmalla tasolla objektin ikiomat ominaisuudet

Pelin tila Kun fysiikkamoottorin globaali tilatieto ja jokaisen peliobjektin tila lasketaan yhteen on tuloksena käsite pelin tila annetulla iteraatiolla Normaalisti vaaditaan että pelin tila voidaan tallettaa tiedostoon (savegame) tai siirtää verkon yli (uusi pelaaja liittyy peliin) Tällaista pelin tilan tallennusta kutsuttaan sarjallistamiseksi (engl. Serializing). Sarjallistaminen täytyy ottaa huomioon jo luokkahierarkiaa toteutettaessa; jokaisen peliobjektiluokan pitää osata sarjallistaa oma tilansa jonoksi bittejä ja myös palauttaa talletettu objekti Jos hyvin käy, niin käytetty ympäristö tukee sarjallistamista (esim. Javan Serializable interface)

Lukiofysiikkaa.. Fysiikkasimulaattoriin vaadittavat käsitteet ovat lukiofysiikkaa.. Kappaleen ominaisuuksia ovat sijainti, nopeusvektori, orientaatio, koko ja muoto Jos todellakin halutaan oikea simulaattori, tarvitaan vielä massa, kitkakerroin, kulmanopeus, hitausmomentti ja ilmanvastus Kun nuo kappaleen ominaisuudet ovat tunnettuja, riittää lukiofysiikka fysiikkamoottorin iteraation toteuttamiseen (no, ainakin teoriassa)

Törmäystarkistukset Törmäystarkastuksen tekeminen mielivaltaisen muotoisille kappaleilla vaatisi oman esitelmänsä Kahden kappaleen välinen törmäystarkastus Helppo ratkaisu #1: Leikkaavat rajoittavat suorakaiteet Helppo ratkaisu #2: Leikkaavat rajoittavat ympyrät Oikeiden kappaleiden löytäminen Jaetaan taso pienempiin alueisiin ja tehdään törmäystarkastukset vain alueiden sisäpuolella Tai oikeaoppisesti toteutetaan jonkinlainen puurakenne

Mikroiteraatiot Iteratiivisessa fysiikkamoottorissa voi nopeasti liikkuva kappale tunneloitua Toisaalta grafiikkamoottori saattaisi ehtiä piirtää useampia freimejä kuin fysiikkamoottorin taajuus on; ei kannata piirtää täsmälleen samaa tilaa kahdesti Molemmat ongelmat ratkeavat, jos jaetaankin iteraatio pienempiin (mutta täyttä iteraatiota kevyempiin) mikroiteraatioihin, joiden taajuuden määrä nopeinten liikkuva objekti tai grafiikkamoottorin taajuus

Verkko Verkko tarjoaa koko joukon lisäongelmia Latenssi (tai pelislangilla lag) Reaaliaikaräiskinnässä isoimmalla latenssilla pelaava usein häviää Epäluotettavuus Peliprotokolla joutuu itse ratkomaan katoavien ja väärässä järjestyksessä tulevien pakettien ongelmat Katkot olisi hyvä jos peliä voisi jatkaa pidemmänkin verkkokatkon jälkeen. Tämä saattaa edellyttää jo pelin sääntöihin asti näkyvää suunnittelua Tietoturva! Julkisessa verkossa oleva pelipalvelin on altis hyökkäyksille, madoille ja hyväksikäytölle siinä missä mikä tahansa muu palvelinohjelmisto

Käytettävissä oleva kaista Nykyisissä verkkopeleissä voi jo pelkästään pelaajia olla tuhansia pelin omien peliobjektien lisäksi Koska verkossa käytettävissä oleva kaista on usein hyvinkin rajallinen (modemeilla n. 30kbit/s) joudutaan siirrettävän datan määrää optimoimaan (ja usein peräti nysväämään bittiä) Fysiikkamoottorin taajuus vaikuttaa suoraan tarvittavan kaistan määrän: mitä isompi taajuus, sitä enemmän tapahtumia sekunnissa

Vaihtoehtoja tilanvälitykseen Palvelin välittää joka iteraatiolla täydellisen tilatiedon Tarvitaan paljon kaistaa O(pelin tilatiedon koko * iteraatiotaajuus). Newtonilla n. 800kbit/s Erittäin helppo toteuttaa ja ratkaisee antaa suoraan ratkaisun hävinneiden pakettien ongelmaan Palvelin lähettää joka iteraatiolla muuttuneiden objektien tilan Muutoksia potentiaalisesti paljon. Newtonilla n. 80kbit/s

Lisää vaihtoehtoja Lähetetään tieto näkyvistä objekteista Edelleen näkyviä objekteja voi olla paljon Erityisesti 3D-tapauksessa objektin näkyvyyden selvittäminen voi vaatia paljon laskentatehoa Suojaisi huijaukselta Determinismi Koodataan fysiikkamoottori deterministisenä tilakoneena, jonka syötteenä ovat käyttäjien tekemät ohjausliikkeet. PRNG:n tila on osa pelin tilaa Sekä asiakas että palvelin pyörittävät täydellistä fysiikkamoottoria Verkon yli siirretään ainoastaan käyttäjien ohjausliikkeet. Peliobjektien määrällä ei vaikuta kaistavaatimukseen Newtonilla n. 1000bit/s

Protokolla deterministisellä fysiikkamoottorilla Kaksivaiheinen protokolla: synkronointivaihe ja päivitysvaihe Synkronointivaiheessa siirretään täydellinen tila Päivitysvaiheessa palvelin lähettää pelaajien ohjaustiedot, joilla asiakas voi suorittaa oman iteraation Jokaisessa paketissa iteraationumero (ja Newtonissa myös tilan tarkastussumma) Pakettien kadotessa synkronoidutaan uudelleen

Latenssin kompensointi Asiakas voi laskea kiertoaikaviiveen (ping) asiakkaan ja palvelimen välillä Asiakas laskee moottorin tilaa eteenpäin kiertoaikaviive/2 verran Pelaajan näkemä tila on (toivottavasti) lähempänä palvelimen todellisuutta kuin latenssin vanhentama tunnettu tila Samalla tekniikalla voi myös kompensoida kadonneita paketteja/katkoja. Jos päivityspakettia ei kuulu ajastimen laukeamiseen mennessä, siirretään moottorin tilaa eteenpäin joka tapauksessa