Your SlideShare is downloading. ×
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Introduktion till XNA
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduktion till XNA

1,015

Published on

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

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,015
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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

×