投稿者 トピック: 道路の交差点信号機を鉄道にも使えるように(これでダイヤ組めます)  (参照数 8381 回)

gonyo

  • 各駅停車
  • *
  • 投稿: 16
道路の交差点信号機を 線路に設置できるようにしてほしい これを駅の次のマスに置くと列車の発車時間が指定できるのでダイヤ組めるようになる。  これで複雑な退避や接続ができるようになるのではと・・・
バスは現状でもcitycarがいなければダイヤ組むことが可能

wackdone

  • 準急
  • ***
  • 投稿: 126
このgonyoさんご提案の「鉄道でも使える周期時間制御型の信号機」について、
自分なりに少し考えをまとめていた落書メモがありますので、添付します。

実装については大きな方針の目処は立ってきているのですが、
コード上の影響範囲は実はTTTとそれほど変わらなくなりそうです。
(objのsubtypeが増えることもありますし)
道路用の信号機は、内部ではすごくadhocに実装されていて、かなり自動車専用実装になってしまっています。
objとしての判別方法も酷いもので「roadsignで、画像が4枚より多かったら信号機ね!」とか、とんでもな使用w
ぽいっと鉄道に継承実装させるのは難しい。

どちらかというと、private_way を時間制御で開くように拡張した方がいいのでしょうが、
どちらの場合も鉄道の経路制御への影響を考えないといけなくなります。

あとは、makeobj も作って配ったり、pak作らなきゃいけないところが普及上の難点かな。

gonyo

  • 各駅停車
  • *
  • 投稿: 16
鉄道に実装は難しそうですか わかりました。
そちらの考えてるTTTでうまく列車を制御できるなら私のこの案は不要かと思います
この案だと複数の種別を同じホームに止められないなどの問題もありますので・・・

wackdone

  • 準急
  • ***
  • 投稿: 126
gonyoさん
> 鉄道に実装は難しそうですか わかりました。
いえいえ、「すごく簡単に」はいかないというだけで、作ってみるつもりはあります。
(私の言い方がなんか愚痴っぽくなっていたみたいですね。誤解をあたえてしまいすみません)

TTTは、このまま行くとどんどん使い方がややこしくなっていきそうですので
(mokaさんご提案のように「一発簡単設定」などは入れるべきでしょうが)
それに比べて圧倒的にシンプルな、この周期時間制御型信号も使い途が多いのではないかと思います。
両方あっていいんじゃないかなと。

プログラム上はどれくらい真面目に綺麗に実装するかの問題です。
現状のオリジナルのソースをベースにする限りは根から叩き直した方がいいのですが、
(新たな概念と基底クラスを作って、既存のいくつかの機能をこの新基底の派生にさせる)
そうなるとパッチとしては量が増えてしまうので、本家へ持っていくときの説得が少し大変になるかも。

あとは、pakを作る必要があるのですが、問題は「絵」です。
私、プログラムはいくらでも書けるんですが、絵が全く描けない人間でして。。。

あまり深く考えずに、まずはお試しで何かやってみますかね。

gonyo

  • 各駅停車
  • *
  • 投稿: 16
TTTに 周期ごとに発車する設定を付け加えたらこんなややこしい信号はいらないかと思います。 アドオンの画像も不要になりますし・・・
同じホームに複数の列車運行できますしね。  これだけでダイヤ組めちゃうと思うんですよ。 ダイヤって一定間隔の運行しかないでしょだいたい・・・ 


交差点用の信号を置き換えて 発車できる時間tA 発車しない時間B  オフセット調整C で良いかなと思います。
この場合変数ABCは次の意味を持つことになる。
A:遅延が許される時間(これ以上遅延すると次の筋まで待機) 
B:運行間隔調整に使う(ないとは思うがBの値以上の早着すると一本前の筋で列車が遅れている扱いになりダイヤが乱れる)
 A+B=列車の運行間隔       C<A+B   C>A+Bにする意味ないです

あと1つ 各駅停車の電車の場合各駅で時間確認する必要はないと思うんですよ 退避可能な駅(単線での対向列車を含む)、終着駅など一部の駅で時間を確認し遅れが出ているかを確認すればいいかなと・・・ 各駅で遅延確認すると重くなるかもしれない


ダイヤ組むための大きな問題として 面倒さがあると思うんです。 私がやってた踏み切りで列車止める方法だと調整が面倒で・・・  simutransやってる方はかなり多くの列車扱う人もいるのでスケジュール画面での1編成ずつ設定より路線編集から一発で設定が望ましいかと思います。

欲を言うならばこんな機能も
そしてスケジュールの一番目(始発駅)から出発してもう一度そこまで戻ってくる時間を計算し(t1)とする そして運行間隔(t2)を設定すると必要な編成数(h)が求められるんではないでしょうか  t1/t2=h (小数点以下切り上げ)

ダイヤを組んだ場合そのとおり運行できなった場合(そもそも無理なダイヤ、客の増加、邪魔な普通電車がいてスピード出せない)
メッセージで   「注意:路線Aでダイヤが乱れています。」  と出てくるような機能とかもあるといいかもしれません
駅が混雑してたら出てくるメッセージみたいな感じでいいかと

私の案の難点
12時 0分 20分 A駅行き普通    40分  B駅行き普通
13時 0分 20分 A駅行き普通    40分  B駅行き普通

こんなパターンダイヤ組みたいと思ってもできなくなっちゃいます。  A駅行き普通を2つ設定すればできるか・・・
でもsimutransには始発も終電もなくひたすら電車が動いてるのでパターンダ イヤが望ましいかなと思います

不明な点
入線振り分け信号を使った場合の動作    ちゃんと動くのか心配です。 (これ難題かもしれん)
指定されたホームに同じ路線の列車がいたとします 別のホームに停車します。 別のホームに停車した列車はどうなるのか・・・
2編成同時発車してしまっても困りますね。 
時間通り動いてりゃこんな事態にはならないのだがどうするか・・・ 1編成ずつ設定すればこの問題は回避できる
というかそもそも時間通り列車が動くのであれば入線振り分け信号なんていらなくなっ ちゃうね だから入線振り分け信号には対応しなくていいかも

wackdone

  • 準急
  • ***
  • 投稿: 126
もうひとふんばりで、周期時間制御信号(というかwaygate、ゲートという名前にしてみました)が
出来上がりそうな感じです。
セーブデータ変更無し、pakも既存のmakeobjで作れるようになりそうです。

試してみるには、pakがいるのですが、pak本家から絵を流用してお試しpakを作ろうと思います。
まっさきにgonyoさんにお試しいただければと思いたいのですが、
gonyoさんは、pak64とpak128、どちらをお使いですか?
(96とか言われるとちょっと手が止まりますw  pak128.japanであれば、pak128のが使えます)

また議論はこちらでしつつ、公開は「プログラム」の方にトピックを立てようかと思います。

>>gonyoさん wrote
> TTTに 周期ごとに発車する設定を付け加えたらこんなややこしい信号はいらないかと思います。
たしかに今の TTTで同等の機能になっているのですが、TTTはそれはそれでややこしい。
何よりも気になっているのは、本家に入れてもらえるかなので、
この周期制御信号(timing gateという名前にします) の方が話が通りやすいかなと考えています。
まあ、出来あがったら試しに使ってみてもらえれば :)

gonyo

  • 各駅停車
  • *
  • 投稿: 16
私はpak64でやってます 128でもおkですよ