openBVEと関連ツールのビルドメモ(バージョン1.4系時点)

Last modified: 2021-09-13

ソースの入手

本記事で扱うのは、開発初期の開発者の一人であるodakyufan氏によってメンテナンスされていた時期の本体および関連ツールに関する内容となる。leezer3氏によるバージョン1.5系以上についてはここでは扱わない。

Wayback Machine上の公式サイトから以下のファイルを入手して展開する。

リンク ファイル 説明
OpenBVE 1.4.3 openbve.7z バージョン1.4.3の本体のソースとバイナリ
Tools (for add-on developers) tools.7z 関連ツールのソースとバイナリ

ソースは書庫内のSourceCodeディレクトリにあり、以降のファイルの場所はこのディレクトリを作業ディレクトリとして表すことにする。

必要なパッケージ

MonoのC#コンパイラdmcs(Debian/Ubuntuではmono-dmcsパッケージ)に加え、Tao Frameworkの

  • Tao.OpenAl
  • Tao.OpenGl
  • Tao.Sdl

の開発パッケージがそれぞれ必要となる。

Debian/Ubuntuでは

  • libtaoframework-openal-cil-dev
  • libtaoframework-opengl-cil-dev
  • libtaoframework-sdl-cil-dev

の3つ。

更にビルドにはxbuildというツールも用いる(手動でコンパイラを実行する場合は不要)。これはDebian/Ubuntuではmono-xbuildというパッケージ名になっている。

本体の修正とビルド

.NET 4向けのビルドを行うための修正

バージョン1.4.3時点ではこの修正は適用済みとなっているため、作業の必要はない。
初期の公式サイトでの公開が終了した時点の最後のソースでは適用されていなかった。

そのままでは幾つかのディレクトリで.NET 2向けのコンパイラ(gmcs)を動かそうとする(.NET 4向けにはdmcsが用いられる)ため、.csprojファイルの

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>

の行は全て

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

にする。

$ sed -i 's:<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>:<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>:' openBVE/*/*.csproj

Debian/Ubuntu向けの修正

Debian/UbuntuではTao Frameworkのバージョンの関係でコード(openBVE/OpenBve/OldCode/Renderer.cs)内の

  • Gl.GL_TRUEtrue
  • Gl.GL_FALSEfalse

にそれぞれ置換する必要がある。

$ sed -i -e 's:Gl.GL_TRUE:true:' -e 's:Gl.GL_FALSE:false:' openBVE/OpenBve/OldCode/Renderer.cs

アイコンファイルの場所の修正

2021年9月にUbuntu 21.04上で前述のバージョンのソースを用いてビルドを試したところ、本体のビルド用ファイルに書かれているアイコンファイルの場所が正しくない関係でビルドに失敗することが分かったので、これを修正する。

$ sed -i 's:..\\\(icon.ico\):\1:' openBVE/OpenBve/OpenBve.csproj

ビルドの実行

openBVEディレクトリ内の各ディレクトリ(.slnファイル以外の各項目)で.csprojファイルを引数としてxbuildを実行する。下の作業例ではオプション/property:Configuration=Releaseを付けている。

$ for d in $(ls openBVE | egrep -v "\.sln$"); do xbuild /property:Configuration=Release $(ls openBVE/${d}/*.csproj); done; unset d

ビルドで得られるファイル群

ビルドが完了すると以下のファイル(Mono/.NETアセンブリ)群が得られる。

  • openBVE/OpenBve/bin/Release/OpenBve.exe
  • openBVE/OpenBveApi/bin/Release/OpenBveApi.dll
  • openBVE/OpenBveAts/bin/Release/OpenBveAts.dll
  • openBVE/Sound.Flac/bin/Release/Sound.Flac.dll
  • openBVE/Sound.RiffWave/bin/Release/Sound.RiffWave.dll
  • openBVE/Texture.Ace/bin/Release/Texture.Ace.dll
  • openBVE/Texture.BmpGifJpegPngTiff/bin/Release/Texture.BmpGifJpegPngTiff.dll

ビルドしたファイルでバイナリを置き換える

openBVEはプログラム部分とデータ部分から成るが、ソースの配布ファイルはプログラム部分のソースのみで構成されており、データ部分は含まれないため、ビルドして使用する際にはバイナリの配布ファイルに含まれるデータファイル群と組み合わせて使用する必要がある。

上のOpenBve.exeOpenBveApi.dllはバイナリの書庫を展開した最上位ディレクトリにあるものを上書きし、それ以外の.dllファイルはData/Plugins/ディレクトリの中のものを上書きする。

ツール群のビルド

ビルドの要領について

ツール群のビルドの要領は基本的には本体と同様で、.NETのバージョンやTao Framework関係の修正についても同様となる。

odakyufan氏によってメンテナンスされていた時期のソースではこの修正は適用済みとなっているため、作業の必要はない。
初期の公式サイトでの公開が終了した時点の最後のソースでは適用されていなかった。

具体的には、各ツールごとの.vcprojファイルの

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>

の行を全て

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

にする。ただし、2012年3月に更新されている “Route Viewer” (バージョン1.4.0.0)だけは.NET 4向けに最初からなっているため、修正の必要はない。

Debian/Ubuntuでは “Object Viewer” のRendererS.csと “Route Viewer” のRendererR.csGl.GL_TRUEGl.GL_FALSEの記述があるため、これをtruefalseにそれぞれ置換する。

(Debian/Ubuntu向けの修正)
$ sed -i -e 's:Gl.GL_TRUE:true:' -e 's:Gl.GL_FALSE:false:' ObjectViewer/RendererS.cs
$ sed -i -e 's:Gl.GL_TRUE:true:' -e 's:Gl.GL_FALSE:false:' RouteViewer/RendererR.cs

OpenBveApi.dllの準備

“Object Viewer” と “Route Viewer” はOpenBveApi.dllをビルド時に要求するため、ObjectViewer/bin/Release/RouteViewer/bin/Release/に入れておくなどする必要がある。

$ mkdir -p ObjectViewer/bin/Release RouteViewer/bin/Release
$ cp /path/to/OpenBveApi.dll ObjectViewer/bin/Release/
$ cp /path/to/OpenBveApi.dll RouteViewer/bin/Release/

アイコンファイルの場所の修正

2021年9月にUbuntu 21.04上で前述のバージョンのソースを用いてビルドを試したところ、TrainEditorのビルド用ファイルに書かれているアイコンファイルの場所が正しくない関係でビルドに失敗することが分かったので、これを修正する。

具体的には、別のツールに用いられているアイコンファイル(全て同一の内容)のいずれかを参照するように書き換える。

$ sed -i 's:..\\\(icon.ico\):RouteViewer\\\1:' TrainEditor/*.csproj

ビルド作業例

$ for d in $(find -mindepth 1 -maxdepth 1 -type d); do xbuild /property:Configuration=Release ${d}/*.csproj; done
  • 使用したバージョン
    • Mono 2.10.8.1, 6.8.0.105
    • Tao Framework 20090801
    • openBVE 1.4.1.2, 1.4.3
    • Object Bender 1.0.0.3, 1.0.0.6
    • Object Viewer 1.3.2.0
    • Route Viewer 1.4.0.0, 1.4.3.0
    • Train Editor 1.2.11.15, 1.2.12.0