本記事で扱うのは、開発初期の開発者の一人である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
というパッケージ名になっている。
バージョン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ではTao Frameworkのバージョンの関係でコード(openBVE/OpenBve/OldCode/Renderer.cs
)内の
Gl.GL_TRUE
をtrue
Gl.GL_FALSE
をfalse
にそれぞれ置換する必要がある。
$ 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.exe
とOpenBveApi.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.cs
にGl.GL_TRUE
やGl.GL_FALSE
の記述があるため、これをtrue
とfalse
にそれぞれ置換する。
(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
“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