3ヶ月位前の日記のものではありますが…
6/9に書いた記事「VC++ 2008でフレームワークを作成」のサンプルソースが、この最近、思っていたキリ番に到達しました。
…が、こんないい加減なものでさえ検索に引っ掛り、そしてソースを読むためにそこそこ落されているんだなぁ~とシミジミします。
そして、この6/9のサンプルソースばっかりに群がられても、アレが私のC++のスキルと思われる感じがして、なんかちょっとシャクに障る感じるところもあったので(これが本日記を書いた動機です)、これを期に7/16に書いた記事「VC++ 2008で3Dのフレームワークを作成」のサンプルプログラムのソースの方も公開しておこうかと思います。
…が、こんないい加減なものでさえ検索に引っ掛り、そしてソースを読むためにそこそこ落されているんだなぁ~とシミジミします。
そして、この6/9のサンプルソースばっかりに群がられても、アレが私のC++のスキルと思われる感じがして、なんかちょっとシャクに障る感じるところもあったので(これが本日記を書いた動機です)、これを期に7/16に書いた記事「VC++ 2008で3Dのフレームワークを作成」のサンプルプログラムのソースの方も公開しておこうかと思います。
検索からやってくる情報を鑑みて、これを落している人物像は「C言語でゲームを作成してみたいと思っている、30代未満の人」だと思っているのですが(しかも平均して真夜中が多いので、学生かなぁ~?と)、それだったらこっちよりも7/16に書いた「VC++ 2008で3Dのフレームワークを作成」の方を読んでもらった方がいいかなぁという感じです。
こちらの方は、モデルのアニメーションはしないもの、6/9の記事の内容に比べて
・2Dテクスチャの表示を行う。
・2Dテクスチャのスケーリング(拡大/縮小)を行う。
・2Dテクスチャの回転を行う。
・2Dテクスチャのアルファブレンドを行う。
・3Dモデルの表示を行う。(平行移動/スケーリング/回転)
という事をやっているサンプルなので、独習におけるソース解読としては、まだこちらの方が良いとは思っています。
とはいっても、6/9はDirectDraw、7/16はDirect3Dという切り分けで考えているフシがあり、且つこれらは私自身も我流で作っている訳なので、解釈次第では間違ったものを覚えてしまうという危険性もあるので気をつけてもらえると幸いです。
また、検索で6/9の日記の方が最初に引っかかってしまっては意味がないので、こちらの方が検索エンジンに引っ掛りやすくなるキーワードをついでに入れておきましょう。
時間の経過と共にこちらの方が最初に引っかかる事を祈ります…
(とはいっても、アレはアレでログとして意義はあるのですけどね(^^))
【7/16のサンプルプログラムソースに盛り込まれている技術】
・C++のSTLを用いて作成されています。
・ゲームループ中にタスクという処理単位でゲームを管理しています。
・タスク処理と描画処理を分離した構成でフレームワークを構築しています。
・描画にはDirect3D9のインターフェースを用いています。
・描画とタスクにはスプライトとモデルという概念を取り入れて設計しています。
・Direct3Dにおけるデバイスロストを処理しています。
・キャラクターの衝突処理を行っています。これは2Dのタイプの衝突処理となります。
・ジョイスティックAPIを使用しています。
・SEとしてにWAV再生を行っています。これはMCIを用いています。
・BGMとしてにMIDI再生を行っています。これもMCIを用いています。
・音声の再生フレームワークにスレッド処理を用いています。
・画面のフルスクリーン設定処理を行っています。
・Windowsのダイアロをダイアログプロシージャを用いて解像度のセットアップ画面を作成しています。
・INIファイルの情報読み込みを行っています。
・パラメータ文字列を分離する処理を行っています。
このサンプルソースの技術を用いれば、もしかしたら3D表示を行う2Dタイプのシンプルなミニゲーム程度のものが作れるかもしれません。
少なくともこれらを応用すれば、この程度のものは作れると思っています。
【開発環境】
[プラットフォーム]
・Windows XP SP3
[コンパイル環境]
・Microsoft VC++ 2008 Express Edition SP1β
・Microsoft DirectX SDK (March 2008)
【実行について】
7/16の日記を参照してください。
【ソースファイル】
■ サンプルソース (2008.10.30)
これらは本ブログの記事を書きながら一から興しました。一応スクラッチです。
また、当然ですが『この実行は自己責任』にてお願いいたします。
本プログラムの実行による不具合についていかなる責任も負わないものとします。
また、本ソースのプロジェクトはソリューションファイルで作成しているので、C#等の環境が入っていると、そちらが優先されて起動してしまう可能性があります。その場合はVC++を起動して、そちらからファイルを開く、もしくはソリューションファイルをドラッグ&ドロップしてください。
ソース以外にも実行プログラムを入れているので、Releaseフォルダ下から直接実行できます。
(起動に失敗したら、正しいランタイムが入っている事を確認してください)
◇ ◇ ◇
という感じでしょうか。
当時は7/16の記事とか読んで、「ソースは無いの?」というツッコミや、なにかしらの反応で何か新しい流れとかできればいいなぁ~なんて夢を見ましたが、「いい夢見せてもらったぜ!あばよ!(by 柳沢慎吾)」という感じでしたね。
まぁ、想定内ではありましたが、なにより結果が出せていい勉強になりました。
(動かなければ、結果も出せませんでしたしね。まずは多少なりとも動いてナンボです(^^))
ちなみに5/17の日記であるJavaのサンプルフレームワークも割と落されており(平均すると、2日に1ダウンロード位)、「VC++程ではないものの、こちらも需要はあるんだな。」という見解です。φ(^^ )メモメモ
ということで、これらサンプルを落して何かしらの事を得れたという方は良かったですね。
将来凄いものを生み出せるよう、お互い頑張って行きましょう♪
こちらの方は、モデルのアニメーションはしないもの、6/9の記事の内容に比べて
・2Dテクスチャの表示を行う。
・2Dテクスチャのスケーリング(拡大/縮小)を行う。
・2Dテクスチャの回転を行う。
・2Dテクスチャのアルファブレンドを行う。
・3Dモデルの表示を行う。(平行移動/スケーリング/回転)
という事をやっているサンプルなので、独習におけるソース解読としては、まだこちらの方が良いとは思っています。
とはいっても、6/9はDirectDraw、7/16はDirect3Dという切り分けで考えているフシがあり、且つこれらは私自身も我流で作っている訳なので、解釈次第では間違ったものを覚えてしまうという危険性もあるので気をつけてもらえると幸いです。
また、検索で6/9の日記の方が最初に引っかかってしまっては意味がないので、こちらの方が検索エンジンに引っ掛りやすくなるキーワードをついでに入れておきましょう。
時間の経過と共にこちらの方が最初に引っかかる事を祈ります…
(とはいっても、アレはアレでログとして意義はあるのですけどね(^^))
【7/16のサンプルプログラムソースに盛り込まれている技術】
・C++のSTLを用いて作成されています。
・ゲームループ中にタスクという処理単位でゲームを管理しています。
・タスク処理と描画処理を分離した構成でフレームワークを構築しています。
・描画にはDirect3D9のインターフェースを用いています。
・描画とタスクにはスプライトとモデルという概念を取り入れて設計しています。
・Direct3Dにおけるデバイスロストを処理しています。
・キャラクターの衝突処理を行っています。これは2Dのタイプの衝突処理となります。
・ジョイスティックAPIを使用しています。
・SEとしてにWAV再生を行っています。これはMCIを用いています。
・BGMとしてにMIDI再生を行っています。これもMCIを用いています。
・音声の再生フレームワークにスレッド処理を用いています。
・画面のフルスクリーン設定処理を行っています。
・Windowsのダイアロをダイアログプロシージャを用いて解像度のセットアップ画面を作成しています。
・INIファイルの情報読み込みを行っています。
・パラメータ文字列を分離する処理を行っています。
このサンプルソースの技術を用いれば、もしかしたら3D表示を行う2Dタイプのシンプルなミニゲーム程度のものが作れるかもしれません。
少なくともこれらを応用すれば、この程度のものは作れると思っています。
【開発環境】
[プラットフォーム]
・Windows XP SP3
[コンパイル環境]
・Microsoft VC++ 2008 Express Edition SP1β
・Microsoft DirectX SDK (March 2008)
【実行について】
7/16の日記を参照してください。
【ソースファイル】
■ サンプルソース (2008.10.30)
これらは本ブログの記事を書きながら一から興しました。一応スクラッチです。
また、当然ですが『この実行は自己責任』にてお願いいたします。
本プログラムの実行による不具合についていかなる責任も負わないものとします。
また、本ソースのプロジェクトはソリューションファイルで作成しているので、C#等の環境が入っていると、そちらが優先されて起動してしまう可能性があります。その場合はVC++を起動して、そちらからファイルを開く、もしくはソリューションファイルをドラッグ&ドロップしてください。
ソース以外にも実行プログラムを入れているので、Releaseフォルダ下から直接実行できます。
(起動に失敗したら、正しいランタイムが入っている事を確認してください)
◇ ◇ ◇
という感じでしょうか。
当時は7/16の記事とか読んで、「ソースは無いの?」というツッコミや、なにかしらの反応で何か新しい流れとかできればいいなぁ~なんて夢を見ましたが、「いい夢見せてもらったぜ!あばよ!(by 柳沢慎吾)」という感じでしたね。
まぁ、想定内ではありましたが、なにより結果が出せていい勉強になりました。
(動かなければ、結果も出せませんでしたしね。まずは多少なりとも動いてナンボです(^^))
ちなみに5/17の日記であるJavaのサンプルフレームワークも割と落されており(平均すると、2日に1ダウンロード位)、「VC++程ではないものの、こちらも需要はあるんだな。」という見解です。φ(^^ )メモメモ
ということで、これらサンプルを落して何かしらの事を得れたという方は良かったですね。
将来凄いものを生み出せるよう、お互い頑張って行きましょう♪
コメント
デバイスロストについて
連続でコメントのリプライですw
>何か参考にしたサイトや本があれば教えてくれないでしょうか・・
そーですねー。
DirectXの書籍を何冊も買って読んだり、ネット検索でなんとなく人の書いている記事を読んだりはしましたが、基本的にDirectXの仕組み(やCOM)の仕組みをゲームプログラミングを行う前に知っていたので、「何かを参考にした」というと、一杯ありすぎて実はあまり覚えてないです(^^ゞ
(このブログのソースを見ていただくと分ると思いますが、完全に一から独学で作っているので…)
デバイスロストはDirectX(特に3D)のリソースがCOM側より勝手に解放されてしまうという事だけで、その情報(ハンドル)を押えておけば、ロストしたイベントにて、再度取得しなおせば良いだけ…という、どこにでも書いてある事を実施するだけだと思っています。(^^ゞ
どの辺がうまく行っていないのか、オフラインで話せると、色々と詳しく話せそうなんですけどね…う~ん。
そーですねー。
DirectXの書籍を何冊も買って読んだり、ネット検索でなんとなく人の書いている記事を読んだりはしましたが、基本的にDirectXの仕組み(やCOM)の仕組みをゲームプログラミングを行う前に知っていたので、「何かを参考にした」というと、一杯ありすぎて実はあまり覚えてないです(^^ゞ
(このブログのソースを見ていただくと分ると思いますが、完全に一から独学で作っているので…)
デバイスロストはDirectX(特に3D)のリソースがCOM側より勝手に解放されてしまうという事だけで、その情報(ハンドル)を押えておけば、ロストしたイベントにて、再度取得しなおせば良いだけ…という、どこにでも書いてある事を実施するだけだと思っています。(^^ゞ
どの辺がうまく行っていないのか、オフラインで話せると、色々と詳しく話せそうなんですけどね…う~ん。
No title
おかげで解決し、これまでのゲームをデバイスロスト対応にできました!
1年近くこれで悩んでて7、8回くらいは挫折していたのに、その一言で理解できました。
凄い分かりやすいご指導本当にありがとうございました!
1年近くこれで悩んでて7、8回くらいは挫折していたのに、その一言で理解できました。
凄い分かりやすいご指導本当にありがとうございました!
スゴイですね!
「その一言」で解決できたなんて、スゴイですね!(^^ゞ
でも、解決できて良かったです。
そして、メールにソースまで添付していただいて恐縮です。
まだ査読していませんが、かなりボリュームがあるように見えたので、斜め読みしてリプライしたいと思います。
そして、ゲームの方を起動させていただきましたが、スゴイ!
3D表示のロープレですね!感動しました。(*^^*)
でも、解決できて良かったです。
そして、メールにソースまで添付していただいて恐縮です。
まだ査読していませんが、かなりボリュームがあるように見えたので、斜め読みしてリプライしたいと思います。
そして、ゲームの方を起動させていただきましたが、スゴイ!
3D表示のロープレですね!感動しました。(*^^*)
コメントの投稿
« ゲームで遊ぶ事を取るか、開発を取るか… l Home l 昔のゲームの想い出 [0078] 「テディボーイ ブルース」 [セガ] [1985] [アーケード] »
私は本読んだりサイトを見たりしてデバイスロストを
色々試行錯誤してみましたがいまだにうまくいってません・・。
何か参考にしたサイトや本があれば教えてくれないでしょうか・・