StepMania5で遊ぼう – ビルド編

[20160708追記ここから]

ここに書いてあることは5_0_7_rcブランチに限った話ですので忘れて下さい。

本来のビルドはREADMEに書いてある通りCMakeを使いましょう。

[20160708追記ここまで]

 

 

遊ぼうって言ってもプログラマー的な意味でな!

 

記事タイトルの通り今回は音ゲーマーにはお馴染み、

StepMania5をソースからビルドしてみたいと思います。

なんか速攻で終わりそうな内容だなぁ…

 

まずStepMania公式(http://www.stepmania.com/)から

ソースコードをダウンロード。(俺がDLしたバージョンは5.0.7でした)

んで解凍。

今回はVisual Studio 2013でビルドしたいのでsrcフォルダの中の

sm5-net2013.slnを開きます。

そして構成を「Debug」から「Release」に変えて、ビルド→ソリューションのビルド。

これだけです。あら簡単。早くもこの記事は終わりそうです。

 

sm5_build_error

あれ、ビルドエラーが出ました。なんでだ…

エラーが出てる箇所は

pseudolocalize

こんな感じで、見慣れない文字が書かれています。

github(https://github.com/stepmania/stepmania)のmasterをダウンロードして

ビルドしても結果は同じでした。

ググってみると、

PseudoLocalize compilation errors · Issue #76 · stepmania/stepmania
https://github.com/stepmania/stepmania/issues/76

同じ問題に遭遇してる人が。

この問題のが発生する原因は、

alright, it looks like Microsoft Visual C++ likes to read files that are UTF-8 without BOM as Shift-JIS files when the locale is set to Japanese,

https://github.com/stepmania/stepmania/issues/76

らしいです。日本語に直すと

「日本語環境のWindows上でVisual StudioがUTF-8(BOMなし)のファイルを読むとShift-JISとして認識してしまう」

…あってるのかな。英語はさっぱりです。

この関数、StepManiaの設定(Preferences.ini)の

PseudoLocalizeを1にしないとこの関数は通らないし、

日本人には関係ない処理だし、

しかもこの関数通すとデフォルトテーマのluaがエラーを吐いてしまう、

と、あまり意味ない関数(独断と偏見)なので、

もうこうしてしまってもいいんじゃないかと思いましたが

さすがに自称プログラマーのプライドが許さなかったので

なんとかビルドできるようにこの関数の処理を変えてみました。

以下糞コード注意。

「おまじない」とか目も当てられない文字が書かれていますが、

こう書き換えることでとりあえずビルドは通ります。

この関数が通った時の処理もうまくいってるようです。

相変わらずデフォルトテーマのluaはエラー出しますが。

 

しかし、ビルド編とか書いてるけど続くのかなこれは…

 

余談

PseudoLocalize関数の中でずらっと変数を追加してますが、

最初は構造体を使って書いてました。

しかしこの構造体をインスタンス化すると、なぜかコンストラクタが呼ばれないのです。

でもVisual Studioの新規プロジェクトや、Ideoneで似たようなコードを書くと

ちゃんとコンストラクタは呼ばれます。

ここで物凄い悩みましたが、上にも書かれてる

「日本語環境のWindows上でVisual StudioがUTF-8(BOMなし)のファイルを読むとShift-JISとして認識してしまう」

という問題のせいにしておきます。

続きを読む