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

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

openBVEの概要とインストール(2009/1/13現在)

ここでは、自由なソフトウェアでクロスプラットフォームの鉄道運転シミュレータopenBVE(http://openbve.trainsimcentral.co.uk/)の概要とインストールについてを扱う。
インストール後の実行やデータなどについては別記事で扱う。
(2009/4/13)サイト移転に伴いURLを変更

概要

日本人作者mackoy氏によりWindows向けに作られたBVE Trainsimという鉄道運転シミュレータが存在し、リアリティの高さや路線/車両データを自作できることなどから国内だけでなく海外でも広く受け入れられてきた。
このソフトウェアは無料で利用できるが自由なソフトウェアではなく、(2009年1月現在で最新の)バージョン4系でもWindows Vistaではそのままでは動作しないという問題があるものの、Vista対応のバージョン5が出るまではこのままの状況が続く見通しになっている。
そんな中、Michelle氏によってBVE Trainsimを置き換えることを目指してopenBVEの開発が始まった。本家BVE Trainsimにおいてバージョン2系とバージョン4系とで互換性がない*1ことも動機付けの1つになっていて、両方に対して互換であることも目指している。
openBVEは、本家BVE TrainsimDirectXを使用しているのに対し、Mono/.NETのバインディング集Tao FrameworkからOpenGL/OpenAL/SDLを利用することでクロスプラットフォーム化を実現している。*2バージョン0.9系の時点では互換性は不完全だが、ここまで動くものができているというのは驚きで、更に、動くオブジェクトや自動運転などの独自機能も搭載している。

保安装置プラグインについて

本家BVE Trainsimのバージョン4で保安装置のプラグイン化がされ、自作することができるようになっているがこれはWin32のDLL(OS依存)で、openBVEでも同様にWindows以外のOSにおいては利用不可能となる。今後このあたりも利用可能となるような動きが出てくるかもしれない。

必要なパッケージについて

Windows Formsサポート

まず、openBVEでは、GUIツールキットにWindows Forms*3を利用しているため、Mono上でこれをサポートするためのパッケージが必要。

Windows Formsサポートを提供するパッケージ
ディストリパッケージ名
Mandrivamono-winforms
Debian/Ubuntulibmono-winforms2.0-cil

Monoの追加ロケールサポート

次に、Monoの追加ロケールも必要。

Monoの追加ロケールサポートを提供するパッケージ
ディストリパッケージ名
Mandrivamono-locale-extras
Debian/Ubuntulibmono-i18n2.0-cil

Tao Framework

最後に、肝心のシミュレータ部分の動作にTao Frameworkが必要となる。これについては「Tao FrameworkについてとMandriva Linux向けRPMパッケージの作成」で扱ったが、openBVEからはOpenGL/OpanAL/SDLの3つのバインディングパッケージを使用する。

ビルドとインストールについて

バージョン0.9.3系の時点では、ファイル名の扱いに関するOS依存な部分の処理の関係で条件シンボル「LINUX」を定義してGNU/Linux向けにビルドを行う必要がある。*4こうして作成された.exeファイル(アセンブリ)は他のOSでは正しく動作しなくなるが、GNU/Linux上であればディストリやアーキテクチャを問わず動作する。
(2009/1/20)バージョン0.9.3.7の時点ではその条件シンボルはなくなり、生成されたアセンブリはOSに依存しなくなっている(-define LINUXオプションは不要になった)。
下はバージョン0.9.3.3でのビルド作業例。

$ unzip [openbve_source.zipの場所]
$ cd openBVE/OpenBve/
$ gmcs -define:LINUX -lib:/usr/lib/mono/tao-opengl,/usr/lib/mono/tao-openal,/usr/lib/mono/tao-sdl -reference:Tao.OpenGl,Tao.OpenAl,Tao.Sdl,System,System.Windows.Forms,System.Drawing -out:OpenBve.exe {,Properties/}*.cs

(2009/1/20)バージョン0.9.3.7では下のようになる。

$ unzip [openbve_source.zipの場所]
$ cd OpenBve/
$ gmcs -lib:/usr/lib/mono/tao-opengl,/usr/lib/mono/tao-openal,/usr/lib/mono/tao-sdl -reference:Tao.OpenGl,Tao.OpenAl,Tao.Sdl,System,System.Windows.Forms,System.Drawing -out:OpenBve.exe {,Properties/}*.cs

(2009/3/24)バージョン1.0.0.0の時点では下のようになる。

$ unzip [openbve_stable_source.zipの場所]
$ gmcs -out:OpenBve.exe -lib:/usr/lib/mono/tao-opengl,/usr/lib/mono/tao-openal,/usr/lib/mono/tao-sdl -reference:Tao.OpenGl,Tao.OpenAl,Tao.Sdl,System,System.Windows.Forms,System.Drawing openBVE/OpenBve/{,Properties/,Parsers/}*.cs

C#コンパイラgmcs-lib:オプションの引数に指定するTao Frameworkのファイルの場所は、ディストリによって異なる場合がある(Debianのパッケージでは/usr/lib/monoの代わりに/usr/lib/cli/tao-[名前]-[バージョン])。

これでOpenBve.exeが得られるが、別途必要なファイルがあり、これだけでは動作しない。

関連記事:

まとめドキュメント:

関連URL:

使用したバージョン:

  • openBVE 0.9.3.1, 0.9.3.3
  • Tao Framework 2.1.0
  • Mono 1.9.1

*1:つまり、バージョン4系上ではバージョン2系向けのデータは動かない

*2:後述の保安装置プラグインなど、一部機能は(2009年1月現在)Windows以外では利用できない

*3:Windows風のGUIだが、MonoのWindows FormsはWineGUIと比べても描画がかなり重く感じる・機能的にはWindows Forms 2.0に完全準拠

*4:配布されているWindows向けのアセンブリではダメ・同様にMac OS X上では「MAC」を定義する必要がある