200 likes | 403 Views
XNA Development. Creating Games For Windows, Xbox 360, and Windows Phone 7 Ryan Plemons http://digitaltransfusion.net @ ryanplemons. Where to begin?. All demos in this slide deck are built with XNA 4. To follow along, you will need the following: Windows 7 or Vista
E N D
XNA Development Creating Games For Windows, Xbox 360, and Windows Phone 7 Ryan Plemons http://digitaltransfusion.net @ryanplemons
Where to begin? All demos in this slide deck are built with XNA 4. To follow along, you will need the following: • Windows 7 or Vista • A DirectX 9.1c capable graphic card (or better) with up to date drivers and DirectX runtime. If you’d like to debug Windows Phone 7 XNA projects you need a DirectX 10 capable graphic card (or better). • Windows Phone 7 Development Tools • XNA 4 is part of this package, and will install VS2010 Express. If you use a better version of VS2010, then the templates are installed for it as well. • This will install an emulator for WP7 development
What is XNA? XNA = XNA's Not Acronymed • XNA is a powerful .Net API that handles graphics, sounds, inputs, networking, and storage that targets multiple platforms within the Microsoft envrionment. • Windows • Windows Phone 7 • Xbox 360 • Zune • (and more to come)…
Can I get an upgrade? If you are a student you can take advangate of the Dreamsparkprogram. You can get a copy of: • Windows 7/Vista • Visual Studio 2010 Professional • Expression Studio 4 Ultimate • (and much, much more)
Demo: Creating your first projects
So what are these projects? There are 2 types of projects that are created out of the box. • The main project targeting your platform • This is the starting point of your application. You load assemblies, load media, move objects from here. • A content project • This is where you put all of your assets. XNA supports the following formats out of the box, but you can build other format importers. • 2D graphics: .bmp, .png, .jpg • 3D models: .x, .fbx • Shaders: .fx • Audio: .mp3, .wav, .wma • WP7 requires PCM 16 bit mono/stero • Video: .wmv • Fonts: Any TrueType font • XNA provides a set of sample high quality fonts (Andy Regular, Kootenay, Lindsey, etc) more info can be found here • Any XML, text or binary files • XNA for windows can skip this if you want, but it is required for Xbox and WP7.
Demo: • Adding assets to our game
Basic Game Structure • Initalize: called after the constructor. This is where you configure all your default values. • Load Content: Called after Initialize, you load all assets for your game in here. • Update: This is where you update data, look for keyboard input, do collision detection, etc. • Draw: This is where you render your scene. • Unload Content: Once the game exits, this is where any cleanup would happen.
Basic Game Structure (cont) What is the GraphicsDeviceManager? • This is the “graphical context” and is responsible for things like screen resolution, vertical synchronization, and anti-aliasing. It also gives you information on hardware capabilities. What is a SpriteBatch? • Simply put, this is what allows you to “draw” 2d images to the screen. You can draw an entire image to the screen, or only a small part of the image to a specific area. • There are no simple polygon “draw” methods. Everything is handled through textures.
Consistency is the key! Speeds can vary from computer to computer, or device to device. • XNA runs at 60 FPS by default. • Can be adjusted • IsFixedTimeStep (Bool) • TargetElapsedTime (TimeSpan) • Use gameTime.ElapsedGameTime to adjust for drift
SpriteBatch • Begin • Tells GPU to draw everything coming to it, in the order you send it. • Draw • 0,0 is the top left • Draw as many textures as possible in each SpriteBatch to keep speed up • End • Do this when done drawing, or when you need to change drawing settings. (such as AlphaBlend)
Write once, Tweak for platform • Windows • Resolution can vary • Mouse/Keyboard Input • Xbox • (640 x 480, 1280 x 720, 1920 x 1080) • Controllers • WP7 • 480 x 800, 320 x 480 • Touch Screen • EXTREME memory restrictions.
What’s that? I can’t hear you! • SoundEffect • quick sound effects • Background music loop • sound.Play(); • Used for quick audio. • sound.CreateInstance(); • Used for background music loops (allows pausing, volume adjustments on the fly, etc)
Demo: • Add the Background • Add Paddles • Add Ball • Add Score Overlay • Add Input
Let’s get that ball rolling • Ball starts in random direction • +/- X • +/- Y • Starts at Width/2, Height/2 • Change X or Y depending on collision • Y changes based on collision with top or bottom • X changes based on collision with paddle • If X < 0 or X > width, then a point is awarded to the other side
Demo: • Animate ball • Collision detection • Bounding Box is top left • Because this is a simple demo, I am using a rectangular bounding box for collision detection. You should do more fine grained collision detection for the real deal.
Building for Xbox • Create new project, • copy csproj and rename • Include in project • “add” appropriate files • Need creators club account • Download Xbox Connect app to connect computer to Xbox for deployment
Building for WP7 • Create new project, • copy csproj and rename • Include in project • “add” appropriate files • Need windows phone developer account • Don’t forget to turn off services • Game hub or app hub?
Further Concerns • WP7 • Multi-Touch input • Accelerometer • GPS • Higher Resolution, Smaller Screen • Tombstoning • Ram Issues • Applications can use (at most) 90MB of ram on a device with 256MB of ram. (lowest spec allowed) • If a device has more than 256MB of ram you may use more than 90MB of ram to the amount of MemorySize – 256MB. • If my device has 512MB of ram, I am allowed to use 512-256 + 90 = 346MB of ram • Xbox: • Development requires an Xbox for testing (no emulator)
Q&A • What questions do you have? • Ryan Plemons • http://digitaltransfusion.net • @ryanplemons