Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

XNA-peliohjelmointiympäristö Timo Maaranen Helsingin yliopisto Ohjelmistotuotanto ja tietokonepelit -seminaari Kevät 2008.

Samankaltaiset esitykset


Esitys aiheesta: "XNA-peliohjelmointiympäristö Timo Maaranen Helsingin yliopisto Ohjelmistotuotanto ja tietokonepelit -seminaari Kevät 2008."— Esityksen transkriptio:

1 XNA-peliohjelmointiympäristö Timo Maaranen Helsingin yliopisto Ohjelmistotuotanto ja tietokonepelit -seminaari Kevät 2008

2 Esityksen rakenne Johdanto Johdanto.NET-ohjelmistokehys.NET-ohjelmistokehys XNA-ohjelmistokehys XNA-ohjelmistokehys XNA Game Studio 2.0 -kehitysympäristö XNA Game Studio 2.0 -kehitysympäristö XNA Creators Club Online -yhteisö XNA Creators Club Online -yhteisö

3 XNA on... Johdanto Microsoftin kehittämä pelien kehitys- ja ajoympäristö. Microsoftin kehittämä pelien kehitys- ja ajoympäristö. ▬ Erityisesti Xbox Live! Arcade tyyppisille peleille. ▬ Windows ja Xbox 360 -alustat tuettuna tällä hetkellä. Suunnattu erityisesti opiskelijoille ja harrastajille. Suunnattu erityisesti opiskelijoille ja harrastajille. Ilmainen (osittain). Ilmainen (osittain). ▬ Työkalut ovat ilmaisia. ▬ Kehitys Windows alustalle on ilmaista. ▬ Xbox 360 -alustalle vaaditaan XNA Creators Club -jäsenyys. Maksaa n. 100€ vuodessa. ▬ Opiskelijoilla mahdollisuus saada jäsenyys vuodeksi ilmaiseksi DreamSpark- kampanjan kautta.

4 XNA tarjoaa... Johdanto Matalan kynnyksen aloitta pelien tekeminen. Matalan kynnyksen aloitta pelien tekeminen. ▬ Ilmaiset työkalut, luokkakirjastot, Creators Club Online -yhteisö. Mahdollisuuden jakaa pelejä muiden kesken. Mahdollisuuden jakaa pelejä muiden kesken. ▬ Windows-pelejä voi jakaa ja myydä vapaasti. ▬ Xbox 360 -pelejä saa jakaa vapaasti XNA Creators Club -jäsenten kesken. ▬ Mahdollisuus saada Xbox 360 -peli jakoon Xbox Live! -palveluun. ▬ Xbox 360 -pelejä ei vielä saa myydä, mutta tämä muuttunee lähitulevaisuudessa. Laajan yhteensopivuuden alustojen välillä. Laajan yhteensopivuuden alustojen välillä. ▬ Windows ↔ Xbox 360.

5 Esityksen rakenne Johdanto Johdanto.NET-ohjelmistokehys.NET-ohjelmistokehys XNA-ohjelmistokehys XNA-ohjelmistokehys XNA Game Studio 2.0 -kehitysympäristö XNA Game Studio 2.0 -kehitysympäristö XNA Creators Club Online -yhteisö XNA Creators Club Online -yhteisö

6 .NET-ohjelmistokehys.NET-ohjelmistokehys (.NET Framework) on tarkoitettu helpottamaan ohjelmien kehitystä monenlaisille alustoille..NET-ohjelmistokehys (.NET Framework) on tarkoitettu helpottamaan ohjelmien kehitystä monenlaisille alustoille. ▬ Windows, mobiili laitteet, yms. Tarjoaa laajan luokkakirjaston ja ajonaikaisen ympäristön. Tarjoaa laajan luokkakirjaston ja ajonaikaisen ympäristön. ▬ Ajoympäristönä Common Language Runtime (CLR). CLR kääntää esikäännettyä ohjelmakoodia (Microsoft Intermediate Language, MSIL) ajonaikana alustalle sopivaksi. CLR kääntää esikäännettyä ohjelmakoodia (Microsoft Intermediate Language, MSIL) ajonaikana alustalle sopivaksi. Erilaisia versioita eri alustoille. Erilaisia versioita eri alustoille. ▬ Xbox 360 alustalla supistettu.NET Compact Framework Yleisimmin ohjelmointiin käytetään lienee C#-kieltä (C-sharp). Yleisimmin ohjelmointiin käytetään lienee C#-kieltä (C-sharp).

7 .NET-ohjelmistokehys

8 Esityksen rakenne Johdanto Johdanto.NET-ohjelmistokehys.NET-ohjelmistokehys XNA-ohjelmistokehys XNA-ohjelmistokehys XNA Game Studio 2.0 -kehitysympäristö XNA Game Studio 2.0 -kehitysympäristö XNA Creators Club Online -yhteisö XNA Creators Club Online -yhteisö

9 XNA-ohjelmistokehys XNA-ohjelmistokehys (XNA Framework) perustuu.NET- ohjelmistokehykseen. XNA-ohjelmistokehys (XNA Framework) perustuu.NET- ohjelmistokehykseen. ▬ Laajentaa luokkakirjastoa ja palveluita. Sisältää kokoelman peleissä usein käytettyjä luokkia. Sisältää kokoelman peleissä usein käytettyjä luokkia. ▬ Vähentää uudelleenkirjoituttamisen tarvetta. Abstrahoi alustan laitteiston suurelta osin. Abstrahoi alustan laitteiston suurelta osin. ▬ Ohjelmakoodin alustariippumattomuus lisääntyy. ▬ Poikkeuksena ainakin varjostinohjelmat (shaders) ja pelaajan syötelaitteet. Yleistä

10 XNA-ohjelmistokehys Tärkeimpiä palveluita ovat... Tärkeimpiä palveluita ovat... ▬ Pelisilmukka. ▬ Pelikomponentit (Game Components). ▬ Pelipalvelut (Game Services). Luokkakirjastoissa luokkia mm.... Luokkakirjastoissa luokkia mm.... ▬ Matemaattisten operaatioiden suorittamiseen. ▬ Pelaajan vuorovaikutuksen hallintaa. ▬ Sisällön käsittelyyn. ▬ Sisällön piirtoon. Luokkakirjastot ja palvelut

11 XNA-ohjelmistokehys Microsoft.XNA.Framework Microsoft.XNA.Framework Microsoft.XNA.Framework.Audio Microsoft.XNA.Framework.Audio Microsoft.XNA.Framework.Content Microsoft.XNA.Framework.Content Microsoft.XNA.Framework.Design Microsoft.XNA.Framework.Design Microsoft.XNA.Framework.GameServices Microsoft.XNA.Framework.GameServices Microsoft.XNA.Framework.Graphics Microsoft.XNA.Framework.Graphics Microsoft.XNA.Framework.Graphics.PackedVector Microsoft.XNA.Framework.Graphics.PackedVector Microsoft.XNA.Framework.Input Microsoft.XNA.Framework.Input Microsoft.XNA.Framework.Net Microsoft.XNA.Framework.Net Microsoft.XNA.Framework.Storage Microsoft.XNA.Framework.Storage Luokkakirjaston nimiavaruudet

12 XNA-ohjelmistokehys XNA-ohjelmistokehys on sinänsä ajettava ohjelma. XNA-ohjelmistokehys on sinänsä ajettava ohjelma. ▬ Ei tosin kovin mielenkiintoinen peliohjelma sinänsä. ▬ Peli laajentaa rungon toiminnallisuutta. Pelin pääluokan tulee periä Microsoft.XNA.Framework.Game Pelin pääluokan tulee periä Microsoft.XNA.Framework.Game ▬ Pelisilmukka kutsuu tämän luokan Initialize-, Update- ja Draw-metodeja. ▬ Peli ylikirjoittaa nämä metodit ja suorittaa toiminnallisuuden niiden kautta. Update-metodi hoitaa pelin logiikan päivityksen. Update-metodi hoitaa pelin logiikan päivityksen. Draw-metodi hoitaa pelin sisällön piirtämisen. Draw-metodi hoitaa pelin sisällön piirtämisen. Initialize-metodia kutsutaan ennen ensimmäistä Update- ja Draw- kutsua. Initialize-metodia kutsutaan ennen ensimmäistä Update- ja Draw- kutsua. Arkkitehtuuri

13 XNA-ohjelmistokehys XNA-ohjelmistokehys hoitaa pelisilmukan suorittamisen. XNA-ohjelmistokehys hoitaa pelisilmukan suorittamisen. Pelisilmukka kutsuu Update- ja Draw-metodeja sarjassa. Pelisilmukka kutsuu Update- ja Draw-metodeja sarjassa. Kaksi vaihtoehtoa pelisilmukan kierron hallintaan. Kaksi vaihtoehtoa pelisilmukan kierron hallintaan. Kiinnitetty aika-askel (FixedTimeStep = TRUE): Kiinnitetty aika-askel (FixedTimeStep = TRUE): ▬ Kutsutaan Update tietyin väliajoin. Jos aikaa jää ennen seuraavaa Update- kutsua, kutsutaan Draw. ▬ Jos Update-kutsu on hidas kehys asettaa IsRunningSlowly = TRUE, ja kutsuu Update-metodia niin usein kuin kuluneessa ajassa on oletettavissa. Kiinnittämätön aika-askel (FixedTimeStep = FALSE)‏ Kiinnittämätön aika-askel (FixedTimeStep = FALSE)‏ ▬ Kutsutaan Update ja Draw sarjassa niin usein kuin mahdollista. ▬ TargetElapsedTime kertoo kuluneen ajan. Pelisilmukka

14 XNA-ohjelmistokehys Pääluokkaan rinnastettavia komponentteja. Pääluokkaan rinnastettavia komponentteja. Omat Initialize-, Update- ja Draw-metodit. Omat Initialize-, Update- ja Draw-metodit. ▬ Kutsutaan erikseen pelisilmukassa. Kätevä tapa hallita pelin osia komponentteina. Kätevä tapa hallita pelin osia komponentteina. ▬ Ominaisuus voidaan jakaa selkeään erillisen komponenttiin. ▬ Komponentteja voidaan ottaa käyttöön/poistaa käytöstä yksinkertaisesti. Kahta eri tyyppiä. Kahta eri tyyppiä. ▬ GameComponent-luokan perineet eivät piirrä mitään. ▬ DrawableGameComponent-luokan perineet voivat piirtää sisältöä. Komponentit rekisteröidään Game.Components.Add -metodilla. Komponentit rekisteröidään Game.Components.Add -metodilla. Pelikomponentit (game components)‏

15 XNA-ohjelmistokehys Palvelun avulla oliot voivat viitata toisiinsa ilman tiukkoja sidoksia. Palvelun avulla oliot voivat viitata toisiinsa ilman tiukkoja sidoksia. ▬ Suoria viittauksia ei tarvita. ▬ Riittää kun tiedetään mitä palvelua halutaan. Luokka toteuttaa jonkin rajapinnan. Luokka toteuttaa jonkin rajapinnan. ▬ Rajapinta määrittelee palvelun, jonka luokan instanssi tarjoaa. Game.Services-luokka toimii välittäjänä. Game.Services-luokka toimii välittäjänä. ▬ Välittäjälle rekisteröidään olio ja sen toteuttaman palvelu. ▬ Palvelua kaipaava pyytää välittäjältä palvelun tarjoajaa rajapinnan avulla. ▬ Välittäjä palauttaa viittauksen palvelun tarjoavaan olioon. Pelipalvelut (game services)‏

16 XNA-ohjelmistokehys Microsoft.XNA.Framework.Graphics -nimiavaruus sisältää sisällön piirtoon liittyvät luokat ja palvelut. Microsoft.XNA.Framework.Graphics -nimiavaruus sisältää sisällön piirtoon liittyvät luokat ja palvelut. Piirto perustuu perinteisiin rautalankamalleihin, pintakuvionteihin ja valaistusmalleihin. Piirto perustuu perinteisiin rautalankamalleihin, pintakuvionteihin ja valaistusmalleihin. ▬ Muistuttaa paljon Direct3D -rajapintaa, mutta yleisemmällä tasolla. ▬ Oliopohjainen. Lähes kaikki piirto suoritetaan efekteinä Effect-luokan avulla. Lähes kaikki piirto suoritetaan efekteinä Effect-luokan avulla. Sisällön piirto 1/3

17 XNA-ohjelmistokehys 2/3 Effect-luokkaan määritellään: Effect-luokkaan määritellään: ▬ Verteksi- ja pikselivarjostimia, ASM- ja/tai HLSL-kielillä. ▬ Tekniikoita (technique), kokoelma pyyhkäisyjä. ▬ Pyyhkäisyjä (pass), määrittelee miten piirretään kyseisellä pyyhkäisyllä. Mallin piirron ajaksi efekti kytketään päälle. Mallin piirron ajaksi efekti kytketään päälle. ▬ Valitaan haluttu tekniikka ja pyyhkäisy. Alustan ominaisuudet tulee ottaa huomioon varjostinohjelmia kirjoittaessa! Alustan ominaisuudet tulee ottaa huomioon varjostinohjelmia kirjoittaessa! ▬ Windows-alustassa laitteiston ominaisuudet voivat vaihdella suuresti. ▬ Xbox 360 -alusta tukee omaa laajennettua mallia 3.0. ▬ Minimi XNA:lle on malli 1.1.

18 XNA-ohjelmistokehys Sisällön piirto 3/3 SpriteBatch-luokka tarjoaa vaihtoehtoisen tavan sisällön piirtoon. SpriteBatch-luokka tarjoaa vaihtoehtoisen tavan sisällön piirtoon. ▬ Piirtää kaksiulotteisen kuvan määriteltyyn suorakaiteeseen. ▬ Piirto ei kolmiulotteinen, mutta kuvapuskurin syvyysarvot otetaan huomioon. ▬ Voidaan piirtää rautalankamallien joukkoon. Piirrettävää kuvaan voi muuntaa piirron yhteydessä. Piirrettävää kuvaan voi muuntaa piirron yhteydessä. ▬ Ainakin skaalaus ja kierto. Piirtotapa sopii erinomaisesti: Piirtotapa sopii erinomaisesti: ▬ Kaksiulotteisten pelien sisällön piirtoon. ▬ Erikoistehosteisiin, kuten partikkelitehosteisiin.

19 Esityksen rakenne Johdanto Johdanto.NET-ohjelmistokehys.NET-ohjelmistokehys XNA-ohjelmistokehys XNA-ohjelmistokehys XNA Game Studio 2.0 -kehitysympäristö XNA Game Studio 2.0 -kehitysympäristö XNA Creators Club Online -yhteisö XNA Creators Club Online -yhteisö

20 XNA Game Studio 2.0 Yleistä Kehitysympäristö XNA-peliohjelmien tuotantoon. Kehitysympäristö XNA-peliohjelmien tuotantoon. ▬ Sisältää oleelliset työkalut. ▬ Ilmainen. Perustuu Visual Studio -työkaluihin. Perustuu Visual Studio -työkaluihin. ▬ Asennetaan sopivaan Visual Studioon 2005 versioon, esim. ilmaiseen Visual C# 2005 Express Edition -ohjelmistokehitysympäristöön. Työkalut... Työkalut... ▬...helpottavat pelien kääntämistä, resurssien hallintaa, yms. ▬...ovat suurelta osin näkymättömissä kehitysympäristössä. ▬...helpottavat työnjakoa (artistit ↔ ohjelmoijat). ▬...mahdollistavat peliohjelmien ajamisen ja ajon seuraamisen Xbox 360 laitteella.

21 XNA Game Studio 2.0 XACT-työkalu Cross Platform Audio Creation Tool Cross Platform Audio Creation Tool Pääasiassa äänisuunnittelijan työkalu. Pääasiassa äänisuunnittelijan työkalu. XACT-työkalulla... XACT-työkalulla... ▬...koostetaan ääniefektejä ja niiden variaatioita äänitiedostoista. ▬...muodostetaan soittolistoja pelin musiikille. ▬...määritellään parametrejä äänien soittamiseen. Mahdollistaa äänien soittamisen kohdealustassa suunnitteluvaiheessa. Mahdollistaa äänien soittamisen kohdealustassa suunnitteluvaiheessa. ▬ Voidaan testata kuinka äänet oikeasti toistuvat alustassa. ▬ XACT Auditioning Utility. Yhteydessä rajapintaan, jolla äänet toistetaan peliohjelmasta. Yhteydessä rajapintaan, jolla äänet toistetaan peliohjelmasta.

22 XNA Game Studio 2.0 Pelin ajaminen Xbox 360 -laitteella Tarvitaan: Tarvitaan: ▬ Kiintolevyllä varustettu Xbox 360 -laite liitettynä työaseman kanssa lähiverkkoon (samassa aliverkossa). ▬ Vähintään Xbox Live Silver -jäsenyys. ▬ XNA Creators Club -jäsenyys. ▬ Verkkoyhteys Xbox Live palveluun. Xbox 360 -laitteessa asennetaan ja käynnistetään XNA Game Studio Connect -ohjelma. Xbox 360 -laitteessa asennetaan ja käynnistetään XNA Game Studio Connect -ohjelma. Työasemassa... Työasemassa... ▬...käynnistetään XNA Game Studio Device Center -työkalu. ▬...muodostetaan yhteys Xbox 360 -laitteeseen. ▬...lähetetään peli Xbox 360 -laitteelle.

23 XNA Game Studio 2.0 XNA Framework Remote Performance Monitor Mahdollistaa peliohjelman suorituksen tarkkailun ajonaikana Xbox 360 -laitteessa työasemasta käsin. Mahdollistaa peliohjelman suorituksen tarkkailun ajonaikana Xbox 360 -laitteessa työasemasta käsin. Kerää tietoa suoraan CLR-ajoympäristöstä: Kerää tietoa suoraan CLR-ajoympäristöstä: ▬ Muistin tilasta. ▬ Poikkeuksista. ▬ Roskien kerääjästä. ▬ JIT-kääntäjän toiminnasta. ▬ Säikeistä. ▬ yms. Kerätty tieto hyvin tärkeää esim. kun optimoidaan ohjelmakoodia tai etsitään virheitä. Kerätty tieto hyvin tärkeää esim. kun optimoidaan ohjelmakoodia tai etsitään virheitä.

24 XNA Game Studio 2.0 Sisältöputki (content pipeline)‏ Koostuu pelin sisällölle tietyssä järjestyksessä tehtävistä toiminnoista. Koostuu pelin sisällölle tietyssä järjestyksessä tehtävistä toiminnoista. ▬ Alkaa peliohjelman kääntämisestä. ▬ Loppuu sisällön lataamiseen ajon aikana. Koostuu erilaisista vaiheista. Koostuu erilaisista vaiheista. ▬ Jokaisessa vaiheessa sisällölle tehdään ennalta määritelty muunnos. ▬ Jokaista vaiheita hoitaa oma komponentti. Vaiheet ja komponentit ovat: Vaiheet ja komponentit ovat: ▬ Sisällön tuonti → Sisällöntuoja. ▬ Sisällön käsittely → Sisällönkäsittelijä. ▬ Sisällön kääntäminen → Sisällönkääntäjä. ▬ Sisällön lataaminen → Sisällönlataaja. 1/4

25 XNA Game Studio 2.0 Sisältöputki (content pipeline)‏ 2/4

26 XNA Game Studio 2.0 Sisältöputki (content pipeline)‏ Tukee vakiona joitain yleisiä tiedostomuotoja. Tukee vakiona joitain yleisiä tiedostomuotoja. ▬ Rautalankamallit: fbx ja x ▬ Efektit: fx ▬ Fontit: SpriteFont ▬ Kuvat: bmp, dds, dib, hdr, jpg, pfm, png, ppm, ja tga. Jokaisesta tiedostomuodosta vastaa jokin komponentti. Jokaisesta tiedostomuodosta vastaa jokin komponentti. Sisältöputki on laajennettavissa. Sisältöputki on laajennettavissa. ▬ Vaiheille voidaan kirjoittaa omat käsittelijäkomponentit. ▬ Jokaisessa vaiheessa sisällölle tehdään ennalta määritelty muunnos. ▬ Tukee siis potentiaalisesti mielivaltaisia tiedostomuotoja. 3/4

27 XNA Game Studio 2.0 Sisällöntuoja Sisällöntuojan tehtävät ovat: Sisällöntuojan tehtävät ovat: ▬ Ladata sisällön lähdetiedosto muistiin. ▬ Muodostaa olio, joka vastaa tiedoston sisältämää tietoa. Olio voidaan tallentaa XML-väliaikaistiedostoon. Olio voidaan tallentaa XML-väliaikaistiedostoon. ▬ Helpottaa virheiden etsintää. ▬ Nopeuttaa tulevia käännösprosesseja (jos lähdetiedosto ei ole muuttunut). Olio voi olla yleistä DOM-tyyppiä tai omaa tyyppiä. Olio voi olla yleistä DOM-tyyppiä tai omaa tyyppiä. ▬ Sisällön tuoja antaa tämän olion sisällönkäsittelijälle.

28 XNA Game Studio 2.0 Sisällönkäsittelijä Sisällönkäsittelijän tehtävät ovat: Sisällönkäsittelijän tehtävät ovat: ▬ Muodostaa sisällöntuojan muodostamasta oliosta olio, jota voidaan käyttää ajon aikana. ▬ Määritellä kuinka olio tallennetaan bittivirraksi. Jos käsiteltävä olio on DOM-tyyppiä, se voidaan käsitellä sisältöputken vakiokirjastoluokilla. Jos käsiteltävä olio on DOM-tyyppiä, se voidaan käsitellä sisältöputken vakiokirjastoluokilla.

29 XNA Game Studio 2.0 Sisällönkääntäjä Sisällönkääntäjän tehtävä on: Sisällönkääntäjän tehtävä on: ▬ Ottaa vastaan jokaisen sisällönkäsittelijän muodostamat bittivirrat ja pakata ne XNA-ohjelmistokehyksen omaan sisäiseen tiedostomuotoon. Prosessi on suljettu Prosessi on suljettu ▬ Sitä ei voi muokata laajennoksin.

30 XNA Game Studio 2.0 Sisällönlataaja Sisällönlataajan tehtävä on: Sisällönlataajan tehtävä on: ▬ Muodostaa bittivirasta sisällönkäsittelijän määrittelemiä olioita. Oliot ovat käyttövalmiita muodostuksen jälkeen. Oliot ovat käyttövalmiita muodostuksen jälkeen. ▬ Mitään muuta käsittelyä ei tulisi tarvita.

31 XNA Game Studio 2.0 XNA Creators Club Online -yhteisö XNA-pelinkehitysympäristöä käyttäville suunnattu yhteisö. XNA-pelinkehitysympäristöä käyttäville suunnattu yhteisö. ▬ Rakentuu WWW-sivujen ympärille: http://creators.xna.com/ Tarjoaa monenlaisia tukipalveluita. Tarjoaa monenlaisia tukipalveluita. ▬ Tietoa tapahtumista ja kilpailuista. ▬ Uutisia yhteisöstä ja työkaluista. ▬ Keskustelupalsta liittyen niin yleisiin kuin teknisiinkin asioihin. ▬ Monenlaisia artikkeleita ja dokumentteja työkaluista ja peliohjelmoinnista. Erinomainen aloituspaikka kaikille XNA-pelinkehitysympäristöstä kiinnostuneille! Erinomainen aloituspaikka kaikille XNA-pelinkehitysympäristöstä kiinnostuneille!

32 Kiitos! Helsingin yliopisto Ohjelmistotuotanto ja tietokonepelit -seminaari Kevät 2008


Lataa ppt "XNA-peliohjelmointiympäristö Timo Maaranen Helsingin yliopisto Ohjelmistotuotanto ja tietokonepelit -seminaari Kevät 2008."

Samankaltaiset esitykset


Iklan oleh Google