<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ひにけにXNA : XNA</title><link>http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx</link><description>Tags: XNA</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>XNA Game Studio 3.1がリリース</title><link>http://blogs.msdn.com/ito/archive/2009/06/11/xnags-3-1-released.aspx</link><pubDate>Thu, 11 Jun 2009 20:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9727245</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/9727245.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=9727245</wfw:commentRss><description>&lt;P&gt;XNA Game Studio 3.1がリリースされました。&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;インストール時の注意点&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;インストールするときの注意として、3.0をアンインストールしてから3.1をインストール必要があります。XNA GS 3.1では3.0、3.1の両方をサポートしているので、3.0で作ったゲームがそのまま遊べますし、3.0で作ったプロジェクトもそのまま読み込むことができます。また、プロジェクトメニューから3.1用のプロジェクトへの更新もできるようになっています。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;新機能&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;XNA GS 3.1では以下の新機能が追加されました。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;アバター(Xbox 360のみ) &lt;/LI&gt;
&lt;LI&gt;動画再生 &lt;/LI&gt;
&lt;LI&gt;XNBファイルの自動シリアライズ &lt;/LI&gt;
&lt;LI&gt;Xbox Live Party (Xbox 360のみ) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;アバターAPIではゲーマープロフィールのアバター情報から、アバターを描画することができ、いくつかの基本的なアニメーションを再生することができます。また、任意のボーンデータを設定することで自分のアバターをゲーム内でキャラクターとして使用することもできます。&lt;/P&gt;
&lt;P&gt;動画再生ではWMVファイルをコンテントとして追加することで、ゲーム内で動画再生することが可能となりました。2Dの動画再生にも使えますが、動画フレームはテクスチャデータとして取得できるので3Dモデルに貼り付けて再生することもできます。&lt;/P&gt;
&lt;P&gt;今まではXNBファイルに独自のデータ形式を格納するにはそれぞれの型に対応するTypeWriter/TypeReaderを作る必要がありましたが、XNBファイル自動シリアライズ機能を使うことで、TypeWriter/TypeReaderを書かなくても独自のデータ形式を簡単に使えるようになりました。&lt;/P&gt;
&lt;P&gt;Xbox Live Party機能、今までは複数の友人をプレイしているゲームに招待する場合に、ユーザーがひとりひとり手動で招待する必要がありましたが、&lt;STRONG&gt;LocalNetworkGamer.SendPartyInvites&lt;/STRONG&gt;メソッドを使うことでプログラム側から複数のパーティーメンバーを一気に招待することができるようになりました。ユーザーがパーティーメンバーであるかどうかを調べるには&lt;STRONG&gt;SignedInGamer.PartySize&lt;/STRONG&gt;プロパティの内容で判断できます。&lt;/P&gt;
&lt;P&gt;次回からは、これらの新機能の詳しく紹介していきます。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9727245" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category></item><item><title>ローカライゼーション・サンプル</title><link>http://blogs.msdn.com/ito/archive/2008/11/17/localization-sample.aspx</link><pubDate>Mon, 17 Nov 2008 13:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9109153</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ito/comments/9109153.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=9109153</wfw:commentRss><description>&lt;P&gt;Creators Club Onlineに以下の３つの新しいサンプルが追加されました。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A target=_blank href="http://creators.xna.com/en-US/sample/localization" mce_href="http://creators.xna.com/en-US/sample/localization"&gt;ローカライゼーション サンプル(Localization)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A target=_blank href="http://creators.xna.com/en-US/sample/safearea" mce_href="http://creators.xna.com/en-US/sample/safearea"&gt;セーフエリア サンプル(Safe Area)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A target=_blank href="http://creators.xna.com/en-US/sample/invites" mce_href="http://creators.xna.com/en-US/sample/invites"&gt;招待 サンプル(Invites)&lt;/A&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;一気に紹介すると長くなるので、三回に分けてそれぞれのサンプルを紹介していきます。今回はローカライゼーション サンプルについて紹介します。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ローカライゼーション&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;コミュニティゲームでゲームを投稿する場合、配信地域を選ぶことができます。現状ではアメリカ、カナダ、イギリス、フランス、イタリア、そしてスペインの６カ国で、2009年の前半には日本が加わり７カ国になります。世界の複数の国々の人達に自分の作ったゲームを楽しんで貰うためには必要な作業としてローカライズがあります。そこで、このサンプルではローカライズされた文字列とアセットの使い方のコードが含まれています。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ローカライズされた文字列表示&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;このサンプルでは言語別のリソースファイル(.resxファイル)を用意し、ゲームクラスコンストラクタの中で実行環境の言語情報を以下のコードのように指定して文字列を変更しています。&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Strings&lt;/SPAN&gt;.Culture = &lt;SPAN style="COLOR: #2b91af"&gt;CultureInfo&lt;/SPAN&gt;.CurrentCulture;&lt;BR&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;SpriteFontDescriptionクラスから派生したLocalizedFontDescriptionクラスに複数のリソースファイルを指定できるようになっていて、ここに各言語の文字列が入ったリソースファイルを指定し、コンテント･パイプライン内でLocalizedFontProcessorによって変換されます。&lt;/P&gt;
&lt;P&gt;言語別のリソースファイルは、&lt;STRONG&gt;リソース名.言語コード.resx&lt;/STRONG&gt;のようになっています。このサンプルではリソース名がStringsになっていて日本語のリソースファイル名は&lt;STRONG&gt;Strings.ja.resx&lt;/STRONG&gt;となっています。この言語コードは&lt;A target=_blank href="http://ja.wikipedia.org/wiki/ISO_639" mce_href="http://ja.wikipedia.org/wiki/ISO_639"&gt;ISO 639-1&lt;/A&gt;で定義されているアルファベット２文字になっています。&lt;/P&gt;
&lt;P&gt;殆どの場合は言語コードを指定するだけで済むのですが、言語コードだけでは足りなくなる場合もあります。例えば、同じ英語でもアメリカの場合はcolorでもイギリスの場合はcolourと違いがあります。その場合は言語コードと国名コードの組み合わせを使います。国名コードは&lt;A target=_blank href="http://ja.wikipedia.org/wiki/ISO_3166-1" mce_href="http://ja.wikipedia.org/wiki/ISO_3166-1"&gt;ISO 3166-1&lt;/A&gt;で定義されているアルファベット２文字を使います。アメリカの英語の場合は&lt;STRONG&gt;en-US&lt;/STRONG&gt;、イギリスの英語の場合は&lt;STRONG&gt;en-GB&lt;/STRONG&gt;となります。&lt;/P&gt;
&lt;P&gt;この&lt;STRONG&gt;言語コード-国名コード&lt;/STRONG&gt;の組み合わせをカルチャ名と呼び、カルチャを表すCultureInfoクラスを生成する時に以下のコードのようにして使用します。&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Strings&lt;/SPAN&gt;.Culture = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;CultureInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"en-GB"&lt;/SPAN&gt;);&lt;BR&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;ローカライズされたアセット読み込み&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ローカライズ作業の大半は文章の翻訳になりますが、中にはテクスチャ等のアセット自体をローカライズしたい時があります。このサンプルでは読み込むアセット名を前述のリソースファイル名と同じように、&lt;STRONG&gt;アセット名.カルチャ名&lt;/STRONG&gt;の組み合わせであることを前提として使うGetLocalizedAssetNameメソッドがゲームクラスに宣言されていて、国別の国旗テクスチャを変更しています。&lt;/P&gt;
&lt;P&gt;以下はコミュニティゲームがサポートする国と言語の表です。&lt;/P&gt;
&lt;TABLE border=1 cellSpacing=0 cellPadding=2 width=441&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;国名&lt;/TD&gt;
&lt;TD vAlign=top width=109&gt;公用語&lt;/TD&gt;
&lt;TD vAlign=top width=78&gt;言語コード&lt;/TD&gt;
&lt;TD vAlign=top width=81&gt;国名コード&lt;/TD&gt;
&lt;TD vAlign=top width=100&gt;カルチャ名&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;アメリカ&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;英語&lt;/TD&gt;
&lt;TD vAlign=top width=79&gt;en&lt;/TD&gt;
&lt;TD vAlign=top width=81&gt;US&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;en-US&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;カナダ&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;英語、フランス語&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;en,fr&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;CA&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;en-CA,fr-CA&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;イギリス&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;英語&lt;/TD&gt;
&lt;TD vAlign=top width=81&gt;en&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;GB&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;en-GB&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;フランス&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;フランス語&lt;/TD&gt;
&lt;TD vAlign=top width=81&gt;fr&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;FR&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;fr-FR&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;イタリア&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;イタリア語&lt;/TD&gt;
&lt;TD vAlign=top width=81&gt;it&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;IT&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;it-IT&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;スペイン&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;スペイン語&lt;/TD&gt;
&lt;TD vAlign=top width=81&gt;es&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;ES&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;es-ES&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=71&gt;日本&lt;/TD&gt;
&lt;TD vAlign=top width=108&gt;日本語&lt;/TD&gt;
&lt;TD vAlign=top width=82&gt;ja&lt;/TD&gt;
&lt;TD vAlign=top width=80&gt;JP&lt;/TD&gt;
&lt;TD vAlign=top width=99&gt;ja-JP&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;特徴として、カナダでは公用語が英語とフランス語の２つの言語が使われていることです。&lt;/P&gt;
&lt;P&gt;このサンプルは複数の言語へのローカライズの参考にもなりますが、リソースファイルを使った日本語表示の方法としても参考になるサンプルだと思います。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9109153" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/Xbox360/default.aspx">Xbox360</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B230FC30E0308B957A76_/default.aspx">ゲーム開発</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+3.0/default.aspx">XNA 3.0</category><category domain="http://blogs.msdn.com/ito/archive/tags/Windows/default.aspx">Windows</category></item><item><title>PIXを活用する　その２</title><link>http://blogs.msdn.com/ito/archive/2008/11/06/pix-02.aspx</link><pubDate>Fri, 07 Nov 2008 07:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9051448</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ito/comments/9051448.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=9051448</wfw:commentRss><description>&lt;P&gt;&lt;A target=_blank href="http://blogs.msdn.com/ito/archive/2008/10/29/pix-01.aspx" mce_href="http://blogs.msdn.com/ito/archive/2008/10/29/pix-01.aspx"&gt;前回に続いて&lt;/A&gt;PIXの機能と、私が実際にどんな状況でPIXを使って来たかを交えて紹介します。&lt;/P&gt;
&lt;P&gt;ちなみにPIXはピクスと呼びます。たまにピックスと呼ぶ人もいますが私のまわりではピクスが多いです。&lt;/P&gt;
&lt;P&gt;RenderウィンドウからDebug This Pixelメニューを使って表示されるDebuggerタブで、前回はDebug VertexやDebug Pixelをクリックしてのシェーダーのデバッグを紹介しましたが、今回はEvent部分をクリックして表示される情報について説明します。&lt;/P&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix15_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix15_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=pix15 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix15_thumb.png" width=644 height=189 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix15_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Debuggerタブ内のそれぞれのピクセル情報の上の部分には、そのピクセルを描画したイベントが表示されます。上の場合は&lt;STRONG&gt;DrawIndexedPrimitive&lt;/STRONG&gt;となっています。ここをクリックすると、左下にあるイベントウィンドウ内で該当するイベントが選択されます。&lt;/P&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=pix13 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_thumb.png" width=644 height=103 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;STRONG&gt;描画順序のチェック&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;PIXは描画に関する全てのイベントとその情報を記憶しているので、好きなイベントを選択することで描画の課程を調べることができます。これはVisual Studio上でブレークポイントを設定するといった未来時間一方向へのデバッグに対して、PIXではキャプチャーしたフレーム内での時間を自由に移動できるデバッグをすることができます。&lt;/P&gt;
&lt;P align=left&gt;イベントを選択した状態でRenderタブを選択すると、選択されたイベント処理が終わった直後の描画結果、つまりフレーム描画の途中結果を見ることができます。 &lt;/P&gt;
&lt;P align=left&gt;不透明のオブジェクトを描画する場合、手前から奥にむけて順に描いていくのが効果的なのですが、普通にゲームをプレイしている限りでは描画順序は判らないし、描画コードを追いかけるのにも負担が掛かります。PIXを使うとそういった描画順序をここで簡単に確認できます。例えば、おっさんを描いている途中のこの段階で、遠景によく使われるスカイドームのオブジェクトが既に描画されている場合は、最後に書くべきスカイドームが先に描画されているという問題を発見することができます。&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix16_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix16_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=pix16 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix16_thumb.png" width=644 height=444 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix16_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;STRONG&gt;Meshデータの表示&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;Draw系のイベントを選択した時、&lt;STRONG&gt;Meshタブ&lt;/STRONG&gt;にはその描画がどの様に行われたかの詳細な情報が表示されます。Meshタブの上の方には三つのワイヤーフレーム画面が表示され、左から順に以下のようになっています。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;Pre-Vertex Shader&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;Post-Vertex Shader&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;Viewport&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix08_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix08_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=pix08 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix08_thumb.png" width=644 height=414 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix08_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;Pre-Vertex Shader画面には頂点シェーダーに送られる頂点、通常はローカル座標のモデルが表示されます。Post-Vertex Shader画面には頂点シェーダー処理後、つまり射影座標内でのモデルが表示されます。そして最後は透視変換後のビューポート座標でのモデルが表示されるViewport画面となっています。&lt;/P&gt;
&lt;P align=left&gt;そして、それら三つの画面の下には頂点シェーダーに入力頂点のリストを表示する&lt;STRONG&gt;PreVS&lt;/STRONG&gt;タブと、頂点シェーダー処理後の頂点リストを表示する&lt;STRONG&gt;PostVSタブ&lt;/STRONG&gt;があります。&lt;/P&gt;
&lt;P align=left&gt;頂点シェーダーを書いている場合に良くあるのが頂点変換ミスです。この場合、画面に変な形のモデルが表示されている場合は頂点シェーダーに問題があるというのはすぐに判るのですが、画面に何も表示されない場合は頂点変換ミスの他にもピクセルシェーダー内でのミスという場合もあるので、Viewport画面にちゃんと表示されているかを確認することで、頂点シェーダー、ピクセルシェーダーのどちらに問題があるかを絞り込む事ができます。&lt;/P&gt;
&lt;P&gt;頂点リスト内の頂点はクリックして選択することができ、選択された頂点は下図の様にモデル表示画面内と頂点リスト内で黄色で表示されます。また、頂点リスト内では選択された頂点が属する三角形の他の頂点が赤色で表示されます。&lt;/P&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix14_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix14_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=pix09 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix09_3.png" width=514 height=357 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix09_3.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Deviceのステートの表示&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Meshタブ内で頂点シェーダーが正しく動作しているのを確認したけど、まだモデルが表示されない。そんな時に調べるのがDeviceステートです。この情報はEventsウィンドウに表示されているイベントの左側にある数字(下図の黄色い部分)をダブルクリックすることで表示されます。&lt;/P&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=pix13 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_thumb.png" width=644 height=103 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix13_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;Detailsウィンドウには新たに&lt;STRONG&gt;Deviceタブ&lt;/STRONG&gt;が追加表示されます。このDeviceタブの中には更に複数のタブが追加されます。それぞれのタブにはカテゴリ別のDeviceのステート情報が記載されています。&lt;/P&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix14_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix14_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=pix14 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix14_thumb.png" width=644 height=412 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix14_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;私がここでよく使うのは&lt;STRONG&gt;Pixel Stateタブ&lt;/STRONG&gt;と&lt;STRONG&gt;Output State&lt;/STRONG&gt;タブです。Pixel Stateタブ内ではCullingやViewport、そしてAlphaテストなどの情報が役に立ちます。特にCullingが逆になっているとモデルがちゃんと表示されないし、Alphaテストに間違った値を設定しているとモデルが全く表示されないということもあります。また、Samplersセクションでは、どんなテクスチャが設定されているかを調べることができます。このSamplers部分で設定されているテクスチャの数字をダブルクリックすると、以下の様に設定されているテクスチャの詳細を見ることができます。&lt;/P&gt;
&lt;P align=center&gt;&lt;A target=_blank href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix17_2.png" mce_href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix17_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=pix17 src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix17_thumb.png" width=644 height=476 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX02_11991/pix17_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;グロスマッピング、ディテールテクスチャといった、描画結果への反映が少ないようなテクスチャや、テクスチャに色以外の情報を入れている場合はここで調べたりしています。&lt;/P&gt;
&lt;P&gt;Output Stateタブ内ではデプステストの有無、ブレンディングステートを調べるのに使っています。特にアルファブレンドを使っている場合の見た目では判りづらいステートの違いはここで調べています。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PIXを活用しよう&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;急ぎ足でしたが、二回に渡ってPIXの機能を紹介しました。2Dゲームと違って3Dの場合は実に様々なステートがあり、2Dゲームの場合はトライ＆エラーでどうにかなった問題も3Dゲームの場合はトライ＆エラーをするには時間が掛かりすぎてしまいます。そういった問題を解決するのにPIXは非常に強力なツールです。シェーダーのサンプルは沢山ありますが、シェーダーサンプル単体では問題なく動いたのにゲームに組み込んでみたら、動かなくなったなんて話を良く聞きます。そんな時にもPIXを使うと、なぜ動かないのかを調べることができます。&lt;/P&gt;
&lt;P&gt;また、Xbox 360向けに開発している場合でも、開発しているPCにShader Model 3.0のビデオカードがあれば、Windows用のプロジェクトに変換して実行できるようにしておけば、殆どの場合は描画に関するデバッグは問題なくできます。そのままデバッグできない例としてはXbox 360限定のvfetchを使った場合ですが、vfetchはあくまで頂点データのフェッチ用の命令なので、シェーダー全体のコード量に比べると非常に小さく、頂点データをフェッチした後のシェーダーはWindows上でもデバッグできます。&lt;/P&gt;
&lt;P&gt;私は、初代Xboxの頃からPIXを使って７年くらい経ちますが、今では描画に問題があったらすぐにPIXを立ち上げて調査するというのが習慣化していて、私にとってPIXはゲーム開発に必須のツールとなっています。&lt;/P&gt;
&lt;P&gt;綺麗な絵を出すシェーダープログラミングに比べると地味なものですが、これを機にPIXに触れてもらえば幸いです。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9051448" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B230FC30E0308B957A76_/default.aspx">ゲーム開発</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B030E930D530A330AF30B930_/default.aspx">グラフィクス</category><category domain="http://blogs.msdn.com/ito/archive/tags/Windows/default.aspx">Windows</category></item><item><title>PIXを活用する　その１</title><link>http://blogs.msdn.com/ito/archive/2008/10/29/pix-01.aspx</link><pubDate>Thu, 30 Oct 2008 05:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9023470</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ito/comments/9023470.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=9023470</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;PIXとは&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;3Dゲームを開発している時に必ずといってあるのが、モデルが意図しない状態で表示されるという問題です。「色が変」や「形が変」と言う比較的原因が予想しやすい問題から「画面になにも出ない」といった原因を判断するのが困難な場合まで様々な問題があります。特にシェーダープログラムを使っているとこういった問題に直面する機会は多くなります。&lt;/p&gt; &lt;p&gt;こういった問題の原因を見つけるのに非常に有用なツールとして、Direct X SDKに付属する&lt;strong&gt;PIX for Windows&lt;/strong&gt;があります。このツールは元々、初代Xbox用に開発されたPerformance Investigator for Xbox (PIX)だったのですが、これを使った人達からの強い要望でWindows版が作られました。&lt;/p&gt; &lt;p&gt;XNA FrameworkはDirect X上で動作しているので、XNA GS用に作られたゲームもPIX for Windowsを使うことができます。&lt;/p&gt; &lt;p&gt;PIXの主な機能としては&lt;/p&gt; &lt;ul&gt; &lt;li&gt;１フレーム、もしくは複数のフレームのレンダリング情報のキャプチャ  &lt;li&gt;レンダリングに使われたDirect Xの描画関連命令の表示  &lt;li&gt;リソース使用量の表示  &lt;li&gt;各段階でのグラフィクスリソースの状態表示  &lt;ul&gt; &lt;li&gt;レンダーステート  &lt;li&gt;テクスチャ、レンダーターゲット  &lt;li&gt;頂点情報  &lt;li&gt;シェーダー情報&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;シェーダーデバッガ&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;があります。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PIXの基本的な使い方&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ea4894b5-e98d-44f6-842d-e32147237638&amp;amp;displaylang=en" target="_blank" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ea4894b5-e98d-44f6-842d-e32147237638&amp;amp;displaylang=en"&gt;Direct X SDK&lt;/a&gt;をインストールした状態で(ここではAugust 2008を例にします)、スタートメニューから&lt;strong&gt;Microsoft DirectX SDK (August 2008)/DirectX Utilities/PIX for Windows&lt;/strong&gt;を選択してPIX for Windowsを起動します。&lt;/p&gt; &lt;p&gt;FileメニューからNew Experimentを選択すると以下の画面が表示されます。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix00_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="416" alt="pix00" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix00_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Program pathに対象となる実行ファイルを指定し、"A single-frame capture of Direct3D whenever F12 is pressed"のラジオボタンを選択して、右下にある"Start Experiment"ボタンを押すと、Program pathに指定した実行ファイルが実行されます。ここではSkinningSampleを使っています。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix01_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="384" alt="pix01" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix01_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;単独で実行させるのと違うのは、画面の左上にフレーム数などの情報が表示されています。キャプチャしたいシーンになったらF12キーを押してフレーム情報をキャプチャします。レンダリングするシーンの複雑さによってキャプチャに掛かる時間は変わってきます。&lt;/p&gt; &lt;p&gt;キャプチャした後にゲームを終了させると、PIX for Windowsに複数のウィンドウが表示されます。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix03_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="416" alt="pix03" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix03_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;この複数のウィンドウは上から順にCPUの作業時間をグラフで示す&lt;strong&gt;Timelineウィンドウ&lt;/strong&gt;、グラフィクスリソース確保状況を表示する&lt;strong&gt;Objectsウィンドウ&lt;/strong&gt;、左下はキャプチャしたフレーム内で起きたイベントを表示する&lt;strong&gt;Eventsウィンドウ&lt;/strong&gt;、そして右下が詳細を表示する&lt;strong&gt;Detailsウィンドウ&lt;/strong&gt;となっています。&lt;/p&gt; &lt;p&gt;ここで、Eventsウィンドウで調べたいフレームを選択したあとに、Detailsウィンドウ内の&lt;strong&gt;Renderタブ&lt;/strong&gt;をクリックすると以下の画面になります。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix04_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="416" alt="pix04" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix04_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;PIXをシェーダーデバッガとして使う&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;このRenderタブにはフレームのレンダリング結果が表示されます。また、Eventsウィンドウの選択したフレームを開くと中には複数のイベントが表示されていますが、ここにはXNA Frameworkではなく、Direct Xのイベントが表示されます。ここからデバッグしたいDrawIndexedPrimitiveメソッドを探し出すのは面倒なので、今回は簡単な方法を紹介します。&lt;/p&gt; &lt;p&gt;それはRenderタブに表示されている画面上でデバッグしたいモデルの場所で右クリックして表示されるメニューから&lt;strong&gt;Debug This Pixel...&lt;/strong&gt;を選択する方法です。ここでは、おっさんのアーマー部分を選択しました。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="275" alt="pix05" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX01_10C70/pix05_thumb.png" width="511" border="0" mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX01_10C70/pix05_thumb.png"&gt;&lt;/p&gt; &lt;p&gt;Debug This Pixel...を選択すると、Detailsウィンドウに&lt;strong&gt;Debuggerタブ&lt;/strong&gt;が追加され、選択したピクセルがどのようにレンダリングされたいるかの情報が表示されます。レンダリング開始時のフレームバッファーの色、クリアーした時の色、モデルをレンダリングしたときの色と、時系列に表示されています。もし、ここで表示されるリストが多い場合は重ね塗りが何度も起こっているのでフィルレートに影響しているということが判ります。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix06_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="416" alt="pix06" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix06_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;今回デバッグしたいのはおっさんのアーマー部分のシェーダーなので、リストの中からDrawIndexedPrimitiveメソッドを使って赤っぽくなっているピクセルを探します。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix07_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="453" alt="pix07" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix07_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;DrawIndexedPrimitiveを使っているピクセルでは、そのピクセルを描画するのに使われた三角形の各頂点の頂点シェーダー、そしてピクセルシェーダーをデバッグすることができます。ここでは&lt;strong&gt;"Debug Vertex 0"&lt;/strong&gt;をクリックして頂点シェーダーのデバッグをすることにします。"Debug Vertex 0"をクリックすると以下のように、Debuggerタブ内に更にシェーダーアセンブリを表示する&lt;strong&gt;Disassemblyタブ&lt;/strong&gt;、ソーソコードを表示するタブ(ここではSkinnedModel.fx)が表示されます。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix11_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="pix11" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix11_thumb.png" width="578" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ここで、ソースコードをPIX上で表示するにはシェーダーソースコードにコンパイル元のファイル情報が記載されている必要があります。XNA Frameworkではデバッグ設定でシェーダーをコンパイルすると、この情報を自動的に追加するようになっているので、プロジェクトをデバッグ設定でコンパイルすることでPIX上でソースコードレベルでのデバッグができるようになっています。逆に言えば、アセンブリしか表示されない場合はプロジェクトのコンパイル設定がリリースになっているのが原因と思われます。&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix12_2.png" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="pix12" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/PIX_11131/pix12_thumb.png" width="574" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Visual Studio上で提供されているデバッグ機能には及ばないにしても、ステップ実行や実行後の変数の状態表示など、デバッグするのに必要最低限の機能はあるので、シェーダーコードのデバッグをするのに大いに役立ちます。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;PIXをシェーダーデバッガとして使うときの注意点&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ソースコードレベルでのデバッグをするときには、プロジェクトをデバッグ設定でコンパイルする&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;次回に続く&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023470" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B230FC30E0308B957A76_/default.aspx">ゲーム開発</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B030E930D530A330AF30B930_/default.aspx">グラフィクス</category><category domain="http://blogs.msdn.com/ito/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.msdn.com/ito/archive/tags/_C730D030C330B030_/default.aspx">デバッグ</category></item><item><title>XNA 2.0のコンテントパイプライン～その壱～</title><link>http://blogs.msdn.com/ito/archive/2007/12/20/xna20-content-pipeline-0.aspx</link><pubDate>Fri, 21 Dec 2007 04:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6822815</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/6822815.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=6822815</wfw:commentRss><description>&lt;H2&gt;コンテントプロジェクト&lt;/H2&gt;
&lt;P&gt;XNA 2.0のプロジェクジェクトをソリューションエクスプローラで見ると以下のようになっています。&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=291 alt=subproject src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/xna20contentpipeline0_F543/subproject_3.png" width=488 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/xna20contentpipeline0_F543/subproject_3.png"&gt;&lt;/P&gt;
&lt;P&gt;参照設定の項目が二つあることに気づいたでしょうか？これは&lt;STRONG&gt;Content&lt;/STRONG&gt;がWindowsGame1のサブプロジェクトになっているからです。XNA 2.0では、このサブプロジェクト内にコンテントを追加します。その他にも、以前まではメインプロジェクトに記述されていたコンテントに関する情報、例えばコンテントがどのようにインポートされプロセスされるかの情報、カスタマイズされたコンテントパイプラインアセンブリの参照などが含まれます。&lt;/P&gt;
&lt;P&gt;以前はWindows、Xbox 360の両対応のゲームを開発している時に、XNA 1.0ではそれぞれのプロジェクトに同じコンテントを追加しないといけませんでした。それだけでもコンテントの管理が面倒だったのですが、XNA 2.0になってプロセッサプロパティ対応になったので、細かいパラメーター設定まで両方のプラットフォームのプロジェクトで設定しないというのは面倒であり、エラーの原因にもなります。&lt;/P&gt;
&lt;P&gt;そこで、XNA 2.0ではWindows、Xbox 360の両プラットフォームでコンテント情報を共有するための仕組みとしてできたのがコンテントサブプロジェクトです。&lt;/P&gt;
&lt;P&gt;XNA 2.0ではWindowsプロジェクトを作ったときにプロジェクトの右クリックメニューで&lt;STRONG&gt;「Create Copy of Project for Xbox 360...」&lt;/STRONG&gt;を選択すると、Windosプロジェクトを元にしてXbox 360用のプロジェクトを作ることができます。この時、両方のプロジェクトにコンテントプロジェクトが存在しますが実際には同じサブプロジェクトを参照しているだけです。&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=294 alt=untitled src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/xna20contentpipeline0_F543/untitled_3.png" width=400 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/xna20contentpipeline0_F543/untitled_3.png"&gt;&lt;/P&gt;
&lt;P&gt;コンテントプロジェクトを共有している訳ですから、Windowsのコンテントプロジェクトにコンテントを追加すると、同じコンテントがXbox 360側のコンテントプロジェクトにも追加されるようになっています。これでWindows、Xbox 360両対応のゲームを作る時の手間が大幅に減ることになります。&lt;/P&gt;
&lt;H2&gt;コンテントプロジェクトの実体&lt;/H2&gt;
&lt;P&gt;このコンテントプロジェクト、テンプレートを使ってゲームプロジェクトを作った場合、&lt;STRONG&gt;「プロジェクトフォルダ\Content」&lt;/STRONG&gt;フォルダ内に&lt;STRONG&gt;Content.contentproj&lt;/STRONG&gt;というファイル名で作られます。&lt;/P&gt;
&lt;P&gt;このファイル中身は知らない人には単なるXMLファイルのように見えますが、Visual Studio 2005から採用された新しいビルトツールであるMSBuildのプロジェクトになっています。Visual Studio 2005やVisual C# Express上でビルドした場合、裏ではMSBuildがビルドする仕事を担っています。&lt;/P&gt;
&lt;P&gt;実は普段目にしている&lt;STRONG&gt;.csproj&lt;/STRONG&gt;ファイルもMSBuild用のプロジェクトファイルになっているのでパスの通っている状態でコマンドラインから&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;msbuild.exe myproject.csproj&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;と、タイプするとC#のプロジェクトをビルドすることができます。もちろん、Content.contentprojファイルも単独でビルドすることができます。つまり、コンテントビルドだけを単独で行うことができるわけです。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;「コマンドラインなんて普段使わないから、関係ないのでは」&lt;/STRONG&gt;と思う人もいるかもしれませんが、この仕組みを利用して以前紹介した&lt;A href="http://blogs.msdn.com/ito/archive/2007/05/07/content-pipeline-part4.aspx" target=_blank mce_href="http://blogs.msdn.com/ito/archive/2007/05/07/content-pipeline-part4.aspx"&gt;コンテントパイプラインのデバッグ&lt;/A&gt;をする第3の方法に使える訳です。&lt;/P&gt;
&lt;P&gt;この方法はVisual Studio 2005上でしか使えませんが、コンテントパイプライン拡張用のプロジェクトのプロパティ画面のデバッグ設定を以下のように変更することでコードに変更を加えることなくデバッグすることができます。&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;外部プログラムの開始にMSBuild.exeを指定する。(私の環境では&lt;STRONG&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe&lt;/STRONG&gt;となっていました)&lt;/LI&gt;
&lt;LI&gt;コマンドライン引数にデバッグ対象となるContent.cotentprojファイルをフルパスで指定する&lt;/LI&gt;
&lt;LI&gt;コンテントパイプライン拡張用のプロジェクトを実行する(右クリック/デバック/新しいインスタンスを開始) &lt;BR&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=483 alt=debugProcessor src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/xna20contentpipeline0_F543/debugProcessor_3.png" width=741 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/xna20contentpipeline0_F543/debugProcessor_3.png"&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;これで、カスタムプロセッサのデバッグなどを普通のプロジェクトをデバッグする時と同じようにデバッグすることができます。デバッグ設定は一度設定すれば後は変更する頻度は少ないので、コードを変更する必要のある他の手法に比べるとお手軽かもしれません。&lt;/P&gt;
&lt;P&gt;デフォルトではプラットフォームはWindows、Debug状態の設定でビルトが行われます。プラットフォームを変更したい場合はコマンドライン引数でファイル名を指定する前にWindowsならば&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;/p:XnaPlatform=Windows&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Xbox 360の場合は&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;/p:XnaPlatform="Xbox 360"&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;と、指定することで異なるプラットフォームでのコンテントビルドをすることができます。&lt;/P&gt;
&lt;P&gt;デバッグ、リリースの変更は&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;/p:BuildConfiguration=Debug&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;または&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;/p:BuildConfiguration=Release&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;と、することで変更することができます。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6822815" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B330F330C630F330C830FB30D130A430D730E930A430F330_/default.aspx">コンテント・パイプライン</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+2.0/default.aspx">XNA 2.0</category></item><item><title>XNA Game Studio 2.0がリリース</title><link>http://blogs.msdn.com/ito/archive/2007/12/13/xna20-released.aspx</link><pubDate>Fri, 14 Dec 2007 04:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6766605</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/6766605.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=6766605</wfw:commentRss><description>&lt;P&gt;と、言うわけでXNA Game Studio 2.0がリーリスされました。&lt;/P&gt;
&lt;P&gt;以下のリンクからダウンロードできます。&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.microsoft.com/downloads/details.aspx?FamilyId=DF80D533-BA87-40B4-ABE2-1EF12EA506B7&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DF80D533-BA87-40B4-ABE2-1EF12EA506B7&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=DF80D533-BA87-40B4-ABE2-1EF12EA506B7&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=DF80D533-BA87-40B4-ABE2-1EF12EA506B7&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;インストール時の注意としてはXNA 2.0のベータ版をアンインストールしてからリリース版をインストールしてください。このとき、Games for Windows Live Redistもアンインストールするのを忘れないでください。&lt;/P&gt;
&lt;P&gt;その他は&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GSE 1.0をアンイーストールしなくても 2.0を使える(Side-by-Side) &lt;/LI&gt;
&lt;LI&gt;Visual Studio 2005はもちろん、C# Express 2005上でも使える。でもVisual Studio 2008には未対応 &lt;/LI&gt;
&lt;LI&gt;GSE 1.0のプロジェクトは&lt;A href="http://creators.xna.com/gamestudio2/UpgradeWizardSetup.msi" mce_href="http://creators.xna.com/gamestudio2/UpgradeWizardSetup.msi"&gt;Project Upgrade Wizard for XNA Game Studio 2.0&lt;/A&gt;で2.0用に更新できる 
&lt;UL&gt;
&lt;LI&gt;使い方は&lt;A href="http://creators.xna.com/GameStudio2/ProjectUpgradeWizardForXNAGameStudio2.htm" mce_href="http://creators.xna.com/GameStudio2/ProjectUpgradeWizardForXNAGameStudio2.htm"&gt;こちら(英文)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Xbox 360上でXNA 2.0のゲーム開発や遊ぶ為にはXNA Game Studio Connectを使う(要XNAクリエータークラブ会員)&lt;/LI&gt;
&lt;LI&gt;Xbox Live、またはGames for Windows Liveを利用したゲームを作るのにも遊ぶのにも&lt;STRONG&gt;Liveゴールド会員&lt;/STRONG&gt;であることと&lt;STRONG&gt;XNAクリエータークラブ会員&lt;/STRONG&gt;である必要がある&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;といった感じです。&lt;/P&gt;
&lt;P&gt;ネットワークゲームの開発環境としてはクリエータークラブ会員である場合はXbox 360とWindowsマシンをLAN接続している環境、つまりXbox 360用ゲームを開発できる環境があればXbox 360、Windows間で遊べるネットワークゲームを作ることができます。&lt;/P&gt;
&lt;P&gt;クリエータークラブ会員でなくとも、Windowsマシンを2つ用意してLAN接続することで実現できます。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6766605" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category><category domain="http://blogs.msdn.com/ito/archive/tags/Xbox360/default.aspx">Xbox360</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+2.0/default.aspx">XNA 2.0</category></item><item><title>XNA Game Studio 2.0の細かな修正点</title><link>http://blogs.msdn.com/ito/archive/2007/11/28/xna-game-studio-2-0-small-changes.aspx</link><pubDate>Thu, 29 Nov 2007 04:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6588752</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/6588752.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=6588752</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/shawnhar/archive/2007/11/21/lots-of-little-improvements-in-xna-game-studio-2-0.aspx" target=_blank mce_href="http://blogs.msdn.com/shawnhar/archive/2007/11/21/lots-of-little-improvements-in-xna-game-studio-2-0.aspx"&gt;Shawn Hargreaves氏のブログ&lt;/A&gt;から拝借+ちょっと補足説明&lt;/P&gt;
&lt;P&gt;XNA Game Studio 2.0になって追加、または修正された細かな機能を紹介します。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GamePadState.IsButtonDownとIsButtonUpメソッドの追加&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;今まではコントローラーのボタンが押されているかの判定はButtons.A == ButtonState.Pressedと言う様に長いコードを書かなければいけませんでした。特に複数のボタンのいずれかが押されているケースを判定するのには以下のようなコードになってしまいました。&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// AボタンもBボタンもXボタンも全部ジャンプだ！！
&lt;/SPAN&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;if&lt;/SPAN&gt; (padState.Buttons.A == &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;ButtonState&lt;/SPAN&gt;.Pressed ||
        padState.Buttons.B == &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;ButtonState&lt;/SPAN&gt;.Pressed ||
        padState.Buttons.X == &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;ButtonState&lt;/SPAN&gt;.Pressed )
        Jump();
&lt;/PRE&gt;
&lt;P&gt;XNA GS 2.0で追加されたIsButtonDownとIsButtonUpメソッドを使うことによって以下のようにスッキリとしたコードを書くことができます。&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;if&lt;/SPAN&gt; ( padState.IsButtonDown(&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Buttons&lt;/SPAN&gt;.A|&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Buttons&lt;/SPAN&gt;.B|&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Buttons&lt;/SPAN&gt;.X) )
        Jump();
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Keyboard.GetState(PlayeIndex player)オーバーロードの追加&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;このオーバーロードメソッドを使うことで、Xbox 360コントローラーにつけることのできる&lt;A href="http://www.xbox.com/ja-JP/hardware/x/xbox360messengerkit/" target=_blank mce_href="http://www.xbox.com/ja-JP/hardware/x/xbox360messengerkit/"&gt;チャットパッド&lt;/A&gt;からの入力を取得することができます。以前の引数なしのメソッドを呼んだ場合はPlayerIndex.Oneを指定するのと同じ動作をします。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Audio.Cueの再生が途切れてしまう問題の解消&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;これは、1.0では参照されていないCueのインスタンスがガーベージコレクションが発生した場合、音声の再生の途中に関わらずに破棄されてしまい、その段階で音声が途切れてしまうという不具合がありました。、2.0ではCue.Finalizer内で音声再生中はインスタンスが破棄されないようにすることで解決しています。&lt;/P&gt;
&lt;P&gt;この問題は特に3Dオーディオを再生する場合、Cueに対してリスナーとエミッターを関連付けるときに&lt;/P&gt;&lt;PRE class=code&gt;    &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Cue&lt;/SPAN&gt; cue = soundBank.GetCue(&lt;SPAN style="COLOR: rgb(163,21,21)"&gt;"fire"&lt;/SPAN&gt;);
    cue.Apply3D( listener, emitter );
&lt;/PRE&gt;
&lt;P&gt;のようなコードを書く必要があり、このcueのインスタンスを保持するというのが面倒な作業になっていました。&lt;/P&gt;
&lt;P&gt;2.0ではこの問題を解決し、上のように書いた場合でも問題なく動作するようになりました。また、SoundBank.PlayCue(string name, Listener listner, Emitter emitter)メソッドが追加されたので、簡単に3Dオーディオをサポートした効果音を再生することができます。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;フレームワーク内での不要なメモリ確保の削除&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;不要なメモリ確保をすることはガーベージコレクションの頻繁な発生につながり、結果的にパフォーマンス低下に繋がります。特に世代別GCを実装していないXbox 360上では大きな問題になります。&lt;/P&gt;
&lt;P&gt;2.0ではフレームワーク内で不必要なメモリ確保している部分の修正をしました。&lt;/P&gt;
&lt;P&gt;簡単なところでは&lt;STRONG&gt;GamePad.GetState&lt;/STRONG&gt;、&lt;STRONG&gt;SpriteBatch.DrawString&lt;/STRONG&gt;メソッド内でメモリ確保しないようになりました。SpriteBatch.DrawString内では、&lt;STRONG&gt;Dictionary&amp;lt;K,T&amp;gt;&lt;/STRONG&gt;を使って実装していたのですが、キーがバリュータイプだと不要なメモリ確保がXbox 360上で発生することがありました。興味深いのはデバッガ使用時と、未使用時でJITが生成するコードに違いがあり、デバッガ上で実行させるとボクシングが発生することがあります。ですから、GCの発生の有無を調べる場合はF5ではなく、&lt;STRONG&gt;Ctrl+F5&lt;/STRONG&gt;で実行することをお勧めします。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ModelMeshCollection&lt;/STRONG&gt;、&lt;STRONG&gt;ModelMeshPartCollection&lt;/STRONG&gt;、&lt;STRONG&gt;ModelEffectCollection&lt;/STRONG&gt;、そして&lt;STRONG&gt;ModelBoneCollection&lt;/STRONG&gt;クラスの&lt;STRONG&gt;GetEnumerator&lt;/STRONG&gt;メソッドの実装がIEnumeratorを返す代わりに、Enumerator構造体を返すように実装されました。&lt;/P&gt;
&lt;P&gt;これはモデルを描画するのによく使われるパターンとして&lt;/P&gt;&lt;PRE class=code&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;ModelMesh&lt;/SPAN&gt; mesh &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;in&lt;/SPAN&gt; model.Meshes)
    {
        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Effect&lt;/SPAN&gt; effect &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;in&lt;/SPAN&gt; mesh.Effects)
        {
            &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;BasicEffect&lt;/SPAN&gt; be = effect &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(43,145,175)"&gt;BasicEffect&lt;/SPAN&gt;;
            &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;if&lt;/SPAN&gt; (be != &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;null&lt;/SPAN&gt;)
            {
                be.Projection = proj;
                be.View = view;
            }
        }
        mesh.Draw();
    }
&lt;/PRE&gt;
&lt;P&gt;のように&lt;STRONG&gt;foreach&lt;/STRONG&gt;を多用します。この時、コレクションがIEnumeratorを返すと暗黙的なメモリ確保が発生してしまいます。&lt;BR&gt;せっかく便利なforeach文なのに、GCを避けるためにわざわざfor文に書き換える必要がありましたが、2.0ではforeachを使ってもメモリ確保は発生しません。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SpriteFontのカーニングサポート&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;カーニング(Kerning)とは、英数字で&lt;STRONG&gt;WAIT&lt;/STRONG&gt;のような文字を表示したときに全体の見た目のバランスを取るためにAとWの間を意図的に狭めるような処理のことです。これはspritefontファイル内に&lt;STRONG&gt;&amp;lt;UseKerning&amp;gt;ture&amp;lt;/UseKerning&amp;gt;&lt;/STRONG&gt;を指定することで設定できます。spritefontファイルで何も指定しない場合はカーニング処理をしないので、1.0で作ったファイルをカーニングさせるのには&lt;STRONG&gt;UseKerning&lt;/STRONG&gt;エレメントを追加して&lt;STRONG&gt;Spacing&lt;/STRONG&gt;の値を0することをお勧めします。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6588752" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category><category domain="http://blogs.msdn.com/ito/archive/tags/Xbox360/default.aspx">Xbox360</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+2.0/default.aspx">XNA 2.0</category></item><item><title>XNA Game Studio 2.0ベータ</title><link>http://blogs.msdn.com/ito/archive/2007/11/20/xna-game-studio-2-0-beta.aspx</link><pubDate>Tue, 20 Nov 2007 22:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6441566</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ito/comments/6441566.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=6441566</wfw:commentRss><description>&lt;P&gt;2007/11/28追記:メールでの解除キー取得はベータ版でのテストのみに必要です。リリース版では解除キー取得の必要はありません&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/beta/betahome.aspx" target=_blank mce_href="http://creators.xna.com/beta/betahome.aspx"&gt;XNA Game Studio 2.0のベータ版&lt;/A&gt;がリリースされました。日本語での概要は&lt;A href="http://blogs.msdn.com/xnajapan/archive/2007/11/20/xna-game-studio-2-0-beta.aspx" target=_blank mce_href="http://blogs.msdn.com/xnajapan/archive/2007/11/20/xna-game-studio-2-0-beta.aspx"&gt;XNA Japan Team Blog&lt;/A&gt;に載っています。&lt;/P&gt;
&lt;P&gt;最初のリンクは英語ですが、今まで&lt;A href="http://creators.xna.com/beta/betaexistingusers.aspx" target=_blank mce_href="http://creators.xna.com/beta/betaexistingusers.aspx"&gt;XNA GSEを使っていた人&lt;/A&gt;、&lt;A href="http://creators.xna.com/beta/betanewtoxna.aspx" target=_blank mce_href="http://creators.xna.com/beta/betanewtoxna.aspx"&gt;初めて使い始める人&lt;/A&gt;のためのセットアップの仕方が載っています。直ぐにダウンロードしたい人は以下のリンクから。&lt;/P&gt;
&lt;P&gt;&lt;A class="" title=http://www.microsoft.com/downloads/details.aspx?FamilyId=1A096AC7-AEC5-4CD0-9826-1F07EB26EEFD&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1A096AC7-AEC5-4CD0-9826-1F07EB26EEFD&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1A096AC7-AEC5-4CD0-9826-1F07EB26EEFD&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=1A096AC7-AEC5-4CD0-9826-1F07EB26EEFD&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;基本的にそのままインストールするだけで使えるようになりますが、以下に幾つかの注意点などを書いておきます。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GSE 1.0をアンイーストールしなくても 2.0を使える(Side-by-Side)&lt;/LI&gt;
&lt;LI&gt;Visual Studio 2005はもちろん、C# Express 2005上でも使える。でもVisual Studio 2008には未対応&lt;/LI&gt;
&lt;LI&gt;GSE 1.0のプロジェクトは&lt;A href="http://creators.xna.com/beta/UpgradeWizardSetup.msi" target=_blank mce_href="http://creators.xna.com/beta/UpgradeWizardSetup.msi"&gt;Project Upgrade Wizard for XNA Game Studio 2.0 (Beta)&lt;/A&gt;で2.0用に更新できる&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;使い方は&lt;A href="http://creators.xna.com/beta/ProjectUpgradeWizardForXNAGameStudio2Beta.htm" target=_blank mce_href="http://creators.xna.com/beta/ProjectUpgradeWizardForXNAGameStudio2Beta.htm"&gt;こちら(英文)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Xbox 360のプログラムはベータ版では実行できない(ビルドはできる)&lt;/LI&gt;
&lt;LI&gt;Windows - LIVEを利用したゲームを作るには&lt;A href="http://blogs.msdn.com/xnajapan/archive/2007/11/20/xna-game-studio-2-0-beta.aspx" target=_blank mce_href="http://blogs.msdn.com/xnajapan/archive/2007/11/20/xna-game-studio-2-0-beta.aspx"&gt;解除キーを取得&lt;/A&gt;する必要がある(ベータ版のみ)&lt;/LI&gt;
&lt;LI&gt;ネットワーク対応のゲームの作り方は&lt;A href="http://creators.xna.com/beta/NetRumbleWindows.vsi" target=_blank mce_href="http://creators.xna.com/beta/NetRumbleWindows.vsi"&gt;Net Rumbleスターターキット&lt;/A&gt;が参考になる&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;といった感じです。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6441566" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+2.0/default.aspx">XNA 2.0</category></item><item><title>XNA 2.0のネットワーク機能</title><link>http://blogs.msdn.com/ito/archive/2007/11/19/xna-2-0-multiplayer.aspx</link><pubDate>Mon, 19 Nov 2007 23:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6410041</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/6410041.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=6410041</wfw:commentRss><description>&lt;P&gt;XNA TeamブログにXNA GS 2.0における&lt;A href="http://blogs.msdn.com/xna/archive/2007/11/16/xna-framework-networking-and-live-requirements.aspx" target=_blank mce_href="http://blogs.msdn.com/xna/archive/2007/11/16/xna-framework-networking-and-live-requirements.aspx"&gt;ネットワークサポートについての投稿&lt;/A&gt;がありました。元の投稿では各シナリオについて細かい説明がありますが、ここではできるだけシンプルなルールを書いていこうと思います。&lt;/P&gt;
&lt;P&gt;XNA Game Studio 2.0ではネットワーク対応のマルチプレイヤーゲームを作れるような仕組みが提供されます。このネットワークの接続形態はシステムリンクとLive!接続の二つがあります。&lt;/P&gt;
&lt;P&gt;システムリンクは、同じサブネット内同士でのマルチプレイヤーゲームを可能にします。一般的なのは同じネットワークハブにPC、Xbox 360を繋げた時に使うことができます。&lt;/P&gt;
&lt;P&gt;Live!接続ではXbox 360上ならばXbox Live!、Windows上ならばGames for Windows - LIVEを通す、つまりLive!サーバーを介してのマルチプレイヤーゲームを可能にします。離れた場所からのネットワーク接続を可能にする方法です。&lt;/P&gt;
&lt;P&gt;ここで注意しないといけないのはLive接続によってゲームを遊ぶ為にはXbox 360、Windowsの両方とも&lt;STRONG&gt;Liveゴールド会員&lt;/STRONG&gt;であることと&lt;STRONG&gt;XNAクリエーターズクラブ会員&lt;/STRONG&gt;である必要があるということです。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;マルチプレイヤーゲームを遊ぶのに必要なものをまとめると以下の用になっています。&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=436 align=center border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" width=110&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="" width=161&gt;システムリンク&lt;/TD&gt;
&lt;TD class="" width=163&gt;Live&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=113&gt;Windows&lt;/TD&gt;
&lt;TD class="" width=160&gt;なし&lt;/TD&gt;
&lt;TD class="" width=163&gt;Liveゴールド、&lt;STRONG&gt;XNA CC&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" width=115&gt;Xbox 360&lt;/TD&gt;
&lt;TD class="" width=159&gt;XNA CC&lt;/TD&gt;
&lt;TD class="" width=163&gt;Liveゴールド、XNA CC&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;注:XNA CCはXNAクリエーターズクラブの略&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;WindowsでのLive接続にXNA CCは必要ないのでは？と思ってしまいますが、そこらへんは色々と解決しないといけない問題があるので現状のようになっています。&lt;/P&gt;
&lt;P&gt;ともかく、XNA 2.0のベータ版をはもうすぐでますので、より良いものにするためにバグ報告、要望などを言って貰えると有難いです。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6410041" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category></item><item><title>コンテントパイプラインで使われる型</title><link>http://blogs.msdn.com/ito/archive/2007/10/10/content-pipeline-types.aspx</link><pubDate>Wed, 10 Oct 2007 21:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5392982</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ito/comments/5392982.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=5392982</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/shawnhar/default.aspx" target=_blank mce_href="http://blogs.msdn.com/shawnhar/default.aspx"&gt;Shawn Hargreaves氏のブログ&lt;/A&gt;に、コンテントパイプラインで使われるタイプがどのように使われるかを表した&lt;A href="http://blogs.msdn.com/shawnhar/archive/2007/10/10/content-pipeline-types.aspx" target=_blank mce_href="http://blogs.msdn.com/shawnhar/archive/2007/10/10/content-pipeline-types.aspx"&gt;図が記載&lt;/A&gt;されています。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;図の左側から、ソースアセットからどのインポーターを使ってContent DOM形に変換され、どのプロセッサーがどんな型のデータを出力し、TypeWriterによってXNBファイルに書き込まれ、最後にランタイム時にTypeReaderによってどの型に読み込まれるかというのを網羅しているので、非常に有益な情報です。&lt;/P&gt;
&lt;P&gt;何も問題がなければ、この情報は次のXNA Frameworkのドキュメントに記載される予定です。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5392982" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B330F330C630F330C830FB30D130A430D730E930A430F330_/default.aspx">コンテント・パイプライン</category></item><item><title>クリエーターズクラブオンライン更新　07年9月号</title><link>http://blogs.msdn.com/ito/archive/2007/09/28/updatedcco-sep07.aspx</link><pubDate>Sat, 29 Sep 2007 04:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5194811</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ito/comments/5194811.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=5194811</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/homepagebloglist/archive/2007/09/27/New-Content-for-September.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/homepagebloglist/archive/2007/09/27/New-Content-for-September.aspx"&gt;クリエーターズクラブオンライン&lt;/A&gt;のサイトが更新されました。先月はGameFestの開催と重なったので数が少なかったのですが、今月は4つのサンプル、3つのユーティリティ、そして1つのアーティクルが追加されました。そんな訳で例によって例の如く私なりに紹介させて頂きます。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Collision-Series-4_3A00_--Collision-with-a-Heightmap.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Collision-Series-4_3A00_--Collision-with-a-Heightmap.aspx"&gt;Collision Series 4: Collision with a Heightmap&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=229 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_21f47673-c216-483c-a78a-48d27493c835.png" width=404 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_21f47673-c216-483c-a78a-48d27493c835.png"&gt;&lt;/P&gt;
&lt;P&gt;このサンプルはコンテントパイプライン上でビットマップイメージから生成されたハイトマップ上での衝突判定をするサンプルコードです。コリジョン判定自体は単に指定した座標の高さを取得するシンプルなものですが、カメラも衝突判定を使っているのでカメラが地面にめり込んでしまうという不具合を回避しています。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Custom-Model-Class.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Custom-Model-Class.aspx"&gt;Custom Model Class&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;このサンプルでは、ランタイム時に独自フォーマットのモデルデータを扱う為に、コンテントパイプラインのDOMに格納されたモデルデータの取得、カスタムコンテントの作り方、そしてランタイム時のデータの読み込みとモデル描画のコードが含まれています。自分なりの独自フォーマットデータを作るときの雛形として有用なサンプルです。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Mesh-Instancing.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Mesh-Instancing.aspx"&gt;Mesh Instancing&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=227 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_2d1d9155-d346-4dfc-aea7-0c3a8feba688.png" width=404 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_2d1d9155-d346-4dfc-aea7-0c3a8feba688.png"&gt; &lt;/P&gt;
&lt;P&gt;通常、複数のモデルを描画するにはDrawPrimitive等のメソッドを複数回呼びますが、描画するモデルの数が大量に増えた場合、GPUが実際に描画するよりもDrawPrimitiveの呼び出し自体に掛かるオーバーヘッドの方が大きくなる場合があります。&lt;/P&gt;
&lt;P&gt;この問題を解決する為にWindows上ではモデルインスタンスと呼ばれる手法が使われます。このサンプルでは同じモデルを複数の行列で示される位置に描画するようになっています。私のPC環境ではモデルインスタンス使用時と、インスタンス無しステートバッチング無しの状態と比較すると8倍程のフレームレート差がでています。&lt;/P&gt;
&lt;P&gt;Xbox 360上ではvfetchと呼ばれるシェーダーのインラインアセンブラを使って実現しています。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Shatter.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Shatter.aspx"&gt;Shatter&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=227 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_8fffb7d7-18ff-4432-947e-84180b5df81e.png" width=404 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_8fffb7d7-18ff-4432-947e-84180b5df81e.png"&gt; &lt;/P&gt;
&lt;P&gt;このサンプルでは任意のモデルに使われている三角形ポリゴンをひとつずつアニメーションさせることで、モデルがバラバラになっていく視覚効果をだしています。&lt;/P&gt;
&lt;P&gt;コンテントパイプライン内で指定されたモデルを独立した三角形ポリゴンのモデルデータに変換し、必要なパラメータを追加しています。ランタイム時は頂点シェーダー内で指定された時間によって三角形の位置や回転状態を計算しているので時間の逆再生などもできるようになっており、CPUリソースを使わないという利点もあります。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/utilities/archive/2007/01/01/Curve-Editor.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/utilities/archive/2007/01/01/Curve-Editor.aspx"&gt;Curve Editor&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=183 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_c8efe9c9-3b26-4369-96ad-1dab48a1a8f9.png" width=404 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_c8efe9c9-3b26-4369-96ad-1dab48a1a8f9.png"&gt; &lt;/P&gt;
&lt;P&gt;XNAフレームワークにはHermiteベースの一次曲線を使うためのCurveクラスがあります。このクラスの使い道として代表的なのはPosition値を時間として扱うアニメーションカーブで、モデルのアニメーションに使われるのはもちろん、例えばゲーム内の時間によって太陽の位置やフォグ等のパラメーターを変化させたりするときに使います。&lt;/P&gt;
&lt;P&gt;簡単な曲線や直線の場合はプログラムで直接書くだけで済みますが、複雑になってくると欲しくなってくるのがエディタです。&lt;/P&gt;
&lt;P&gt;このユーティリティには単体で動作するCurveEditorがあり、このエディタ内では以下の機能があります。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;複数カーブの同時編集&lt;/LI&gt;
&lt;LI&gt;タンジェント値の自動計算&lt;/LI&gt;
&lt;LI&gt;タンジェント値の視覚的編集&lt;/LI&gt;
&lt;LI&gt;コンテントパイプラインでそのまま使えるXMLファイルへのCurveの読み書き&lt;/LI&gt;
&lt;LI&gt;任意のキーのPositionとValueを直接編集できるテキストボックス&lt;/LI&gt;
&lt;LI&gt;Undo/Redoサポート&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;また、CurveEditorが使っているCurveControlは使い回しができるユーザーコントロールとして設計してあるので、自分で作ったゲームエディタ内で使ったり、デバッグビジュアライザーを作る時に便利です。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/utilities/archive/2007/01/01/Input-Reporter.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/utilities/archive/2007/01/01/Input-Reporter.aspx"&gt;Input Reporter&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=227 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_2c4dff07-a023-4b41-a2ed-300f5f474f5a.png" width=404 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_2c4dff07-a023-4b41-a2ed-300f5f474f5a.png"&gt; &lt;/P&gt;
&lt;P&gt;このユーティリティーではXbox 360コントローラーの入力情報をリアルタイムに見ることができます。振動モーターの有無や複数のコントローラーの接続状態も右上のアイコンで表示されるようになっています。 &lt;/P&gt;
&lt;P&gt;基本的にXbox 360用の入力機器は標準コントローラーとしても使えるようになっています。ですから、ダンスパッドやギターコントローラーを繋げた時に、標準コントローラーのどのボタンやキーに割り当てられているかを調べる時に便利なユーティリティではないでしょうか？&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/Headlines/utilities/archive/2007/01/01/Xbox-360-Controller-Button-Glyphs.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/utilities/archive/2007/01/01/Xbox-360-Controller-Button-Glyphs.aspx"&gt;Xbox 360 Controller Button Glyphs&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=37 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_d5f580c6-8722-4b30-bb8c-91bb25bc70a7.png" width=36 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_d5f580c6-8722-4b30-bb8c-91bb25bc70a7.png"&gt; とか&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=36 alt=image src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_978d279b-f5be-4bb7-9345-a04a5bdb5bea.png" width=36 border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/UpdatedCCOSep07_EC85/image_978d279b-f5be-4bb7-9345-a04a5bdb5bea.png"&gt; 等のXbox 360コントローラーのボタンのイメージがTGA形式で入っています。また、SpriteFont用にXboxControllerSpriteFont.tgaも予め用意されているので、ゲームの&lt;STRONG&gt;「Aボタンを押してください」&lt;/STRONG&gt;等のメッセージテキスト中のAの部分を実際のコントローラーのイメージにしたりする時に便利です。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://creators.xna.com/files/folders/26283/download.aspx" mce_href="http://creators.xna.com/files/folders/26283/download.aspx"&gt;Ship Game Article - 3D Collision using the BoxCollider library&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;このアーティクルは、先月追加された&lt;A class="" href="http://creators.xna.com/Education/StarterKits.aspx" target=_blank mce_href="http://creators.xna.com/Education/StarterKits.aspx"&gt;Ship Game&lt;/A&gt;で使っている衝突判定用のライブラリ「BoxColider」を自分で作ったゲームで使うための方法が書いてあります。このライブラリではOctreeベースの衝突判定、および衝突した場合にどこまで移動することができたかという情報も取得できるようになっているので、ゲームで使うときに便利です。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;&lt;/H1&gt;
&lt;H4&gt;&lt;STRONG&gt;フィードバックを反映した更新&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;これらの更新の中には、クリエーターズクラブ内の&lt;A class="" href="http://forums.xna.com/" target=_blank mce_href="http://forums.xna.com/"&gt;フォーラム&lt;/A&gt;に寄せられた意見を元にしたものがあります。但し英語のみなので日本からのフィードバックは&lt;A class="" href="http://forums.microsoft.com/MSDN-JA/default.aspx?ForumGroupID=356&amp;amp;SiteID=7" target=_blank mce_href="http://forums.microsoft.com/MSDN-JA/default.aspx?ForumGroupID=356&amp;amp;SiteID=7"&gt;MSDNフォーラム&lt;/A&gt;に気軽に&lt;STRONG&gt;「こんなサンプルが欲しい」&lt;/STRONG&gt;といった投稿をして貰えれば、できるだけクリエーターズクラブの更新の方にも反映するようにします。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5194811" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category></item><item><title>XNA Game Studio 2.0</title><link>http://blogs.msdn.com/ito/archive/2007/08/14/xna-game-studio-2-0.aspx</link><pubDate>Wed, 15 Aug 2007 06:38:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4394496</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ito/comments/4394496.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=4394496</wfw:commentRss><description>&lt;p&gt;GameFest 2007でXNA Game Studio 2.0のアナウンスがありました。&lt;a href="http://blogs.msdn.com/xna/archive/2007/08/13/announcing-xna-game-studio-2-0.aspx" target="_blank"&gt;XNAチームブログ&lt;/a&gt;に詳細がありますが、ここでは個人的な意見(つっこみ？)を交えて説明してみたいと思います。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;XNA Game Studioの新機能&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;全てのバージョンのVS 2005で動作するようになる&lt;/li&gt; &lt;ul&gt; &lt;li&gt;これで仕事でVS2005にはあるけど、XNA GSEでは使えなかった、マルチスレッドのデバッグや、デバッグ時に自動的にローカル変数を表示してくれたり、更に個人的に外せないはキーボードマクロとか使えるようになります。&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Xbox 360との接続するための手続きが簡単になった&lt;/li&gt; &lt;ul&gt; &lt;li&gt;ノーコメント&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;コンテントビルドが使いやすくなる&lt;/li&gt; &lt;ul&gt; &lt;li&gt;ノーコメント&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;コンテントパイプライン用のプロジェクトテンプレートを追加&lt;/li&gt; &lt;ul&gt; &lt;li&gt;コンテントパイプラインの拡張コードを書くときには色々と煩雑な手続き多かったので、これでカスタマイズするのが楽になるかも？&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;コンテントプロセッサーにカスタムパラメーターを追加することができるようになる&lt;/li&gt; &lt;ul&gt; &lt;li&gt;現バージョンでは、複数のテクスチャ処理用のプロセッサーがありましたが、これをひとつのプロセッサとしてパラメーターによって処理方法を変えるといったことができるようになります。また、今まではちょっとしたパラメーターでもXMLファイルから読み込むコードを書く必要がありましたが、カスタムパラメーターの導入で簡単になります。&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;XNA Frameworkの新機能&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Xbox Live!のサポート&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Xbox Live!を通しての、Xbox 360間はもちろん、Xbox 360とWindows間で動作するネットワークゲームを作るのに必要な機能があります&lt;/li&gt; &lt;li&gt;機能的にはロビーへの参加、セッションの生成、ゲーム中のデータパケットのやりとりなどを簡単にできるようになっています。&lt;/li&gt; &lt;li&gt;System Linkもサポートしているので、Xbox Live!を介さないでLAN上でも動作します。&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;新しいXACTエディター&lt;/li&gt; &lt;ul&gt; &lt;li&gt;DirectX SDKに付属しているのがアープデートされてるので、追いつかないとねいけませんしね(笑)&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Windows Form上で動作するようになった&lt;/li&gt; &lt;ul&gt; &lt;li&gt;これでレベルエディターとか、非ゲームアプリも手軽に作れるようになります。&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;GraphicsDeviceの仮想化&lt;/li&gt; &lt;ul&gt; &lt;li&gt;デバイスのリセットや再生成を意識せずに使えるようになります。&lt;/li&gt; &lt;li&gt;新しく追加されたGame.LoadContentメソッド内でデバイスがリセット時か生成時か気にしなくて良いのはもちろん、グラフィクス、非グラフィクスのリソースかを気にしなくてもよくなります。&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Windows、Xbox 360間でのRenderTargetの振舞いの統一化と、Xbox 360上でのMRT(Multiple Render Target)のサポート&lt;/li&gt; &lt;ul&gt; &lt;li&gt;ポストプロセス系の処理、特にブルームとかの処理をしていると&lt;a href="http://higeneko.com/diary.php?Date=2007-02-05#Date2007-02-05" target="_blank"&gt;WindowsとXbox 360上での振舞いの違い&lt;/a&gt;を考慮しないといけないのでプログラムが煩雑になってしまうという問題を解決します。&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;GameComponentを階層構造にするのが簡単になる&lt;/li&gt; &lt;ul&gt; &lt;li&gt;ゲームを作るときに、タイトル画面、メニュー画面、ゲーム画面といった数種類の画面を行き来する必要があるのですが、この時にそれぞれの画面をGameComponentとして使い、その中で更に複数のGameComponentを扱うようにすると各画面の管理が簡単になります。現バージョンではGameComponentCollectionが、このシナリオを想定していない作りになっているので実現するのが難しかったという問題を解決します。&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;と、いった感じです。リリース時期は年末を目指していて、リリース時期が近づくにしたがった更に詳細な情報がリリースされます。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4394496" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Content Pipeline その４ そのデバッグ</title><link>http://blogs.msdn.com/ito/archive/2007/05/07/content-pipeline-part4.aspx</link><pubDate>Tue, 08 May 2007 07:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2473831</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ito/comments/2473831.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=2473831</wfw:commentRss><description>&lt;H3&gt;コンテント・パイプラインのデバッグ&lt;/H3&gt;
&lt;P&gt;前回は、実際のコードを見ながらコンテント・パイプラインのカスタマイズの方法を紹介しました。前回のように、ロジック自体が簡単な場合は良いのですが、もう少し複雑なプログラムをコーディングしている時に必要になるのが、インポーターやプロセッサのコードをデバッグすることです。&lt;/P&gt;
&lt;P&gt;ここで問題なのは、ゲーム本体をデバッグする感覚でブレークポイントをコンテント・パイプラインのコード部分に設定してビルドしたとしても、何事も無かったかのようにビルトが終了してしまうということです。コンテント・ビルドは普通にアプリケーションを走らせるのと違い、GSEが水面下でMSBuildを実行しているので、GSE上で走らせるアプリケーション用のブレークポイントを設定しても意味がないからです。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;コンテント・パイプライン用に書いたコードをデバッグする方法としては、JIT(Just-In-Time)デバッガをつかう方法とCLRデバッガをアタッチする二種類の方法があります。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;JITデバッガを使う&lt;/H3&gt;
&lt;P&gt;Visual Studio 2005をインストールしているか、&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=ja" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=ja"&gt;.Net Framework 2.0 SDK(無償)&lt;/A&gt;をインストールしたときに使えるようになるCLRデバッガがあるWindows XP環境なら、コード部分に&lt;/P&gt;&lt;PRE class=code&gt;    System.Diagnostics.&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Debugger&lt;/SPAN&gt;.Launch();
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;と、書くことで、ビルド実行時に以下のようなJITデバッガ選択ダイアログが開きます。&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/contentpipelinepart4_10E2F/JITDialog%5B4%5D.png" border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/contentpipelinepart4_10E2F/JITDialog%5B4%5D.png"&gt; &lt;/P&gt;
&lt;P&gt;このダイアログから、CLRデバッガ、またはVisual Studio 2005をデバッガとして起動することで、コンテント・パイプライン用コードのデバッグができます。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;CLRデバッガをアタッチして使う&lt;/H3&gt;
&lt;P&gt;残念ながら、現状では、前述のJITデバッガ機能はWindows Vista上では動作しません。そこでWindows Vista上でコンテント・パイプラインをデバッグするにはCLRデバッガ(Visual Studio 2005でも可)をVisual Studio C# Expressにアタッチしてデバッグする方法を紹介します。CLRデバッガは、&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=ja" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=ja"&gt;.Net Framework 2.0 SDK(無償)&lt;/A&gt;をインストールすることで使えます。&lt;/P&gt;
&lt;P&gt;まずは、以下のコードのように、デバッガがアタッチしている時にのみ中断するようにします。&lt;/P&gt;&lt;PRE class=code&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;if&lt;/SPAN&gt; (System.Diagnostics.&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Debugger&lt;/SPAN&gt;.IsAttached)
        System.Diagnostics.&lt;SPAN style="COLOR: rgb(43,145,175)"&gt;Debugger&lt;/SPAN&gt;.Break();
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;次にVisual Studio C# Expressを実行した状態で、CLRデバッガ(スタートメニューから、Microsoft .Net Framework SDK v2.0/Tools/Microsoft CLR Debuggerを選択)を別に実行し、CLRデバッガ上で&lt;STRONG&gt;「Tools/プロセスにアタッチ」&lt;/STRONG&gt;を選択すると以下のようなダイアログボックスが開きます。&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/contentpipelinepart4_10E2F/attach.png" border=0 mce_src="http://blogs.msdn.com/blogfiles/ito/WindowsLiveWriter/contentpipelinepart4_10E2F/attach.png"&gt; &lt;/P&gt;
&lt;P&gt;この選択可能なプロセスのリストの中から、&lt;STRONG&gt;VCSExpress.exe&lt;/STRONG&gt;を選択してから、アタッチボタンを押します。これで、CLRデバッガがVisual Studio C# Expressをデバッグしている状態になります。&lt;/P&gt;
&lt;P&gt;この状態で、Visual Studio C# Express上でビルドを実行すると、先に書いたコード部分で実行が中断し、後はCLRデバッガ上でVisual Stuidio C# Express上と同じようにデバッグができます。実行中断したときに逆アセンブルが表示されいる場合がありますが、逆アセンブルウィンドウ上から右クリックして&lt;STRONG&gt;「ソースコードへ移動」&lt;/STRONG&gt;を選択することで、C#のソースコードが表示されます。&lt;/P&gt;
&lt;P&gt;また、デバッグした後にCLRデバッガ上で続行を選択すると、ビルド作業が続行されるので、一度アタッチしてしまえば何度でも簡単にデバッグすることができます。但し、インクリメンタルビルドが働いているので、単にビルドを複数回実行すると二回目以降は実際にビルド作業が入らないのでデバッグすることができません。コンテントの量が少ない場合はリビルドし、コンテントの量が多い場合はデバッグしたいコンテントファイルを更新してからビルドするのが効率的です。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;まとめ&lt;/H3&gt;
&lt;P&gt;今までは、私もJITデバッガを使っていたのですが、この方法だと常にデバッガを起動しようとするので、急いでいるときにコンテント・パイプラインのデバッグを終えてコードを戻すのを忘れて、他人にコードを渡してしまうなんてことも考えられます。それに対して、CLRデバッガをアタッチする手間はあるものの、逆に言えばデバッガをアタッチしない限りは、普通に動作するのでJITデバッガを使うときの問題は起きませんし、特定の例外が発生したときに中断するようにCLRデバッガ上から設定(Debug/例外メニューを使う)できるという利点があります。欠点を強いていうなら、中断するコードを大量に残したままに…なんてことがあるくらいでしょうか？&lt;/P&gt;
&lt;P&gt;以上をまとめると、&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Windows Vista上で開発してる場合はCLRデバッガ(Visual Studio 2005でも可)をアタッチして使う&lt;/LI&gt;
&lt;LI&gt;Windows XP上で開発している場合は好みによって使い分ける&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;と、いった感じになります。&lt;/P&gt;
&lt;P&gt;プログラムが思い通りに動かない時にデバッガを使うことで、問題点を直ぐに見つけることができることが多いので、カスタムインポーターや、カスタムプロセッサが期待通りに動かない時には、今回の方法でデバッグして効率的に問題を解決しましょう。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2473831" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category><category domain="http://blogs.msdn.com/ito/archive/tags/_B330F330C630F330C830FB30D130A430D730E930A430F330_/default.aspx">コンテント・パイプライン</category></item><item><title>クリエーターズクラブも更新</title><link>http://blogs.msdn.com/ito/archive/2007/04/26/content-update-for-creatores-xna-com.aspx</link><pubDate>Fri, 27 Apr 2007 04:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2293437</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/2293437.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=2293437</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://creators.xna.com/" mce_href="http://creators.xna.com"&gt;http://creators.xna.com&lt;/A&gt;に新しいコンテントが増えました。&lt;/P&gt;
&lt;P&gt;スターターキットとして、新たに&lt;A href="http://creators.xna.com/Education/StarterKits.aspx" target=_blank mce_href="http://creators.xna.com/Education/StarterKits.aspx"&gt;Racing Game&lt;/A&gt;が追加されました。これは以前からXNAレーサーと呼ばれていたゲームです。もちろん、スターターキットなのでフルソースコード、フルコンテント付です。&lt;/P&gt;
&lt;P&gt;また、新しいサンプルプログラムとして以下のものが追加されました。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/22/Bloom-Postprocess-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/22/Bloom-Postprocess-Sample.aspx"&gt;Bloom&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;ポストプロセスの代表的手法の一つである、眩しい光などが滲む、ブルームのサンプルです。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Primitives-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Primitives-Sample.aspx"&gt;プリミティブ描画&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Spacewarで使われていた、VectorShapeクラスを元にしたPrimitiveBatchを使ったサンプルです。このクラスを使うことで簡単に点、線分、三角形などを画面に描画することができます。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Game-State-Management-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Game-State-Management-Sample.aspx"&gt;Game State Management&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;ゲームを作る上で必ずといって必要だけど、作るのが面倒なメニュー画面。このサンプルでは、複数のメニュー画面の切り替え簡単にするための仕組みを提供しています。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/22/Audio-3D-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/22/Audio-3D-Sample.aspx"&gt;3D Audio&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;GSE 1.0 RefreshでサポートされたXACT 3Dの使い方のサンプルです。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Particle-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Particle-Sample.aspx"&gt;2Dパーティクル&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;SpriteBatchを使った2Dベースのパーティクルシステムのサンプルです。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Shader-Series-1_3A00_-Vertex-Lighting-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/13/Shader-Series-1_3A00_-Vertex-Lighting-Sample.aspx"&gt;シェーダーシリーズ 1:頂点ライティング&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;シェーダーの基本である、頂点ライティングのサンプルです。&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;また、ユーティリティとして以下のものが追加されました。&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/utilities/archive/2007/04/26/Bitmap-Font-Maker-Utility.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/utilities/archive/2007/04/26/Bitmap-Font-Maker-Utility.aspx"&gt;Bitmap Font Marker Utility&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;WindowsのTrueTypeフォントから、.bmpファイルを生成するツールです。ここで生成された画像を&lt;STRONG&gt;FontTextureProcessor&lt;/STRONG&gt;を使って、SpriteFontとして使えます。変換された画像を加工することで、影付の文字にしたり、文字列の中にコントローラーのボタンイメージを表示したりといった事に使うことができます。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://creators.xna.com/Headlines/utilities/archive/2007/04/26/Xbox-360-Controller-Graphics.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/utilities/archive/2007/04/26/Xbox-360-Controller-Graphics.aspx"&gt;Xbox360 コントローラーグラフィクス&lt;/A&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;ゲームの操作方法を説明したりするときに使えるXbox360のゲームコントローラーのイメージファイルがあります。&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;その他にも&lt;A href="http://creators.xna.com/Education/Articles.aspx" target=_blank mce_href="http://creators.xna.com/Education/Articles.aspx"&gt;アーティクル&lt;/A&gt;や、&lt;A href="http://creators.xna.com/Education/Tutorials.aspx" target=_blank mce_href="http://creators.xna.com/Education/Tutorials.aspx"&gt;チュートリアルビデオ&lt;/A&gt;にも有用な情報が追加されているのですが、全て英語なので読みづらいと思います。チュートリアルビデオに追加されたXACTツールを使っての、サウンドエフェクトの音量やピッチを変更する方法や、3Dオーディオの使い方などは映像を見るだけでも、なんとなく判るかも？&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2293437" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category></item><item><title>GSE 1.0 Refresh API その詳細</title><link>http://blogs.msdn.com/ito/archive/2007/04/26/gse-1-0-refresh-api.aspx</link><pubDate>Fri, 27 Apr 2007 03:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2292635</guid><dc:creator>Yuichi Ito</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ito/comments/2292635.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ito/commentrss.aspx?PostID=2292635</wfw:commentRss><description>&lt;P&gt;GSE 1.0 Refreshは1.0とバイナリ互換、つまり1.0でコンパイルしたものが、そのまま1.0 Refreshで動作するようになっているので、1.0のAPIはそのままで、新しいAPIが追加されています。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.thezbuffer.com/articles/486.aspx" target=_blank mce_href="http://www.thezbuffer.com/articles/486.aspx"&gt;ここ&lt;/A&gt;にRefreshで追加されてAPIのリストがあります。今まで概要は説明してきましたが、詳細は省いていたので、以下に追加されたAPIの詳細を書きます。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Math関連&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;BoundingBoxとBoundingFrustumの&lt;STRONG&gt;GetCorners&lt;/STRONG&gt;メソッドを追加。&lt;STRONG&gt;Corners&lt;/STRONG&gt;プロパティと違って予め確保した配列を指定できるので、GC発生率を抑えることができます。&lt;/LI&gt;
&lt;LI&gt;Curveクラスにタンジェントを計算する&lt;STRONG&gt;ComputeTangent&lt;/STRONG&gt;と&lt;STRONG&gt;ComputeTangents&lt;/STRONG&gt;メソッドを追加。現在のCurveKeyの状態で&lt;STRONG&gt;CurveTangent&lt;/STRONG&gt;で指定したタンジェントを計算します。例えば、&lt;STRONG&gt;CurveTangent.Smooth&lt;/STRONG&gt;を指定することで、滑らかに繋がった曲線になるようにタンジェントを計算します。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Matrix&lt;/STRONG&gt;と&lt;STRONG&gt;Quaternion&lt;/STRONG&gt;に&lt;STRONG&gt;CreateFromYawPitchRoll&lt;/STRONG&gt;メソッドを追加。ヨー、ピッチ、ロールの角度を指定することで、回転行列やクォータニオンを生成します。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Matrix.CreateReflection&lt;/STRONG&gt;。指定したPlaneの位置でオブジェクトを鏡で反射させた場所に移動させる行列を生成します。水面や鏡の反射されたものの描画に使えます。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Matrix.CreateShadow&lt;/STRONG&gt;。オブジェクトを指定したPlaneとライト方向によって、射影行列を生成します。平面への投射しかできませんが、簡単な影の描画に使えます。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Matrix.Decompose&lt;/STRONG&gt;。行列をスケール、回転、移動の三つの要素を取り出します。指定する行列はスケール、回転、そして移動の順で組み合わされたいう前提があります。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Matrix.Transform&lt;/STRONG&gt;メソッド。指定した行列を、指定されたクォータニオンで回転させます。&lt;/LI&gt;
&lt;LI&gt;Vector2、Vector3、Vector4のTransform、TransformNormalメソッドで&lt;STRONG&gt;配列&lt;/STRONG&gt;が指定できるようになった。&lt;/LI&gt;
&lt;LI&gt;Vector2、Vector3、Vector4のTransform、TransformNormalメソッドで&lt;STRONG&gt;Quaternion&lt;/STRONG&gt;が指定できるようになった。&lt;/LI&gt;
&lt;LI&gt;RayとPlaneの交差判定、&lt;STRONG&gt;Ray.Intersects&lt;/STRONG&gt;メソッド追加。線の始点と面の距離を返します。&lt;/LI&gt;
&lt;LI&gt;RectangleとPoint、Rectangle同士の交差、包括判定、&lt;STRONG&gt;Contains&lt;/STRONG&gt;、&lt;STRONG&gt;Intersects&lt;/STRONG&gt;メソッドの追加。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;グラフィクス&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;文字描画の為の&lt;STRONG&gt;SpriteFont&lt;/STRONG&gt;クラスの追加。文字列を描画したときの領域を計算する&lt;STRONG&gt;MeasureString&lt;/STRONG&gt;メソッドなどがあります。実際の描画は&lt;STRONG&gt;SpriteBatch.DrawString&lt;/STRONG&gt;を使います。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;SpriteBatch.Begin&lt;/STRONG&gt;でMatrixを指定できるようになった。画面分割などのゲームを作るとき等、Drawメソッドを呼ぶときに自前で移動させたり、スケールさせたりする計算をする手間が省けます。&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;BasicEffect.PreferPerPixelLighting&lt;/STRONG&gt;プロパティの追加。このプロパティにtrueにすることで、ピクセル単位のライティングを使用するようにします。ピクセル単位のライティングにはシェーダーモデル2.0以上のビデオカードが必要ですが、BasicEffectはそれを自動判別するので気軽に使えます。&lt;/LI&gt;
&lt;LI&gt;GraphicsDeviceで、Vector2、Vector3、Vector4、Quaternion、そしてMatrixといった構造体をピクセル/頂点シェーダーの定数レジスタに直接設定できるようになりました。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;オーディオ&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;XACT 3Dオーディオサポートの為に、&lt;STRONG&gt;AudioEmitter&lt;/STRONG&gt;、&lt;STRONG&gt;AudioListener&lt;/STRONG&gt;といったクラスが追加されています。3Dオーディオは5.1chスピーカーで、後ろの方から音が聞こえてきたりするのはもちろん、救急車が目の前を走り去るときに起こるドップラー効果もサポートしています。&lt;A href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/22/Audio-3D-Sample.aspx" target=_blank mce_href="http://creators.xna.com/Headlines/developmentaspx/archive/2007/02/22/Audio-3D-Sample.aspx"&gt;ここにサンプルコード&lt;/A&gt;があります(ねこの泣き声のドップラー効果つき)。&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;コンテント・パイプライン&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;SpriteFontをサポートするための&lt;STRONG&gt;FontDescription&lt;/STRONG&gt;や&lt;STRONG&gt;FontDescriptionProcessor&lt;/STRONG&gt;の追加。&lt;/LI&gt;
&lt;LI&gt;任意の画像、例えばコントローラーのボタンイメージをSpriteFontとして使う為の&lt;STRONG&gt;FontTextureProcessor&lt;/STRONG&gt;の追加。&lt;/LI&gt;
&lt;LI&gt;3Dテクスチャをサポートするための&lt;STRONG&gt;Texture3DContent&lt;/STRONG&gt;の追加。&lt;/LI&gt;
&lt;LI&gt;外部のコンテントを参照するときに使える、&lt;STRONG&gt;ExternalReference&amp;lt;T&amp;gt;&lt;/STRONG&gt;クラスの追加。&lt;/LI&gt;
&lt;LI&gt;コンテントクリーンビルドのためのMSBuild用のタスク、&lt;STRONG&gt;CleanContent&lt;/STRONG&gt;の追加。&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;この殆どの機能は、フィードバックを元に追加されています。特にMath関連の追加機能は全てフィードバックを元にしたものです。逆に言えば、フィードバックさえすれば、その機能が次のリリースに反映される可能性が非常に高いということです。&lt;A href="http://blogs.msdn.com/xnajapan/archive/2007/04/17/microsoft-connect.aspx" target=_blank mce_href="http://blogs.msdn.com/xnajapan/archive/2007/04/17/microsoft-connect.aspx"&gt;日本語の報告もMicrosoft Connectにできるようになった&lt;/A&gt;ので、沢山のフィードバックをお待ちしております。&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2292635" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ito/archive/tags/_397DCB4E_/default.aspx">紹介</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/ito/archive/tags/XNA+_D530EC30FC30E030EF30FC30AF30_/default.aspx">XNA フレームワーク</category></item></channel></rss>