BVE Tips

ここでは、every daydayが路線制作をしていく中で学んだTipsを延々書き連ねていきます。

なお、記載されている内容で間違いやより正しい情報があれば報告してくださると助かります。

ここに書いてある情報は、広くユーザーに共有してもらいたいので、ブログなどへの引用はしても構いませんが、自己責任で情報を活用してください。画像の転載は禁止とします。

 

●他作者様のATS情報

以下に、これから説明するJR系ATS関連で解説(地上子配列の説明というよりかは、問題に対するトラブルシューティングに近いもの)しているサイトのリンクを貼ります。

参考にしてみてください。

・ねぎまぐろ様:ATS-SW/P2プラグイン向け_地上子構文(ATS-P)

・ノ付様:汎用ATSプラグイン

・きくいけ様:ATCのTips

・Rock_On様:ATS_West 地上子一覧

・ec207様:ATS-SW/P2プラグインについて

・東海道くん様:【BVE5】JR用ATSプラグインパックの問題

 

●距離程を一気に100km後ろ(前)にずらしたい

Notepad++をまずダウンロードしてください。

※多分ワードなど、とにかく正規表現が使えるテキストエディタを使ってください。

そうしたら、置換を使って一気に置き換えます。この際、正規表現をONにしてください。

まずは距離程を検索させます。検索文字列に以下のものを入力してください。距離は4桁キロのもので例示しています。

 

(\d\d\d\d)

 

こうすると、検索機能は1234;や4567;のように任意の数字4桁とセミコロンを一律に検索します。

次に、置換文字列に以下を入力してください。

 

10($1)

 

こうすると先ほどの検索結果を格納しつつ、頭に10を加える処理を実行します。

($1)は検索結果を格納していることを意味しています。なので、どういう処理をするにしても、そのまま($1)と記載した方がよいでしょう。

 

実行したら、BVEを更新して下さい。エラーが無ければ問題は有りません。いちおうずらした区間を試運転してください。

これを駆使すればわりと簡単に距離をずらせます。逆延長などで苦労している方はぜひとも参考にしてみてください。

 

 

●なぜBVEのプレイ動画の収益化はダメなのかという話

 弊作品を含めて、多くのBVE作品ではプレイ動画に関して収益化を禁止しています。時代に逆行していると思われがちですが、なぜなのか、私の考えを記します。

 

●そもそもプログラム自体はmackoy氏の著作物である

多くのゲームは、プログラムを一貫して一つの企業、団体が作っています。そのため、ゲーム会社ひとつの指針で様々なことが決まります。

しかし、BVEは、根幹はmackoy氏のプログラムがあり、そこから路線作者、車両作者と別の人間が関わっているのです。mackoy氏はBVEのプログラムを用いた動画について特に規約を設けているようには見えませんが、そもそも路線、車両はBVEという根幹のプログラムが無ければ成立しません。

そもそもゲームのプレイ動画を収益化するのは本当なら人の褌で相撲を取るような行為ですが、最近は動画投稿によってPRにつながるとゲーム会社が判断して、OKを下すようになったのですが、BVEは他のゲームとは違います。

 

●BVEには多数の作者が関わっている

プログラムの作者、路線作者、車両作者、それぞれ違う思惑があるため、現状は収益化はダメという風潮があるのです。路線を一つとっても、フリー素材のストラクチャーの作者がいたり、車両であれば、ATSプラグインの作者、走行音を録音した人、パネルを描いた人など本当に多くの人がいてそれぞれ思惑は異なります。それなのに、動画投稿者だけが収益をもらうのは変な話だ、と思う作者はそれなりにいらっしゃるかと思います。

 

●鉄道会社に対して許可を得ていない

鉄道趣味は趣味の中であれば問題ないというのが多くの鉄道会社の意見だと勝手ながら思います。しかし、商業行為となると話は別です。収益を受ける鉄道ユーチューバーの活動も、本来であれば商業撮影(テレビ番組の撮影や映画の撮影レベルのもの)となり、鉄道会社への許可取りを行い、台本や撮影、完パケについて広報による監修を受ける必要があります。
※現状鉄道ユーチューバーに対して鉄道会社が何らかの声明を出している例は見受けられません。

プレイ動画の収益化もそういった事につながります。それが鉄道会社に見つかり、BVEにまで追及されたら大変なことになります。

ちなみに、スマホ向けの有料ゲームアプリ「TrainDriveATS」シリーズは、鉄道会社に許諾を取ったうえで制作されています。

なんだ、動画投稿だけじゃないかと思う人も多いですが、1人の行為が様々な箇所に影響を及ぼす可能性があるというのは頭の片隅に入れたほうがいいかもしれません。

 

●お金を受け取るというのは責任が重くなるという事

上に関連して、BVEは趣味の中だから、お目こぼしじゃないですけど、遊びがあるんじゃないのかと思うんですよね…。しかしお金を受け取るというのはちょっと話が変わってきます。お金のやり取りが発生すると、趣味という遊びから外れて「商売」になってしまいます。

 

●私としては正直どうでもいい。しかし・・・?

私としては正直どうでもいいです。しかし、高速試験線、地下試験線はNagoya_commonを始め、多数の作者が製作されたツールを用いています。路線だけ含めても10人くらいの人間が、直接、間接を問わず関わっていることになるので、そういった方々を考えると、私一人では到底決めることはできません。

私一人で作ったものは、あくまで構文の羅列に過ぎません。それが多数の作者の作品によって、線路や建物が置かれ、ひとつの路線に仕上がり、皆さんが運転できる形になるのです。

そしてもちろん、車両もたくさんの作者が関わっています。

 

●Shift+F5・F5は連打しない

 シナリオの読み込み最中にF5を連打すると、確実に不具合が発生(fpsが999fpsまで上がる)し、BVEが落ちます。

 

●Cannot create Direct3D device.

今まで起動できたのに、急にこのエラーが発生することがあります。

このエラーを見て、作者引退不可避?と思ってしまいましたがあわてず騒がず。

この場合のトラブルシューティングを記します。

①4GBパッチやエンハンサーなどを切り離す

 4GBパッチやエンハンサーが悪さしている可能性もあります。

 これらの機能を一旦解除してみてください。

②再起動

 大抵の不具合は再起動でどうにかなります。裏ですでにBVEが起動しているとか、

 メモリがバグっているとか、そういった感じの不良は再起動で解消できるはずです。

③互換モードで起動

 BVEの本体を右クリックして、「互換性のトラブルシューティング」で起動できるかもしれません。

 作者はこれで起動することができました。

 起動できたら、プロパティで「互換モードでこのプログラムを実行する」のチェックを外しましょう。

④それでもだめならDirectXの再インストール、BVEの再インストール

 

●変数を活用した車両ごとの速度照査

 

曲線には制限速度がかかりますが、車両の性能によって異なります。

それを変数で管理すると楽に扱えます。

 

Beacon.Put(6,0,600095+$LimAddSpeed_R400);

 

本則の制限速度を設定し、変数に車両ごとに超過できる追加値を格納することで、制限速度や速度照査を一律で変えられるのでとても便利です。変数はあらかじめ一番最初に読み込むマップファイルかなにかで仕込んでおきます。

 

一方、ATSプラグインによっては速度そのままの値ではない場合もあります。

NNN2式C-ATSプラグインがその一例ですが、そういった場合でもちょっとした小細工を加えてやれば同じように動作します。

Beacon.Put(16,0,261903+($LimAddSpeed_R400/5)*100);

Beacon.Put(17,0,999);

意味:16番地上子、始端速度130・終端速度95・勾配コード下り25‰+(超過速度÷5)×100

このプラグインでは速度コードは速度÷5になっていますので、このように計算式をいれてやれば、同じような形で動作します。最後に×100しているのは、3桁目と4桁目が速度照査の終端速度になるので、そこに超過速度を足してやるためです。ちなみに勾配コードは勾配‰÷5+8で求めることができます。

 

●2点間1秒タイマー速度照査の表

 

90km/h = 25m/s

75km/h = 20.8m/s

65km/h = 18.1m/s

55km/h = 15.3m/s

45km/h = 12.5m/s

25km/h = 6.9m/s

15km/h = 4.2m/s

7km/h = 1.9m/s

 

●csvをxに変換するとストラクチャが乱れる

Rock_On様が公開されているcsvからxファイルに変換するアプリを用いると、上のような不具合がたまに発生することがあります。

この場合、そのアプリは使用せず、BVE2や4方式の路線を作り、公式が公開しているコンバーターでBVE5の路線に変換することで、正しく変換することができます。

作り方は検索してください。路線と言っても、線路を引く必要は全くなく、路線のcsvでフリーオブジェクトを指定してやるだけで大丈夫です。

 

と適当なことを書いていたら、ねぎまぐろ様がより細かい説明をアップされましたので、こちらも参考にしてみてください。

 

 

●ATCの呼称について

 

ATCと一口に言っても、規格が乱立しており新米作者にはわかりづらい状況です。

 

なので、簡単にまとめました。

ATCの

名称

国鉄の

名称

BVEでの

プラグイン

機能
WS-ATC ATC-3型 メトロ総合

地上に信号機を設置したATC。

これってATCって言えるの?って感じだが一応ATC。

現在は東葉高速で使用されています。

現示速度は停止、警戒25、注意45、減速60、進行。

国鉄の規格としてはありませんが、大阪メトロもWS-ATCを使用しています。

旧CS-ATC ATC-4型

メトロ総合・

自炊アナログATC

かつてメトロ線などで使用されていたATC。

ほとんどが後述の新CS-ATCに代わり、

現在は西武有楽町線のみで使用されています。

現示速度は0・25・40・55・75・90。

  ATC-5型

汎用ATS・snp.dll

自炊アナログATC

※ATC-6を流用可能

総武快速・横須賀線の地下トンネル区間で使用されていました。

現在同区間は保安度が高く高頻度運行にも対応するATS-Pに交換されました。

現示速度は0・25・45・65・75・90。

  ATC-6型

汎用ATS・snp.dll

自炊アナログATC

国鉄が汎用型のATCとして開発したものです。

山手線、京浜東北線、埼京線で使用されていましたが、

どの路線もデジタル式のATCやATACSに交換されました。

現示速度は0・15・25・45・55・65・75・90・100・110・120。

ATC-5型と上位互換があります。

新CS-ATC ATC-10型

メトロ総合・

ATC-10

プラグイン・snp.dll・

(一応対応?)

自炊アナログATC

(一応対応?)

東京メトロ※などで使用されている現行のATCです。

現示速度は0・10~90で10km/hから先は5km/h刻みです。

(東急線は110km/hまで)

その他、ORPという過走防護用のパターン制御があったり、

前方の信号を予告する前方予告機能、

ATCブレーキのかかりはじめに弱いブレーキをかけて

衝動を抑える緩和ブレーキ機能などがあり、

より運転しやすいものになっています。

※ほぼ同様のものを仙台市東西線、名古屋市東山線で使用しているようです。

 ATC-P

  メトロ総合?

 新CS-ATCを改良したもので、東急線で使用されています。

ほぼ一緒の機能ですが、細かい部分が違うようです。

(TX用)

CS-ATC

 

110km/hまでは

メトロ総合・

ATC-10

プラグイン

つくばエクスプレス用のCS-ATCで機能的にはCS-ATCと同じですが、

最高速度は160km/hまで対応しており、また開通距離を表示したりと

独自の機能もあり、メトロ総合プラグインだけでは対処できません。

ORPの動作も微妙に異なり、仮パターンを生成したのち、

本パターンを生成し過走防護します。

 

 

なお、ほとんどの地下鉄系のATCは自炊アナログATCやメトロ総合プラグイン等で再現できますが、私鉄型の独自デジタルATCは独自のプラグインを使用する必要があったり、ATC-Lなどの特殊なATCは汎用ATSプラグインで再現するか、自作で作る必要があります。

アナログATCの場合、ほとんどは汎用ATSプラグインで再現可能です。

 

 

●ATC-6型の信号インデックス(備忘録

#101:02(非常停止)

#102:01(常用停止)

#103:15km/h

#104:25km/h

#105:45km/h

#106:55km/h

#107:65km/h

#108:75km/h

#109:90km/h

#110:100km/h

#111:110km/h

#112:120km/h

もともとは汎用ATSプラグインの信号インデックスでしたが、現在はsnp.dllや自炊アナログATCパック等がこのインデックスに準拠しているらしく(本来は別のインデックス番号を用いていますが、互換性確保のためか、汎用ATSのインデックスも読み込めるっぽいです)、搭載車両がこのインデックスを読み込めば、ATC-6に切り替わり、上記の信号現示が出ます。

ちなみに、この信号インデックスは、インデックスごとに好きな速度現示を与えることができるので、たとえ同じ汎用ATSプラグインを搭載していても、解釈の異なる車両を使うと現示がおかしくなります。

(例として、東京モノレールの車両は汎用ATSプラグインを使用していますが、インデックスと現示速度は全く異なります)

ちなみに、千代田線系のBVEの一部車両は汎用ATSプラグインを使用していますが、本来千代田線は他のメトロ線と同様のATC-10型(新CS-ATC)ですので、車両導入や対応作業の際は注意が必要です。メトロ総合プラグインで路線を作るとこれらの車両を正常に動かせません。

 

●ATC等を用いた出発停止の挙動解決について

ATC系の多くのプラグインは、02(非常停止)、01(常用停止)、15~・・・といった速度現示であることが多いのですが、「01」現示がBVEの出発停止機能で問題を起こすことがあります。

 

例)メトロ総合プラグインを用いて閉そくを作る

500;//場内閉そく

Section.BeginNew(09,10,15,21,25);

600;//駅

Station['sta1'].Put(-1,-5,5);

650;//出発閉そく

Section.BeginNew(09,10,15,21,25);

 

このように配置し、sta1を出発停止とした場合、場内閉そくでは、1つ前が停止であるときに現示するインデックス「10番」つまり、01信号を受信してしまい、駅に止まるまえに常用ブレーキが動作し動けなくなってしまいます。

そのため、駅手前の閉塞では、1つ前が停止であるときに現示するインデックスに、停止系(01など)を使わないようにする必要があります。

メトロ総合プラグインの場合、ORPを用いることもできます。また、それ以外やORPを使いたくない場合はここの閉そくだけ、1つ前が停止の場合:15km/hや25km/h現示として回避します。

 

例)メトロ総合プラグインを用いて閉そくを作る

500;//場内閉そく

Section.BeginNew(09,15,21,25);

600;//駅

Station['sta1'].Put(-1,-5,5);

650;//出発閉そく

Section.BeginNew(09,10,15,21,25);

 

こうすることで、リアルな動作にはなりませんが、なんとか運転できるようになります。

 

●デジタルATC系の挙動問題

D-ATCや京王のATCなどの保安装置プラグインは、信号インデックスを、速度現示としてではなく、先行列車の位置を把握するために利用していますが、この機能と駅の出発停止機能が干渉し誤動作を引き起こしているのでは?という問題が発生しています。

この問題は現在研究中です。とりあえず、出発停止機能を使わず、仮の先行列車を立てるとうまくいく?駅付近にダミー閉そくを置く?などでなんとか切り抜けようとしていますが、うまくいきません。

D-ATCで、閉塞手前をこのようにすると、解決するようです。

 

$Beacon - 0.1; //先の閉塞を強制的に開通させる

Section.Begin(200, 219);

$Beacon - 1;

    Beacon.Put(210, -1, 0);//距離情報送信

    Beacon.Put(218, 0, 0);//軌道回路更新

 

これにより、多少の表示のエラーはあるものの、安全を確保したうえでほぼ確実な動作が可能となるようです。

 

 

●ATS-P(東日本方式)の速度照査互換性問題

現在、ATS-Pを再現するプラグインとして、主に、BVEデフォルトであるats1.dll、ats2.dll(以下、デフォルトと記載)と、ノ付様が制作された「汎用ATSプラグイン」(以下、汎用と記載)と、Rock_On様・Unicorn様が制作された「JR用ATSプラグインパック」(以下、snp.dllと記載)などがあります。

これらは「基本的な」機能の互換性は保たれていますが、相互利用をする際に一部の細かい機能で競合や不具合が発生することが確認されています。

 

速度照査は、「デフォルト」と「汎用」では「6番地上子」を置くことで速度照査パターンを発生させます。

例)600m先に40km/h制限+10km/hの速度照査があることをATS-Pに伝える。

1919-600;

  Beacon.Put(6,0,600050);

1919;

  SpeedLimit.Begin(40);

//※ここでは、ストラクチャーの構文は省略しています。

 

こうすることで、600m先までに50km/hに減速させるパターンを作ります。

しかし、「snp.dll」は、これにもう1個地上子を置く必要があります。

置く箇所は、速度制限が解除される地点です。

例)速度照査を解除する

3340;

  SpeedLimit.End();

  Beacon.Put(16,0,0);

 

「デフォルト」「汎用」では、速度照査のパターンが落ちきった所、

上の構文例で1919m地点で速度照査が「無くなります」

しかし、「snp.dll」では、解除地上子を置かないといつまでも速度照査パターンを保持し続けます

そのため、速度制限が解除される地点、3340m地点で解除地上子である「16番地上子」を置きます。

 

ちなみに、「snp.dll」を始めとした「JR用ATSプラグインパック」は、

P速度照査用の地上子が何種類かあります。機能はどれも一緒のようです。

6番:分岐器

8番:下り勾配

9番:曲線

10番:臨時

11番:誘導信号機

 

解除地上子は、これらの番号に「+10」をします。

 

しかし、一部の車両プラグインで、

16番地上子を通過するとATS-Pがシャットダウンする現象を確認しています

(kazuma様制作のE233系5000番台)

これをさらに解決するため、さらに以下の構文を加えます。

例)

3340+1;

  Beacon.Put(3,-1,0);

これは、ATS-P更新地上子です。これを置くことで、ATS-Pのパターンを更新し、

当該の車両のATS-Pが再び起動します。

なお、これは応急的な処置ですので、この付近を通過すると

ATS-Pが「チン!チン!」と鳴ってしまいますが、仕様ですのでご了承ください。

 

これらをまとめると、速度制限箇所に関する構文は以下の通りになります。

例)

1919-600;

  Beacon.Put(6,0,600050);

1919;

  SpeedLimit.Begin(40);

3340;

  SpeedLimit.End();

  Beacon.Put(16,0,0);

3340+1;

  Beacon.Put(3,-1,0);

 

こうすることで、速度照査の互換性をある程度保つことが出来ます。

 

●ATS-Sn(東日本方式)の速度照査互換性問題

ATS-Snの速度照査は、「汎用」では「9番地上子」、「snp.dll」では「55番地上子」を置くことで発生させます。

しかし、「snp.dll」を搭載した車両で9番地上子を通過すると、ATS-P曲線制限パターンとして認識し、

さらに上記の通り、パターンを保持するため誤作動の原因となります。

そのため、以下のように構文を組みます。

例)45km/h+10km/hのSn速度照査を発生させる

810;

  Beacon.Put(9,0,55);

  Beacon.Put(55,0,55);

  SpeedLimit.Begin(45);

893;

  SpeedLimit.End();

  Beacon.Put(19,0,0);

 

速度制限が終了する箇所で、解除地上子19番地上子を置くことで、Pの速度照査を解除することが出来ます。

この地上子は速度照査発生箇所の1m先でも0.1m先でも構いません。

なお、snp.dll搭載車両で速度超過して通過すると、ATS-Sn動作と同時にATS-Pの速度照査も同時にかかりますが、

これは避けられない競合のため、ご了承ください。

 

●ATS-P→S切り替え(東日本方式)の互換性問題

ATSのP→Sの切り替え機能は、「汎用」では「10番地上子」、「snp.dll」では「25番地上子」で切り替えできます。

しかし、「snp.dll」を搭載した車両で10番地上子を通過すると、ATS-P臨時制限パターンとして認識し、さらに上記の通り、パターンを保持するため誤作動の原因となります。

そのため、以下のように構文を組みます。

例)114514m地点から120m先でATSをPからSに切り替える

114514;

  Beacon.Put(10,-1,120);

114514+120;

  Beacon.Put(25,-1,0);

  Beacon.Put(20,-1,0);

 

こうすることで、互換性を保ちつつATSを切り替えることが出来ます。

しかし、ここで重要な問題があります。

「汎用」における送り値の値は、「snp.dll」では速度照査の速度の値として読み込まれます。

つまり、ここで「10」とか「5」など低い数値を入力すると、

snp.dll搭載車両ではいきなり超低速な速度照査が発生してしまいます。

「100」以上とかのその地点で丁度良さ気な速度の値を入力する必要があります。

なお、当然ここで入力された速度照査が保持し続けるため、どこかで解除地上子「20番地上子」を置く必要があります。

 

 

 

これからも色々記載する予定です。