2016年10月24日こんにちは!ミヤチです!!今日はビルド時にSubversionのリビジョン番号を実行バイナリに埋め込もう!...という話をしたいと思います。そもそもなんで実行バイナリにリビジョン番号を埋め込もうかと思ったかなのですが、ゲーム開発中は様々な部門から実装要望やバグの報告がプログラマに対し投げられてきます。それらを対応し報告したものの「出来てないじゃないか!」と言われることがあります。...ッ!?なぜ...ッッッ!!??それは...その実装を確認した人が実装タイミングより前にビルドされたアプリケーションで動作確認を行なってしまうことがあるためです。(もちろん確認する側と対応する側で認識の相違があり、異なった実装をしてしまうこともありますが...)なぜそんなことが発生してしまうかというと、対応を行なったプログラマがいつ修正したかを伝えていないがために、確認を行う側は取り敢えず手に入れることができるビルド済みのアプリケーションで動作確認を行ってしまうためです。それを防ぐには実装した側が“いつ”実装したものかを確認する側にも正確に伝えることができれば、確認する側も“いつ”なら望んだ対応がなされているかを知ることが出来るわけです。ランカースではSubversionでバージョン管理を行なっているため“いつ”という情報はリビジョン番号を伝えれば実装タイミングを確認する側に伝えることが出来ます。それが実行バイナリに埋め込まれていれば現在実行しているアプリケーションは対応が成されたリビジョンのものかどうかを知ることが出来ます。いうことで、今回は以下の2つのことを行いたいと思います。1ビルド前にリビジョン番号が記載されたヘッダファイルを出力2そのファイルをインクルードし、実行中に表示をおこなうヘッダファイルの出力ですが、これはTortoiseSVNをインストールした際に合わせてインストールされるSubWCRevを使用します。これは、特定のファイルに記載されたキーワードを置換して別のファイルに出力するというツールで以下の記法で使用することが出来ます。[オプション]この置換されるキーワードの詳細に関してはこちらに記載されていますので今回扱う以外のキーワードに関してはリンク先を参照してください。今回はリビジョン番号が取得したいため「$WCREV$」キーワードと、最終コミット日時を取得する「$WCDATE$」キーワードを使いたいと思います。別のテキストファイルに以下の記述を行います。__PG_CODE_REVISION_H__今回は仮にこれを「version_src.txt」とし、出力先を「version.h」とします。今回はVisualStudioのC++プロジェクトと想定させていただきますが、プロジェクトのプロパティから[構成プロパティ]→[ビルドイベント]→[ビルド前イベント]と進み、コマンドラインにSubWCRevのコマンドを記述します。出力先となる「version.h」は1つ下の「code」ディレクトリにあるとすると以下のようになります。$(SolutionDir)\Code\version.hこれにより出来上がった「version.h」をインクルードしCURRENT_SVN_REVISION_STRを出力するコードを記述すれば、この実行バイナリが実行した際に相手方へいつのリビジョンのアプリケーションかを伝えることが出来ます。下記のように起動時に目に入るところなどに表示して置くと、より確認しやすいのではないかと思います。この「version.h」をコミットしてしまうのは避けたほうがよいかと思います。言いますと、「version.h」の生成はビルド前イベントに仕込んだ都合、全てのプログラマの環境で変更が発生します。そのためリビジョン番号違いによる自動マージや競合の発生に繋がってしまうという問題が発生しえます。それを避けるためにも「version.h」自体は無視リストに登録し、コミットしないようにしておくと良いかと思います。その2NEXTUI:「ゲーム画面のどこでどういう絵を出すのか」についてコメント投稿は締め切りました。4で公開されている無料アセット気付いてしまったか...悪いが記憶を消させてもらうプランナーの仕事についてTrelloのススメ年末ポケモン大会が開かれた話。