VC++ 2008で3Dのフレームワークを作成
最近は少しSample Action Game 3Dの開発から脱線してみて、VC++ 2008にてコレのフレームワークから拡張した3Dのフレームワークを作成してみたりしました。
DirectXの歴史上、2Dのゲームを旧式のDirectShowの方式にて実現すると、半透明(アルファブレンド)や回転処理がかなり大変になるので、全てをDirect3D9のインターフェースに置き換えての実装を行ってみました。
これでキャラクターは3Dモデル、インジケーター等は2Dスプライトとういう感じで表示できるので、後はアイディアと労力だけあれば… と、夢は広がるばかりです。(´▽`)
(って、アイディアと労力の捻出が超大変なのですが(^^;)
ということで、サンプルの実行ファイルをうpしてみようかと。
実行方法は前回と殆ど変りないのですが、少し変更してみたりしました。
【実行方法】
「SampleGame.exe」を実行します。
以下に説明する「SampleGame.ini」の存在及びスクリーンサイズの設定が行われていない場合は、スクリーン一覧ダイアログが表示されます。
任意のスクリーンを指定すると、その大きさで画面が表示されます。
上述の開発環境のため、ランタイムが必要になると思います。
この辺りでしょうか。
「Microsoft Visual C++ 2008 再頒布可能パッケージ」
「Direct3Dランタイム」(特に「D3DX9d_37.dll」が必須のようです)
ちなみにWindows Vista SP1でも条件は一緒でした。
上述二つがそろわないとサイドバイサイドエラーです。
条件が揃えば、Windows2000、XP、Vistaで動作は確認できました。
プログラムはデータリソースとして、プログラムのフォルダにある、「Data」フォルダ下のデータを読み込みます。
掲載するプログラムの所にそのまま置いてあるので特に変更は不要ですが、もしもプログラムを別のフォルダに移動する場合にはこのフォルダも一緒に移動させてください。このデータがないとプログラムは正常に実行できません。
【操作方法と終了方法】
[操作]
・カーソルキーの上下で上下に移動、Zキーでショットです。
・ジョイスティックに対応しています。
ショットは俗に言うmmsystem.hの"JOY_BUTTON1"に当たるボタンになります。
[終了]
・Windowsのプログラムの終了同様に「Alt + F4」キーの押下。
・「ESC」キーの押下。
【その他】
・このプログラムは"プログラムのフォルダ(プログラムと同じ階層)"にある「SampleGame.ini」を読み込みます。
セクションは以下のとおりとなります。
----
[Display]
FullScreen=モード
ScreenSize=スクリーンサイズ
----
FullScreenキー:0でウィンドウ、1でフルスクリーン
ScreenSizeキー:W,Hでサイズを設定します。
ScreenSizeは実行するコンピュータのDirect3Dでサポートされるスクリーンサイズとなります。
もしも起動しない場合は、「640,480」(VGA)等が適切と思います。
・サウンドにはMCIを使用しています。(Javaのフレームワークを手っ取り早く移植してみたかったため)
MCIはサウンドドライバ(とOS)にかなり依存するので、音源の再生がコンピュータによりまちまちです。
BGMのループ再生はWindows Vistaではかなりいい感じの再生でしたが、
XPでは少し納得いかない再生処理とかしました。(MCI内部のスレッドとサウンドドライバの問題です。多分)
・フルスクリーンにおいて、デバイスロストを処理しました。(今回は糞面倒臭い事をマジメにやりました)
【実行ファイル】
いつものことですが、『この実行は自己責任』にてお願いいたします。
本プログラムの実行による不具合についていかなる責任も負わないものとします。
■ 実行ファイル (2008.07.16)
【最近思ったこと】
6/9に掲載したコレのソースがやたらとダウンロードされているので(今迄掲載した中でも断とつトップです)、「VC++上でのゲーム開発って人気あるのかなぁ…」
とか思うのですが、本業の仕事では「VC++使いには殆ど出会わないなぁ…」というのが私の所感です。
この流れから
「20代以下の若い子がゲームプログラミングに興味がある」
「ゲームプログラミングはやっぱりC言語だべ」
みたいな事を考えて検索して、このブログに来たのかなぁ~とか思いました。
あと、どのように検索すると、このブログに来れるのかも良く分っていなので、なんでこんなに落されているのだろう…とかも思いました。
(もしかしてジョイスティック関連?www)
そして、何年振りか忘れてしまった位久々だったのですが、リソースファイルをリソースエディタを使わずに直にリソースファイルを記述してダイアログボックスを表示させました。
なんかこう、大事なものが忘れてかけていた…というものを呼びおこすキッカケになった感じがします。(^^)
ダイアログリソースとダイアログプロシージャをクラス化すると、自作MFCっぽくて楽しいです。
これでキャラクターは3Dモデル、インジケーター等は2Dスプライトとういう感じで表示できるので、後はアイディアと労力だけあれば… と、夢は広がるばかりです。(´▽`)
(って、アイディアと労力の捻出が超大変なのですが(^^;)
ということで、サンプルの実行ファイルをうpしてみようかと。
実行方法は前回と殆ど変りないのですが、少し変更してみたりしました。
【実行方法】
「SampleGame.exe」を実行します。
以下に説明する「SampleGame.ini」の存在及びスクリーンサイズの設定が行われていない場合は、スクリーン一覧ダイアログが表示されます。
任意のスクリーンを指定すると、その大きさで画面が表示されます。
上述の開発環境のため、ランタイムが必要になると思います。
この辺りでしょうか。
「Microsoft Visual C++ 2008 再頒布可能パッケージ」
「Direct3Dランタイム」(特に「D3DX9d_37.dll」が必須のようです)
ちなみにWindows Vista SP1でも条件は一緒でした。
上述二つがそろわないとサイドバイサイドエラーです。
条件が揃えば、Windows2000、XP、Vistaで動作は確認できました。
プログラムはデータリソースとして、プログラムのフォルダにある、「Data」フォルダ下のデータを読み込みます。
掲載するプログラムの所にそのまま置いてあるので特に変更は不要ですが、もしもプログラムを別のフォルダに移動する場合にはこのフォルダも一緒に移動させてください。このデータがないとプログラムは正常に実行できません。
【操作方法と終了方法】
[操作]
・カーソルキーの上下で上下に移動、Zキーでショットです。
・ジョイスティックに対応しています。
ショットは俗に言うmmsystem.hの"JOY_BUTTON1"に当たるボタンになります。
[終了]
・Windowsのプログラムの終了同様に「Alt + F4」キーの押下。
・「ESC」キーの押下。
【その他】
・このプログラムは"プログラムのフォルダ(プログラムと同じ階層)"にある「SampleGame.ini」を読み込みます。
セクションは以下のとおりとなります。
----
[Display]
FullScreen=モード
ScreenSize=スクリーンサイズ
----
FullScreenキー:0でウィンドウ、1でフルスクリーン
ScreenSizeキー:W,Hでサイズを設定します。
ScreenSizeは実行するコンピュータのDirect3Dでサポートされるスクリーンサイズとなります。
もしも起動しない場合は、「640,480」(VGA)等が適切と思います。
・サウンドにはMCIを使用しています。(Javaのフレームワークを手っ取り早く移植してみたかったため)
MCIはサウンドドライバ(とOS)にかなり依存するので、音源の再生がコンピュータによりまちまちです。
BGMのループ再生はWindows Vistaではかなりいい感じの再生でしたが、
XPでは少し納得いかない再生処理とかしました。(MCI内部のスレッドとサウンドドライバの問題です。多分)
・フルスクリーンにおいて、デバイスロストを処理しました。(今回は糞面倒臭い事をマジメにやりました)
【実行ファイル】
いつものことですが、『この実行は自己責任』にてお願いいたします。
本プログラムの実行による不具合についていかなる責任も負わないものとします。
■ 実行ファイル (2008.07.16)
【最近思ったこと】
6/9に掲載したコレのソースがやたらとダウンロードされているので(今迄掲載した中でも断とつトップです)、「VC++上でのゲーム開発って人気あるのかなぁ…」
とか思うのですが、本業の仕事では「VC++使いには殆ど出会わないなぁ…」というのが私の所感です。
この流れから
「20代以下の若い子がゲームプログラミングに興味がある」
「ゲームプログラミングはやっぱりC言語だべ」
みたいな事を考えて検索して、このブログに来たのかなぁ~とか思いました。
あと、どのように検索すると、このブログに来れるのかも良く分っていなので、なんでこんなに落されているのだろう…とかも思いました。
(もしかしてジョイスティック関連?www)
そして、何年振りか忘れてしまった位久々だったのですが、リソースファイルをリソースエディタを使わずに直にリソースファイルを記述してダイアログボックスを表示させました。
なんかこう、大事なものが忘れてかけていた…というものを呼びおこすキッカケになった感じがします。(^^)
ダイアログリソースとダイアログプロシージャをクラス化すると、自作MFCっぽくて楽しいです。
コメント
コメントの投稿
« 「Sample Action Game」紹介記事インデックス l Home l 昔のゲームの想い出 [0061] 「マリンアドベンチャー」 [トミー] [1982] [ぴゅう太] »