XNA Game Studio MASTER SESSION

Download Report

Transcript XNA Game Studio MASTER SESSION

XNA Game Studio 2.0
によるゲーム開発
Game for you!
XNA とは?
• Microsoft の総合的なゲーム技術の総称
– DirectX
– Xbox 360
– Xbox Live
– Games for Windows
XNA Game Studio とは?
• Windows、Xbox 360 双方を対象としたクロス
プラットフォームのゲーム開発環境
– ほぼ、同じコードで Windows でも Xbox 360 でも
実行可能なゲームを開発できる
– .NET Framework がベースとなっているため、これ
までの経験と知識を再利用できる
– C# 言語による開発
– ゲームは、マネージ環境で動作
事前に必要な知識
• C# 2.0 言語仕様
• .NET Framework 2.0
– System
– System.IO
– System.Collections.Generic
• HLSL
XNAと製品
• XNA
.NET
– 思想・構想
• XNA Framework
.NET Framework
– .NET Framework をベースとしたプラットフォームであり、共
通言語ランタイムを含む実行環境
• XNA Game Studio
– XNA Framework アプリケーション開発を目的とした統合開
発環境
– XNA Game Studio Express 1.0
Visual Studio
• XNA Framework 1.0 を対象
– XNA Game Studio 2.0
• XNA Framework 2.0 を対象
開発・実行環境の構造
XNA Game Studio
XNA Game Studio
(Visual Studio 2005)
XNA Framework
Visual Studio 2005 を拡張し
たゲーム開発環境。
コードの他に、画像などのコ
ンテンツ管理機能も備わって
いる。
XNA Framework
.NET Framework
.NET
Compact Framework
for Xbox 360
Windows PC
Xbox 360
クロスプラットフォームのゲー
ム開発用フレームワーク
Windows 実行環境
• OS
– Windows XP SP2 以降
– Windows Vista
• 必須ランタイム
– XNA Framework
– .NET Framework 2.0
– DirectX 9.0c
• ハードウェア要件
– Shader Model 1.1 以降(Shader Model 2.0 推奨)と DirectX 9.0c
に対応したグラフィックスカード
• Games for Windows – LIVE メンバシップ
– ゲーマーサービス、ネットワークを利用する場合に必要
• XNA Game Studio 2.0 も必要
Xbox 360 実行環境
• XNA Game Launcher
– XNA Framework 1.0 ゲームを実行
• XNA Game Studio Connect
– XNA Framework 2.0 ゲームを実行
• ハードディスク
– XNA Framework ゲームの配置に必要
• Xbox Live メンバシップ
– サインイン必須
• Creators Club メンバシップ
– XNA Framework ゲームの実行に必要
Creators Club
• XNA Game Studio Connect、および XNA Game
Launcher でゲームが起動できるようになる
• XNA Creators Club Online に掲載されているプ
レミアム コンテンツの使用権
• 気になるお値段
– 4ヶ月間のメンバシップ 4,800円
– 12ヶ月間のメンバシップ 9,800円
お金を払わずにできる範囲
• Windows PC 向けのゲーム開発
– 開発したゲームは自由に配布可能
• XNA Framework 再頒布パッケージも提供されている
– 商用配布も可
• 通信対戦
– Windows PC 間のシステムリンクのみ
• ゲーマーサービス
– ローカルプレイヤーのみ(LIVE アカウントは不可)
現実的な話
• Xbox 360 で同人ゲームを遊ぶために、
Creators Club に入るプレイヤーはいない
• Windows PC をターゲットにするなら、C++ と
DirectX による通常の開発方法で充分(XNA
Framework の魅力は Xbox 360 とのクロスプ
ラットフォームなのに…)
• 現状では、開発者しか Xbox 360 でゲームを
実行できないが、これでは作る意味がない
XNA Game Studio 3.0
• LIVE を通じてゲームを配信可能に!
– ゲームの開発・LIVE 配信には、引き続き Creators
Club メンバシップが必要
– ゲームのダウンロード・実行は誰でも可能に
2008年 末頃にリリース予定?
(現在 CTP 版が公開)
– ゲームを配信するには
Creators Club による PEER
PREVIEW を通す必要がある
• Zune をサポート
XNA Framework 2.0
• Microsoft.Xna.Framework
– 基礎的なゲームの機能
• Microsoft.Xna.Framework.Graphics
– グラフィック関連
• Microsoft.Xna.Framework.Content
– コンテンツ管理
• Microsoft.Xna.Framework.Audio
– オーディオ再生
• Microsoft.Xna.Framework.Input
– コントローラ、マウス、キーボード入力
• Microsoft.Xna.Framework.Storage
– ストレージ選択
• Microsoft.Xna.Framework.GamerServices
– ゲーマーサービス
• Microsoft.Xna.Framework.Net
– ネットワーク
開発と実行
• プロジェクトを新規作成
• C# ソースファイルにコードを書く
– Game クラスのインスタンスを作成する
– Run() メソッドを呼び出してゲームを起動
• 必要なコンテンツを追加
• ビルド・配置
• デバッグ
開発と実行
デモンストレーション
開発モデル
• Game クラスのインスタンスがひとつのゲームに対応
する。
– ウィンドウは Windows PC 依存
• イベント駆動ではない
– ゲームループで描画や入力を制御する
• ゲームコンポーネント
– ゲーム機能を部品化し、任意に追加・削除できる
• ゲームサービス
– 疎結合でコンポーネントを連携させる仲介機能
• コントロールが無い
– 将来はコンポーネントとしてサポートされるか?
初期化から描画までの流れ
• Game クラスを継承する
• コンストラクタ
– 継承クラス固有の初期化
• Initialize() メソッド
– Game に関連した初期化処理
• LoadContent() メソッド
– リソース・コンテンツの生成・読み込み・初期化
• ゲームループ
– Update() メソッド
• ゲームデータの更新
– Draw() メソッド
• ゲームの描画
• UnloadContent() メソッド
– リソース・コンテンツの破棄・解放
初期化から描画までのトレース
デモンストレーション
グラフィックス
• Microsoft.Xna.Framework.Graphics 名前空間
• 高度な3次元グラフィックス処理が可能
– 基本的な機能は BasicEffect でサポート
– HLSLを使用したエフェクトの記述
– モデルの描画(X、FBX に対応)
• 擬似的に2次元グラフィックスを描画できる
(画像、フォント)
コンテンツ・パイプライン
• 事前コンパイルによる最適化
– 画像・3Dモデル・音声・フォントなどには、ゲームに関係の
ないデータが含まれているため冗長である
– ビルド時に、データをオブジェクト表現可能なバイナリに
直列化し、実行時の負担を軽減する
– Windows 用プロジェクトと Xbox 360 用プロジェクトでリ
ソースを共有できる
– 独自のデータ形式を組み込むことも可能
• アセット
– ビルド時にリソースをコンパイルし、直列化したデータ
– アセット名から、実行時にデータを読み込むことができる
画像の描画
• SpriteBatch クラス
– 擬似的に、画像やフォントを描画する
– Draw() メソッド
• 画像を指定座標に描画する
– DrawString() メソッド
• 文字列を指定されたフォントで描画する
• ContentManager
– ゲームのコンテンツを管理する
– Load<T>() メソッド
• 実行時にアセット名からファイルを読み込み、適切なオブ
ジェクトとして返す
画像の描画
デモンストレーション
入力
• Microsoft.Xna.Framework.Input 名前空間
• Xbox 360 ゲームコントローラ
– 両プラットフォームでサポート
• キーボード
– 両プラットフォームでサポート
• マウス
– Windows PC のみサポート
– Xbox 360 では使えない
状態取得の流れ
• GamePad クラス
– GetState() メソッドから状態を取得
• GamePadState 構造体
– コントローラの各ボタンの状態を提供
– Buttons プロパティ(GamePadButtons 構造体)
• A、B、X、Y、Start、Back、LB、LR、左右スティック
– DPad プロパティ(GamePadDPad 構造体)
• 上下左右の方向キー
– ThumbSticks プロパティ(GamePadThumbSticks 構造体)
• 左右のスティック
– Triggers プロパティ(GamePadTriggers 構造体)
• LT、RT (左右のトリガー)
Xbox 360 コントローラを使ってみよう
デモンストレーション
ゲーマーサービス
• Microsoft.Xna.Framework.GamerServices
名前空間
• GamerServicesComponent クラス
– コンポーネントとしてゲームに登録
– 初期化後、ガイドボタンでガイド機能が使用可能
に!
– アカウント管理、メッセージ、フレンドなど、Xbox
360 でサポートされているゲーマーサービスが
Windows でも使用可能になる
ガイド画面を表示する
デモンストレーション
ネットワーク
• LAN (システムリンク)、Live に対応
• クロスプラットフォーム
• セッション単位による通信管理
– ホストによるセッションの作成
– セッションの検索・参加
• 信頼性のあるUDPプロトコル
– パケット単位のデータ送受信
– 低水準なパケット管理は不要
– 信頼性の制御が可能
セッション
• ホスト
– セッションを作成したゲーム
– ゲームの状態、参加者数などを管理
– 他の参加者の参加を待機
• セッションへの参加
– セッションの検索
– セッションの参加
セッションの検索条件
• セッションは GUID に関連付けられる
– 実行中のアセンブリと同一の GUID のゲームに
よって作られたセッションを検索する
– GUID を一致させれば、異なるプロジェクトによっ
て作られたゲームの間での通信も可能
• Xbox Live アーケードの制限
– ゲームは GUID によって識別される
– 同じ GUID のゲームを複数配置できない
– 同一タイトルでも GUID が異なれば配置可能
データ通信
• バイト配列の送受信
– 最もシンプルな方法だが、データを直列化する必
要がある。
• PacketWriter によるデータ送信
– BinaryWriter を継承するクラス
– 基本的なデータ型の Write() メソッドを実装
• PacketReader によるデータ受信
– BinaryReader を継承するクラス
– 基本的なデータ型の Read~() メソッドを実装
参考
• XNA デベロッパーセンター
– http://www.microsoft.com/japan/msdn/xna/
• XNA Game Studio で作るマインスイーパ
– http://www.microsoft.com/japan/msdn/vstudio/expr
ess/learn/xna/
• XNA Japan Team Blog
– http://www.microsoft.com/japan/msdn/vstudio/expr
ess/learn/xna/
• XNA Team Blog (英語)
– http://blogs.msdn.com/xna/