▼XNA Game Studioメモ▼
XNA Game Studio


XNA Game Studio
「XNA Game Studio」は、「Windows」および「Xbox 360」向けのゲームを作成するための開発ツール。
「XNA Framework」 と呼ばれる「.NET Framework 」をベースにしたライブラリが含まれる。
2008年末までにXbox LIVE経由で配布できるようになる予定。現在は北米でβテスト中。




情報源


リンク
XNA ブログ
XNA Creators Club XNA Japan Team Blog
XNAディベロッパーセンター ソーサリーフォース
ひにけにXNA ポリゴン魂
XNA Game Studio 2.0ドキュメント Integration Of Memeplexes
XNA プログラミングTips XNA奮闘記
ゲハ板のXNAまとめWiki XNAゲーム開発日記
ニュース速報XNA360 こびとスタジオLive
- ゲーム製作日誌


書籍
シェーダの解説に関しては「DirectXシェーダプログラミング」を参照。




XNA 2.0の開発環境の構築


XNA 2.0アプリケーションの開発に必要なツールは次の2つ。

Visual C# 2005 Express Edition
マイクロソフトが提供するソフトウェア開発のための統合開発環境。
サイトから無償で入手できる。
インストーラの指示に従ってインストール。

XNA Game Studio 2.0
「Visual C#」にXNAアプリケーションの開発機能を追加するキット。
サイトから無償で入手できる。
インストーラの指示に従ってインストール。
Visual C#がSP1でない時はSP1の要求ダイアログとリンク先が表示されるので、そのサイトを開きSP1をダウンロードしてインストール。


XNA 3.0の開発環境の構築


XNA 3.0アプリケーションの開発に必要なツールは次の2つ。まだβ版。
ZUNEアプリが開発可能になった以外は違いは少ない模様。

Visual C# 2008 Express Edition
マイクロソフトが提供するソフトウェア開発のための統合開発環境。
サイトから無償で入手できる。
インストーラの指示に従ってインストール。

XNA Game Studio 3.0 CTP
「Visual C#」にXNAアプリケーションの開発機能を追加するキット。
サイトから無償で入手できる。
インストーラの指示に従ってインストール。


はじめてのXNAアプリの作成


「Hello World!」という文字列を表示するプログラムを作成する。



プロジェクトの作成
  1. スタートメニューから「Visual C#」を起動。
  2. Visual C#のメニュー「ファイル→新しいプロジェクト→XNA Game Studio 3.0→Windows Game (3.0)」を選択。
  3. プロジェクト名に「HelloWorld」と入力し、OKボタンを押す。
  4. ソリューションエクスプローラのGame1.csをGameMain.csに名前変更。
  5. メニュー「ファイル⇒すべてを保存」を選択し保存。


フォントの追加
  1. ソリューションエクスプローラの「Content」を右クリック
  2. ポップアップの「追加⇒新しい項目」で「Sprite Font」を選択し追加ボタンを押す。名前は「DefaultFont.spritefont」とする。
  3. 「DefaultFont.spritefont」を開き、「FontName」に「MS UI Gothic」を指定する。
  4. 他の設定も必要に応じて行う。
    FontName 開発するパソコンにあるTrueTypeフォントの名前を指定。
    Size フォントサイズをポイント単位で指定。
    Spacing 文字間のピクセル数を指定。
    UseKerning カーニングの利用
    Style フォントスタイル(Regular、Bold、Italic)を指定。
    UseKerning カーニングの指定(true or false)
    CharacterRegions 利用する文字範囲を指定。
    初期値の 〜~は全ASCIIコード
この設定で表示可能なのは英数字のみ。日本語表示については後ろの説明参照。


DefaultFont.spritefont
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
  <Asset Type="Graphics:FontDescription">

    <!--フォント名-->
    <FontName>MS UI Gothic</FontName>

    <!--フォントサイズ-->
    <Size>24</Size>

    <!--文字間隔-->
    <Spacing>0</Spacing>

    <!--カーリングの利用-->
    <UseKerning>true</UseKerning>

    <!--スタイル-->
    <Style>Regular</Style>
    
    <!--利用する文字範囲-->
    <CharacterRegions>
      <CharacterRegion>
        <Start>&#32;</Start>
        <End>&#126;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#x30a0;</Start>
        <End>&#x30ff;</End>
      </CharacterRegion>
    </CharacterRegions>
  </Asset>
</XnaContent>


ソースコードの編集
  1. Game.csを以下のように編集。
GameMain.cs
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace HelloWorld {
    public class GameMain : Microsoft.Xna.Framework.Game {
        private GraphicsDeviceManager graphics;   //グラフィックス
        private SpriteBatch           spriteBatch;//スプライトバッチ
        private SpriteFont            font;       //フォント

        //コンストラクタ
        public GameMain() {
            graphics=new GraphicsDeviceManager(this);
            Content.RootDirectory="Content";
        }

        //初期化
        protected override void Initialize() {
            base.Initialize();
        }

        //グラフィクスコンテントの読み込み
        protected override void LoadContent() {
            spriteBatch=new SpriteBatch(GraphicsDevice);
            font=Content.Load<SpriteFont>("DefaultFont");
        }

        //グラフィクスコンテントの解放
        protected override void UnloadContent() {
        }

        //更新
        protected override void Update(GameTime gameTime) {
            //アプリ終了
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back==
                ButtonState.Pressed) {
                Exit();
            }

            //ベースの更新
            base.Update(gameTime);
        }

        //描画
        protected override void Draw(GameTime gameTime) {
            //背景の描画
            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

            //文字列の描画
            spriteBatch.Begin();
            DrawString("Hello World!",50,50);
            spriteBatch.End();

            //ベースの描画
            base.Draw(gameTime);
        }

        //文字列の描画
        private void DrawString(String str,int x,int y) {
            spriteBatch.DrawString(font,str,new Vector2(x,y),Color.White);
        }
    }
}


Gameクラスの主なメソッド
Gameクラスのオーバーライドして利用する主なメソッドは次の通り。
メソッド名 説明
Initialize()メソッド グラフィックスコンテント以外の初期化を行う。
LoadContent()メソッド グラフィックスコンテントの読み込み。
UnloadContent()メソッド グラフィックスコンテントの破棄。
Update()メソッド グラフィックス関連以外の定期処理を行う。
Draw()メソッド グラフィックス関連の定期処理を行う。


アプリ終了
Backボタンでのアプリの終了はXbox360での実行時に必要。


ビルド
XNA Game Expressのメニュー「ビルド⇒ソリューションのビルド」でビルド。
成功すると「HelloWorld.exe」が生成される。


実行
メニュー「デバッグ⇒デバッグ開始」でデバッグ開始。


XNA Game Studio 3.0のサンプルプログラム


2Dプログラミング 3Dプログラミング Windowsプログラミング シェーダープログラミング

※旧「XNA Game Studio 1.0」用のサンプルプログラムはこちら


デバッグ


デバッグ出力
デバッグ出力(JavaでいうところのSystem.out.println())を行うにはConsole.WriteLine()を使う。
出力先は「出力」ウィンドウ。画面上にない時は、メニュー「表示⇒出力」。
デバッグ実行時のみ出力される。


Xbox360での実行方法


ネットワーク環境の構築
パソコンとXbox360の本体はインターネットに接続し、かつパソコンとXbox360がお互いに通信できるように、ルーターでLAN構築。
以下のポートはパソコンのセキュリティソフトのブロック対象外にさせる。
ポート プロトコル 送受信
1000 UDP 送信
1001 TCP 送信
3825 UDP 受信
3835 UDP 受信


XNA Creators Clubメンバーシップの購入
XNAで作成したゲームをXbox360で実行するには、XNA Creators Clubのメンバーシップが必要。
Xbox360のXbox Liveマーケットプレースで購入できる。
購入手順は次の通り。
  1. Xbox360でXbox Liveに接続し、マーケットプレースブレードを開く。
  2. 「ゲームストア」→「もっと見る」→「ジャンル」→「その他」→「XNA Creators Club」と選択。
  3. 「メンバーシップ」を選択し、メンバーシップの購入手続きを行う。
ライセンスには以下の2種類があるので自分に適した方を選択。
年間メンバーシップ 9,800円
4ヶ月お試し版 4,800円


Xbox360側の準備
Xbox360とパソコンを接続するには、Xbox360に「XNA Game Studio Connect」が必要。
XNA Creators Clubのメンバーシップを購入したのと同じ場所から無償ダウンロードできる。
  1. Xbox360のXbox Liveのマーケットプレースに接続。
  2. 「ゲームストア」→「もっと見る」→「ジャンル」→「その他」→「XNA Creators Club」→「XNA Game Studio Connect」→「始める」を選択しダウンロード。
  3. Xbox360のゲームブレードを開く。
  4. 「ゲームライブラリ」→「マイゲーム」→「XNA Game Studio Connect」→「始める」を選択し起動。
  5. PCからの接続の待ち状態となり、25桁のコネクションキーが表示される。
パソコン側の準備
  1. Visual C#を起動し、メニュー「ファイル⇒新しいプロジェクト⇒ Xbox 360 Game」で新しいプロジェクトを作成。
  2. ソースコードを記述。
    (Windows用のXNAプログラムでもWindows専用命令を使ってなければコピーで利用可能。)
  3. メニュー「ツール→Launch XNA Game Studio Device Center」を選択。
  4. Add Deviceボタンを選択。
  5. 接続するXbox360の名前として任意の名前を入力しNextボタンを押す。
  6. Xbox360で表示されている25桁のコネクションキーを入力しNextボタンを押す。
  7. Finishボタンを押す。





Community Gamesのゲームのプレイ方法


Community Gamesで合格したXNAゲームは「XNA Creators Club Game Launcher」をXbox360にダウンロードすることでプレイ可能。ただし、現在はCommunity Gamesが北米のみのβ版のため公式には利用できない。裏技的にダウンロードすることができる。


BETA CODEの入手
  1. 日本アカウントでXNA Creators Clubのメンバーシップ購入。
  2. パソコンでXNA Creators Clubのサイトを開き、右上のSIGN INボタンからサインイン。
  3. 「Creators」→「my profile」でプロフィールを開く。
  4. 「Get Code」ボタン押すと「BETA CODE」という25桁のコード出現。
XNA Creators Club Game Launcherのダウンロード
  1. 北米アカウントを作成しログイン。(北米アカウントの作り方はこちら)
  2. マーケットプレースプレートで「ご利用コードを使う」を選択。
  3. BETA CODEを入力
  4. XNA Creators Club Game Launcherをダウンロードするか聞かれるのでダウンロード。
ゲームの起動
  1. ゲームプレートで「ゲームライブラリー」を選択。
  2. マイゲームを選択。
  3. 左右キーでXNA Creators Clubの項目まで移動。
  4. Yボタンを押す。
  5. XNAゲーム一覧が表示されるので選択してダウンロード。
  6. ゲームライブラリの一覧からゲーム選択して実行。


ダウンロード後は元のアカウントに戻ってもゲームプレイ可能。
情報源はこびとスタジオLiveさん+XNA Creators Clubのムービー



Community Gamesへのゲームの投稿方法・レビュー方法



投稿ゲームの価格とファイルサイズ
200マイクロソフトポイント(300円) 50MB
400マイクロソフトポイント(600円) 150MB
800マイクロソフトポイント(1200円) 150MB
開発者の取り分は基本は70%。
人気のゲームはバナー広告が設定され、プロモーショ ン費用10%〜30%が加算され取り分が60%から40%となる。
店頭から外れた場合は元の70%に戻る。
全てのゲームにお試しモードが設定される。

詳しくはこちら参照。


ゲームの投稿方法・レビュー方法
ひにけにさんのところで詳しく書かれてるので参照先紹介。

紹介動画の作成方法
  1. CamStudioでゲーム画面の動画をキャプチャー。
  2. Windowsムービーメーカーで編集および画面サイズとファイルサイズの調整。
  3. MSNビデオに動画をアップロード。
  4. コミュニティゲーム投稿時に公開した動画のURLを指定。



−戻る−