XNA Frameworkブログ
 

XNAカスタムコントロール

XNAカスタムコントロール

  • Comments 2

以前から、XNAを.NetのControl内で使いたいという要望を何度か聞くことがありました。本当はXNA 2.0で導入される予定でしたがテスト期間が間に合わなかったために見送りとなりました。ですが以前書いたようにXNA 2.0でGraphicsDeviceが仮想化されたことによってウィンドウ内でXNAを使う実装が非常にシンプルになったので、Creators Club Onlineにサンプルがアップされました。

WinForms Series 1: Graphics Device Sample

このサンプルでは、XNAをWinFormsのカスタムコントロールとして使う方法が実装されています。単体のコントロールを配置したときに動作するのはもちろん、複数のコントロールを配置した場合でも動作するので3Dゲーム用のエディター等で3面図+カメラビューの四つの画面を表示したりというときに便利です。実装的にはひとつのGraphicsDeviceを使いまわしているので、モデルデータ等は別コントロールであっても同じものが使えます。

WinForms Series 2: Content Loading Sample

ゲームエディタなどを作るときには、コンテントパイプラインを通る前のfbxファイルやxファイルを直接指定できたほうが便利ですが、一度Content.Load<T>に慣れてしまうと自前でNodeContentやMeshContentからモデル描画するのは非常に面倒ですし、パフォーマンス的な問題もあります。そこで、このサンプルではfbxファイルを直接読むのではなく、ツール上でコンテントパイプラインのビルド処理をすることで普段のゲームと同じようにContent.Load<T>を使えるようにしています。コンテントパイプラインのビルド処理はMSBuildを使っているのですが、このサンプルのContentBuilder.csファイル内でMSBuildのタスクを実行することで実現しています。

ある程度規模の大きなゲームになってくると、ゲームエディタなどのツールが必要になってきますが、上の二つのサンプルが参考になるのではないでしょうか?

Leave a Comment
  • Please add 6 and 6 and type the answer here:
  • Post
  • はじめまして。

    XNAを初めて触ってみているのですが、System.Windows.FormsにあるようなGUI部品が全くなく、すべて自前で作らなければならないのに戸惑っています。

    ボタンやメニュー枠、テキスト枠、クリックイベント付きオブジェクト、スクロールバー等、テクスチャが違うだけで役割は同じ部品がすべて車輪の再発明になってしまうように思われるのです。

    今後のロードマップで、このような汎用的な部品は提供される予定なのでしょうか。

  • 残念ながら現状ではそういったGUIシステムを提供できる目処は立っていません。

    ゲームに要求されるGUIの機能はアニメーション、画面効果、3D表示等、非常に多岐に渡っていて単にWindows.Forms部分を移植するだけでは、そういった要求を満たすことができません。

    また、Windows.Formsとゲームとのアーキテクチャ的な違いも問題になります。1/60秒毎に全画面を描き直すゲームに比べるとWinFormsは低レートで画面を書き換えることに特化していたり、イベントの応答時間の違い、ゲームコントローラーでの操作への対応等、いろいろとクリアしないといけない課題があります。

    そういった現状なので、その解決案がでるまではGUIシステムを提供する予定はありません。

    その代わりに、ゲーム内で使える簡単なメニューシステムはCreators Clubの方でサンプルとして公開しています。このサンプルが役立つ場面もあると思うので参考にしていただけると幸いです。http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Game-State-Management-Sample.aspx

Page 1 of 1 (2 items)