試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

openBVEに関するメモ(バージョン1.2.10.0/2010年12月末時点)

Mono/.NET車両プラグインのサポートについて

本家BVE Trainsimで導入された車両プラグインはWin32専用のDLLという形をとっており、openBVEではWin32上でしかこれを利用できない。
この問題に対処するためopenBVEではMono/.NETアセンブリのDLLという形の保安装置プラグインの仕組みが作られ、バージョン1.2.10.0からはopenBVEが動くOSであれば、Mono/.NETアセンブリ形式で作られた車両プラグインはOSを問わずに動作するようになった(もちろん、本家BVE TrainsimのWin32な車両プラグインWindowsWineがないと動作はしない)。
Mono/.NETアセンブリ形式の実際の車両プラグインは既に公開されているものが

にあり、車両プラグインの開発に関しては
http://openbve.trainsimcentral.co.uk/develop/
の「Plugins - Overview」とその中からリンクされている「Train plugin API (IRuntime)」のページに書かれている(英語)。

Ubuntuのパッケージについて(Ubuntu 10.10時点)

Ubuntuには

  • openBVE本体(パッケージ名「openbve」)
  • Birmingham Cross-City Southの路線データ(パッケージ名「bve-route-cross-city-south」)
  • British Rail Class 323の車両データ(パッケージ名「bve-train-br-class-323」)

のパッケージが用意されており、Tao Frameworkも依存パッケージとしてインストールされるので、導入は非常に楽になっている。起動もデスクトップ環境などのメニューからできる。
ただ、最新バージョンが常にパッケージになっているわけではないため、古いバージョンのこともある。

公式サイトの最新バージョンをUbuntuで使用する

最新バージョンをUbuntuでそのまま使いたい場合はopenBVEの公式サイトから

  • openbve_stable.zip
  • tao.zip

の両方をダウンロードしてそれぞれ展開し、OpenBve.exeと同じディレクトリにtao.zip

をコピーする。
Ubuntu 10.10の時点では公式サイトにあるopenBVE本体をディストリのTao Frameworkと組み合わせて用いると路線/車両のデータを読み込んだ後に

Method not found: 'Tao.OpenGl.Gl.glDepthMask'.

というダイアログを出して終了し、端末には

** (OpenBve.exe:[プロセスID]): WARNING **: Missing method Tao.OpenGl.Gl::glDepthMask(int) in assembly /usr/lib/cli/Tao.OpenGl-3.0/Tao.OpenGl.dll, referenced in assembly [OpenBve.exeの場所]

と表示される。UbuntuopenBVEのパッケージにはこの対処を行うためのパッチが当たっているようだ。
なお、openBVEのサイトのtao.zipを用いて公式の最新バージョンを用いる場合でも、Tao Frameworkが用いる下位のライブラリ群がインストールされていないと動作はしないので、ディストリのTao Frameworkは入れておいたほうがよい(openBVEの本体のパッケージを入れると自動的に入る)。
実行方法については(OpenBve.exeのあるディレクトリで)

env MONO_PATH=/usr/lib/cli/Tao.OpenAl-1.1:/usr/lib/cli/Tao.Sdl-1.2 mono OpenBve.exe

のようにする必要がある。ただ、この方法で(公式サイトのOpenBve.exeを)起動してもシミュレータモード(路線/車両データ読み込み後のウィンドウ)のメニューから「メインメニュー」を選択しても(ライブラリの探索パスの関係で?)うまく戻らず、起動し直す必要がある。ソースからアセンブリOpenBve.exeをビルドした場合はこの問題は起こらない。
下はビルドから起動までの作業例(バイナリ,ソース,Tao Frameworkの全てのファイルをダウンロード済みとする)。

$ mkdir work && cd work/
[work]$ unzip [openbve_stable.zipの場所]
[work]$ yes | unzip [openbve_stable_source.zipの場所]
[work]$ unzip [tao.zipの場所]
[work]$ rm openBVE/OpenBve/CsvB3dObjectParser.cs -f
[work]$ gmcs -t:library -out:OpenBveApi.dll openBVE/OpenBveApi/*.cs
[work]$ gmcs -out:OpenBve.exe -reference:Tao.OpenGl,Tao.OpenAl,Tao.Sdl,System,System.Windows.Forms,System.Drawing,OpenBveApi openBVE/OpenBve/{,Properties/,Parsers/}*.cs -lib:$(pwd)
[work]$ mono OpenBve.exe

関連記事:

まとめドキュメント:

使用したバージョン:

  • openBVE 1.2.7.3, 1.2.10.0