Xna教の野望

Preview:

DESCRIPTION

2013年10月12日の東大マイコンクラブ・千葉大学電子計算機研究会・NCRADLE交流会で使った資料

Citation preview

XNA 教の野望XNA 教だ !XNA 教だ !

目次

自己紹介 XNA とは、 C# とは XNA is Dead?

C# vs C++

XNA vs DX ライブラリ XNA のはじめ方

自己紹介

名前 : MASA

Twitter: MASA_T_O

所属 : 同人ゲームサークル オーバーイプシロン 代表 UTMC 的に : 先代部長 代表作 : 『怨霊』『 noita 』

XNA とは

Microsoft 謹製のマルチプラットフォームゲームライブラリ Windows PC だけではなく、 Zune( 販売終了 ) や XBox360( そろそろ新規作品

の受け付け終了 ) や Windows Phone( 日本で 2 年前に 1 機種出たきり ) でも動くゲームが作れる

世界的に割とメジャー ( だった )

DirectX9.0c ベース

C# とは

Microsoft 謹製のプログラミング言語 C 言語っぽい名前だが基本文法はむしろ Java に近い Java のように VM 上で動作する Windows 向け開発ではほぼなんでも書ける Windows 以外でもそれなりに動く

XNA is Dead?

XNA は死んだ ?

2013 年 2 月に開発終了が発表された 最新プラットフォーム向け開発には対応せず (Windows ストア , WP8, Xbox

One)

VisualStudio2012 には対応せず ( 改造すれば使える )

最新の C#4.5 には対応せず

私が死んでも第 2 第 3 の XNA が

XNA 互換のライブラリが複数オープンソースで開発されている ( 後述 )

大量のサンプルやドキュメントなどは今でもアクセス可能 情報源も結構ある PC 向けならそもそも問題なく開発できる

C# vs C++可燃性

C# でできること

かなり速いコンパイル 結構速い動作 豊富かつ整理されたライブラリ 型安全 リフレクション 分かりやすいエラー・例外 ガーベジコレクション 強力な入力補完 手軽な GUI アプリケーション作成

C# ではできないこと

黒魔術的マクロ・テンプレート ガーベジコレクションの無効化 C 言語的素朴な書き方

よくある誤解

ランタイム必要なのでは ?

Windows に標準でインストールされている、 WindowsUpdate で自動的に入る Windows でしか使えないのでは ?

オープンソースで互換の環境が作られている 速度や最新機能への対応状況では劣る そもそもオープンな規格で作られている

XNA vs DX ライブラリ「 DX ライブラリを駆逐してやる ! 」

XNA の特徴

しっかりしたオブジェクト指向 コンテントパイプライン XInput のみ扱える XACT に対応 3D に強く、 2D に強くない

利点 : オブジェクト指向

正しくオブジェクト指向してる 入力補完、編集時のヘルプ機能が強力 型で混乱しない

利点 :3D 機能

設定項目の多い 3D グラフィクスを扱うには DX ライブラリのスタイルだと厄介 そこそこ使いやすく無駄も少ない API 設計 標準のシェーダーがそこそこ高機能

欠点 :2D プリミティブ機能

DX ライブラリにあるような「直線を引く」「円を描く」などの命令はない 欲しければテクスチャの描画機能で工夫する or 3D描画で行う

DX ライブラリでも内部的には 3D描画だと思われるのでパフォーマンス差はあまりないはず

欠点 : 文字列描画機能

文字列を描画するにはコンパイル時点で使う文字や字形を決めておく必要がある 文字サイズや使う文字を変えるには毎回コンパイルが必要 多くの字形を使うノベルゲームなどには不向き もちろん縦書き機能はない 縁取りなどの文字装飾も困難

利点 ?: コンテントパイプライン

画像や音楽、シェーダなどをコンパイルしてからゲームで読み込む メモリが節約できたり読み込みが高速化したりするらしい コンパイル時にパラメタを設定していじることもできる XNA初心者にとって分かりにくいポイント コンパイルなしでデータを差し替えるのが困難になる

欠点 :XInput のみ対応

DirectInput を使ったパッドを扱えない マウスとキーボードは問題なく使える DirectInput 対応には XNA 以外のライブラリを別途使うのが定石

SharpDX か SlimDX あたり

利点 ?XACT 対応

Microsoft 製のゲームオディオミドルウェア 実行時のフィルタ操作やピッチ制御、ループ回数制御、同時再生数制御、 3D サウンド再生などが可能

XNA限定の技術ではないが情報が少なめ 入力は Wave ファイル限定

コンパイル時に圧縮は可能 再生位置を直接取得することは不可能

遅延なしでの再生開始、再生開始時刻と現在時刻は取得できるので計算は可能 XACT を使わない簡単な API での再生にも対応

欠点 : ランタイム

プレイには XNA のバージョンに合わせたランタイムがインストールされている必要がある

自動でインストールする仕組みもあるが不評

XNA の始め方

XNA 代替環境

MonoGame

OpenGL ベースの移植 Windows 以外でも動作 コンテントパイプライン以外のほぼすべての機能が使える

SharpDX Toolkit

DirectX の C# 向けライブラリ SharpDX の高級 API群 XNA のグラフィック関係機能と同様の機能が使える

有用な情報源

MSDN

http://msdn.microsoft.com/ja-jp/library/bb200104(v=xnagamestudio.40).aspx

公式リファレンス ひにけに GD

http://blogs.msdn.com/b/ito/

元 XNA 開発チームだったひげねこさんのブログ Xbox Live Indies Game -Eductation

http://xbox.create.msdn.com/ja-JP/education/catalog/

公式サンプル集、基礎から発展的な内容まで

有用なライブラリ

メタセコイア・パイプライン http://

blogs.msdn.com/b/ito/archive/2012/04/30/metasequioa-pipeline-1-1.aspx

メタセコイアで作ったモデルをそのままコンテントパイプラインで読み込める WPF フォントプロセッサー

http://blogs.msdn.com/b/ito/archive/2012/06/04/wpf-font-processor-part2.aspx

日本語を描画するのにほぼ必須のライブラリ

Recommended