XNAを調べ始めた

XNAというのは、MicrosoftがPCゲームおよびXBox360ゲームの開発を簡単にするために開発したゲームフレームワークである。この開発環境であるXNA Game Studio ExpressMicrosoft Visual C# Expressの拡張として無償提供されている。VC#もいつだったかに無償とされたので、ゲーム開発者達は労せずゲーム開発環境を手にすることが出来るわけだ。まぁ、Windowsにロックインされてしまうけど。

数週間前に自分のPCにつっこんではいたのだが、いろいろとあってなかなか触る機会がなかった。退職を控えて引き継ぎがてらメイン作業が他の人員にまわされた今、ようやくこいつを調べる余裕が生まれたわけである。

さて。XNA Game Studioには丁寧なドキュメントが付属しているので、これを一通り攻略すれば基礎は飲み込めそうである。ただし、全部英語。まぁよい、技術英語など大して難しくはない。で、すぐに出てきたキーワードは「Asset Name(アセット名)」とかいうもの。なんじゃこりゃ?

どうやら「Content Pipeline」という抽象概念が元であるらしい。ファイルアクセスみたいな泥臭い作業を抽象化して、それに割り当てられた一意な名称(これをアセット名というようだ)越しに取り出せる。オブジェクトキャッシュなんかも勝手に効かせてくれるっぽい?

VC#Exに表示させたい画像ファイルをドロップしたら勝手にContent Pipelineに追加されるので、ここで払い出されたアセット名をTexture2Dに食わせたらもう取り込み完了。あとはスプライト使って貼るだけ。どんだけ簡単なんだ。Managed DirectXでこれに挑戦したときは、それはもうあれやこれやと面倒な諸手続があって閉口したもんだが・・・。たぶん、サウンドとかも似たようなことができるのだろう。

よし、XNA。つかみはOKだ。お前はカッコイイ。お前はイカしている。MDXの100倍は遊びがいがあるかもしれん。



テクスチャの移動や拡大縮小、そして回転もあっさりとできた。これをゲームパッドの入力に合わせるのはたやすい。でも、回転の中心が(0, 0)になってしまうのは相変わらずか。どうもこのへんのクセがつかめないなぁ。こういう仕様になっているのは理由があるはずなんだが。



ぎゃあ!そうか、こいつC#2.0か!ジェネリック使ってやがる!?また本買い直しか・・・orz



どうやらXBox360ゲームパッドしか使えないっぽい。たぶん使えなくはないが、いろいろ動かなかったりするらしい。この部分だけDirectInputにしたりできるのかね?