3ヶ月位前の日記のものではありますが…
6/9に書いた記事「VC++ 2008でフレームワークを作成」のサンプルソースが、この最近、思っていたキリ番に到達しました。
…が、こんないい加減なものでさえ検索に引っ掛り、そしてソースを読むためにそこそこ落されているんだなぁ~とシミジミします。
そして、この6/9のサンプルソースばっかりに群がられても、アレが私のC++のスキルと思われる感じがして、なんかちょっとシャクに障る感じるところもあったので(これが本日記を書いた動機です)、これを期に7/16に書いた記事「VC++ 2008で3Dのフレームワークを作成」のサンプルプログラムのソースの方も公開しておこうかと思います。
…が、こんないい加減なものでさえ検索に引っ掛り、そしてソースを読むためにそこそこ落されているんだなぁ~とシミジミします。
そして、この6/9のサンプルソースばっかりに群がられても、アレが私のC++のスキルと思われる感じがして、なんかちょっとシャクに障る感じるところもあったので(これが本日記を書いた動機です)、これを期に7/16に書いた記事「VC++ 2008で3Dのフレームワークを作成」のサンプルプログラムのソースの方も公開しておこうかと思います。
VC++ 2008でフレームワークを作成
ということで(何が「ということ」なんだろ?(^^ゞ)、サンデープログラムの即興ではありますが、VC++にいままで設計したフレームワークをポーティングしてみました。
【開発環境】
[プラットフォーム]
・Windows XP SP3
[コンパイル環境]
・Microsoft VC++ 2008 Express Edition SP1β
・Microsoft DirectX SDK (March 2008)
【実行方法】
「Release\SampleActionWin.exe」を実行します。
上述の開発環境のため、ランタイムが必要になると思います。
この辺りでしょうか。
「Microsoft Visual C++ 2008 再頒布可能パッケージ」
ちなみにWindows Vista SP1ではランタイムが不要でした。
また、Windows 2000位古いOSになると、GDI+のランタイムも必要になるかと思います。
(Javaで記載したサンプルソースのリソースをそのまま使いたかったので、BMPを使いたくない理由からGDI+を使ったリソース管理にしました)
プログラムはデータリソースとして、プログラムのフォルダにある、「Resouece」フォルダ下のデータを読み込みます。
掲載するプログラムのReleaseの下にそのまま置いてあるので特に変更は不要ですが、もしもプログラムを別のフォルダに移動する場合にはこのフォルダも一緒に移動させてください。このデータがないとプログラムは正常に実行できません。
【操作方法と終了方法】
[操作]
・カーソルキーの上下で上下に移動、Zキーでショットです。
・ジョイスティックに対応しています。
ショットは俗に言うmmsystem.hの"JOY_BUTTON1"に当たるボタンになります。
[終了]
・Windowsのプログラムの終了同様に「Alt + F4」キーの押下。
・「ESC」キーの押下。
【その他】
・このプログラムはプログラムのフォルダにある「SampleActionGame.ini」を読み込みます。
セクションは以下のとおりとなります。
----
[Display]
FullScreen=モード
ScreenSize=スクリーンサイズ
----
FullScreenキー:0でウィンドウ、1でフルスクリーン
ScreenSizeキー:W,Hでサイズを設定します。
ScreenSizeは実行するコンピュータのDirectShowでサポートされるスクリーンサイズとなります。
掲載する設定では「800,600」となっています。もしも起動しない場合は、「640,480」(VGA)等が適切と思います。
・サウンドにはMCIを使用しています。(Javaのフレームワークを手っ取り早く移植してみたかったため)
MCIはサウンドドライバ(とOS)にかなり依存するので、音源の再生がコンピュータによりまちまちです。
BGMのループ再生はWindows Vistaではかなりいい感じの再生でしたが、
XPでは少し納得いかない再生処理とかしました。(MCI内部のスレッドとサウンドドライバの問題です。多分)
・フルスクリーンにおいて、デバイスロストを処理していません。
DirectXのその辺の仕組みが大嫌いなので、即興では組みませんでした。
もしもフルスクリーンで実行した場合によるVRAMの破壊は保障できませんのでご了承ください。
(とはいっても、壁紙やアイコン程度がログオフまで死ぬ程度ですかね)
【ソースファイル】
最近掲載していたプログラムで説明が省かれていましたが、『この実行は自己責任』にてお願いいたします。
■ サンプルソース (2008.06.09)
一気に作ったソースを挙げても、ソースを読む方がどんなコードなんだ?となりそうなので、読む方の指標となるスキル位は挙げておいた方がいいかもしれませんね。
【ソースを読む方の対象スキル(○○が分かる方)】
・C++(当たり前ですね)
・C++のSTL(主にコンテナ)
・Windows SDKのウィンドウ操作(主にメッセージループ)
・Windows SDKのGDIとGDI+操作(デバイスコンテキストとビットマップ)
・Windows SDKのスレッド操作(プリエンプティブなデータ処理による排他制御込み)
・DirectX(のDirect Show)
・Windows SDKのMCI(これが一番簡単なスキルですね)
こんなでしょうか。これがこのソースを読むためのスキルです。
◇ ◇ ◇
今回はいつもと違って、「ちょっと即興でサクッと演(や)ってみた。」という感じなので、いつものような長々とした設計については説明しませんw
(というより、いままでこのブログでニュートラルに設計したものをC++言語で実装しただけですが(^^ゞ)
加えて言い訳するとしたら、これはいままでの超高級言語での簡単コーディングと違って、それなりにマニアックな内容を即興で作ってみたという事と、流石にVC++のカテゴリーでこのサンプルを一から説明していると、私のやりたいことが飽和してしまうから…というところですね。(^^ゞ
とは言っても、「動かない」とか「この辺りの仕組みが知りたい」等の何かがあれば、コメントに書いていただければ、分かる範囲で進めていけるかも知れません。私でも分からないことは一緒に進めて行きましょう!(´▽`)ノ
◇ ◇ ◇
とまぁこんな感じですが、これ位が『無料の』(←ココこだわるなぁ~w)VC++ 2008ですぐにできるので、Sample Action GameをVC++に移植するのは簡単なんだろうなぁ~とか思いました。
(一瞬PSPとかGP2Xに移植してみたいなぁ~とか思いましたがwww)
しかしBGMができない限り、あのゲームは有名ポータルサイトにもどこにも日の目を見ないだろうなぁ~とも思いました。(サンプルで作ったので、タイトルもアレだしw)
【2008/10/30追記】
この日記の3ヵ月後に、これよりも高度なサンプルを本ブログに掲載しました。
本日記のソースよりも勉強になるかと思います。
【開発環境】
[プラットフォーム]
・Windows XP SP3
[コンパイル環境]
・Microsoft VC++ 2008 Express Edition SP1β
・Microsoft DirectX SDK (March 2008)
【実行方法】
「Release\SampleActionWin.exe」を実行します。
上述の開発環境のため、ランタイムが必要になると思います。
この辺りでしょうか。
「Microsoft Visual C++ 2008 再頒布可能パッケージ」
ちなみにWindows Vista SP1ではランタイムが不要でした。
また、Windows 2000位古いOSになると、GDI+のランタイムも必要になるかと思います。
(Javaで記載したサンプルソースのリソースをそのまま使いたかったので、BMPを使いたくない理由からGDI+を使ったリソース管理にしました)
プログラムはデータリソースとして、プログラムのフォルダにある、「Resouece」フォルダ下のデータを読み込みます。
掲載するプログラムのReleaseの下にそのまま置いてあるので特に変更は不要ですが、もしもプログラムを別のフォルダに移動する場合にはこのフォルダも一緒に移動させてください。このデータがないとプログラムは正常に実行できません。
【操作方法と終了方法】
[操作]
・カーソルキーの上下で上下に移動、Zキーでショットです。
・ジョイスティックに対応しています。
ショットは俗に言うmmsystem.hの"JOY_BUTTON1"に当たるボタンになります。
[終了]
・Windowsのプログラムの終了同様に「Alt + F4」キーの押下。
・「ESC」キーの押下。
【その他】
・このプログラムはプログラムのフォルダにある「SampleActionGame.ini」を読み込みます。
セクションは以下のとおりとなります。
----
[Display]
FullScreen=モード
ScreenSize=スクリーンサイズ
----
FullScreenキー:0でウィンドウ、1でフルスクリーン
ScreenSizeキー:W,Hでサイズを設定します。
ScreenSizeは実行するコンピュータのDirectShowでサポートされるスクリーンサイズとなります。
掲載する設定では「800,600」となっています。もしも起動しない場合は、「640,480」(VGA)等が適切と思います。
・サウンドにはMCIを使用しています。(Javaのフレームワークを手っ取り早く移植してみたかったため)
MCIはサウンドドライバ(とOS)にかなり依存するので、音源の再生がコンピュータによりまちまちです。
BGMのループ再生はWindows Vistaではかなりいい感じの再生でしたが、
XPでは少し納得いかない再生処理とかしました。(MCI内部のスレッドとサウンドドライバの問題です。多分)
・フルスクリーンにおいて、デバイスロストを処理していません。
DirectXのその辺の仕組みが大嫌いなので、即興では組みませんでした。
もしもフルスクリーンで実行した場合によるVRAMの破壊は保障できませんのでご了承ください。
(とはいっても、壁紙やアイコン程度がログオフまで死ぬ程度ですかね)
【ソースファイル】
最近掲載していたプログラムで説明が省かれていましたが、『この実行は自己責任』にてお願いいたします。
■ サンプルソース (2008.06.09)
一気に作ったソースを挙げても、ソースを読む方がどんなコードなんだ?となりそうなので、読む方の指標となるスキル位は挙げておいた方がいいかもしれませんね。
【ソースを読む方の対象スキル(○○が分かる方)】
・C++(当たり前ですね)
・C++のSTL(主にコンテナ)
・Windows SDKのウィンドウ操作(主にメッセージループ)
・Windows SDKのGDIとGDI+操作(デバイスコンテキストとビットマップ)
・Windows SDKのスレッド操作(プリエンプティブなデータ処理による排他制御込み)
・DirectX(のDirect Show)
・Windows SDKのMCI(これが一番簡単なスキルですね)
こんなでしょうか。これがこのソースを読むためのスキルです。
◇ ◇ ◇
今回はいつもと違って、「ちょっと即興でサクッと演(や)ってみた。」という感じなので、いつものような長々とした設計については説明しませんw
(というより、いままでこのブログでニュートラルに設計したものをC++言語で実装しただけですが(^^ゞ)
加えて言い訳するとしたら、これはいままでの超高級言語での簡単コーディングと違って、それなりにマニアックな内容を即興で作ってみたという事と、流石にVC++のカテゴリーでこのサンプルを一から説明していると、私のやりたいことが飽和してしまうから…というところですね。(^^ゞ
とは言っても、「動かない」とか「この辺りの仕組みが知りたい」等の何かがあれば、コメントに書いていただければ、分かる範囲で進めていけるかも知れません。私でも分からないことは一緒に進めて行きましょう!(´▽`)ノ
◇ ◇ ◇
とまぁこんな感じですが、これ位が『無料の』(←ココこだわるなぁ~w)VC++ 2008ですぐにできるので、Sample Action GameをVC++に移植するのは簡単なんだろうなぁ~とか思いました。
(一瞬PSPとかGP2Xに移植してみたいなぁ~とか思いましたがwww)
しかしBGMができない限り、あのゲームは有名ポータルサイトにもどこにも日の目を見ないだろうなぁ~とも思いました。(サンプルで作ったので、タイトルもアレだしw)
【2008/10/30追記】
この日記の3ヵ月後に、これよりも高度なサンプルを本ブログに掲載しました。
本日記のソースよりも勉強になるかと思います。
Visual C++ 2008 Express Edition(゜∀゜)イイ!!
私は毎月(や毎週)色々なコンピュータ関係の雑誌を購読しているのですが、この時期は春に入社した新人エンジニア向けに入門連載が多かったりします。
流石に何年もソフトウェア開発をしているので、いちいちそれら入門連載全てに目を通している訳ではないのですが、「初心忘れるべからず」で斜め読み位はしている感じです。
そんななか、雑誌の付録のDVD-ROMを見てみると、「Visual Studio 2008 Express Edition」が…
しかも、「VB、VC、VC#…って、主力開発IDE全部やんかっ!」と驚愕し、「あ~。そーいや、先月SP1のβがリリースされたんだよなぁ~」と思い、余っているコンピュータにインストールしてみました。
私は過去に配布されたVC++ 2005のExpress Editionもインストールしたことなかったので、「今のVC++って、フリーでどこまで開発できるんだろ?」と思いながらインストールしてみたところ、MFCが提供されていないだけで、Platform SDKやCLIのアプリケーションが作れるという事が分りました。
昔はWindows上のフリーコンパイラで開発…というと、Borland C++(コマンドライン版)や、cygwin + gcc、最近ではEclipse + gccというのを私はイメージしていましたが、VC++のIDEで、且つフリーでここまで開発ができるというのは、なんとも良い時代だなぁ~とシミジミします。
そしてそれと同時に、仕事によってMFCも長年使っている私としては、MFCが廃れていくのは少し寂しいなぁ~と感じました…(ってまだまだサポートされてはいますが(^^ゞ)
MFCはOWLと違ってかなり息の長いクラスライブラリではありますが、.NET構想辺りから幕引きが始まった感があったので、このようなフリーコンパイラを色々な人が使うとなると、サポートされないライブラリは自然に淘汰されていくものだろうと思いました。
◇ ◇ ◇
という事で、まず最初にウィザードで適当にWindowsフォームアプリケーションのスケルトンを生成してみましたが、これはCLIアプリケーションとなっているので、「ほほぉ~、超高級言語! 最高や~。」って感じでしたが、これだったら同じマネージコードを生成するC#の方が言語的にもいいかな…と思い、続いてWin32のWindowsアプリケーション(Platform SDK)のスケルトンを生成してみました。
こちらは、WinMain(_tWinMain)からのベタなWindowsプログラミングが出力され、「こ、こんな時代に"RegisterClassEx"www …(゜∀゜)イイ!!」と、Windows 2.xからプログラミングしている私には、出力された懐古コードに気持ちがワクワクしてきました…
これだったらフリーで楽々(?)アンマネージのDirectXも操作できるし、XNAで速度が出なかったり、ライブラリが充実しなかったり、元々の学習目的だったC#の言語をある程度習得して、もうXNAでのゲーム開発はいいや…と思ったりした場合は、こっちに移行できるなぁ~と思いました。
ということで、このフリー版コンパイラで、ちょっといつものフレームワークを少し構築してみようかな…
と、ちょっと思っちゃったりなんかしちゃったりして~。(広川太一郎風)
流石に何年もソフトウェア開発をしているので、いちいちそれら入門連載全てに目を通している訳ではないのですが、「初心忘れるべからず」で斜め読み位はしている感じです。
そんななか、雑誌の付録のDVD-ROMを見てみると、「Visual Studio 2008 Express Edition」が…
しかも、「VB、VC、VC#…って、主力開発IDE全部やんかっ!」と驚愕し、「あ~。そーいや、先月SP1のβがリリースされたんだよなぁ~」と思い、余っているコンピュータにインストールしてみました。
私は過去に配布されたVC++ 2005のExpress Editionもインストールしたことなかったので、「今のVC++って、フリーでどこまで開発できるんだろ?」と思いながらインストールしてみたところ、MFCが提供されていないだけで、Platform SDKやCLIのアプリケーションが作れるという事が分りました。
昔はWindows上のフリーコンパイラで開発…というと、Borland C++(コマンドライン版)や、cygwin + gcc、最近ではEclipse + gccというのを私はイメージしていましたが、VC++のIDEで、且つフリーでここまで開発ができるというのは、なんとも良い時代だなぁ~とシミジミします。
そしてそれと同時に、仕事によってMFCも長年使っている私としては、MFCが廃れていくのは少し寂しいなぁ~と感じました…(ってまだまだサポートされてはいますが(^^ゞ)
MFCはOWLと違ってかなり息の長いクラスライブラリではありますが、.NET構想辺りから幕引きが始まった感があったので、このようなフリーコンパイラを色々な人が使うとなると、サポートされないライブラリは自然に淘汰されていくものだろうと思いました。
◇ ◇ ◇
という事で、まず最初にウィザードで適当にWindowsフォームアプリケーションのスケルトンを生成してみましたが、これはCLIアプリケーションとなっているので、「ほほぉ~、超高級言語! 最高や~。」って感じでしたが、これだったら同じマネージコードを生成するC#の方が言語的にもいいかな…と思い、続いてWin32のWindowsアプリケーション(Platform SDK)のスケルトンを生成してみました。
こちらは、WinMain(_tWinMain)からのベタなWindowsプログラミングが出力され、「こ、こんな時代に"RegisterClassEx"www …(゜∀゜)イイ!!」と、Windows 2.xからプログラミングしている私には、出力された懐古コードに気持ちがワクワクしてきました…
これだったらフリーで楽々(?)アンマネージのDirectXも操作できるし、XNAで速度が出なかったり、ライブラリが充実しなかったり、元々の学習目的だったC#の言語をある程度習得して、もうXNAでのゲーム開発はいいや…と思ったりした場合は、こっちに移行できるなぁ~と思いました。
ということで、このフリー版コンパイラで、ちょっといつものフレームワークを少し構築してみようかな…
と、ちょっと思っちゃったりなんかしちゃったりして~。(広川太一郎風)
| HOME |