XNA 3.1から4.0への更新

英文ですが、XNA 3.0からXNA 4.0への更新についてのまとまった情報があるので紹介します。 http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/

0

リモートコマンド

ねことプログラマーとXNAの友好な関係の為に デバッグコマンドはゲーム開発する上では欠かせないツールの一つですがXbox 360上で使用するにはUSBキーボードが必要になります。私の場合は新し物好きで定期的にキーボードを買い換えるので家の中には使っていないキーボードが幾つかあり、いならくなったキーボードを使っていました。 ですが、最近になって11年物のTVが写らなくなってしまい、ようやっとHDTVというものを購入しました。新しいTVの画面上で自分の作ったゲームが動いているのを見るのは楽しいので、リビングルームでソファに座りながらプログラムするという機会が増えました。 そこで、新たに起きた問題が発生しました。その問題を図式化したのが以下の図です。 ソファーに座っていると、ねこさん達が私の膝の上に乗ってきます。これから寒くなってくる時期には暖かいねこが膝の上に乗ってくるというのはありがたいものです。ですが、デバッグコマンドを使おうとするときに問題が発生します。デバッグコマンドを使用するときにはXbox 360に接続されたキーボードがあるところまで移動しないといけません。その為には膝の上のねこをどける必要があるのですが、せっかく寄ってきたねこさんを無下にする訳にもいきません。 USB延長ケーブルで手元にキーボードを持ってくるという方法もありますが、コントローラーも無線、Xbox 360へのゲームの転送もWiFi使っているので無線という環境なので、延長ケーブルを使うというのはスマートではありません。   リモートコマンド そこで新たに追加したデバッグコマンドがremoteコマンドです。remoteコマンドはWindowsとXbox 360上で同じゲームを実行している時にNetworkSession機能を使い、Windows上で動作しているゲームで入力したコマンドをXbox 360で実行するというものです。 下図はWindows上でremoteコマンドを実行した状態のものです。 リモートコマンドの実行が成功するとデバッグコマンドがリモートコマンドモードへと移行し、今まではCMD>と表示されていたものが[Client]と表示されます。この状態で入力されたコマンドはXbox 360側へと送られ実行され、実行された結果はWindows側へと送られます。リモートコマンド状態から抜け出すにはquitコマンドを使用します。 ゲームへの追加以下のようにコンポーネントを追加するだけです。Windwos Phoneには対応していないので、#ifdefで括っておくと良いでしょう。 #if WINDOWS || XBOX // リモートデバッグコマンド「remote」の追加 Components.Add(new RemoteDebugCommand(this)); #endif NetworkSessionを使っているのでGamerServicesを初期化する必要があるのですが、remoteコマンドはGamerServicesを使っていない場合は自動で初期化するので、GamerServicesを使っていないゲームでも特別なコードを書く必要がなく使えます。また、既にNetworkSessionを使っている場合にはゲーム側で作ったNetworkSessionをRemoteDebugCommand.NetworkSessionへ設定し、文字列データを受け取った場合にRemoteDebugCommand.ProcessRecievedPacketメソッドを呼び出すようにすることで共存できるようになっています。 ただし、最低でもローカルプロファイルがサインインしている必要があります。 ここで見逃しがちなのが、ローカルプロファイルの作るにはプロファイルの生成を選択した後の画面で下の方にスクロールさせた場所にあるリンクをクリックする必要があるということです。   3.1の頃からあった 実のことを言うと、remoteコマンドはデバッグサンプルの3.1版を公開したときに既にあった機能でしたが、いままで説明するのをすっかり忘れていました(汗)。そんな訳で、このリモートコマンド機能は前日に公開した4.0版のデバッグサンプルに既に含まれており、リモートコマンドも登録してあるので、そのまま使えるようになっています。   これで私は膝の上に乗っているねこさんを降ろすことなくデバッグコマンドが使えるようになりました。 と、いうのは半分冗談で、実はリモートコマンドにはもう一つの重要な役割があります。 つづく

0

XNA Game Studio 4.0がリリースされました

XNA Game Studio 4.0がリリースされました。前述のとおり、XNA Game Studio 4.0はWindows Phone Developer Toolsに含まれる形でリリースされました。 Windows Phone Developer Toolsのダウンロード リリースノート CTP版やベータ版のWindows Phone Developer Toolsをインストールしている場合はリリース版をインストールする前に以前のバージョンをアンインストールする必要があります。 Windows Phone Developer ToolsにはVisual Studio Express for Windows Phoneが含まれるのでVisual Studioがインストールされていない状態でもWindows Phone Toolsをインストールすることができます。 Visual Studio 2010 Professional以上がインストールされている場合は、お使いのVisual Studio上で開発をすることができます。 Windows Phone Developer ToolsはWindows VistaとWindows 7のみのサポートとなっています。Windows XP向けにはXNA Game Studio 4.0のスタンドアロン版をダウンロードできます。 Windows Phone Developer Toolsには以下のものが含まれます。 Visual Studio 2010 Express for…

0

アバターを使おう その4:カスタムアニメーション

Creators Club Onlineサイトでアバターのカスタムアニメーション関連のサンプル等が公開されました。内容的には以下の三つになります。いずれもプレミアムコンテントになっているので、ダウンロードするにはCCO会員になっている必要があります。 Custom Avatar Animation Sample(カスタムアニメーションサンプル) Avatar Animation Rig(アバターアニメーション生成用のリグ) Avatar Animation Pack(アバターアニメーションパック) Custom Avatar Animation Sample このサンプルではアバターを自分のゲーム内で自由にアニメーションさせるための有用な情報が提供されています。3Dモデリングツール上でアニメーションリグを使って作ったアニメーションデータを作り、カスタムコンテントプロセッサーを介してFbxファイルから読み込み、CustomAvatarAnimationPlayerを使って任意のアニメーションをゲーム内で再生するという流れになっています。 Avatar Animation Rig キャラクターアニメーションを作るときにひとつひとつのボーンをアニメーションさせるのは非常に面倒で時間の掛かる作業なので、その作業時間を軽減するためにリグ(Rig)と言われるものを使います。ここではMayaとSoftimage Mod Tool用のアニメーションリグをダウンロードすることができます。 Softimage Mod Toolの画面   Maya 2008上での画面 Avatar Animation Pack これはゲームなどでよく使われるアニメーションデータをダウンロードすることができます。アニメーションデータはFbxファイル、Maya、そしてSoftimage Mod Tool用の三種類のファイル形式が用意されています。 アニメーションは21種類あり、歩く、走る、ジャンプといった基本的な移動アニメーションの他にも座る、倒れる、泳ぐといったものがあるので、アニメーションを作るときに参考にしたり、ゲームの雛形を作るときに仮データとして使えます。

0

XACT3の新機能

  XACTプロジェクトファイル、XAPファイルのアップデート XNA Game Studio 3.1ではXACTのバージョンが3へと更新されました。XNA Game Studio 3.0で作ったプロジェクトをそのままコンパイルするときには問題ありませんが、3.1へアップグレードし、そのプロジェクト内にXACT2で作ったXAPファイルが含まれている場合、コンパイル時に以下のエラーメッセージが表示されます。 XACT2で作られたXAPファイルはXACT3ツール上で読み込み、保存することでXACT3用のXAPファイルへと更新できます。XACT3ツールはスタートメニュー/XNA Game Studio 3.1/Tools/Microsoft Cross-Platform Audio Creation Tool 3 (XACT3)を選択することで起動できます。 XACT3ツール上でXACT2で作られたXAPファイルを読み込むと、以下のメッセージが表示されます。意味的には「このプロジェクトファイルのバージョンは古いけど、保存すると更新するよん、でも更新すると古いツールでは読めなくなるから注意してね」といった感じです。 OKボタンを押した後に、File/Save Projectでプロジェクトを保存します。 XACT3の新機能 XACT3では以下の二つの機能が追加されました。 xWMAの追加 トラック単位のフィルターコントロール xWMAはWMAから派生したエンコード方式でXMAエンコード方式よりも更に良い圧縮率を実現できるエンコード方式です。ただし、XMAエンコード方式よりCPU負荷が高いので、BGMや台詞といった音声データを再生するのに向いています。CPU負荷が高くなりますが、Xbox 360上ではゲームのメインスレッド以外のコアでデコーディングするので、ゲーム速度への影響がないのも魅力的です。また、XMAはXbox 360上でしか使えませんが、xWMAはXbox 360、Windowsの両方で使用することができるので、両プラットフォームで音声データが同等のサイズになります。 以下はそれぞれの方式で圧縮したサイズの例です。 圧縮方式 サイズ 圧縮率 PCM(オリジナル) 15.0MB 100% ADPCM 4.1MB 27% XMA 1.33MB 8.9% xWMA 1.02MB 6.8% xWMAの使い方は以前紹介した圧縮方式の指定の仕方と一緒です。XACT2ではPCM/ADCPM/XMAの三種類しか指定できなかったのが、XACT3では以下のようにxWMAが追加されたので、Compression Presetsのプロパティで形式を選択し、WaveBankで選択したWaveプロパティでプリセットを設定します。 注意点としてはxWMA形式はストリーミング用のWave Bank内のWaveのみにしか適用できません。インメモリ形式のWave Bankで使用すると実行時にWave Bank初期化に失敗し、例外が発生します。 トラック単位のフィルター処理は、Sound Bank内のSoundを選択したときに右上に表示されるトラックに対してフィルター効果を追加できるようになりました。例えば室内コンサート会場の外にいたり、水中に潜っている場合、聞こえてくるのはオリジナル音の低音部のみなのでLow Passフィルターを使うこで同じ効果を表現できます。また、イヤホンで音楽を聴いている人のそばにいるときに聞こえるのは元の音楽の高音部分なのでHigh…

0

日本語版 XNA Game Studio 3.1がリリース

日本語版 XNA Game Studio 3.1がリリースされました。日本語版XNA GSではVisual Studio上のインターフェース、コンテントのコンパイル時のエラーメッセージ、ランタイム時に発生する例外のメッセージが日本語化されています。 機能的には先月リリースされた英語版と同じです。 http://blogs.msdn.com/ito/archive/2009/06/11/xnags-3-1-released.aspx 以下は日本語版XNA Game Studio 3.1に関する情報URLです。 ダウンロード: http://creators.xna.com/en-US/japan/ 新機能の説明: http://creators.xna.com/en-us/japan/xnags3.1whatsnew Readme: http://creators.xna.com/en-us/japan/xnags3.1readme MSDNヘルプ: http://msdn.microsoft.com/ja-jp/library/bb200104.aspx 以下は、このブログで紹介した3.1で追加された機能の説明です。 3.1用プロジェクトへのアップグレード 動画再生 自動XNBファイルシリアライズ アバターを使おう その1:アバターを表示する その2:基本アニメーション その3:喜怒哀楽 XNA Game Studio 3.1のSoundEffect変更点

0

XNA Game Studio 3.1のSoundEffect変更点

XNA Game Studio 3.1のSoundEffect ゲームで使用する効果音を簡単に再生するためにXNA Game Studio 3.0で導入されたSoundEffect機能がありますが、この機能は以下の二つのシナリオを実現するようにデザインされました。 簡易再生(Fire & forget): プログラムは単にPlayメソッドを呼ぶだけ。後は効果音が鳴り終わった後に自動的にメモリ開放処理をしてくれる機能 生成と設定(Create & configure): 効果音を鳴らしている間に、音量、再生ピッチ、パンなどのさまざまなパラメーターを自由に設定できる機能。細かい設定ができる代わりに、プログラム側で再生中のインスタンスの保持、管理をする必要がある この二つのシナリオを実現する為に、XNA GS 3.0ではSoundEffect.Play、SoundEffect.Play3DメソッドはSoundEffectInstanceオブジェクトを返すようになっていました。再生中に設定を変更したい場合は、このインスタンスに対して処理をします。簡易再生させたい場合はインスタンスを保持しないでおきます。この場合、次にガーベージコレクション(GC)が発生した時に再生が終了したインスタンスを破棄するようになっていました。 この方法には以下の二つの問題がありました。 Play/Play3Dメソッドには、プログラムが簡易再生をしたいのか、細かい設定をしたいのかを知る術がないので常にSoundEffectInstanceを生成していました。これは簡易再生をしている場合に常に不必要なメモリ確保が起きていることになります。 確保されたSoundEffectInstanceはGCが発生された時に再生が終了しているインスタンスを自動的に破棄されるようになっています。GCがいつ発生するかはゲームがどのようにメモリを確保するかによって左右されます。GCの不必要な発生はゲームのパフォーマンスに影響するので、極力GC発生を抑えるようにプログラミングするのが望ましいのですが、GC発生数が少ないと、SoundEffectinstanceを開放する機会が減るのことになるので、最終的には同時再生できる効果音の上限に達してしまいます。 XNA GS 3.1では、この二つのシナリオを明確に分けることで、この問題を解決しました。 SoundEffect.Playメソッドは簡易再生専用のメソッドとなり、SoundEffectInstanceではなく、bool値を返すようになりました。このbool値は単純に再生が成功したかを示します。これで不必要なメモリ確保がなくなりました。また、このメソッドを使った場合はループ再生ができないようになっています。 生成と設定のシナリオ用にSoundEffect.CreateInstanceメソッドが追加されました。このメソッドはSoundEffectInstanceを返すので、このオブジェクトを介して音量、ピッチ、パンなどを設定することができます。 SoundEffect.Play3Dメソッドは無くなりました。3Dサウンドを再生する場合は、SoundEffect.CreateInsntaceメソッドを使い、SoundEffectInstance.Apply3Dメソッドを使用します。3Dサウンドは簡易再生することができません。 また、XNA GS 3.0では再生数が上限に達したときに更に効果音を再生しようとするとInstancedPlayLimitException例外が発生しました。XNA GS 3.1でもCreateInstanceメソッドを使った場合には同じように例外が発生しますが、簡易再生の場合は例外を発生せずに単にbool値を返すようになっています。ですから、簡易再生時にいちいちtry~catchブロックを書く必要がなくなりました。 原文: http://blogs.msdn.com/shawnhar/archive/2009/06/12/soundeffect-changes-in-xna-game-studio-3-1.aspx

0

アバターを使おう その3:喜怒哀楽

警告:画像が沢山あるので、重いかも。 アバターの表情(Expression)を自由に設定する AvatarRenderer.Drawメソッドにはアバターのボーンと表情を指定することができます。基本アニメーションを使っている場合はAvatarAnimation.Expressionを指定しますが、ボーンと同じく、AvatarExpressionも自由に作ることができるので、アバターの表情を自由に変えることができます。 AvatarExpressionには以下のプロパティがあります。 LeftEye (左目) LeftEyebrow (左眉) Mouth (口) RightEye (右目) RightEyebrow (右眉) LeftEye、RightEyeにはAvatarEye列挙型、LeftEyebrow、RightEyebrowにはAvatarEyebrow列挙型、MouthにはAvatarMouth列挙型を設定することができます。 左右の目や眉に独立した値を設定できるので、ウィンクさせるといったことも可能です。眉と目、そして口のパターンと合わせると約6万9千通りの表情を設定することができます。これだけの数があるので、喜怒哀楽といった基本的な表情の他にも多彩な表情を表現することができるようになっています。 以下はそれぞれの列挙型の値と、その説明です。 AvatarEyebrow列挙型 値 説明 Angry 怒り、眉を吊り上げる Confused 困惑、眉を曲げる Neutral 自然な眉のかたち Raised 眉をあげる。驚いたときなどに使える Sad 悲しみ、眉がさがる。眠たい表情にも使える AvatarEye列挙型 値 説明 Angry 怒り、目がつりあがっている Blink まばたき、目を閉じている状態 Confused 困惑、より目、または見上げている感じ Happy ハッピー、目が大きくひらき、目尻が下がっている Laughing 笑い、目を細めている LookDown 下を見る LookLeft 左を見る LookRight 右を見る LookUp 上を見る Neutral 自然な目の形 Sad 悲しみ、目尻が下がる…

0

アバターを使おう その2:基本アニメーション

アバターの基本アニメーション AvatarAnimationを生成するときに指定するAvatarAnimationPreset列挙型には31種類の基本アニメーションが宣言されています。内訳として、11種類の男女共通のアニメーションと、性別毎に違うアニメーションが10種類となっています。 男性アバター向けのアニメーションはMaleで始まり、女性アバター向けのアニメーションはFemaleで始まるようになっています。通常はAvatarDescription.BodyTypeによって性別ごとにアニメーションを切り替えて使用しますが、アニメーションは性別に関係なく使えるので、意図的に男性アバターに女性アバターのアニメーションを再生させるということもできます。 男女共通のアニメーション 以下は男女共通アニメーション名と、その説明です。 アニメーション名 説明 Stand0 基本姿勢アニメーション、身体的アニメーションは殆どなく、瞬きする程度。 Stand1 基本姿勢アニメーションに加えて、数秒間軽く上を見上げる動作。 Stand2 基本姿勢アニメーションに加えて、左、上方向に顔を向ける動作。 Stand3 基本姿勢アニメーションに加えて、左右を見渡した後に軽く首をかしげる動作。 Stand4 軽く右足を上げて、つま先を見つめる。 Stand5 両手を広げて、前後に振る。 Stand6 足元を見回す動作。 Stand7 頭を左右に傾けた後に、首を回す動作。 Clap 笑顔で拍手する。 Wave 笑顔で手を振る。 Celebrate 喜びの動作。アバター生成画面でアバターを選択したときにするアニメーションと同じもの。 性別によって違うアニメーション 以下は性別によって異なるアニメーションをまとめた表です。殆どのアニメーションはMaleLaugh、FemaleLaughといった感じで同じタイプのアニメーションが用意されています。例外としてはMaleIdleCheckHand,FemaleIdleCheckNails,MaleIdleStretch,FemaleIdelFixShoeの四つのアニメーションがあります。 同じタイプのアニメーションでも、例えば笑うアニメーションの場合、男性はひざを叩いて笑う動作をするのに対して、女性は手を前にかざして笑うといった違いがあります。 男性用アニメーション名 女性用アニメーション名 説明 MaleIdleCheckHand FemaleIdleCheckNails 男性は肩を軽くまわした後に自分の手を見つめる動作。 女性は爪を見つめる動作。 MaleIdleLookAround FemaleIdleLookAround あたりを見回す動作。 FemaleIdleShiftWeight MaleIdleShiftWeight 重心を左右の足に移動する動作。 MaleIdleStretch FemaleIdleFixShoe 男性はストレッチ動作、女性は靴の様子を見る動作。 MaleAngry FemaleAngry 怒る。 MaleConfused FemaleConfused 困惑。 MaleLaugh…

0

3.1用プロジェクトへのアップグレード

XNA Game Studio 3.1ではXNA Game Studio 3.0のプロジェクトを3.1用にアップグレードすることができます。3.0で作ったプロジェクトをVisual Studioで開き、ソリューション・エクスプローラーで更新したいソリューションを右クリックで表示されるメニューの「Upgrade Solution…」を選択すると、3.1のプロジェクトへアップグレードします。 一旦3.1へアップグレートした後は、3.0のプロジェクトにダウングレードする方法は提供されていないので、3.0のプロジェクトを何らかの理由で残しておきたい場合は更新する前にバックアップしておくといいでしょう。 今まで紹介してきた以下のサンプルをXNA Game Studio 3.1用のプロジェクトにアップグレードしたので、以下に記事と新しいプロジェクトへのURLをまとめておきました。 基本的にはプロジェクトの更新のみですが、ソースコードファイルのエンコーディングをシフトJISからUnicode (UTF-8 シグネチャ (BOM) 付き) – コードページ 65001へ変更してあります。これはサンプルプログラムを日本語以外の環境で開くとコンパイルできないという問題を解決するためのものです。Visual Studioやメモ帳などのアプリケーションではUTF-8に対応しているので問題はありませんが、対応していないエディターでコードを開くときには日本語部分が正しく表示されないので注意してください。 vFetchでスキンアニメーション http://higeneko.net/hinikeni/sample/xna31/vFetchSkinningSample.zip 頂点テクスチャでスキンアニメーション http://higeneko.net/hinikeni/sample/xna31/TexSkinningSample.zip クォータニオンでスキンアニメーション http://higeneko.net/hinikeni/sample/xna31/QuatSkinningSample.zip デバッグサンプル http://higeneko.net/hinikeni/sample/xna31/DebugSample.zip Gamefest Japan 2008 デモプログラム http://higeneko.net/hinikeni/sample/xna31/GamefestJapan2008Demo.zip 簡単(かもしれない)日本語表示 http://higeneko.net/hinikeni/sample/xna31/SimpleMessage.zip Content Pipeline その3 そのカスタマイズ(日本語表示サンプル) http://higeneko.net/hinikeni/sample/TextMessageSample31.zip

0