Blogger Syntax Highliter

Wednesday, November 3, 2010

WP7 TrainingKit のサンプルをXBOX360で動かす

Windows Phone 7 のマーケットプレイスや実機で動作させるために、APP HUBのメンバーシップになったものの、実機もないのでTraining Kit のサンプルの動作も完全に動作させることができない状態です。

そんな中、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)上陸してほしいです。

The Windows Phone Developer Tools October 2010 Update

10月26日に、Windows Phone の Developer Tools がアップデートされていたようです。
RSSで流れたいたのを、見逃していました。

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=49b9d0c5-6597-4313-912a-f0cca9c7d277

そして、ヨーロッパではご存知のとおり、Windows Phone 7が発売されております。
http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/10/21/worldwide-excitement-for-windows-phone.aspx

時は流れており、明日あたりにはUSで、Windows Phone 7が発売されるんでしたっけ?

とりあえず、Windows Phone Developer Tools October 2010 Update のドキュメントから、下記の3点のアップデートがあったようです。

1.Bing Maps Control がアップデートされて、ジェスチャーが良くなったようです。

2.Capability Detection tool により、アプリケーションで何を使っているかスキャンすることができるようです。
http://msdn.microsoft.com/en-us/library/gg180730(v=VS.92).aspx

3.WP Connect utility により、Zuneを使わないで、Windows Phone と PCを接続することができるようです。
これにより、Media API のデバックができるようになるようです。
http://msdn.microsoft.com/en-us/library/gg180729(v=VS.92).aspx

3あたりは実機がないと使えないようですね。

Tuesday, November 2, 2010

APP HUB で Windows Phone のダッシュボードページに行けなくなった

3日前ぐらいは、ダッシュボードのWindows Phone と プロフィール に行けたのですが、
2日前あたりからWindowsPhoneとプロフィールに行けなくなってしまいました。
トップページの「Windows Phone 向けに投稿」も同様に行けませんが、「Xbox360 向けに投稿」は行けます。

色々と調べたり、教えてもらったりとして無事解決しましたので、方法を記しておきます。

MICROSOFT *MKTPLACE からのメールで「更新手続き完了のお知らせ」が届いたタイミングで、この現象が発生したようです。

1. http://xbox.com にアクセスする。
2. xbox.com で新しい約款に同意する。
3. アバターが作られてなかったので作る(関係ないと思いますが一応書いておきます)
4. xbox.com からログアウト。APP HUBにログインしている場合にもログアウト。
5. APP HUBに再度ログイン

これで、WindowsPhoneのダッシュボードにアクセスができることを確認できます。
Xbox360 のダッシュボードにアクセスできるのは不思議ですね。

Windows Phone で APP HUB をはじめて利用しているので、xbox.com は関係ないと思い込んでいたこともも解決に時間がかかる原因でした。xbox.com にもアカウントを持っていることを忘れてましたし。。。。

追記:公式にアナウンスされてました。
http://create.msdn.com/ja-JP/home/news/app_hub_dashboard_nov_1