Vývoj her v XNA - seminář 2
-
Upload
tomas-slavicek -
Category
Documents
-
view
1.026 -
download
3
description
Transcript of Vývoj her v XNA - seminář 2
![Page 2: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/2.jpg)
Agenda
aktuální situace WP v ČR XNA – zopakování obrázky: rotované, animované…
pohyb, kolize ve 2D zvuky a hudba načítání a ukládání dat
Silverlight + XNA
![Page 3: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/3.jpg)
Windows Phone
oficiálně v ČR od letošního září
![Page 4: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/4.jpg)
Windows Phone
klíčová slova: Mango, Tango, Nokia
![Page 5: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/5.jpg)
Budoucnost
Windows 8 WP Apollo
![Page 6: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/6.jpg)
Marketplace CZ
přes 180 českých aplikací, 36 her
![Page 7: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/7.jpg)
Marketplace CZ
přes 180 českých aplikací, 36 her
![Page 8: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/8.jpg)
Marketplace
celosvětově >65 tisíc aplikací
![Page 9: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/9.jpg)
Marketplace
nejvíce se kupují hry
![Page 10: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/10.jpg)
Zkušenosti
hra Galaxy Jet
![Page 11: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/11.jpg)
Zkušenosti
hra Galaxy Jet …a vaše zkušenosti?
![Page 12: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/12.jpg)
Podpora vývojářů
soutěž o Lumia 800 msdn.cz/nokia
hackathony
![Page 13: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/13.jpg)
Webové zdroje
SmartMania.cz články rozcestník – můj blog
tomasslavicek.cz
![Page 14: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/14.jpg)
Opakování XNA
kdo ještě nezná? vývoj pro PC, mobil, Xbox 360
herní smyčka, Content Pipeline,SpriteBatch…
![Page 15: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/15.jpg)
Opakování XNA
herní smyčka
![Page 16: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/16.jpg)
Co budeme dělat?
začátek nové hry
obrázky: http://bit.ly/xna_3
![Page 17: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/17.jpg)
Bylo minule…
orientace displeje gesta na displeji akcelerometr
text a lokalizace hry portace na PC
![Page 18: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/18.jpg)
Vykreslení obrázku
objekt Sprite Vector2 Position Vector2 Size Texture2D Texture
LoadContent() Draw()
![Page 19: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/19.jpg)
Obrázek i s rotací
objekt Sprite Vector2
Position Vector2 Size Texture2D
Texture
LoadContent() Draw()
RotatedSprite Vector2 Position Vector2
AnchorPoint float Rotation float Scale Texture2D Texture
LoadContent() Draw()x
![Page 20: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/20.jpg)
Obrázek i s rotací
x
parametry SpriteBatch.Draw()
![Page 21: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/21.jpg)
Animovaný obrázek
několik měnících se obrázků
objekt AnimatedSprite poděděný od Sprite
navíc: pole Textures
upravené LoadContent() Draw()
![Page 22: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/22.jpg)
„Tiled“ grafika
jeden obrázek hra se skládá z jeho výřezů
optimalizace výkonu
![Page 23: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/23.jpg)
„Tiled“ grafika
Tiled map editor mapeditor.com
![Page 24: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/24.jpg)
Pohyb míčku
úhel a rychlost -> vektor přírustku
odrážení od stěn
ElapsedGameTime.TotalMilliseconds
![Page 25: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/25.jpg)
Kolize
bod vs. obdélník rect1.Contains( point1 )
obdélník vs. obdélník rect1.Intersects( rect2 )
![Page 26: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/26.jpg)
Kolize
kruh vs. kruh ?
![Page 27: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/27.jpg)
Kolize
kruh vs. kruh
vzdálenost středů <součet poloměrů
Vector2.Distance( center1, center2 ) < r1 + r2
![Page 28: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/28.jpg)
Kolize
kruh vs. obdélník ?
![Page 29: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/29.jpg)
Kolize
kruh vs. obdélník
najdu nejbližší bodod středu k obdélníku
nesmí být menší, než poloměr
Vector2.Clamp( v, min, max )
![Page 30: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/30.jpg)
Kolize
orientované obdélníky ?
![Page 31: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/31.jpg)
Kolize
orientované obdélníky Separating Axis Theorem
za některou stranou1. obdélníku se musínacházet všechny body 2.
![Page 32: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/32.jpg)
Separating axis theorem orientované obdélníky
nutné testovat oba vzájemně
![Page 33: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/33.jpg)
Pozice bodu vůči přímce skalární součin
Vector2.Dot( … )
pro 2 normalizovanévektory… v1.Normalize()
>0 …úhel >90°<0 … <90°=1 … rovnoběžné
pozor na přehozenou osu Y
![Page 34: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/34.jpg)
Kolize
kruh vs. orientovaný obdélník ?
![Page 35: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/35.jpg)
Kolize
kruh vs. orientovaný obdélník pootočit souřadnice,
aby byl obdélníkosově srovnaný
angle = Math.Atan2( point1.Y - point2.Y, point2.X - point1.X )
Vector2.Transform( point, Matrix.CreateRotationZ( angle ))
![Page 36: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/36.jpg)
Ukázka v praxi
kruh vs. orientovaný obdélník obdélník máme už reprezentovaný
správně = osově srovnaný
posuneme/otočímek němu střed kruhu
![Page 37: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/37.jpg)
Zvuky a hudba
SoundEffect a SoundEffectInstance
MediaPlayer hudba na pozadí nutné kontrolovat, zda už nehraje jiná!
if (MediaPlayer.GameHasControl)
![Page 38: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/38.jpg)
Isolated Storage
2 přístupy: IsolatedStorageSettings – kolekce
hodnot IsolatedStorageFile – soubory
data přežijí i vypnutí aplikace
![Page 39: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/39.jpg)
IsolatedStorageSettings použití jako Dictionary
v namespace System.Windows
![Page 40: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/40.jpg)
Mogade.com
sdílení skóre, achievementy,online statistiky
jednoduché API, přímo pro WP
návod pro XNA mají na fóru
pozor na speciálníznaky ve jméně hráče
![Page 41: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/41.jpg)
Načítání levelu podle XML data v XML tagách
<SpriteInfo X="20" Y="50" AssetName="obrazek" />
streamové čtení XmlReader reader =
XmlReader.Create(path)
while (reader.Read())
if (reader.NodeType == XmlNodeType.Element&& reader.Name == "SpriteInfo")
![Page 42: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/42.jpg)
Silverlight + XNA
možnost propojení -> i kombinace na 1 obrazovce
Silverlight = menu, XNA = herní část
![Page 43: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/43.jpg)
Silverlight + XNA
vlastnosti: navigační model ze Silverlightu nejsou GameComponent, DrawableG.C.
SharedGraphicsDeviceManager
jiné předpisy metod Update(), Draw()…
nepoužívat Mouse API, ale TouchCollection
![Page 44: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/44.jpg)
Navigační model
navigace přes QueryString objekt NavigationService
nutné občas řešit „back stack“
![Page 45: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/45.jpg)
Ukázka v praxi
hybridní projekt obrazovka menu + hra implementace „LoadContent“ předání parametru
další obrazovka – výhra oprava „back stacku“
implementace pauzy ve hře + ukončení hry z XNA
![Page 46: Vývoj her v XNA - seminář 2](https://reader033.fdocuments.net/reader033/viewer/2022061205/5480a9de5906b50e6d8b4580/html5/thumbnails/46.jpg)
Webové zdroje
SmartMania.cz články rozcestník – můj blog
tomasslavicek.cz
Tomáš Slavíč[email protected] Twitter: @tomasslavicek