スポンサーサイト

■ スポンサー広告 Posted by ひぐま (Higmmer) on -------- at --:--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Simple Game Framework on XNA 公開!

■ プログラム Posted by ひぐま (Higmmer) on 2006-09-09 at 03:54:10

◆共有テーマ: ゲーム製作 関連 [ゲーム]

前回はXNAの中身を追いかけることでGraphicsDeviceにまつわるイベントの発生順序・タイミングを明らかにした上で正しいイベントハンドリングの方法を検討しました。実際のコード例も書きましたが、それをもう少し整理した上で後から拡張しやすいような形に修正し、テンプレート化してみました。

  • SimpleXNAGame.zip (→更新版あり:こちらへどうぞ)

上記ファイルを右クリック→拡張子を".zip"に変えてダウンロードし、マイドキュメントの"Visual Studio 2005\Templates\ProjectTemplates"に保存して下さい(解凍しなくてOK)。するとVisual C# Expressの"新しいプロジェクトを開く"のマイテンプレートに「Simple Game (XNA)」というアイテムが追加されます。これを選んで適当なプロジェクト名を付けて開けば準備完了。あとは煮るなり焼くなりお好きなようにどうぞ(^^)。

何となく勢いで「Simple Game Framework」なんて言ってしまいましたがゲーム作りに必要な機能は何ひとつありません(´・ω・`)ガッカリ。あ、一応ここで紹介したWindowsFontクラスの改良版を組み込んでいますので文字を出すくらいはできます。もちろん初期化やリソース管理に必要なイベントハンドラは一通り登録した状態となっていますのでちょっとだけラクできるはずです。

コードの見通しが立ちやすいように不要な部分は折りたためるようにしておきました(下図参照)。

Game1.csを開いたところ

ここから実際のゲームプログラムを組んでいくにあたっては、

  1. 「リソース作成&解放」
  2. 「ゲーム初期化&終了処理」
  3. 「ゲーム状態更新&画面描画」

をそれぞれ開いて出現するメソッドの中に必要な処理を書いていけばOKです。最初の状態でビルドするとフレームカウンタとフレームレートを表示するプログラムができます。トレース出力を開いておけばイベントが発生する状況やリソース確保のタイミングなどを見ることもできますので参考まで。

実行したところ

尚、オマケ機能としてウィンドウ最小化からの復帰やリサイズ時にフォーカスが消失する問題に対応するコードも埋めておきました。これを行っているのは以下の箇所です(見易いように変更してます)。

private void graphics_DeviceResetting(object sender, EventArgs e) { // ウィンドウのフォーカスが失われるバグ(?)対策 Form form = (Form)Form.FromHandle(Window.Handle); form.BringToFront(); }

本当はForm.ClientSizeChangedを拾う方が正しいんでしょうけど面倒だったので(ぉ。ただ、これ以外にもフルスクリーンにまつわる種々のバグ(Alt+Tabで変になるとか)が未対策ですが、それを修正するのは各自の課題ということにさせて下さい(単なる手抜きです)。

トラックバック

この記事について書く(FC2ブログユーザー)
※言及リンクの無いトラックバックは無効です

PageTop▲

コメント

PageTop▲

コメントの投稿

 
 
 
 
 
 (後で編集・削除したいなら必須)
 
  

PageTop▲

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。