プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
WinFormsGraphicsDevice公式サンプル
WinFormsGraphicsDeviceサンプル
Windowsフォームアプリケーション内にXNAのアニメを描画する公式サンプル。フォーム内のポリゴンが回転する。



◎Windowsフォームの呼び出し

今回は汎用的なメッセージ表示処理を作成します。Windowsのフォーム部品を使えるなら手っ取り早いのですが、XNAでそのまま使えるのでしょうか?

試しに「プロジェクト>クラスの追加」でWindowsフォームを追加し、LoadContent()に下記を追加しました。

form1 = new Form1();
form1.Visible = true;


Windowsフォームの呼び出し01

とりあえずフォームが表示されました。このまま使って問題無いのかな?

試しにラベルやボタン等を配置すると、問題無く動作します。しかしSaveFileDialogを表示しようとしたらエラーになりました。やっぱり何か問題があるのでしょうか?



◎公式サンプル

ネットで調べると、WinFormsアプリケーション内でXNAを動かす公式サンプルがありました。

WinFormsGraphicsDevice公式サンプル

付属ドキュメントでは、XNAのGameクラスを置き換える(ユーザーフォームにGameクラスの機能を追加する)方法について解説しています。へぇ~XNAってWindowsではこんな風に実装されてるのか…。日本語版もありますので、技術的に興味がある方は一読してみてください。


ですが、これはWinFormsアプリケーション内でXNAを動かすサンプルです。逆に、XNAからWinFormsを呼び出すイメージで動かしたいのですが、その際気になることが付属ドキュメントの「GraphicsDevice の管理」に記述されてました。

どうやら、GraphicsDeviceインスタンスを単一共有化するための手法や注意事項が長々と記述されているようですが、逆に言えば、こうしないとGraphicsDeviceインスタンスが複数同時使用されて‘描画効率が落ちる’ということではないでしょうか?



◎動作テスト

メイン画面に適当なフォームを追加して、動作やパフォーマンスを確認しましょう。

Windowsフォームの呼び出し02

FPS:60 → 60 (fps)
Draw:9 → 11 (ms)

動作はあまり問題無さそうですね。フォームはモーダルでもバックの兵士は動くし、キーボード操作でスクロールさせることもできました。2msはちょっと遅い気がしますが、GraphicsDeviceインスタンスを単一にすれば早くなるかもしれません。

1つ気になるのは、フォームの背景にメイン画面を半透明で表示することができないかもしれない、という点です。

メイン画面のレンダーターゲットから毎フレームテクスチャを取得することは可能です(これは早い)が、テクスチャからビットマップ等への変換に時間がかかりそうです。半透明でないとまずいウィンドウって、あったかなぁ?



◎懸念事項

三国志軍記はシミュレーションゲームなので、リストやグリッド(或いはツリービューやリストビューなど)を多用します。メッセージダイアログだけならともかく、これらの複雑なウィンドウを全て自作すると面倒なので、可能であればWindowsフォームを利用したいところです。

ですが、そのために制限事項が増えたり、パフォーマンスが低下したり、余計な作業や懸念が増えるようであれば、初めから自作した方が良いのかもしれません。

どうしたもんかなぁ(悩)


ちなみに、いずれXbox360に移植することも考えてますが、その際には操作性(キーボード&マウス→パッド)や描画処理など大幅に作り直すことになると思うので、その時に考えます(^^;



◎次回予告

Xbox360の人って、皆さんどうしてるんですかね?
凝ったウィンドウはあまり見かけない(それ以前に日本語表示が少ない)気がするので、自前で用意してるのかな?

まだ結論が出ないので、次回はリストやグリッドについて調べます。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

というか

OSのウィンドウを使う予定だったのですね…。

360にはウィンドウはありません。いわばシングルウィンドウです。それっぽく見えるのはみな自作だと思われます。

Winに移植された版の『三国志II』はダイアログが出てきましたが、PCゲームでも最近のものはほとんどOSの提供するウィンドウリソースには頼っていないと思います。小さなウィンドウでも描画やメッセージポンプなどけっこう大きなリソースを食いますし、そのわりに見た目は修正しづらいですから。それこそ、360などへ移植することを考えるとなおさらだと思います。

やはり皆さん自作なのですね…。

ボタン押下アニメとかも全て自作するのが普通なんでしょうか?

コーエー三国志とかは良いのですが、エイジオブエンパイアやシヴィライゼーションなどは、欲しいウィンドウが無かったり、操作性が悪くて不満に思うことがありました。
コーエー三国志並みに仕上げるのは面倒そうでちょっと気後れしますが…でも仕方ないですね(^^;

とりあえずボタンやリストなど、簡単そうな部品から作ろうと思います。

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。