
他列車走行スケジュール拡張プラグイン
他列車の走行スケジュールをより細かく設定できるようにするプラグインです。
BveEXマッププラグインとして実装されています。
プラグインの特長
通常のBVEではTrain.Stop構文によって他列車の挙動を指定しますが、これだと以下に挙げるような動きをさせることは不可能、もしくは非常に大変でした。
-
指定時刻まで停車する
- Train.Stop構文では停車時間を指定できるのみで、発車 “時刻” の指定は不可能
-
停車させずに加減速する
- Train.Stop構文では必ず停車させる必要がある。停車時間をゼロにしたTrain.Stop構文をいくつも並べれば一応は実現可能だが、相当な手間がかかる
-
先行列車のダイヤを特定の他列車に同期する
- 走行速度と停車時間を指定する他列車に対して、先行列車は任意距離程の通過時刻を指定する仕様で、そもそもの親和性がない
また、他列車の走行軌道を途中で変更する機能も搭載しています。 複数の進路(番線)がある場合、通常のBVEでは列車ごとに他軌道を定義しなくてはならず、保守性が著しく低下してしまいます。
↑列車ごとに他軌道を定義した結果、保守性が著しく低下してしまった例
そこで、他列車の走行軌道を変更するのです。これを使うことで他軌道の定義を必要最小限に抑えることが可能になります。
BveEX本体に付属している「他列車操作サンプル」にも同様の機能が搭載されていますが、そちらとは異なり、1行のマップ構文を記述するだけでOK。
とても実用的な仕様となっています。
プラグインを組み込む手順
1. プラグインをマップに配置する
1-1. プラグイン本体を配置する
マップファイル(Map.txtなど)に対する位置関係が次の画像のようになるように、新しいフォルダ「MapPlugins」を作成します。
下のボタンよりダウンロードしたファイルをゾーン識別子を削除した上で解凍し、作成したMapPluginsフォルダの中に配置します。
1-2. マップファイルにプラグインを指定する
マップファイルを開き、次の例のように冒頭へ BveEx.MapPlugin.LoadAssembly
構文(または BveEx.MapPlugin.Load
構文でプラグインリストを組み込んでも可)を追記します。
ゾーン識別子の削除を忘れずに!
この手順を飛ばしたままパッケージを解凍してしまうと、不可解なエラーの原因となる場合があります。
そのままパッケージを解凍し、プラグインを配置してしまった場合は、ゾーン識別子を削除した上でもう一度解凍からやり直してください。
ゾーン識別子を削除する方法については、手順2b: 手動でのパッケージの適用方法 - BveEXインストールガイドの「1-1. ゾーン識別子を削除する」をご参照ください。
2. マップファイルに構文を記述する
Train.StopなどのBVE標準の構文と同様に、本プラグインオリジナルのマップ構文を記述していきます。詳細な文法は以下を参照してください。
追加されるマップ構文
コードの例
各構文の解説
※以下、「~.XXX」は全て「BveEx.User.Automatic9045.ExtendedTrainScheduler.XXX」を表すものとします。
※加速度の正負の基準は、その他列車の進行方向です。自列車の進行方向(距離程が正の方向)ではありませんので注意してください。
~.Train[trainKey].SetTrack(trackKey);
その距離程以降の走行軌道を変更します。
~.Train[trainKey].Accelerate.FromHere(v, a);
加速度 a [km/h/s]、目標速度 v [km/h] の加減速を、その距離程 “から” 開始します。
~.Train[trainKey].Accelerate.ToHere(v, a);
加速度 a [km/h/s]、目標速度 v [km/h] の加減速を、その距離程 “まで” で完了するように行います。
~.Train[trainKey].StopUntil(a1, t, a2, v);
加速度 a1 [km/h/s] で減速し、その距離程に停車します。時刻 t になると発車し、加速度 a2 [km/h/s] で速度 v [km/h] まで加速します。
時刻 t の指定方法はBVE標準のTrain.Enable構文と同様です。時刻を表す文字列 'hh:mm:ss' または 00:00:00 からの経過時間 [s] で指定してください。
~.PreTrain.AttachToTrain(trainKey);
その距離程以降、先行列車の走行位置を指定された他列車に同期します。
~.PreTrain.Detach();
その距離程をもって、先行列車の走行位置の他列車への同期を終了し、PreTrain.Pass構文による制御に戻します。
ライセンス
本ソフトウェアは、PolyForm Noncommercial License 1.0.0のもとで使用を許諾されています。
このライセンスにおいて許可されない方法での使用を希望される場合は、個別対応となりますので、お問い合わせください。