【rfactor2】 プラグイン開発4 – デバッガ設定 –

今回の趣旨
 今回は、rFactor2のプラグインを作成する際にVisual Studioのデバッガを使用する方法について解析をする。
Visual Studio
 かつては全てのエディションが有料(数万~数十万)であったが、ここ数年は最下位バージョンが無料となっている。
 入手はここから可能だ。プログラムが分からない人も、入手だけならしておいて損はない。
 http://www.microsoft.com/japan/msdn/vstudio/express/
 vs2010_logo.png
 最適化コンパイルの有無等、ゲームプログラミングでは重要なものもある。
 だが、正直、通常のプラグイン開発では必要ないと考える。
 スペック厨の人は最適化が!と言うかもしれない。
 だが、近所のスーパーに買い物に行くのにグループBのラリーカーは必要ない。
 無料版で十分である。
コンパイル設定
 毎回ソースファイルをコンパイルして、作成されたDLLをrFactor2のプラグインフォルダにコピーしていては、
 トライ&エラーが面倒になってしまう。
 capt_006_20120329230851.jpg
 InternalPluginデフォルトのプロジェクト設定では、プロジェクト(ISIからダウンロードしてきたソース群)の配下に
 ファイルが作成されるが、これをrFactorsのプラグインフォルダに直接出力するよう「出力ファイル」の項目を修正する。
 ※筆者の場合、C:\Games\rFactor2にrFactor2をインストールしている。
 capt_007.jpg
 必要であればDebugとReleaseそれぞれを変更しても良いのだが、
 今時のCPUでリソースを食いつぶすほどのプラグインを書くことも無いと考えられるので、
 とりあえずDebug版だけをコンパイルすることとした。
rFactor2.exeの起動についてデバッグ設定
 レースエンジン本体である”rFactor2.exe”はラウンチゃーからキックしないと、起動できないように作られている。
capt_032.jpg
 そのため、必要が無くてもラウンチャーをキックするように設定する。
 ※直接、rFactor2.exeを起動する方法を見つけた方がいたら、情報提供をお願いします。
デバッグ設定
 同様にInternalPluginのプロジェクト設定から、デバッグの項目を編集する。
 コマンドが、$(TargetPath)となっている。
 capt_008_20120329231833.jpg
 これを、”Launch rFactor.exe”に設定する。
capt_033.jpg
シンボルファイルの設定
 シンボルファイルとは、デバッガでデバッグするための情報が入ったファイルである。
 ソースをコンパイルした際に、拡張子pdbとしてDLLと共に作成される。
 ※Releaseモードでコンパイルした場合は、作成されない。
 シンボルファイルの設定は、通常のVisual Studioのプロジェクトであれば必要のない作業である。
 だが、実行ファイル(rFactor.exe)のフォルダからシンボルを探す仕様になっているため、
 そのため、デバッグができない。
 これは単純にVisual Studioの設定として、プロジェクトファイルの相対パスdebugフォルダを追加してやれば、
 対処できる。
 capt_001_20120330210704.jpg
デバッグの開始
 いよいよ、デバッグの開始になる。
 Visual Studioの画面で、緑色の▲をクリックして、実行を行う。まだ、一度もコンパイルをしていなかったり、
 ソースが変更されている場合はコンパイルされてから、rFactor2のラウンチゃーが立ち上がる。
20120329a.jpg
 既にVisual Studioの右下にrFactor2のラウンチゃーがどのようなモジュールをロードしたか分かるはずだ。
capt_046.jpg
 ここで、rFactor2のメニューからSingle Playerをクリックする。
 だが、以降、デバッグメッセージが出ないはずだ。
 Visual Studioの「デバッグ」メニューから「プロセスにアタッチ」を行う。ここで、rFactor2.exeを選択する。
 ※このアタッチの自動化については、調査中となる。毎回するのは面倒だ 
capt_048.jpg
 そうすると、以降のデバッグ情報が表示されるはずだ。
 ※rFactor2のシングルプレーヤーを起動したら、すぐやった方がよい。
capt_052.jpg
次回
 予定と異なりデバッグの設定について記載した。
 次回は当初の予定に戻り、コースに車両が出た時に呼び出される関数について記載する。
 また実際に時間を計測し、画面の描画フレーム数と出力タイミングが同期しているのか、
 それとも非同期(例えば、1秒間に数千回データが取れるのか)で取れるのか確認をしようと考えている。
おまけ
 C言語やWindowsプログラミングの勉強の本は何がいいかとか、そういった記載の希望はあるだろうか?

rfactor2 Plugin Develop