Microsoft XNA

WikipediaでDirectXの項目を読んでいたら、Microsoft XNAのことが書かれていたので、ちょっと興味を持って調べてみる。

Managed DirectX 2.0の開発は中止され、Microsoft XNAに置き換えられることになった。

そうそう、すっかり忘れてた。Microsoft XNAについて調べなきゃ。

XNAの本拠地

Microsoft XNA Game Studio 3.0の配布場所

Microsoft XNA Game Studio 3.0をインストールするには、Visual Studio 2008かVisual C# 2008 Express Edition が必要です。

ということで、インストール。

image

image

image
Xbozx360に作ったプログラムを転送する場合や、ネットワークゲームを作る場合にはWindows Firewallの設定を変更する必要がある。セットアップ時にやってくれる模様。

image

image
すんげぇインストールに時間がかかりました。

image
Visual Studioのヘルプの中に、 「XNA Game Studio 3.0」てな項目が増えました。

Visual Studio 2008 Express Editions – XNA Game Studio 入門 : XNA Game Studio で作るマインスイーパ

ここに、チュートリアルのようなものが記述されているので、サクッと試す。このドキュメントは、Visual Studio 2005などちょっと古い環境が想定されているが、大まかで、そんなにかわらんでしょう。

XBox360は持っていないので、そのあたりのことはすべてすっ飛ばしてやってみます。

XNA Framework 第01回
XNA Game StudioでXBoxのゲーム開発を始めよう

image
こんなテンプレートが増えています。

image
Windows Gameでプロジェクトを作るとこんな感じでできてきます。

image
F5(デバッグ開始)でこんなアプリが上がってきました。

Sample07

Direct XはそれぞれのデバイスをアクセスするためのAPI集みたいになってたけど、こいつは、Gameクラスなんてあって、ゲーム開発用のフレームワークみたいになっているのね。

Game.Update()は、Game.Target  ElapsedTimeやGame.IsFixedTimeStepで呼び出されるタイミングがコントロールされるし、Draw()は、描画用でゲームでありがちの開いている時間は常にDrawが呼び出されるというパターンの模様。

Sample08

GameのコンストラクタでGraphicsDeviceManagerをnewして、Game.Drawでそいつを使って描画。

Sample09

テクスチャの初期化はGame.Initialize()でやってる。
Game.Draw()では、sprite = new SpriteBatch(graphics.GraphicsDevice);のsprite.Begin(), sprite.End()でくくった中のsprite.Draw()でテクスチャの描画。

Sample10

Sample09はテクスチャをファイルから読んでいるが、XBox360ではファイルからは読まない。これらのリソースは、プロジェクトに突っ込んで、「プロパティ」から「XNA Framework Content」をTrueにすると、リソースとしてビルドされ、ContentManagerクラスを使ってアクセスできる。

XNA Framework 第02回
2次元マインスイーパの作成を行おう

Sample01

*.spritefontというファイルを作成することで、フォントテクスチャをビルド時に作ってくれる。SripteFontクラスでアクセスできる。

Sample02

だからといって、日本語を全部やっちゃうと効率が良くないので、文字コードの範囲を指定しましょうってお話。

Sample03~Sample10

GamePad.GetState(*)でいろいろアクセスして、ゲームパッドの状態を調べる方法の説明。キーボードもマウスも同様。

さすがにイベントドリブンじゃなくて、Update()の中で状態をチェックする構造。

Sample11~Sample12

GameComponentクラスを使って、部品化する方法の説明。

全部をGameクラスの中で書いてたらそら、大変なことになりますわ。でも、そこまで用意されてるのね。

Sample13~Sample14

GameComponentクラスと、IDrawableから派生されたコンポーネントは描画機能を持つ。Visibleプロパティで表示非表示の切り替えも可能。

Sample15~Sample18

コンテンツパイプラインとインポータ、プロセッサ、コンパイラ、タイプライタ、タイプリーダの説明。

じぇんじぇんわかりませんでした。もっとちゃんと読まないとあきません。

XNA Framework 第03回
3次元マインスイーパを作ろう

Direct3Dまわりの話がここ。

エフェク

頂点シェーダとピクセルシェーダはエフェクトでコントロールする。HLSLが使えるけど、BasicEffectクラスで基本となる機能は用意されている。

テクニック

使用する頂点シェーダとピクセルシェーダを定義するパスと呼ばれるオブジェクトのコンテナ。

座標変換

Effect.World、Effect.Viewでワールド座標、カメラ座標の
マトリクスを設定。

テクスチャ

テクスチャもエフェクトの一つ。

XNA Framework 第04回
XNA Game Studio 2.0に対応しよう

頂点バッファ

VertexBufferクラスで頂点バッファ。頂点ストリームなどもここ。

ビューポート

GraphicsDevice.Viewportで設定

透明度を反映させる

デバイスの描画に関連した設定の多くは、GraphicsDeviceクラスのRenderStateプロパティから行う。

XNA Framework 第05回
サービスを使おう

サインインとかゲーマープロファイルとかのプラットフォームが提供する基本的なサービスへのアクセスの仕方。昔でいうところのロビーとかそんなんかな?

サインインはWindows Live IDで。

データの保存は、Guide.BeginShowStorageDeviceSelector()でStorate.StorageDeviceクラスを取得して、書き出す

XNA Framework 第06回
通信機能を使おう

NetworkSessionクラスでセッションの作成、検索などを行い、Join()メソッドで参加する。Lobbyの状態とPlayingの状態がある。

セッションからは、抜けたり参加したりの状態が変化するとイベントが飛んでくる。

データはUDPで流れるけど、XNAフレームワークが信頼性を保証する。

NetworkSession.LocalGamersで現在のプレーヤーを取得。SendData()でデータを流す。ReceiveData()で受信。PacketWriter、PacketReaderでXNA Frameworkの基本クラスのシリアライズが可能。

 

こんだけ理解すれば、オンラインヘルプは十分に読めるかな

Microsoft XNA Game Studio 2.0ヘルプドキュメント – 日本語

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください