+ All Categories
Home > Documents > Vývoj her v XNA - seminář 2

Vývoj her v XNA - seminář 2

Date post: 05-Dec-2014
Category:
Upload: tomas-slavicek
View: 1,024 times
Download: 3 times
Share this document with a friend
Description:
Prezentace z hands-on-labu vývoje her v XNA pro Windows Phone, prezentovaného v Brně 28.2.2012Zdrojové kódy + záznam z prezentace budou k dispozici brzy.Tomáš Slavíček
46
Vývoj her v XNA pro Windows Phone 7.5 2 . Tomáš Slavíček [email protected] Twitter: @tomasslavicek
Transcript
Page 1: Vývoj her v XNA - seminář 2

Vývoj her v XNApro Windows Phone 7.5 2.

Tomáš Slavíč[email protected] Twitter: @tomasslavicek

Page 2: Vývoj her v XNA - seminář 2

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

Windows Phone

oficiálně v ČR od letošního září

Page 4: Vývoj her v XNA - seminář 2

Windows Phone

klíčová slova: Mango, Tango, Nokia

Page 5: Vývoj her v XNA - seminář 2

Budoucnost

Windows 8 WP Apollo

Page 6: Vývoj her v XNA - seminář 2

Marketplace CZ

přes 180 českých aplikací, 36 her

Page 7: Vývoj her v XNA - seminář 2

Marketplace CZ

přes 180 českých aplikací, 36 her

Page 8: Vývoj her v XNA - seminář 2

Marketplace

celosvětově >65 tisíc aplikací

Page 9: Vývoj her v XNA - seminář 2

Marketplace

nejvíce se kupují hry

Page 10: Vývoj her v XNA - seminář 2

Zkušenosti

hra Galaxy Jet

Page 11: Vývoj her v XNA - seminář 2

Zkušenosti

hra Galaxy Jet …a vaše zkušenosti?

Page 12: Vývoj her v XNA - seminář 2

Podpora vývojářů

soutěž o Lumia 800 msdn.cz/nokia

hackathony

Page 13: Vývoj her v XNA - seminář 2

Webové zdroje

SmartMania.cz články rozcestník – můj blog

tomasslavicek.cz

Page 14: Vývoj her v XNA - seminář 2

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

Opakování XNA

herní smyčka

Page 16: Vývoj her v XNA - seminář 2

Co budeme dělat?

začátek nové hry

obrázky: http://bit.ly/xna_3

Page 17: Vývoj her v XNA - seminář 2

Bylo minule…

orientace displeje gesta na displeji akcelerometr

text a lokalizace hry portace na PC

Page 18: Vývoj her v XNA - seminář 2

Vykreslení obrázku

objekt Sprite Vector2 Position Vector2 Size Texture2D Texture

LoadContent() Draw()

Page 19: Vývoj her v XNA - seminář 2

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

Obrázek i s rotací

x

parametry SpriteBatch.Draw()

Page 21: Vývoj her v XNA - seminář 2

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

„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

„Tiled“ grafika

Tiled map editor mapeditor.com

Page 24: Vývoj her v XNA - seminář 2

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

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

Kolize

kruh vs. kruh ?

Page 27: Vývoj her v XNA - seminář 2

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

Kolize

kruh vs. obdélník ?

Page 29: Vývoj her v XNA - seminář 2

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

Kolize

orientované obdélníky ?

Page 31: Vývoj her v XNA - seminář 2

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

Separating axis theorem orientované obdélníky

nutné testovat oba vzájemně

Page 33: Vývoj her v XNA - seminář 2

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

Kolize

kruh vs. orientovaný obdélník ?

Page 35: Vývoj her v XNA - seminář 2

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

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

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

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

IsolatedStorageSettings použití jako Dictionary

v namespace System.Windows

Page 40: Vývoj her v XNA - seminář 2

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

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

Silverlight + XNA

možnost propojení -> i kombinace na 1 obrazovce

Silverlight = menu, XNA = herní část

Page 43: Vývoj her v XNA - seminář 2

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

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

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

Webové zdroje

SmartMania.cz články rozcestník – můj blog

tomasslavicek.cz

Tomáš Slavíč[email protected] Twitter: @tomasslavicek


Recommended