Upload
masato
View
1.735
Download
0
Embed Size (px)
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
日本語を描画するのにほぼ必須のライブラリ