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

Introduktion till XNA

on

  • 1,228 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,228
Views on SlideShare
1,226
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 Introduktion till XNA Presentation Transcript

  • 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 med 3d och ”meshes”• gemensamma förmågor för pc, wp, xbox
  • 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 pixlar (25%) graphics.PreferredBackBufferHeight = 800; graphics.PreferredBackBufferWidth = 480;
  • 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
  • och nu lite 3d• x, y och z• kameran beskrivs med matriser • vy • projektion• världsmatriser transformerar relativa objekt • förflyttning • rotation • skalning
  • 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ändra • ”pitch” • volym • plats som ljudet spelas upp från
  • orientering graphics.SupportedOrientations = DisplayOrientation.Portrait | DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;• grundinställningen är ”LandscapeLeft”
  • 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(); };
  • 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
  • starta accelerometern Accelerometer accel; private void startAccelerometer() { accel = new Accelerometer(); accel.ReadingChanged += new EventHandler <AccelerometerReadingEventArgs> (accel_ReadingChanged); accel.Start(); }
  • 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; } }
  • 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(); ... }
  • 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) { ... } }
  • nätverksåtkomst• http, rest, xml... void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if (e.Error == null) { mapImage = Texture2D.FromStream( graphics.GraphicsDevice, e.Result); } }
  • xbox live• avatarer och “trials” för alla• för utvecklare med kontrakt • “profile” • “invites” • riktiga “achievements” • “leaderboards” • “gamerServices”• kontakta: wpgames@microsoft.com
  • 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!
  • 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
  • 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 { 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; }}
  • 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; }}
  • 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; }}
  • demo
  • johan.lindfors@infozone.se
  • så många resurser – så lite tid• create.msdn.com• jodegreef.wordpress.com - angry pigs• www.xnaresources.com• programmeramera.se• www.infozone.se