SlideShare une entreprise Scribd logo
1  sur  46
Vývoj her v XNA
pro Windows Phone 7.5




Tomáš Slavíček
mail@tomasslavicek.cz   Twitter: @tomasslavicek
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
Windows Phone
 oficiálně v ČR od letošního září
Windows Phone
 klíčová slova: Mango, Tango, Nokia
Budoucnost
 Windows 8
 WP Apollo
Marketplace CZ
 přes 180 českých aplikací, 36 her
Marketplace CZ
 přes 180 českých aplikací, 36 her
Marketplace
 celosvětově >65 tisíc aplikací
Marketplace
 nejvíce se kupují hry
Zkušenosti
 hra Galaxy Jet
Zkušenosti
 hra Galaxy Jet   …a vaše
  zkušenosti?
Podpora vývojářů
 soutěž o Lumia 800 msdn.cz/nokia
 hackathony
Webové zdroje
 SmartMania.cz články
 rozcestník – můj blog
  tomasslavicek.cz
Opakování XNA
 kdo ještě nezná? 
 vývoj pro PC, mobil, Xbox 360
 herní smyčka, Content Pipeline,
  SpriteBatch…
Opakování XNA
 herní smyčka
Co budeme dělat?
 začátek nové hry

 obrázky:
   http://bit.ly/xna_3
Bylo minule…
 orientace displeje
 gesta na displeji
 akcelerometr
 text a lokalizace hry
 portace na PC
Vykreslení obrázku
 objekt Sprite
     Vector2 Position
     Vector2 Size
     Texture2D Texture
     LoadContent()
     Draw()
Obrázek i s rotací
 objekt Sprite           RotatedSprite
     Vector2 Position        Vector2 Position
     Vector2 Size            Vector2 AnchorPoint
     Texture2D               float Rotation
      Texture                 float Scale
                              Texture2D Texture
     LoadContent()
     Draw()                  LoadContent()
                              Draw()
      x
Obrázek i s rotací
 parametry SpriteBatch.Draw()
                            x
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()
„Tiled“ grafika
 jeden obrázek
 hra se skládá z jeho výřezů
     optimalizace výkonu
„Tiled“ grafika
 Tiled map editor   mapeditor.com
Pohyb míčku
 úhel a rychlost -> vektor přírustku
 odrážení od stěn

 ElapsedGameTime.TotalMilliseconds
Kolize
 bod vs. obdélník
     rect1.Contains( point1 )




 obdélník vs. obdélník
     rect1.Intersects( rect2 )
Kolize
 kruh vs. kruh ?
Kolize
 kruh vs. kruh
     vzdálenost středů <
      součet poloměrů
     Vector2.Distance(
        center1, center2 )
                  < r1 + r2
Kolize
 kruh vs. obdélník ?
Kolize
 kruh vs. obdélník
     najdu nejbližší bod
      od středu k obdélníku
     nesmí být menší,
      než poloměr


     Vector2.Clamp( v, min, max )
Kolize
 orientované obdélníky ?
Kolize
 orientované obdélníky
     Separating Axis Theorem


     za některou stranou
      1. obdélníku se musí
      nacházet všechny body 2.
Separating axis theorem
 orientované obdélníky
     nutné testovat oba vzájemně
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
Kolize
 kruh vs. orientovaný obdélník ?
Kolize
 kruh vs. orientovaný obdélník
     pootočit souřadnice,
      aby byl obdélník
      osově srovnaný

     angle = Math.Atan2(
        point1.Y - point2.Y, point2.X - point1.X )

     Vector2.Transform( point,
        Matrix.CreateRotationZ( angle ))
Ukázka v praxi
 kruh vs. orientovaný obdélník
     obdélník máme už reprezentovaný
      správně = osově srovnaný
     posuneme/otočíme
      k němu střed kruhu
Zvuky a hudba
 SoundEffect a SoundEffectInstance
 MediaPlayer
     hudba na pozadí
     nutné kontrolovat, zda už nehraje jiná!
     if (MediaPlayer.GameHasControl)
Isolated Storage
 2 přístupy:
     IsolatedStorageSettings – kolekce hodnot
     IsolatedStorageFile – soubory

 data přežijí i vypnutí aplikace
IsolatedStorageSettings
 použití jako Dictionary
     v namespace System.Windows
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
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")
Silverlight + XNA
 možnost propojení
     -> i kombinace na 1 obrazovce

 Silverlight = menu, XNA = herní část
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
Navigační model
 navigace přes QueryString
     objekt NavigationService
     nutné občas řešit „back stack“
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
Webové zdroje
 SmartMania.cz články
 rozcestník – můj blog
  tomasslavicek.cz



Tomáš Slavíček
mail@tomasslavicek.cz   Twitter: @tomasslavicek

Contenu connexe

Plus de Tomáš Slavíček

Jak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaciJak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaciTomáš Slavíček
 
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš SlavíčekUX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš SlavíčekTomáš Slavíček
 
UX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš SlavíčekUX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš SlavíčekTomáš Slavíček
 
GDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a trikyGDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a trikyTomáš Slavíček
 
Fotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows PhoneFotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows PhoneTomáš Slavíček
 
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a AndroidMS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a AndroidTomáš Slavíček
 
[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013Tomáš Slavíček
 
Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)Tomáš Slavíček
 
Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)
Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)
Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)Tomáš Slavíček
 
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1Tomáš Slavíček
 
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5Tomáš Slavíček
 
Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Tomáš Slavíček
 

Plus de Tomáš Slavíček (13)

Jak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaciJak prodávat a propagovat mobilní aplikaci
Jak prodávat a propagovat mobilní aplikaci
 
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš SlavíčekUX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
UX - MS Fest 2014 - Navrhujeme aplikace pro lidi, ne pro sebe - Tomáš Slavíček
 
UX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš SlavíčekUX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
UX Monday: Easy Phone - telefon pro seniory, Tomáš Slavíček
 
Easy phone
Easy phoneEasy phone
Easy phone
 
GDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a trikyGDS 2013: MonoGame pro Android a iOS, tipy a triky
GDS 2013: MonoGame pro Android a iOS, tipy a triky
 
Fotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows PhoneFotografické API a rozšířená realita pro Windows Phone
Fotografické API a rozšířená realita pro Windows Phone
 
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a AndroidMS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
MS Fest 2013: Vývoj her v C# a MonoGame pro WP, iOS a Android
 
[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013[cz] MonoGame framework, mDevCamp 2013
[cz] MonoGame framework, mDevCamp 2013
 
Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)Tipy a triky pro vývoj her v XNA (MS Fest)
Tipy a triky pro vývoj her v XNA (MS Fest)
 
Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)
Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)
Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)
 
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
Vyvíjíme hry v XNA pro Windows Phone – Seminář 1
 
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
Hands-on-lab Vyvíjíme hry v XNA pro WP7.5
 
Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7
 

Vývoj her v XNA - seminář 2