Migrating from Zune to Windows Phone

Discusses how to migrate games written for Zune and Zune HD
on XNA Game Studio 3.1 to Windows Phone with XNA Game Studio 4.0 Refresh.

Introduction

Games that were written for Zune and Zune HD in previous
versions are natural candidates for porting to Windows Phone. Windows Phone
shares many common attributes with the Zune HD: a handheld form-factor, small
screen, and the primary game inputs are multitouch and the accelerometer.

Since the Zune and Zune HD are only supported in XNA Game Studio versions including and prior to 3.1, and Windows Phone is a new
platform as of XNA Game Studio 4.0, there is no direct way to update applications
written for Zune to Windows Phone.

This topic describes how to port a Zune application from XNA Game Studio 3.1
to Windows Phone with XNA Game Studio 4.0 Refresh.

Creating a new Windows Phone Project

Migrating Your Content

Copy your content from the Zune project's Content folder to the content
project folder for your new XNA Game Studio 4.0 Refresh application. This will be named, by
default, ProjectNameContent inside your solution folder. Unlike content projects in
XNA Game Studio 3.1, content projects in XNA Game Studio 4.0 Refresh are not nested within the
game project, but are separate projects in the same solution.

To add the content to your content project

Asset names, as with XNA Game Studio 3.1, are named according to the filename. If you
need to, edit the Asset Name field in each content's Properties pane so that it matches the
asset name in your game code.

Migrating Your Code

The next step involves moving your old sourcefiles to your new XNA Game Studio 4.0 Refresh
project.

To migrate your code

Copy the source files from your old application into the new application's project
folder, located inside the new application's solution folder. Both of these folders will
be named with the project name chosen for your application.

If you renamed either Game1.cs or Program.cs in your old project, remove these files
from your new project.

If you have additional files beyond Game1.cs and Program.cs (or renamed these in your
old project), add these to your project by right-clicking the project name in
Solution Explorer, selecting Add, then Existing Item.

Updating Your Code

Once you've copied over your old source-files, you'll need to update your code for XNA Game Studio 4.0 Refresh and Windows Phone. What you do here depends on what features you
used in your old project, so this section will provide information specific to common feature
areas used with Zune and Zune HD games.

Screen Resolution

The screen size of a Windows Phone OS 7.1 device is, at minimum, 800x480. If your
application expects a screen-size of 480x272 (Zune HD) or 240x320 (previous
Zune models), you will need to adjust your application accordingly. This
can be done either by resizing your art assets to take advantage of the higher resolution
available on Windows Phone OS 7.1, or by taking advantage of the built-in hardware
scaling.

For many applications, using the built-in hardware scaling has several advantages:

There is no need to convert any of your existing textures to fit the new screen
resolution.

There is no need to convert screen coordinates for touch input

.

To use built-in hardware scaling, simply set the preferred back buffer width and height to
match those of the Zune device you're porting from. For example:

Button Input

Although Windows Phone OS 7.1 devices have hardware buttons, these cannot be used by
games on Windows Phone. You will need to manually rewrite code that uses hardware
buttons to use the input devices available on Windows Phone: touch input or
accelerometer input.

Touch Input

Multitouch input has moved to its own assembly: Microsoft.Xna.Framework.Input.Touch.dll. If
this was not added to your project by default, you'll need to add it yourself to access the
XNA Game Studio touch input classes and methods.

Make sure that you also have using Microsoft.Xna.Framework.Input.Touch statements in any
source files that will be using its classes.

Accelerometer Input

Accelerometer input is now handled by the Microsoft Windows Phone SDK, which requires adding
the Microsoft.Devices.Sensors assembly to your project and adding associated using
statements in the sourcefiles in which you'll be using its classes and methods.

Accelerometer input, like many Microsoft Windows Phone SDK features, is event-driven, and
you'll need to create an event handler to that will be called when accelerometer events are
received by the game.

Title Storage

StorageContainer.TitleLocation has been deprecated in XNA Game Studio 4.0 Refresh,
and no longer exists—in fact, the entire Microsoft.Xna.Framework.Storage namespace
doesn't exist for Windows Phone projects. To access title storage on Windows Phone, use OpenStream to get a filestream
to the storage location.