そんな中、APP HUBのメンバーシップで Creators Club にも同時に入るので、XBOX360のアプリ開発も行えることを知り、WP7の実機が待ち遠しいので我慢できず、Windows Phone 7 の Training Kit を XBOX360 (実機)で動かしてみることにしました。
一応、実機です・・・。WP7じゃないけど。
試したのは、Training Kit の「Exercise 1: XNA Game Studio Games on the Windows Phone 7」です。
ちなみに、Windows Phone 7 のエミュレータで動かした画面は以下のような感じです。
では、XBOX360のXNA用にコードを修正していきます。
「Microsoft Visual Studio 2010 Express for Windows Phone」を起動して、「New Project」を選択します。プロジェクトのテンプレートは、「Xbox 360 Game (4.0)」です。
\End\AlienGame\AlienGame 配下のファイルとフォルダを、AlienGameのプロジェクト①にドラック・アンド・ドロップして、\End\AlienGame\AlienGameContent配下のファイルをAlienGameContentのプロジェクト②にドラック・アンド・ドロップします。ドラック・アンド・ドロップでコピーするファイルは、以下の画面を参考にしてください。
Xbox 360はTouchクラスが存在しないようなので、少しコードを変更します。主にエラーになっている箇所です。
Program.cs
static void Main(string[] args) { using (AlienGame.AlienGame game = new AlienGame.AlienGame()) { game.Run(); } }
GameplayScreen.cs の using
using System.IO; using Microsoft.Xna.Framework.Input; #if !XBOX using Microsoft.Xna.Framework.Input.Touch; using Microsoft.Devices.Sensors; #endif
GameplayScreen.cs の GameplayScreen クラス
//Input Members #if !XBOX AccelerometerReadingEventArgs accelState; TouchCollection touchState; Accelerometer Accelerometer; #endif
GameplayScreen.cs の GameplayScreen() コンストラクタ内
alienBullets = new List(); #if !XBOX Accelerometer = new Accelerometer(); if (Accelerometer.State == SensorState.Ready) { Accelerometer.ReadingChanged += (s, e) => { accelState = e; }; Accelerometer.Start(); } #endif }
GameplayScreen.cs の HandleInput(InputState input) メソッド内
if (input.PauseGame) { if (gameOver == true) finishCurrentGame(); } else { #if XBOX if (input.MenuSelect) { buttonTouched = true; } if (input.MenuUp) { movement = 1.0f; } if (input.MenuDown) { movement = -1.0f; } #else touchState = TouchPanel.GetState(); //interpret touch screen presses foreach (TouchLocation location in touchState) { switch (location.State) { case TouchLocationState.Pressed: buttonTouched = true; break; case TouchLocationState.Moved: break; case TouchLocationState.Released: break; } } if (accelState != null) { if (Math.Abs(accelState.X) > 0.10f) { if (accelState.X > 0.0f) movement = 1.0f; else movement = -1.0f; } } #endif player.Velocity.X = movement;
これで、プログラムの変更は完了です。
あとは、XBOX360に「XNA Creators Club」をインストールするのですが・・・。なかなか見つからない。
場所は、「ゲーム マーケットプレイス」→「ゲームストア」→「追加コンテンツ&その他」→「ゲーム追加コンテンツ」→「タイトル順」→「え」→「XNA Creators Club」です。
では、XBOX360とPCを接続します。
XBOX360の「XNA Creators Club」のインストールが完了したら、「ゲームライブラリ」→「全て」から「XNA Creators Club」を実行します。
PC側は、「スタート」→「Microsoft XNA Game Studio 4.0」→「XNA Device Center」を実行します。
あとは、画面の指示に従って、XBOX360に表示されているキーをPC側に入力します。
※「Microsoft Visual Studio 2010 Express for Windows Phone」が動作しているPCとXBOX360は同一セグメントのネットワークに接続されていないといけません。
そして、「Microsoft Visual Studio 2010 Express for Windows Phone」から実行を行うと、XBOX360にプログラムが送られて実機(WP7じゃないけど)で、ゲームが遊べます。
同じコードでXBOX360向けのゲームも作れてしまうのは素晴らしい。(本当は逆ですね)
早く日本に実機(WP7)上陸してほしいです。