Introduktion tillJohan Lindfors
windows phone för spel•   imponerande prestanda•   sensorer och ”touch”•   potentiellt xbox-live•   annonser och trials
harbor master
harvest
tiki towers
doodle fit
ilomilo
xna på 1 minut•   ett omfattande ramverk för spel•   integrerad hantering av innehåll•   spel med 2d och ”sprites”•   spel...
Initialisera   Uppdatera   Rita
hantering av innehåll•   content pipeline•   importera vanliga filer•   optimeras till binärt format•   utbyggbart
demo
”hardware scaler”• 800x480       =    384 000 pixlar• 600x360       =    216 000 pixlar (56%)• 400x240       =    96 000 p...
generellt för prestanda•   gc är ”enklare” än på pc (för närvarande)•   allokera objekt tidigt, återanvänd•   håll reda på...
och nu lite 3d• x, y och z• kameran beskrivs med matriser  • vy  • projektion• världsmatriser transformerar relativa objek...
demo
effekter - shaders• konfigurerbara  •   basic  •   skinned  •   environmentMap  •   dualTexture  •   alphaTest
ljud och musik•   soundEffect•   laddas som vanligt innehåll•   wp kan hantera upp till 64 samtidiga•   möjligt att föränd...
orientering graphics.SupportedOrientations =     DisplayOrientation.Portrait |     DisplayOrientation.LandscapeLeft |     ...
orientering Window.OrientationChanged += (s, e) => {     switch (Window.CurrentOrientation)     {         case DisplayOrie...
accelerometer    using Microsoft.Devices.Sensors;•    mäter acceleration i X, Y och Z•    värden returneras mellan -1 och ...
starta accelerometern Accelerometer accel; private void startAccelerometer() {     accel = new Accelerometer();     accel....
läsa accelerometern Vector3 accelReading; void accel_ReadingChanged(object sender,         AccelerometerReadingEventArgs e...
touch• windows phone hanterar 4 punkter  • alla punkter har unika id’n  • pressed | moved | released TouchCollection Touch...
gester• wp kan också hantera gester  • tap | drag | hold | flick | pinch ... TouchPanel.EnabledGestures =     GestureType....
nätverksåtkomst• http, rest, xml... void wc_OpenReadCompleted(object sender,           OpenReadCompletedEventArgs e) {   i...
xbox live• avatarer och “trials” för alla• för utvecklare med kontrakt  •   “profile”  •   “invites”  •   riktiga “achieve...
trial mode• var kreativ för att driva sälj #if DEBUG     Guide.SimulateTrialMode = true; #endif bool isTrial = Guide.IsTri...
annonser• istället för att användaren betalar• finns inte för svenska applikationer ännu* using Microsoft.Advertising.Mobi...
marketplace•   testa, testa, testa•   lokal struktur•   uppdateringar•   auto-publicering
nyheter i och med mango•   silverlight + xna•   exekveringsmodellen•   profilering•   kombinerat api för rörelse
demo
tripeaks solitaire• fabrication games• äkta 3D• all kod i objective-c
-(BOOL)      animate{    if([self animation] == nil)    {         [self draw];         return NO;    }    else    {       ...
public bool Animate(){    if (this.Animation == null)    {         this.Draw();         return false;    }    else    {   ...
public bool Animate(GraphicsDevice graphics, BasicEffect effect){    if (this.Animation == null)    {         this.Draw(gr...
demo
johan.lindfors@infozone.se
så många resurser – så lite tid• create.msdn.com• jodegreef.wordpress.com - angry pigs• www.xnaresources.com• programmeram...
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Upcoming SlideShare
Loading in...5
×

Introduktion till XNA

1,066

Published on

Presenation från WP7 utvecklar-dagen på Microsoft 2011-05-26

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,066
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduktion till XNA

  1. 1. Introduktion tillJohan Lindfors
  2. 2. windows phone för spel• imponerande prestanda• sensorer och ”touch”• potentiellt xbox-live• annonser och trials
  3. 3. harbor master
  4. 4. harvest
  5. 5. tiki towers
  6. 6. doodle fit
  7. 7. ilomilo
  8. 8. xna på 1 minut• ett omfattande ramverk för spel• integrerad hantering av innehåll• spel med 2d och ”sprites”• spel med 3d och ”meshes”• gemensamma förmågor för pc, wp, xbox
  9. 9. Initialisera Uppdatera Rita
  10. 10. hantering av innehåll• content pipeline• importera vanliga filer• optimeras till binärt format• utbyggbart
  11. 11. demo
  12. 12. ”hardware scaler”• 800x480 = 384 000 pixlar• 600x360 = 216 000 pixlar (56%)• 400x240 = 96 000 pixlar (25%) graphics.PreferredBackBufferHeight = 800; graphics.PreferredBackBufferWidth = 480;
  13. 13. generellt för prestanda• gc är ”enklare” än på pc (för närvarande)• allokera objekt tidigt, återanvänd• håll reda på stack och heap• använd inte foreach• använd inte linq
  14. 14. och nu lite 3d• x, y och z• kameran beskrivs med matriser • vy • projektion• världsmatriser transformerar relativa objekt • förflyttning • rotation • skalning
  15. 15. demo
  16. 16. effekter - shaders• konfigurerbara • basic • skinned • environmentMap • dualTexture • alphaTest
  17. 17. ljud och musik• soundEffect• laddas som vanligt innehåll• wp kan hantera upp till 64 samtidiga• möjligt att förändra • ”pitch” • volym • plats som ljudet spelas upp från
  18. 18. orientering graphics.SupportedOrientations = DisplayOrientation.Portrait | DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;• grundinställningen är ”LandscapeLeft”
  19. 19. orientering Window.OrientationChanged += (s, e) => { switch (Window.CurrentOrientation) { case DisplayOrientation.Portrait: graphics.PreferredBackBufferHeight = 800; graphics.PreferredBackBufferWidth = 480; break; default: graphics.PreferredBackBufferHeight = 480; graphics.PreferredBackBufferWidth = 800; break; } graphics.ApplyChanges(); };
  20. 20. accelerometer using Microsoft.Devices.Sensors;• mäter acceleration i X, Y och Z• värden returneras mellan -1 och +1• händelsebaserad• läs värden i ”event”, lagra för användning
  21. 21. starta accelerometern Accelerometer accel; private void startAccelerometer() { accel = new Accelerometer(); accel.ReadingChanged += new EventHandler <AccelerometerReadingEventArgs> (accel_ReadingChanged); accel.Start(); }
  22. 22. läsa accelerometern Vector3 accelReading; void accel_ReadingChanged(object sender, AccelerometerReadingEventArgs e) { lock (this) { accelReading.X = (float)e.X; accelReading.Y = (float)e.Y; accelReading.Z = (float)e.Z; } }
  23. 23. touch• windows phone hanterar 4 punkter • alla punkter har unika id’n • pressed | moved | released TouchCollection Touches; protected override void Update(GameTime gt) { Touches = TouchPanel.GetState(); ... }
  24. 24. gester• wp kan också hantera gester • tap | drag | hold | flick | pinch ... TouchPanel.EnabledGestures = GestureType.Flick; while (TouchPanel.IsGestureAvailable) { GestureSample g = TouchPanel.ReadGesture(); if (g.GestureType == GestureType.Flick) { ... } }
  25. 25. nätverksåtkomst• http, rest, xml... void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if (e.Error == null) { mapImage = Texture2D.FromStream( graphics.GraphicsDevice, e.Result); } }
  26. 26. xbox live• avatarer och “trials” för alla• för utvecklare med kontrakt • “profile” • “invites” • riktiga “achievements” • “leaderboards” • “gamerServices”• kontakta: wpgames@microsoft.com
  27. 27. trial mode• var kreativ för att driva sälj #if DEBUG Guide.SimulateTrialMode = true; #endif bool isTrial = Guide.IsTrialMode; ... Guide.ShowMarketplace(PlayerIndex.One);• anrop till IsTrialMode tar 60 ms, cacha!
  28. 28. annonser• istället för att användaren betalar• finns inte för svenska applikationer ännu* using Microsoft.Advertising.Mobile.Xna; ... AdManager adManager; Ad bannerAd; *sanning med modifikation, det finns alternativ
  29. 29. marketplace• testa, testa, testa• lokal struktur• uppdateringar• auto-publicering
  30. 30. nyheter i och med mango• silverlight + xna• exekveringsmodellen• profilering• kombinerat api för rörelse
  31. 31. demo
  32. 32. tripeaks solitaire• fabrication games• äkta 3D• all kod i objective-c
  33. 33. -(BOOL) animate{ if([self animation] == nil) { [self draw]; return NO; } else { BOOL animationDone = [[self animation] animate]; [self draw]; if (animationDone) { x += [[self animation] currentX]; y += [[self animation] currentY]; z += [[self animation] currentZ]; rotation += [[self animation] currentRotation]; [animations removeObjectAtIndex:0]; } return animationDone; }}
  34. 34. public bool Animate(){ if (this.Animation == null) { this.Draw(); return false; } else { bool animationDone = this.Animation.Animate(); this.Draw(); if (animationDone) { x += this.Animation.CurrentX; y += this.Animation.CurrentY; z += this.Animation.CurrentZ; rotation += this.Animation.CurrentRotation; animations.RemoveAt(0); } return animationDone; }}
  35. 35. public bool Animate(GraphicsDevice graphics, BasicEffect effect){ if (this.Animation == null) { this.Draw(graphics, effect); return false; } else { bool animationDone = this.Animation.Animate(); this.Draw(graphics, effect); if (animationDone) { x += this.Animation.CurrentX; y += this.Animation.CurrentY; z += this.Animation.CurrentZ; rotation += this.Animation.CurrentRotation; animations.RemoveAt(0); } return animationDone; }}
  36. 36. demo
  37. 37. johan.lindfors@infozone.se
  38. 38. så många resurser – så lite tid• create.msdn.com• jodegreef.wordpress.com - angry pigs• www.xnaresources.com• programmeramera.se• www.infozone.se
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×