Introduktion till XNA
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Introduktion till XNA

on

  • 1,262 views

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

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

Statistics

Views

Total Views
1,262
Views on SlideShare
1,260
Embed Views
2

Actions

Likes
0
Downloads
6
Comments
0

2 Embeds 2

http://paper.li 1
http://www.verious.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introduktion till XNA Presentation Transcript

  • 1. Introduktion tillJohan Lindfors
  • 2. windows phone för spel• imponerande prestanda• sensorer och ”touch”• potentiellt xbox-live• annonser och trials
  • 3. harbor master
  • 4. harvest
  • 5. tiki towers
  • 6. doodle fit
  • 7. ilomilo
  • 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. Initialisera Uppdatera Rita
  • 10. hantering av innehåll• content pipeline• importera vanliga filer• optimeras till binärt format• utbyggbart
  • 11. demo
  • 12. ”hardware scaler”• 800x480 = 384 000 pixlar• 600x360 = 216 000 pixlar (56%)• 400x240 = 96 000 pixlar (25%) graphics.PreferredBackBufferHeight = 800; graphics.PreferredBackBufferWidth = 480;
  • 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. och nu lite 3d• x, y och z• kameran beskrivs med matriser • vy • projektion• världsmatriser transformerar relativa objekt • förflyttning • rotation • skalning
  • 15. demo
  • 16. effekter - shaders• konfigurerbara • basic • skinned • environmentMap • dualTexture • alphaTest
  • 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. orientering graphics.SupportedOrientations = DisplayOrientation.Portrait | DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;• grundinställningen är ”LandscapeLeft”
  • 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. 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. starta accelerometern Accelerometer accel; private void startAccelerometer() { accel = new Accelerometer(); accel.ReadingChanged += new EventHandler <AccelerometerReadingEventArgs> (accel_ReadingChanged); accel.Start(); }
  • 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. 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. 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. 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. xbox live• avatarer och “trials” för alla• för utvecklare med kontrakt • “profile” • “invites” • riktiga “achievements” • “leaderboards” • “gamerServices”• kontakta: wpgames@microsoft.com
  • 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. 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. marketplace• testa, testa, testa• lokal struktur• uppdateringar• auto-publicering
  • 30. nyheter i och med mango• silverlight + xna• exekveringsmodellen• profilering• kombinerat api för rörelse
  • 31. demo
  • 32. tripeaks solitaire• fabrication games• äkta 3D• all kod i objective-c
  • 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. 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. 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. demo
  • 37. johan.lindfors@infozone.se
  • 38. så många resurser – så lite tid• create.msdn.com• jodegreef.wordpress.com - angry pigs• www.xnaresources.com• programmeramera.se• www.infozone.se