Japanese Simutrans Forum

開発 => プログラム => トピック開設者: wackdone さんの発言 2012/06/25 22:37

トピック名: tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/06/25 22:37
本スレ(Part54)の503です。
Nightlyに簡単なタイムテーブル機能を追加しているので、こちらをお借りして話を進めさせていただきます。

現在の実装の概要は:

というような感じです。
積載率などに関係なく動作します。(オリジナルにある積載率指定、停車時間設定とは独立です。)

最新版のパッチやバイナリは、このトピックの最新のレスからどうぞ。
(現在は 返信#12 です。)

また、
などなど募集しております。お気軽にお声がけください。
トピック名: TIP-002 (Re:tiny timetable patch / 簡易タイムテーブルパッチ)
投稿者: wackdone さんの発言 2012/06/26 08:02
簡単な路線を一晩走らせてみて大きな問題はなかったので、現状のパッチをここにアップします。
(Forumの使い方にまだ慣れていないため、添付など問題ありましたらご指摘をお願いいたします。)

simr5787-tip002.zip
タイムテーブル周期を指定しての、指定時刻出発機能まで実装して試しました。
機能の詳細は同梱の TIMETABLE_ja.txt をごらんください。
パッチのあて方、使い方は最初にロダにあげたものと同じです。まだその他の「いろいろ」な機能が一緒のままですが、
落ち着いたところで「簡易タイムテーブル機能」のみに分離する予定です。

また、本スレの方でスクリーンショットのご要望がありましたので、簡単な実験線ですがアップします。
(今は余裕なくフルスクリーンのままです。すみません)
timetable-ss01.png
(pak128.japanだったり、配線ぐだぐだだったり、どこから来たのかというようなオブジェクトが入っていたりしますがスルーしてください)

左上と右下に情報ウィンドウを開いた二つの編成が4駅+引き上げ線の複線区間を往復運行しています。
(引き上げ線や車両基地を使ってダイヤ調整をするテクニックは使っていません。)
全ての駅間を計画所要時間 160ttt に設定。(駅間距離にはばらつきがあるが発時を揃えてみている)
路線では運行周期を1280に設定し、それぞれの編成はoffset 0 と 640 で走らせています。
まだいまいち揃ってないところでの絵ですが、繰り返し往復させても、この中央の門真駅ですれ違い出発します。
二つの編成に性能の差があっても、このように安定した運行になります。
時間ができたら優等や途中折り返しもダイヤに組み込んで実験してみます。(あと環状線かな)

いろいろと説明や質問をしたいところですが、まずは現状報告まで。
ご意見、お待ちしております。
トピック名: 簡易タイムテーブルパッチの動作具合紹介動画
投稿者: wackdone さんの発言 2012/06/27 02:24
言葉や静止画を並べるよりも、簡単でも動いている様子を見てもらった方が感覚をつかみやすいと思うので、
ごく単純な例ですが、設定をして走らせるまでの様子をキャプチャしてYoutubeにアップしました。

キャプチャしてそのままのもの:(比較的高画質)
 Simutrans Tiny Timetable Patch DEMO
 http://youtu.be/XtmyXlTxvM4

日本語での説明テロップを入れたもの:(画質は劣る)
 Simutrans 簡易タイムテーブルパッチのデモ (再エンコード版)
 http://youtu.be/1qY7uJKrscI
   (再エンコードしてアップしなおしました。古い方は消します)


4駅+引き上げの複線往復運用で、性能の異なる二つの編成が続行運転になってしまっていたものが、
タイムテーブル設定をおこなうことで、安定して等間隔運行する様子を見せています。
(ラストにおまけで、市内循環バスが等間隔運行を続けている様子もちょろっと)


次は中間点の2面4線駅で緩急接続、その先の2面3線駅で途中折り返しでもやってみようかと考え中。
信号機にスケジュールを持たせる案についても実装できるか調査してみていますが、これはまた別のトピックでするのがいいですかね。ご意見やご誘導を募集。
トピック名: 簡易タイムテーブルパッチ 最新版
投稿者: wackdone さんの発言 2012/06/28 22:10
簡易タイムテーブルパッチの最新版です。
この版から、他の機能のパッチとは分離してTTTだけでの配布にします。
(他の機能のパッチ(STSKK、MIP) はまた別にアップします。)

対象バージョンは Nightly r5788 ですが、111.3 にもちょっとした手修正だけであたること、動作することを確認しています。

ChangeLog:
   FIX: delayがセーブできていなかった
   ADD: 実績時間表示をトグルできるように ("Show RecTime" ボタン)
   ADD: 全ての列車の遅延をリセット: 路線管理ウィンドウに追加
   ADD: 自動オフセット設定機能を路線管理ウィンドウに追加
   ADD: pitchフィールドを路線管理ウィンドウに追加
   CHANGE: セーブゲームバージョンが 0.811.5に
   ADD: 列車詳細ダイアログにlast_departureを表示 (デバッグ用?)

既知の問題点:
  路線管理ウィンドウで pitch が 0 のまま、AutoOffsetを押すと、プログラムがフリーズします。
  (次のバージョンで修正されます)

上記のようにセーブバージョンが上がっていますが、前のバージョンのセーブも読み込めます。
また、古いバージョン(111.xなど)のゲームをロードして、タイムテーブル関連の設定をして保存すると、
新しいセーブバージョンになり、タイムテーブル関連の設定も保存されます。
(当然ですが、オリジナルのSimutransではロードできなくなります。)

ほか使用方法など詳細は、同梱の README_TTT_ja.txt (UTF8、CR+LF) をごらんください。

2012.06.29追記:
Windows用のバイナリも作ってみました。
  http://ux.getuploader.com/wackdone_simutrans/download/2/simuwin-r5788-ttt-030.zip
簡単に動作確認はしていますが、あまり作り慣れていないものなので不具合があったらすみません。


ご意見、ご感想をお寄せいただけますと幸いです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/06/29 17:46
ダウンロードさせて使わせていただきました どうも使い方がよくわかりません 設定するところが英語になってるようなのでできるなら日本語でお願いします。 技術的に日本語入力が難しいのであればローマ字表記 (taikijikan)みたいに・・・
使い方よくわからないまま路線編集→Auto Offset と押すとフリーズしました。 バグなのかもしれないので検証お願いします

結構難しいプログラム組んでいるようですが そこまでしなくてもダイヤ組めると思いますよ


このパッチを使わなくとも強引に踏み切りに長さ2マスの自動車を停車させる方法で鉄 道の定時運行が可能ですので 何からの役に立つはずだと思うのでその方法を紹介します。
http://gyazo.com/a96cd1c65d19c54b94c6f8afe047aff0.png?1340958447
http://gyazo.com/cb43a0d0a138c8c6bed32cff3b64ac8e

南北+東西=60秒 つまり現実時間で60秒間隔運行   60秒に一回青になる信号を作ったわけです。。
オフセット値は他の場所にもう1つあるほかのこの装置より信号が変わるタイミングが 34秒早い という意味です 2つ目のオフセットが8なので26秒調整していることになります。 この方法で同時入線同時発車ができました。
同時入線の様子です。  退避等も問題なくできると思います
http://gyazo.com/10168512f6b05c9608af5741fea10b5b

問題点
非常に見た目が悪いこと 
調整(オフセット値の調整)が非常に面倒   (駅間の移動時間の計測などが非常に大変)
1秒でも遅延すれば次の筋まで待つことになる
踏み切りで列車を妨害している場所以外では調整ができない
バグ利用のため更新で使えなくなる恐れ※1
※1踏み切り手前で自動車は踏み切りの次の1マスに障害物がないかを確認して進む 1マスの自動車ならそれで問題ないが連結された長い自動車で 踏み切りの2マス先に障害物(ここでは交差点の赤信号)があった場合 踏み切りを渡りきれず列車の運行を妨害してしまう。 これを利用して鉄道のダイヤを組んでみたものだということ

以前ここに要望として書き込んでみました 道路の交差点用信号をうまく使えないかということです。

http://forum.japanese.simutrans.com/index.php?topic=477.0  (http://forum.japanese.simutrans.com/index.php?topic=477.0 )

このとおり道路の交差点用信号を鉄道に置き換えていただくと スムーズに動くかと思います。 要するに一定の時間ごとに一編成の電車を通過させる装置を作るというわけです そしてオフセット値で調整
他の種別の列車がそこを通ると困る、 1秒でも遅延は許されない という問題点があります。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: moka さんの発言 2012/06/29 18:50
パッチ作成ありがとうございます。動画を見る限りではかなり使いよさげですね
これからwin環境で試してみるつもりです

>>gonyoさま
>設定するところが英語になってるようなのでできるなら日本語でお願いします。
ja.tabへの追記で対応が妥当でしょうね。試しながらちょこっと追記分を書いてみることにします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/06/29 20:15
gonyoさん
お試しいただきありがとうございます。

まずはじめに、「道路信号と同じものを鉄道に」という話については了解しています。
信号方式とこのタイムテーブル方式にはそれぞれ長所・短所がありますし、併存、かつ場合によっては併用してもいいと考えています。
とりあえず、とりかかっていたこちらのタイムテーブル方式を固めてみました。
信号の方もおおまかな実装の目処は立ってきましたので、比較も含めてgonyoさんの方のトピックで進めましょうか?
(比較はまた別トピックを立ててもいいですし。)

日本語化はmokaさんのおっしゃるように、ja.tabでの対応が良いと考えています。
mokaさん、試してもらうのに甘えちゃっていいですか?

使い方よくわからないまま路線編集→Auto Offset と押すとフリーズしました。 バグなのかもしれないので検証お願いします

使い方についいてですが、
同梱の README_TTT_ja.txt では、やはりわかりにく過ぎますでしょうか?
(チュートリアル風になっていないのは申し訳ないです)
足りていない情報などありましたらご指摘ください。
(20:44 先程、gonyoさんの文章の意味を読みとりそこなっていたため、失礼な表現をしました。訂正してお詫びいたします。)

フリーズの件はこちらでも確認しました。
(20:42修正)
pitch や cycle が 0 のまま押すとフリーズしてしまいます。
次のバージョンまでに、この場合は無視するか、できれば Auto Offsetボタンの状態を制御するようにいたします。


引用
問題点
非常に見た目が悪いこと 
 :
この問題点は、道路信号で車両を制御して踏切を踏ませる制御方式のほうの話ということでいいですよね?
(斜め読みしてる時に最初の項目を見て、ドキッとしましたw)

とり急ぎ。
トピック名: TTT-032
投稿者: wackdone さんの発言 2012/06/29 22:21
最新版の TTT-032 をアップします。
路線管理ウィンドウで、pitchが0の時に Auto Offset を押すとフリーズするバグを修正しました。
gonyoさん、ご指摘ありがとうございました。

機能やセーブファイルバージョンに変更はありません。

ソースパッチ: この記事に添付
Windows用バイナリ:
  http://ux.getuploader.com/wackdone_simutrans/download/3/simuwin-r5788-ttt-032.zip

前のバージョンのバイナリは削除します。

(ソースの方に新しいクラスが増えていますが、今はスルーでお願いします。整理できてなくてすみません)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: moka さんの発言 2012/06/30 02:02
>>wackdoneさん
>mokaさん、試してもらうのに甘えちゃっていいですか?
はい、かまいませんよ♪
良ければマウスオーバー時のメッセージをテキストで頂けないでしょうか?
一つづつ書き写していくのが思った以上に面倒で…。

遅くなりましたが、ボタン名に対応したja.tabを添付します。
simuwin-r5788-ttt-030\simutrans\text\ja.tab の末尾に追記した形です。

追記内容は以下になります
#__________________________________TTT_text__________________________________
#__________________________________TTT_text__________________________________
Timetable Cycle
運行周期(TTT)
= SumOfSplits
総所要時間積算
Convoy Offset
発車時間修正(TTT)
Show RecTime
実所要時間
Split time
各所要時間(TTT)
Clear Timetable
全所要時間クリア
Reset Delay All
遅延時間総リセット
Pitch
発車間隔
Auto Offset
発車時刻修正
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/06/30 02:16
うを、mokaさん、すばやっ!ありがとうございます。
こうして見ると、まずは私のつたない用語選びからどうにかしないといけませんね。

mokaさんwrote:
>> 良ければマウスオーバー時のメッセージをテキストで頂けないでしょうか?

ざくっと抽出してみたので .txtで添付します。(改行コードの問題とかありませんか?)
抽出といっても、自分のパッチの中から、"set_tooltip" で検索して手でコピーしただけです。
文末に'.'(ピリオド)を入れてしまっているところがありますね。
先々は取り除かなければと思いますが、今はバイナリがこうなっているので、このままにさせて下さい。
また、コード内で正しく翻訳される手順を踏めていないところがあって英語のまま出てしまうものもあるかもしれません。
適宜、ご指摘いただければ。

それでは、私の偽物英語にもう少しお付き合いいただければ幸いです。
トピック名: メッセージ対応版ja.tab / 簡易タイムテーブルパッチ
投稿者: moka さんの発言 2012/06/30 13:08
語句若干修正&マウスオーバー時メッセージに対応したja.tabを添付します
”設定所要時間”という表記を使い方ファイルの”計画時間”に訂正するなど、若干の語句修正もしました。
※Reset Delay Allボタンのメッセージ(英)が隣のボタンと同じです。パッチ側の修正おねがいいたします。

実際に使用するシーンを想定しながら文章をつくりましたが、
確かにUIに関してはもっと詰めないといけないようですね。
私の感じた所感としては
・使い方が直観的ではない:
設定画面を見ただけでは操作の流れがわからないので、大変使いにくく感じます
見た目でぱっと操作を誘導することが必要ですね。
・各設定が分散している:
上記に絡んでですが、設定ウィンドウを行ったり来たりすることになり、操作が煩雑です

改善例としては;
計画時間から運行周期を求めるボタン以外に
測定された実所要時間から運行周期を計算する機能(ボタン)を追加して
実所要時間測定→運行周期決定→発車間隔設定の流れを作る
+上記全てを自動で行うフルターンキー的なボタンを路線編集ウィンドウの目がつく場所に置く
などと言ったやり方があるかと思います

以下、今回のja.tabのTTT-text部
#__________________________________TTT_text__________________________________
#__________________________________TTT_text__________________________________
Timetable Cycle
運行周期(TTT)
= SumOfSplits
総計画時間積算
Convoy Offset
発車時間修正値(TTT)
Show RecTime
実所要時間
Split time
計画時間(TTT)
Clear Timetable
計画時間クリア
Reset Delay All
遅延時間総リセット
Pitch
発車間隔
Auto Offset
設定開始/修正値
Reset delay time from timetable.
路線に所属する全ての編成の積算遅延時間をリセットします
#View line in Timetable view window
#
#Convoi is sold when all wagons are empty.
#
Click here to calculate cycle/num_convois automatically
編成が始発駅を発車する間隔を入力/クリックで自動計算
Set offset for all convoys
クリックで各編成への間隔自動設定開始\n/右欄に発車時刻を基準からどれだけずらすか値を入力
Auto calculate cycle of the timetable
各駅の計画時間(所要時間の設定値)の合計を運行周期として設定します
Show recorded split time of the convoy
この編成の実所要時間を表示します
Clear all split time
全ての停車駅の計画時間(所要時間の設定値 ※実所要時間では無い)をクリアします
トピック名: TTT-033
投稿者: wackdone さんの発言 2012/07/02 02:03
他のパッチも取り込んだバイナリを作る前に、TTTの現状最新版をアップします。

本バージョンは機能の変更はほとんどありませんが、将来のことを考えセーブゲームのバージョンを変えてみました。
新しい実行ファイルでセーブすると、
  0.112.5
になります。
これは「Release 112 までには本家に入っていて欲しいなあ」という私の弱い意志の表われでもあります。
なお、これまでのバージョンで書いた0.811.*系のファイルもロードできます。

実験的に、時刻表風の表示をするウィンドウを作ってみました。
ドキュメントにも記載していますが、ビルド時に
  CFLAGS += -DSCHECULE_TIMETABLE_TTV
  SCHEDULE_TIMETABLE_TTV=1
の2行をコンフィグ追加することで
まだほんど役に立ちませんし落ちる可能性もあるので、心臓の弱い方はボタンを押さないでください。


mokaさんとgonyoさんから、いろいろな機能改善案を頂いています。ありがとうございます。
やはりユーザインターフェースが現状の最大の課題ですね。
皆様の案はあとで整理しようと思いますが、いずれにしても今のようにSimutransオリジナルにすでにある
ウィンドウ (スケジュール編集、路線管理) に寄生している限りは、いろいろと難しくなってきています。

今回、実験的に作ってみた「時刻表ウィンドウ」、または別に新たにウィンドウを作成して、
TTTに関する設定をまとめてできるようにするべきだと考えています。
(「時刻表ウィンドウ」は複数の路線を並べて見られるようにしていきたいので、これもちょっと違うなというところです)

まずはパッチをアップして、RRC (RouteCost) の方のパッチのアップと一緒にバイナリも配ります。
トピック名: TTT-033 パッチ本体
投稿者: wackdone さんの発言 2012/07/02 02:04
上で説明したパッチ本体です。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/02 18:11
みなさまから頂いているユーザインターフェースの改善案を整理しつつ、
値の関連の整理や案出もしてみました。
コメントいただければ。

TTTのユーザインターフェース改善

= いただいている改善案のまとめ

  * 総論: 操作の流れを直感的にわかりやすく
    (現状のは必要操作がわからない、設定箇所が散っている)

  * 測定された実所要時間から運行周期を計算する機能

  * 実所要時間の計測 → 運行周期決定 → 発車間隔設定という流れ

  * 仮ダイヤ一発作成ボタン

  * 必要編成数の計算 (周期は計測または設定、運行間隔を設定、周期 / 間隔で計算)

  // 以上の全ては、新たなウィンドウを作って機能の集約・追加がされればよいか?

  * 「ダイヤが乱れています」という警告メッセージを出す
    (「駅が混雑しています」みたいな感じで)

  // 「ダイヤ乱れ」の評価方法を考えないといけない


= 前提: Simutransの構造上の話
路線につけられたスケジュールと、
列車につけられたスケジュールとがある。
つまり、路線の割り当てられていない列車がある。

(歴史的には先に列車のスケジュールがあったからだっと思う。かなり昔の記憶ですが)

これらを統一して扱えるインターフェースにしないといけない。
あるいは、「TTTを使う場合は必ず路線を作ってね」と言う方法もあるけど。


= タイムテーブル編集画面を考えてみる
路線編集から呼び出せるような形で (あるいは単体列車に対しては列車情報ダイアログから?)
タイムテーブル編集ウィンドウを作る。
これを時刻表表示ウィンドウと組み合わせるかどうかは悩ましい。
  タイムテーブル編集ウィンドウ ← 一つの時刻表(スケジュール)
  時刻表表示ウィンドウ ← 複数のスケジュールを並べて
というイメージがある。
後者の方がサイズが大きくなりそうなので、いつも後者が表示されるのも困りそう。
ただ「他の種別列車の様子を見ながら編集したい」というニーズはありそう。


= 必要なパラメータの整理
原則として、全てのパラメータの設定は任意である。
設定されていない値を使用する機能は動作しない(無視される)という作り。

各機能に必要な設定値はそれぞれ以下の通り

  一定時間運行機能: 計画駅間時間
  周期時間運行機能: 周期、オフセット(出発時間)

  出発時刻自動設定: 周期、間隔、ベース

以下、"(←)" は自動計算・測定が可能な項目。何かの機能の後の()の中はその機能への引数。
"路線ごと"と言った場合は、路線化されていない列車のスケジュールも含む。

== 一定時間運行機能
  <列車ごと> 実績駅間時間  (← 運行時間自動計測(列車))
  // 今はほっといても普段から裏でやっている 

  <路線ごと> 計画駅間時間  (← 実績駅間時間(列車))
  // 自動設定の際はどの列車から実績時間を取り出すかの指定が必要になる
  // 列車にまだ実績駅間時間が入っていない(計測されていない)区間がありえる
  // 全列車の中から、最小値、あるいだ最大値を選び出すという方法もある

== 周期運行機能
  <路線ごと> スケジュールの周期時間
    (← 時間合計(スケジュール内各項目の計画駅間時間))
    (← 時間合計(スケジュール内各項目の実績駅間時間))
    //後者は、駅間計画を設定したくない場合

    //同様に、どの列車の値を採用するかの問題がある

  <列車ごと> 出発時刻 (時間オフセット)
    (← 発時自動設定(周期時間,間隔,ベース) : この機能はモーダル)

  <路線ごと> 出発時刻自動設定のための間隔
  <路線ごと> 出発時刻自動設定のためのベース
    //上の二つは発時自動設定を行うためだけに必要
    //ただしユーザが覚えておきやすいように保存しておくのも良い

= ダイヤ乱れの評価
実績時間の合計が周期を上回っていたら?
ただしこの場合は、周期が設定されている必要がある。

= 実装上の問題点
あまりウィンドウをわけすぎると、ウィンドウ間の情報の同期が難しくなってくる。
(ユーザの混乱や、バグのもとになりやすい)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: moka さんの発言 2012/07/04 22:48
やはりスケジュールが路線と編成本体の二つあるのがややこしい元なんですね。
どのような意図でこのようになってるんでしょうね?将来的になにか二つに分けた意味が出てくるのかな?

全部載せのバイナリ、ダウンロードしてしばらくいじってみます。
このような素晴らしい機能の実装に尽力してくださるwackdoneさんに感謝です

トピック名: TTT-034
投稿者: wackdone さんの発言 2012/07/05 04:51
TTTの最新版です。
設定や列車の運行方法に一切の変更はありません。
実験的に作っていたTimetable View (時刻表形式表示ウィンドウ) が
大幅に機能拡張したので、これの評価用です。

ただし、まだタイムテーブルの設定はできません。設定はこれまでどおり路線・スケジュール編集ウィンドウで行います。
私は試しにこれを使って、優等と普通の緩急接続を計画して、入力してみました。
流れ:(かなり適当)
  (1) まず普通がいい具合に流れるタイムテーブルを作って運行させる。本数もいい感じにして。
        (この時点でも、Timetable View は見積をたてるのに使えます。実績時間を見ておおざっぱな計画をたてるといいかと)
  (2) 緩急接続、あるいは退避を組むにあたって接続・退避させる駅を選ぶ。(必要なら施設も作る)
  (3) 急行路線を設定。普通の合間を縫ってフリーランで走らせてみる (まだTTTは設定しない)
  (4) 急行の実績所要時間がわかってきたら、まず全体的な周期 (普通の元の周期 + 退避の時間の合計) を決定する
    なんとなく考えやすいように、最初は少し大きめな退避時間を入れつつ、全体周期を切りのいい時間
    (1000の倍数とか) にしておくとやりやすい。
  (5) 急行のスケジュールに、駅間計画時間と上で決定した周期を入れる (実績時間に少しマージンを加えて)
  (6) Timetable View で見ると、急行が接続駅を出発する時間がわかるので、それより少し後に普通が出発するように
       急行、あるいは普通の出発時間オフセットのシフト (自動設定のときのbaseというやつ) を決定する
  (7) このbaseを使って、必要編成を走らせつつ (ここからpitchも求めて)、Auto Offset!
  (8) あとはしばらく待つ


こうやって書いてみましたが、やっぱりややこしいですね :-)
(必要編成数は、gonyoさんのおっしゃっていたように、pitchから先に考えるという方法の方がいいかもしれませんね。私はまだ暗算で求まる程度の周期や編成数でしか試していないのですが)

とりあえず、パッチをアップしますので、人柱募集と改善案募集です。
(バイナリはちょっと待ってください。全部盛りにして大丈夫かを確認するのに手間が。。。)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/05 05:02
mokaさん wrote:
>> どのような意図でこのようになってるんでしょうね?将来的になにか二つに分けた意味が出てくるのかな?

あくまで勝手な想像ですが、将来的に何かあるのではなく、過去との使い勝手互換性維持なんじゃないかと思います。
ソフトウェアの発展過程でよくある現象になぞらえて考えてみると
  1. 最初に「列車のスケジュール」だけがあった。 (路線はなかった)
  2. まとめて管理したいから「路線」を導入した
  3. でも全ての列車に必ず「路線」を割当てなきゃいけない、とすると 1. の時の使い方から強制的に変えさせなきゃいけなくなる
    (実際、専用路線を走行する小規模貨物輸送で列車一本のところなんか、簡単に列車の設定で済ませてしまいたいことありますよね。もちろん、のちのち管理はしにくくなるのですが。)

つまり、過去の利用者の使用方法(それが全く無意味というわけではない)との互換性維持なんじゃないでしょうか。


あと、mokaさんにお願いがございます。
今回のパッチでは自分が新たに作ったところの ja.tab 相当は入れてみたのですが、
この先の配布には、mokaさんに作っていただいた分を追加させて頂けませんでしょうか?

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: moka さんの発言 2012/07/05 05:17
>この先の配布には、mokaさんに作っていただいた分を追加させて頂けませんでしょうか?
了解いたしました。どうぞ気にせずお使いください。

過去との互換ですか。このゲームもそれだけの歴史を積み重ねてきたのですね(感嘆)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/06 20:02
すみませんpatichのあて方わかりません。 アドオンの追加とかja.tabとかいろいろややこしいみたいです。
私よくわかりませんが開発がんばってください。 
トピック名: TTT-035 & 全部盛りバイナリ
投稿者: wackdone さんの発言 2012/07/07 06:20
TTTの最新版 035 のパッチを添付します。
また、これをビルドしたWindows用全部盛りバイナリを以下に置きました。
http://ux.getuploader.com/wackdone_simutrans/download/10/simuwin-trc-mixed-120707.zip
お試しください。

今回は、本家の配布している本体と同じ simutrans 以下まるごとのzipですが、実行ファイル名が
sim-trc-mixed.exe になっています。ご注意ください。
また今回から、mokaさんに作成していただいた ja.tab をマージしています。
mokaさん、ありがとうございました。

CGW(周期時間制御信号)を使う場合は、さらに専用 pak ファイルの追加が必要です。
詳細はCGWのトピックの中をごらんください。
それ以外の機能を使う限りは、通常のSimutransの環境(本体+pak何か)でそのまま使用できます。
ただし、このバイナリを使用して作成したセーブファイルは、オリジナルのSimutransでは
ロードできなくなるのでご注意ください。

TTTの今回の機能拡張は前回と同様に、時刻表ウィンドウです。
ここから計画時間などを入力できるようにしてみました。
使い勝手が悪いところもまだ多々ありますし、不具合もありそうですが、
この方向で行けば、これはこれで時間入力がしやすくなりそうです。

使い方の説明は同梱の README_TTT_ja.txt をごらんください。

TTTの次の課題は、計画時間自動作成機能 (ウィザード?)かなと考えています。
(時刻表ウィンドウをベースにするかどうかは、ちょっと悩むところですが)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/07 06:28
gonyoさん、バイナリの更新が遅くなってしまいすみません。
今回の配布では、展開した中の simutrans フォルダを使って、その中にお好きなpakを入れてもらえれば
ja.tabなどはそのままでいける(はず)です。

ただし、CWG の pak は、CWGパッチzipの中にある、pakファイルを追加で入れていただく必要があります。
(pak フォルダの下にコピーするだけです)

すみませんpatichのあて方わかりません。 アドオンの追加とかja.tabとかいろいろややこしいみたいです。

Windowsでpatchをあてるのは今はどうするのが一番簡単なのでしょうかね。
私はマイナーなUNIX系使いなものなので、cygwinとか入れてもらっていればまだ説明はできるのですが、
どうもそこらへんはガイドしにくいです。ごめんなさい。
そういえば、Windowsってデフォルトだとファイルの拡張子すら表示してくれないのでしたっけ?
(なんだか、自分がごくたまに使う時はまっさきにそれを切り替えていたような記憶が。)
ドキュメント書きなおしたり、ファイル名変えたりしないとまずいかな?
トピック名: 既知の問題: TTT-035
投稿者: wackdone さんの発言 2012/07/07 21:08
現時点でわかっているバグなどを列挙しておきます。
いずれも次のバージョンまでには修正するよういたします。

時刻表ウィンドウ: 運行周期(cycle)の設定が列車のスケジュールに伝わらない
  現在のものでは、別途路線編集をして運行周期だけ正しい値を入れなおす必要があります。
  単純なバグです。

時刻表ウィンドウ: 出発時刻の入力が不完全だと、異常に長い計画駅間時間が設定されてしまう
  入力されている時刻表のチェックができていないためです。
  A-B-C と運行する路線でたとえば、Bに入力した時刻がCの時刻より後の場合、この問題が発生します。
  (内部で値が負になってしまい、符号無しで扱った結果、異常に大きい値になってしまう)
  ダイヤの反映の前にチェックを行うようにします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/08 07:09
時刻表の作成支援について途中経過 (まだ実際の計算が入っていない)ですが、画面の様子を貼ります。

本来のデータ構造からすると路線の時刻(というか区間時間)を設定していくのですが、
オフセットが入っていないと「時刻」として意味が間接的になってしまうことから、
編成(列車、乗り物)を選択して、これに対してダイヤを作成していく手順にしてみました。

問題はたくさんありますが、特に
  - 列車に割り当てられていない路線が編集できない
  - 手順は示せているが、まだ「一発」というには程遠い
  - オフセット(始点出発時刻)の設定や自動計算へ、なかなかスムーズに辿りつけない (やはり原始情報の分散が元の原因)
あたりが悩みの種です。
(ウィンドウの大きさや表示の重さも、そろそろ問題になってきそう)

今の画面に無理やり押し込んで、AutoOffset (これまでは路線編集ウィンドウにあった) まで入れることは可能ですが、
オフセットの設定や計算は、もしかしたら考え方を大きく変えないといけないかもしれませんね。

また、簡単な例を少し試してみているだけでも、段落ちした場合がやはり深刻で、これへの対応に追われるまま
なかなか計画通りの正常ダイヤに入ってくれなかったりします。
(AutoOffsetを繰り返せば、筋間引きをやってはくれるのですが)

私の頭の中の考え方が狭まってきてしまっているようです。
オフセットの話も、ユーザインターフェースの話も、ぜひぜひアイディア募集です。
トピック名: TTT-036 & 全部盛りバイナリ
投稿者: wackdone さんの発言 2012/07/09 08:05
時刻計画アシスタントがそれなりに出来たので、アップします。

いつものようにパッチはここへ添付。
Windows用全部盛りは↓のURLです。
http://ux.getuploader.com/wackdone_simutrans/download/11/simutrans-wackdone-20120709.zip

各編成のオフセット修正などは、まだ放置状態です。

そろそろちゃんとしたマニュアルを作らないといけないのですが、簡単スタートアップガイドをここに書きます。

(1) 普通に路線を作って、列車を編成して、適用してください。
停車点などが上手くいっているか確認しながら、一周運行させてください。

(2) 路線編集ウィンドウの中で、作った路線を選んで、「時刻表表示」(Timetable View) を押してください。

(3) 出てきたウィンドウの中で、下の表の列を選んでから、上辺のタブ「計画アシスタント」(Planning Assistant) を選んでください。

(4) だいたい上からボタンを押していけば、なんとなくいい感じの時間計画が立ちます。

あとは、また開いて時刻修正するか、それぞれの路線のスケジュール編集で具体的な値を直していきます。
トピック名: 既知の問題: TTT-036
投稿者: wackdone さんの発言 2012/07/09 18:36
現状、以下の問題のご報告を頂いています。

1. 路線編集ウィンドウで、「編成の割当てられていない路線を選択」して「時刻表を表示」を押すとクラッシュする。

2. 計画アシスタントで「運行周期」の値をSet(「設定する」)しようとすると、上書きされるのでなく既存の値に追加されてしまう。
  (既に計画を設定している路線に対する操作の時に問題になります。)

いずれも、手元では修正いたしましたので次のアップに盛り込みます。
なお 1 の問題については、現状の仕様の是非もありますので、別記事でご意見を募集します。

問題をご報告くださり、ありがとうございました。
みなさま今後とも問題の御報告、機能改善のご提案を宜しくお願いいたします。
トピック名: 時刻表表示の仕様について
投稿者: wackdone さんの発言 2012/07/09 18:54
仕様の再検討が必要な場所は多々あるのですが、まずは現在、まだ実装途上の時刻表表示ウィンドウについて。
「わかりにくい/わかりやすい」、「使いにくい/使いやすい」といったコメントや、なんとなくでもいいので改善案をください。

1. 「編成」を見るのか「路線」を見るのか
正直に言うと、そのどちらに絞るのか、あまりはっきりさせずに実装を進めてしまいました。
このためスケジュールの修正機能までついてしまった段階で、この無理が少々たたってきています。
  「時刻表を見る」という観点から: 全ての関係ある編成を並べて見られるのがいいと思いました。
  「スケジュール(の時間要素)を修正する」という観点から: 発車オフセットを除けば、全ての要素は路線に適用されるものなので、本当は路線を選択して操作できるようにするべきかも。
特に上の問題報告の延長ではっきりするように、現状は「編成の割当てられていない路線」には全く手をつけることができません。

プログラム的な解決方法としては、
  a. 「路線」を表す仮想の編成を表示できるようにする。これへの操作は発車オフセット設定以外全てできる
       (路線に編成が割当てられている場合に、これを表示するかどうかは考えどころ)
  b. 「編成ビュー」と「路線ビュー」を切り替えられるようにする
       路線ビューにした場合は、a.の仮想編成が並ぶような感じになります。(具体的な編成は一切表示されない)
と、いくつか考えられるのですが、簡単に実験してみるには少々改造量が大きすぎるため、先に仕様の方向を決めたいところです。

       
2. 運行周期・運行間隔・自動調整など
現状の「計画アシスタント」はこれ以上、画面を広げたくないので (既に合計で縦480の限界が近い)
この右に「運行アシスタント」を新設しようと考えています。
ここでは、路線(に所属する編成)が選ばれている前提で、
  - 路線の運行周期の修正 (「計画アシスタント」からこっちに移動した方が良い? もしくは両方に置く)
  - 所属する編成数(現在値あるいは希望値)
  - 運行間隔(先に設定、あるいは自動的に計算)
  - 出発時刻のベースを指定しての、自動オフセット設定 (今の路線編集ウィンドウにある機能、あるいは各編成の居る位置から判断して、静的に(実運行に頼らずに) まとめて設定)
  - 編成名の自動付与: ボタン一発で路線所属の全編成に「路線名: 編成番号」を名前としてつける。
などができるようにしようかと考えています。
アシスタントは、ガリゴリとコードを書き連ねる必要があるので、少々時間がかかります。
いましばらくお待ちください。また、改善案もぜひください。
トピック名: TTTでの時刻の扱いについて
投稿者: wackdone さんの発言 2012/07/09 19:40
本スレのほうでも指摘や提案が出ていましたが、今の時刻表現はたしかに高度な脳内補完が必要になります。
ただ問題はいくつかに分割できますので、それぞれ分けて書きます。
(だいぶごっちゃになっていますが、先々整理させてください)

1. 絶対時刻の扱いと認識
分かりにくい事の第一要因は、Simutrans内の絶対時間 (zelt_ms) を基準にしていることでしょう。
TTTでは、これを256倍して TTTという単位 (この単位名は変えた方がよさそう) を使っています。
問題の一つは、この zelt_ms も TTT も、現在の値はどこにも表示されないことでしょう。
例えば「なんでこの列車、なかなか発車しないんだろう? 今、何時?」と思っても確かめようがない。

じゃあ既にある表示を使えばいいかというと、これも問題です。
ゲーム画面の左下に出る時間は (設定にもよりますが)
  1ヶ月 = 2^bits_per_month  ticks  (bits_per_month==20の時は、1048576でゲーム1ヶ月)
として、これを一ヶ月の日数で割り、さらに24で割って60で割ってという具合に計算して表示しています。
つまり正確には、この左下の画面の中での1日や1時間、1分は、月によって長さが変わります。
(コード浅読みなので、間違いがあったらご指摘ください)

TTTは(私の元の意識では) 正確な周期性を目指すものですので、1単位の長さが変わってしまう「ゲーム内時刻の年月日(時分)表現」にのっかりたくはありません。
これとは別にゲーム内絶対時刻を表示できるようにすればいいのでしょうかね?
(フォーマットは何か見易くするとして。後述)

1.5. TTTの独自の暦を持つかどうか
ダイヤを組む人によっては「何時何分にどこを通過して」という考え方を強く求めることと思います。
それでは、たとえば 1 TTT == 仮想世界の0.25秒に相当 とかいうふうにして (設定はできるようにして)
*60*60*24 としていって時分秒にした上で、今の時間を表示したりダイヤで使ったりできるようにしましょうか?
今の私の頭の中では、これを下手にやってしまうのはまずいと考えています。理由は、
  (1) 今のSimutransのゲーム内時刻表現(上述)と併存させると混乱しそう
  (2) マップの中でエリアや路線によって時間の感覚が異っている世界観を持ってプレーして いる場合もあるのでは?
後者は(本スレでも指摘している人がいましたが) Simutrans がシミュレーションとしてゲームにするために、
距離と時間の双方がデフォルメ(?)されているために発生している歪みを、
  「ここは離島への船便。1日 3往復運航」
  「こっちは大都会の過密路線、3分ヘッドで普通と優等が交互に発車」
なんていう風に脳内設定で棲み分けさせて遊んでいたりするんじゃないか、という話です。
こんなことがモヤモヤしているので、ゲーム全体でのTTT時間の「時分秒」表示には今は踏み切れないでいます。

2. 時刻、時間の表示形式
時刻はttcycleで割った余り、時間は(ttcycle以内の)相対値だとして、どちらも 0〜 の単なる整数になっていることが
認識しにくい、はいその通りだと思います。
上の1.5では「ゲーム全体を通して共通の時間単位の現実への対応づけ」は抵抗があると申しましたが、
一つの路線、あるいは同一営業領域を走行する複数の路線(優等と普通とか)の中に限ってしまえば、
時刻表現は改善されてもいいと思います。
例えば 1TTT = 0.25 分 に対応させてみて (240で1時間)、時刻表に
  1000
  1222
  1427
とあるのを、HH:MM.ss表現にさせれば、
  04:10.00
  05:05.30
  05:56.45
として見せることは可能です。
ただし、路線ごとに「表示形式」「1TTTの対応単位」「有効桁数」などを覚える (セーブデータに記録もする)
までしておかないと使いにくいでしょう。またこれを、どこで設定させるかも丁寧に考える必要があると思います。
(一般論として、設定項目が増えれば増えるほど、ソフトウェアは単純には使いにくくなるので :-)

3. 時刻、時間の入力方法
上の2.をした上で発生するのが今度はどうやって入力させるか、です。
まあ、これは「こういう方法で行こう」と決まれば、あとは頑張ってウィジェット (GUI コンポーネント)を書くだけです。
ただし、あまりゴテゴテしたものはSimutransらしくないので作りたくないなあと。

4. 設定できる時間値の範囲
各画面での入力可能項目での値の範囲は、仮に絞っているだけです。
(たとえば、0〜1000000と出るところなど)
あまり広い範囲だと困るかもとなんとなくです。
この値域はコード内でもマークしていますので、どこかでまとめて適当な値にしようと考えています。


さて、このあたりのことは皆さんのゲームプレーのスタイルにも依るところでしょうし、
当然、好みも出てくると思いますので、最終的には最大公約数をとることは不可能になると思いますが、
まずは、どんな方法の可能性があるのか、皆さんのご意見をうかがいたいと思います。
Simutransらしく、でも脳内に頼りすぎないでほどほどに楽しめる表現を見つけられればと。
ご意見をください。
トピック名: 出発時刻(オフセット)の自動調整のありかた
投稿者: wackdone さんの発言 2012/07/09 19:57
現状は路線編集ウィンドウの中で
  pitch (運行間隔)
  base (時刻0からのずれ分)
の設定でできる 自動出発時刻 設定ですが、これをどうしようか?という話です。

現状は「自動出発時刻!」と押すと、以下のようなアルゴリズムが動作します。
  (1) 路線に所属する未設定(未再設定)の編成数を覚えます。最初は、路線内の編成の全数です。
  (2) 所属する編成が、スケジュールの最初の駅に着くたびに路線に問い合わせます。
     a. 自動設定の中で最初に到着した編成であれば、今の時刻より後で最も近い pitch*N+base の N を選んで、設定します。
     b. 二番目以降の編成であれば、この前に設定した編成の値に pitch を加えて設定します。
  (3) 全ての編成にひとわたり設定が済むまで繰り返します。全てが終れば、ボタンは元の「押されていない」状態に戻ります。

時刻表表示ができるようになった今、これはこのままでいいのか、ということと、
過度な遅延による段落ちでの混乱を減らしたい、ということの二つが問題です。

1. 時刻表表示を使えば
ダイヤをしっかり組もうとして、さらに優等を差込んだりしていくと、「等間隔」のニーズは次第に減っていきそうな気がします。
少なくとも、今の路線編集ウィンドウの中に半端にある必要は無いんじゃないかと考えています。

2. 「自動調整」は手動でするものか?
上の「現状のアルゴリズム」であった(2)a の「次に発車するべき時刻」を常に求めるようにさせる方法もあります。
イメージとしては、「何時何分に到着しようと、10分間隔で発車、スジがすっぽ抜けても気にしない」という感じ。
(呼び名になやみますが)この自動調整を固定的に路線にふってしまえるようにする、という手もあると思います。
ただしこれを有効にすると、各編成の持つオフセットが(一定のルールのもとで)変化していくことになるので、
時刻表で見る時にどう扱うかという問題があります。

個々のアルゴリズムはとてもシンプルなTTTなのですが、このあたりの「使い方」の束ね方に悩みます。
ご意見ください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/10 01:19
TTT(0709)ダウンロードしてみました。
111.3のデータから移行したところ、線路と道路の交差点(まだ踏切と言うものは無い)上の
列車信号が無視されてしまいました。(これは、TTTとは関係がないのかな。)

自分は、ダイヤといっても、定時、定周期発車させることはあまり考えてなくて、
車両基地なしでの等間隔発車、単線追い越し、特定の駅でのすれ違いあたりが
スマートにできればいいかなーという感じです

なので、時刻表を路線ごとに細かく管理するというより、駅に停車する全列車の
発車順序と間隔をちょちょいっと設定できる方が自分としては使いやすい気がします。
これまでの構想を完全崩壊させるプランなので、参考にもならないと思いますがw

追伸 計画アシスタントに対応したja.tabの同梱をぜひご検討下さい ;D
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/10 08:34
o_o さん、問題のご報告ありがとうございます。
機能について頂いたアイディアの方は、分けて返信いたします。

>> 111.3のデータから移行したところ、線路と道路の交差点(まだ踏切と言うものは無い)上の
>> 列車信号が無視されてしまいました。(これは、TTTとは関係がないのかな。)
おそらくCWGの側のコードの問題だと思われますが、まだ原因解明には着手できていません。

ご報告の内容について質問させてください。
上の引用の中の「(まだ踏切と言うものは無い)」の意味を私が正確に理解できていません。
すみません、ジョークまがいが入ってしまいましたが、一般的な線路と道路の交差と違って、なにか特殊な状況なのかそうでないのか、教えていただけると助かります。

またこれも念のための確認ですが「列車信号が無視される」のは
  a. ロード後、信号機が表示されるが、列車はこの信号が無いかのように走行する
  b. ロード後 (あるいはふと気付いたら) そこにあったはずの信号が無くなっている
のうち a の方ということでいいですよね?

CWGの実装の中で思いあたるフシがあります。
たしか私、「線路と道路の交差部分には踏切は置けない」と思い込んでコード書いてた気がしますorz
動作とコードの中身を確認してみます。
修正までもうしばらくお待ちいただければ。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/07/10 18:14
始発駅である編成が「積載0->0」と表示され長時間止まって後続編成が詰まるという現象が発生しました。
時刻表を見てみましたが、特におかしい点は見当たらないと思います。
曖昧な状況説明で申し訳ないです。
あと長時間駅に止まるときに「積載0->100」と同じように止まっている理由が出てくるとわかりやすいです。出来ればお願いします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/10 19:03
◆踏切ノリツッコミありがとうございまうす。
デフォルトの設定でやってたときは自分も気がつかなかったんですが、
Pak64、1875年スタートでプレイして気がつきました。
(Pak64のコンテストの輸送力不足での旅客運送が面白そうだったので。
コンテスト関連のSSあさってみたけれど、道路と線路の交差点が映ってなかった...
自分のプレイスタイル結構特殊なのかな ???)

信号は表示されていますが、経路予約上は無視されている(踏切地点の信号を撤去
した場合と同様の挙動)ようです。
自分の環境では、PAK64では1920年にならないと踏切は登場しませんね。
1920年以降でも、簡易線路だと踏切はできない様子です。ご確認ください。


◆旅客ターミナルでのTTTの導入:成功?
5路線35編成が集中する旅客ターミナルに導入。導入直後は混乱していたのですが、
夜通し試行錯誤すること数時間、編成数の軽減とホームの共有によって、
駅のスリム化に成功しました。
途中、低速列車と路線を共有している部分もありますが、運行周期だけの設定で
こちらはうまく流れている様子です。

◆貨物ターミナルでのTTTの導入:大失敗...
貨物搬出ターミナルは路線の始点の設定されている上、貨物列車が続々とやってくる
ので、導入にあたり、[ターミナル→...→周期調整駅]となっているスケジュールを
[周期調整駅→ターミナル→...]に組み替える作業が必要になりました。
運行周期の調整を終点にできるオプションがあったらなぁ〜とちょっと考えました ;D

...で、試験導入したところ早々につまづきました\(^o^)/
 <旧設定>ターミナル→消費地→調整駅(1/256停車)、2編成 → 最適な輸送量
 <新設定>調整駅→ターミナル→消費地、運行周期設定、2編成 → 輸送量が半減

スケジュール上一切数字を指定しない状態で、Recordが(0,46,1483,2954)、
Assistantで2970という運行周期が得られました。
停車分を適当に上積みし運行周期に3200を与えたところ、やたら停車してます。
Recordは(0,46,1478,3199)と表示されるのですが、ぱっと見では、6400の周期で
運行しているような感じです。どこで間違えたのでしょうか...
(試しに周期を1600にしてみたらうまく行ったような、ほぼノンストップなような...)
sima0222さんと状況としては同じなのかもしれません

...とまぁ、まだまだ中身全然理解できてない状態での雑感になりますが、

◆TTTの時間単位:現状のままでもよさそう、メーターがあると便利
列車ウインドウの駅間メーターのように、分母に計画時間(ないし全体周期)、分子に経過時間を
表示していただけると、「いつまで停車してるんやろー」がわかりやすくなるかと思います。

◆Timetable View:Assistant以外のタブの活用法がわからなかった、特に上半分
Conviy List、Line Settengのタブ上部は、将来的に何か機能が追加されるものなのか、
すでにうまい使い道があるのか、ちょっとつかみきれませんでした。
ウインドウの上部だけは枠外に押しやれないというsimutransの設計上の弱点 のため、
上部が嵩張っている小窓はノートの横長画面では扱いにくいので、時刻表を上に表示するか
グラフ表示ボタンみたいに上半分を非表示にできるといいですね。
トピック名: TTT-037 & 全部盛りバイナリ
投稿者: wackdone さんの発言 2012/07/10 19:53
TTTの最新版のパッチを添付します。
また、TTT-037, RRC-003, CWG-004で作ったWindows用バイナリを↓にアップしました。
http://ux.getuploader.com/wackdone_simutrans/download/12/simutrans-wackdone-20120710.zip
CWGの側もバグ修正と、それにともなう変更が入っていますのでご注意ください。(詳細は中のドキュメントかCWGのトピックで)
ja.tab はTTTだけのもの、r5788のものに追加したもの両方が入っています。README_ja.txtをごらんください。


TTTはバグ修正と主に時刻表まわりの機能追加です。
詳細はzipの中の doc/CHANGELOG_TTT_ja.txtをごらんください。
項目だけはいっぱいあります。
TTTとしての今回の機能追加の最大のものは、時刻表ウィンドウでの「運行アシスタント」です。
「計画アシスタント」で一本の運行スケジュールを決めて、
「運行アシスタント」で複数の編成に時間をわりふる、という流れが出来ています。(いろいろ再整理は必要ですが)

また、仮に実験的にですが以下の三つの項目を元のTTTコアの方に追加しています。
  (1) 始点発時刻指定発車での到着遅延許容: 本来の出発時刻より運行周期の10%までの遅れで到着した場合には、遅れを記憶してそのまま出発させます。
  時刻指定になったことでの混乱が少し解消されるかもしれません。
  (2) 継続的Auto-Offset: Auto-Offsetで最初の一本に適用する計算を、全ての編成にしつこく(Persistent) 行い続けます。
  これで、スジのすっぽ抜けはあっても1運行周期分出発が遅延するということは無くなります。
  現状は、「運行アシスタント」の中のチェックボックスでしか設定できません。
  (3) 運行の時間関連情報を、列車の詳細情報ウィンドウに表示 (「詳細」ボタンを押すと出てくるもの)
  積算遅延量、最終実出発時刻、にくわえて
  「この駅を出発する予定時刻」と「現在の時刻」をTT単位で表示します。(ついでに差も見られる)
  これを見れば、なんとなく「ダイヤが無茶」なのか「段落ちしちまったぁ」なのか「プログラムがおかしそう」なのかの切り分けができるかもしれません。
  また、Simutransの動作の事情で、どう頑張ってもちょっとだけ遅れで出発していく様子も見られます。


README_TTT_ja.txtにできる限り新機能などなどの説明は書いたつも りです。
情報がまとまっていないのはごめんなさい。

とり急ぎ、暗くなってしまったのでまずはポストします。
(皆様へのお返事はのちほど書させてください)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/10 20:09
sima0222さんwrote
>> 始発駅である編成が「積載0->0」と表示され長時間止まって後続編成が詰まるという現象が発生しました。
>> 時刻表を見てみましたが、特におかしい点は見当たらないと思います。

おそらくですが、前まえから問題になっている「強制段落ち」が発生していると思われます。
私の手元でも実はよく発生していたりしますが、個々の現象を詳細に分析できているわけではありません。

「強制段落ち」(段落ちという言葉がここで適切かはちょっと考えどこですが今は仮にこれでいきます。)

周期とオフセット(始点発時刻指定)を指定して運行している場合、始点での発車時刻は、到着した列車が
  go_on = N*cycle + offset
となる、now以上で最小のgo_onを計算して (整数Nを選んで) 、次の始点発車時刻とします。
この時、スケジュールを1周して戻ってきた時に(途中の遅延分も含んで) 微妙に cycle より長くかかってしまっていると
(というか、cyclce以下であっても、前回の始発時点で微妙に延発していると)、
ほんのわずかの遅れでも、最大で 1 cycle 待たされます。(つまり、Nが1個飛んでしまうわけです)

前の記事で書いた通り、新版には(1)10%ゆずる(2)とにかくpitchでパターン無視でいってしまえ
の二つの実験(後者は指定するもの)を入れていますので、お試しいただければと。
ただ、(2)の方は「強制段落ち」が発生する可能性があることをむしろ隠蔽してしまう恐れがあります。す。

またもちろん、プログラムのコアのロジックにバグがある可能性も多分にあります。
読みにくいかもしれませんが、一応、出発予定時刻と現在時刻を表示させる機能を入れましたので
雰囲気を探っていただけると助かります。

>> あと長時間駅に止まるときに「積載0->100」と同じように止まっている理由が出てくるとわかりやすいです。出来ればお願いします。
乗り物のtipを出している部分を見ていないのでまだなんとも言えないところですが、
簡単にできそうであれば、「発定時待ち(残りnnn)」という感じで表示してみようかと思います。
それまでは、面倒でしょうが詳細情報ウィンドウのほうをご覧いただければと。

ご提案、ありがとうございます。
今後とも宜しくお願いいたします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/10 21:02
o_oさん、いやいや本当に「まだ」という言葉で悩んでしまったのですよ、少しだけ;-)
私、最初のころ(0.82とかの頃?) 64やって、しばらく128やって、ここしばらくはpak128.japanの人になってしまったので、
時代や線路種別で踏切の有無や姿が変わるなんて知りませんでした;
バグとり含めてプログラミングが少し落ち着いてきたら、せっかくですから原点回帰で 64 でも少しプレーしてみようかとも。
教えてくださってありがとうございました。


>>信号は表示されていますが、経路予約上は無視されている(踏切地点の信号を撤去
>>した場合と同様の挙動)ようです。

こちらは、私の手元でも即席路線を作ったら現象が発生('b'のブロックツールで見るとよくわかりますね)
しましたので、修正いたしました。CWG-004の方です。(今回の全部盛りにも取り込みずみ)
私の手元の実験線では治ったし問題の原因ははっきりしているので、おそらく大丈夫だと思います。
お試しください。ご報告、ありがとうございました。


>> ◆旅客ターミナルでのTTTの導入:成功?
素晴らしい! 私が挑戦したかったことを見事に実現されていますね。
遊び方の一つとして、最小設備で最大輸送を目指すというのもあっていいと思っていました。
複数路線でのホームの共用などは、上手くいくと気持ちいいと思うんですよね。
分かりにくさや使いにくさのせいで、だいぶお手間をとらせてしまったようですみません。
これからさらに改善していければと考えています。

>> 途中、低速列車と路線を共有している部分もありますが、運行周期だけの設定で
こちらはうまく流れている様子です。

本来は運行周期(というか各駅間の計画時間を全て埋めれば一定周期になる)だけで、かなり安定した運行になるはずです。
アルゴリズムもものすごくシンプルですので。
なお、それだけでよければ「運行周期」欄は設定しないでください。0を入れておいてください。

問題は「運行周期」と「オフセット」を個々の列車に入れたり、さらに「自動間隔設定」なんてしてしまった場合でして、
こうなると「絶対時刻」の概念を入れざるを得なくなるので、いろいろと「分かりにくさ」「動きの馴染みにくさ」が出てきてしまいます。
ただ、優等の退避とかさせるにはやっぱり欲しいかなと。

>>◆貨物ターミナルでのTTTの導入:大失敗...
ああ……やっぱり難しかったですか。実は貨物の方はあまり考えていなかったんですよ、最初作っているうちは。
(「貨タは大きくてあたり前!」「ありったけの編成並べて100%待ちでいけいけ」なんてやってしまう性格なもので)

ただ本質的には旅客と変わらずできるはずなので、(100%待ちをあきらめれば)、違いといえば
  積載量の違いによる加速の差が旅客より大きい → 実績時間や距離/速度での見積りはあまりあてにならないかも
というあたりですかね。

>> 運行周期の調整を終点にできるオプションがあったらなぁ〜とちょっと考えました ;D
これは最初、考えたんです。ですが、(少なくとも今の段階で)ユーザインターフェースがこれ以上ややこしくなるのはまずいと思い、踏み止まっていました。
ちなみに、私が良く理解できていないのかもしれませんが、終点への計画時間を長めに設定して、
ここで全ての遅延を吸収させるというわけにはいきませんか?
(始点だけ特殊な発時決定をしていると言っても、基本的には駅間計画を足していった各駅の時刻もほぼ同じ特性になる、
というかそういう特性が出るように組まないと上手く機能しない仕組みになってしまっ ているかもしれません。)

なお、前回までのバージョンのアシスタントはこまごまとバグを持っていたかもしれません。
ドキュメントにまだ書けていないのですが、ときどき「周期時間表示」(WrappedTime)をオフにして、
実際に入っている値(剰余でない値)を見てみてください。予想を越えた時間が入ってしまっている恐れがあります。
(offsetから足していっていますので、最も大きくて cycleの2倍の値未満まではなるはずですが、
 それを越えているようだと、これまで想定されている通常の使い方では出てこない値です)

特に:
.>>Recordは(0,46,1478,3199)と表示されるのですが、ぱっと見では、6400の周期で
>> 運行しているような感じです。どこで間違えたのでしょうか...

とおっしゃっているところは、sima0222さんへの返答にも書きました「強制段落ち」、あるいは
アシスタントが異常な値を入れてしまっている、のどちらかの可能性があります。


>> ◆TTTの時間単位:現状のままでもよさそう、メーターがあると便利
おお、メーター! それは思いつかなかった!
sima0222さんから頂いたtipの件と合わせて実装調査してみますね。
UIまわりは特に、作っている本人にはなかなか思いつかなかったりもするので、本当に助かります。


>>◆Timetable View:Assistant以外のタブの活用法がわからなかった、特に上半分
Convoi List は、とりあえず編成のフルネームも見えるようにしておかなきゃいけないだろうと作りました。
スプレッドシートの列ラベルだけだと、狭すぎるもので。

Line Setting は、今回導入した「運行アシスタント」の一部の機能を入れるつもりで先に準備したのですが、
今のところアシスタントに仕事を横取りされまくって、役がまわってこない状態です。
元のデータから考えると、「路線」と「編成」でそれぞれの管理や把握が必要なので、何らか整理はしないければいけないのですが。

ウィンドウのレイアウト、小型化などは、これから検討してみます。
やはりメインで見て操作するのは (アシスタントが済んだら) 時刻表そのもの、という感じでしょうか?

であれば例えば、ご提案のように
  - リストなどはシェード (上に閉じられる、または下にぶら下がる) にしてしまって
  - アシスタントはポップアップ、または左か右に出てくる
という感じがいいですかね。
アシスタントと時刻表ペインは同時に見たくなると思うのですが、この二つはどちらも大きさが必要で、少々悩ましくあります。
(アシスタントの出来が非常に優秀であれば、時刻表を見せなくてもいいのかもしれませんが)
現状、Convoy List が無駄に高さがあるのは、アシスタントの画面が大きくなってしまったからだったりします。

新版はさらに高さが増してしまい、いっそうご苦労をおかけすることになるかもしれません。
まずは機能をご確認いただきつつ、こちらではレイアウトの再検討を進めてみます。

実際の導入事例のご紹介や、機能改善についてのご提案、ありがとうございました。
今後とも宜しくお願いいたします。
トピック名: 本スレPart54 751さんの件
投稿者: wackdone さんの発言 2012/07/12 04:41
(本スレとこちらで行き来してしまっていてすみません。問題などの情報交換は極力こちらでお願いいたします。)

本スレ(Part54)より転載
From: [751] 名無しさん@お腹いっぱい。 <sage>
Date: 2012/07/12(木) 01:06:09.50 ID:2e0+5qw0
>> 旧データーをTTTでロードしようと思いましたが・・
>> Unknown object type '48'を喰らってしまいました

アップしてもらったログを読みつつ調べましたが、
いまのところは「RRCのhackyなファイル識別が悪い」という可能性しか
思いあたっていません。

現状最新の TTT だけ (RRCもCWGもなし)のバイナリを置きますので、
これでロード可能か否か確かめてみて頂けませんでしょうか?
  http://ux.getuploader.com/wackdone_simutrans/download/13/simuwin-ttt-120712.zip


exeを差し替えたら、settings.xmlを削除する必要があるかもしれません。


原因の推定
object type '48' は、オリジナルのSimutransでも、TTT/CWG/RRCでも使用していない値です。
よって (751さんが特別なバージョンのSimutransを使われているという事でなけれ ば)
原因は、プログラムで検出できないファイルフォーマットの変更がされており、
object type では無い場所をobject typeだと思って読んでしまっている、ということが考えられます。

可能性検討(1)
RRC(RouteCost再実装)では、新しいファイルフォーマットバージョンを使用せずに
「max_transferの値が通常範囲より大きな値であったらRRC用のパラメータが
  入っていると判断して読みこむ」という反則的な処置をしています。
この判断が間違っていた場合、この先のデータの読み出される位置が全てずれてしまい
本来は object type ではなかった場所を object type だと思って読み込み
エラーになる可能性があります。
RRCのファイルフォーマットバージョン

可能性検討(2)
ほかには何も思いついていないのですが、
  - 私のプログラムのバグ (これが一番可能性が高い)
  - 本当にファイルが壊れている (元のSimutransでは読み込めていますよね?)
  - Simutrans 102から、本家でもどこか大きな変更が入っている
といったところでしょうか。

ログファイルを見る限りは、他のところでも細かいエラーは起きているようです。
"Too many steps" と出ているところ (intern_calc_route()) は、かなり臭いです。
ですが、これも上の原因によるロード失敗のせいかもしれません。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/12 19:50
TTT-037 & 全部盛りバイナリ使ってTTT導入してみました。  simutransを新しく本体からSimutrans 111.2.2をダウンロードしてバイナリ追加という形でやってみました
 鉄道運行させてみましたがTTTの設定画面が英語でぜんぜんわかりませんorz とりあえずセーブデータ置いてあるのでこのマップでいろいろ検証してみてはどうでしょうかセーブデータは   
Simutrans 111.2.2 pak64 をダウンロードしてTTT-037 & 全部盛りバイナリで作ったものです。 他のアドオンとか入れてないマップで憲章してみてはどうでしょうか。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/12 23:02
gonyoさん、サンプルセーブデータのアップ、ありがとうございます。
言語の表示ですが、zipファイルの中の
  simutrans-wackdone-日付/simutrans/text/ja.tab
は、TTT対応したものが追加されています。

バイナリ(exe)をコピーするのと一緒に、このja.tabも該当する場所にコピーすれば、日本語で表示できます。
(もしかしれ、それでも上手くいってませんか? 私の手元は大丈夫なのですが。)
なお、gonyoさんのされたように既存のSimutransの環境に差し替える場合は、ja.tabのバックアップもとっておくことをお勧めします。

トピック名: TTTなどお試しの皆様へ (Re:tiny timetable patch / 簡易タイムテーブルパッチ)
投稿者: wackdone さんの発言 2012/07/12 23:14
本スレで「激しく高機能化してついていけない」とおっしゃってる方がいらっしゃいました。
頻繁なバージョンアップを繰り返してすみません。

TTTの本来の機能は最初から変わっていません。
  「前の駅を出発してからこの駅を出発するまで、時間 N tt で運行してね!」
とスケジュール編集画面で入れるだけです。
列車はこれに合わせようと頑張ります。これだけです。
(この動作にバグらしき現象があったら、すぐに教えてください。根幹ですので)

また、計画時間や運行周期を設定しなければ普通のSimutransの動作です。
全部盛りはただの「RouteCostのついたNightly」として使えます。

新しい機能(時刻表ウィンドウなど)は、最終的には利便性を高めることにつながると思いますが、
今の段階ではかえって利用者を惑わすだけかもしれません。どうか、振り回されないようお願い申し上げます。
機能を使いきって緻密なダイヤを組まなければという脅迫からゲームが面白くなくなっ てしまったら元もこもありません。

加えて、もう一つ試験利用をされている方(特にバイナリ配布を利用している方) に質問です。
RRCまわりなどが原因かと思われるロードの失敗が報告されています。また今後もRRC付きでセーブした
データが問題を起こすかもしれません。
しばらくは全部盛りでは
  「RRCは有効だけど、設定したパラメータは保存されない」
というバイナリを作成しようかとも考えています。(既にRRC付きでセーブしたデータをお持ちの方への対応策も加えます。)
それでは使いにくくなってしょうがないという方がいらっしゃいましたら、お知らせください。
(RRC付きデータからの移行策が完成するまでは、これまで通りの「全部盛り」でいきます。)

以上です。
トピック名: Re:TTTなどお試しの皆様へ
投稿者: o_o さんの発言 2012/07/13 08:19
こちらの環境では、
TTT.ja.tabの方を導入したところ、TTT関連で文字化けがあったので、
「TTT.ja.tab」を「ja1.tab」の名前でUTF-8、LF改行で再保存し、
pak内のtext(simutrans/text内だと読み込まないはず)に追加しました。

ボタンやアシスタントは日本語で表示されていますが、ツールチップは英語
だったかと思います。

--2012/07/12 08:38 追記--
気になったので、試しに、全部盛りを展開したものに
pakだけを移して起動したら、起動中に停止しました^^;
従来のsimutransフォルダにexeを移動させたものなら起動してます。

--2012/07/12 19:58 追記----
度々すみません、simutrans-wackdone-20120710.zipを再度展開し、
同様にpakを入れて起動したところ、今度は正常に起動しました。
これは、前回は解凍に失敗していたのでしょうか  ???

RouteCost関連のtxt、エンコードがUTC?になっています。
直接影響しているとは思えませんが、何かの参考になれば~
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/07/13 14:58
運行周期が10000を超える路線で「路線を編集」(停車駅とかを指定する画面の方です)を押すと、運行周期が9999に変更されてしまいます。修正お願いします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/13 19:46

wackdone さんja.tab r5788ファイルを入れましたが日本語になりません。 それとは別に日本語化ファイルらしきものがありました。
\simutrans-wackdone-20120710\text-add\TTT.ja というファイルです。 中を見ると英語と日本語でTTTの説明がいろいろ書かれてます。 これをどこかに入れたらいいのでしょうか? あと英語表記についてですが「走行距離」だけ日本語になってます。

下のような様子です。 これで導入成功してるんでしょうか。
http://gyazo.com/44deda0aca2d95873766389886ef5abb
トピック名: 日本語化の問題、そして TTT-039準備中
投稿者: wackdone さんの発言 2012/07/13 20:09
みなさまご報告ありがとうございます。
どうも、Windows側のzipがいろいろと変換してくれてしまうという、よくある問題にぶつかっているようです。
(というか私がUNIX系環境でzipしているのがいけないのですが、すっかり忘れていました)
お手をわずらわせてしまってすみませんでした。

zipのソフトウェア次第では対応はできるはずなのですが、とり急ぎは、試しにここに圧縮せずに貼ってみます。
私の手元では表示に成功している ja.tabです。

ただし一部の翻訳は、これから出す TTT-039 用になっています。
次の投稿でパッチを、しばらくしてバイナリを上げます。
トピック名: TTT-039
投稿者: wackdone さんの発言 2012/07/13 20:16
というわけでTTT-039のパッチです。
皆様からご報告頂いたバグへの対応と、ユーザインターフェース上のアイディアを実装してみました。
いただいている直近の投稿では、
  - 数値入力: 値は入っているけど入力部分の動作が悪いという本家の隠れたバグを見つけました。対応しました。
    周期とオフセットは暫定的に 2^24-1 まで入力できます。駅間時間は2^16-1までのままです。(これも入力の問題があったはず)
  - ツールチップ、やってみました。「常に表示」にすると凄く賑やかです:-)
  - バー表示、はじめました (といっても季節ものではありません)
  - 時刻表ウィンドウ、小くできるようにしてみました
まだまだインターフェースとしては問題だらけですが、週末がやってきましたので、とり急ぎリリースを。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/13 20:22
o_oさん、いろいろお試しいただいてしまってすみません。
一部のファイルは、EUC-JP(Extended Unix Code) になってしまっていますね。
ja.tabだけは、行末LFのUTF-8で扱っているので、展開に問題がなければ大丈夫なはずなのですが。
と、o_oさんのコメント見て気がつきました。
TTT.ja.tabをそのままではなくて、catなりCPなりで、オリジナルの ja.tabの後にくっつけてやってください。
でないと、TTT.ja.tabの頭にはUTF-8おやくそくの例の文字を入れていませんので、こけると思います。
説明不足ですみませんでした。

もう一点、パッチをダウンロードしてくださっている方の中で、
やはりzip展開まわりのトラブルをかかえている方、いらっしゃいませんか?
(一般的なLinuxや Macで扱ってもらっている分には問題ないと思います。)
もし、「パッチひっぱってpatchコマンドであてようとしたら、rejectされまくりで嫌になったよ」という方おられましたら、お伝えください。
tar.gz なり場合によっては lzh なりにします。

# バイナリ、ビルド中です。
トピック名: 全部盛りバイナリ (TTT-039ベース)
投稿者: wackdone さんの発言 2012/07/13 21:02
Windows用バイナリです。
http://ux.getuploader.com/wackdone_simutrans/download/14/simuwin-wackdone-120713.zip
今回の中身は EXE と ja.tab だけです。差し替えて使ってください。
試しに Windowsのzipで固めてみました。これであれば、ja.tabも問題ないと思われますが、いかがでしょうか?

ドキュメント類は、パッチファイルの方をご参照ください。
(DOS改行(CR+LF)の、UTF-8で書いた README_TTT_ja.txt が入っています。)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/13 22:35
120713.zip バイナリ起動しました。ja.tabも問題ないようです :)

◆ 3点バグ報告です(すでに確認済でしたら、ご容赦下さい)
 ・交差点信号のバグ修整後、普通の信号機情報にも3つ入力窓が表示されてます
 ・新編成購入→新規路線→路線適用の状態で、空路線の時刻表を開くとクラッシュする
  これは 本家の設計 使い方の問題だと思うんですけど、車庫画面の新規路線
  ボタン押すとスケジュール編集が開くんですが、閉じても列車には適用されない
 ・スケジュール移動ツールを早送り中や変なタイミングで使うと、列車の経路探索が
  終了しないことがある、又は、反映してない(多分、本家のバグ)
  スケジュール移動ツールとTTTって相性悪いと思うんですけど、大丈夫ですか^^;
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/13 23:09
早速の動作確認とバグ出し、ありがとうございます。

・信号機での3つ窓、現象を確認しました。すぐに致命傷にはならないと思われますので落ち着いて整理させてください。
・新規路線の件、「内容が空で、*かつ*、列車に適用されている」路線を時刻表表示させようとするとクラッシュ、ということでいいですか?
・(その項目後半の「車庫で路線を作って、閉じても車両に適用されない」というのは上の件とは別の事と考えていいですか?)
   (「路線を適用」ボタンの操作の有無は?)

・スケジュール移動の動作については慎重にチェックさせてください。
  TTTが悪いのかRRCが悪いのかもまだ見当がついていません。(はたまた本家か)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/13 23:31
とりあえず動作確認 日本語で導入成功しました。 いろいろ難しい点あるので 使用例とか紹介してもらえるとありがたいです。
私があげたセーブデータは車両や建物などのアドオン一切追加してないのでみなさんも 読み込めるかと思うのでよければ検証用として使ってください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/13 23:36
gonyoさん、ここまでいろいろお手数をおかけしました。
今のドキュメントはとくかく情報を全部詰めこんだだけで、読む気にもならない人も多いでしょうから、
導入部分だけでもなにかガイダンス的ページが欲しいですね。

...gonyoさん、書きません? とか無茶ぶりしつつ。。。
正直、私より説明の上手い人、書いてくださーいと叫びたいところですが、
実装が落ち着いたところで自分のプレイ日記がてら考えてみます。
日本語Wikiに書いてもいいのかな?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/13 23:41
早々の反応ありがとうございます。
自分せっかちで、たまにおかしな事書いて、数分後に改竄するので、お気をつけ下さい :'(

>新規路線の件、「内容が空で、*かつ*、列車に適用されている」路線を時刻表表示させようとするとクラッシュ、ということでいいですか?
 空路線で所属編成がないまま時刻表を開いてもクラッシュすることはありません。
 所属編成がある空路線を選んで時刻表を開くとクラッシュします。(時刻表側で路線を追加する場合も落ちる)

 運行経路がないのに距離を測定する処理が挟まれているか、停車駅がないのに駅ソートをかけようとするかの
 どちらかだと思われます。とすると、同様のクラッシュは、線路がつながっていなかった場合にも生じる可能性が
 ありそうです

>・スケジュール移動の動作については慎重にチェックさせてください。
>TTTが悪いのかRRCが悪いのかもまだ見当がついていません。(はたまた本家か)
 スケジュール移動の動作については、111.3本家のバグで、その暫定措置として反映させないような
 造りにしてあるのではないでしょうか。
 反映されない方は、かなり頻度が高いので、こちらの環境に問題があるのでなければ、
 同様の問題が生じている方を見つけたほうが、切り分けは速いかもしれません。

こちらは、バグ出しに協力しているというより、わがままを言って混乱させているだけですので、
こちらのペースにはまらないように、警戒心を持って接して下さいませ  8)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 00:01
いえいえ私もせっかちなもので、以下同文です:-)

所属列車ありの空路線の件、手元ではとりあえず対処できました。
ちょいと技術的なことを書くと(というか最終的には恥をさらすだけなのですが)
o_oさんの想像された場所へ達するはるか前、1駅目を見にいってコケてました。
出てくるメッセージを見ればわかるように、配列のサイズ以上の添字でのアクセスです。
通常は以下のような慣用句をあたり前のように皆使うので、こんなことが起こるなど想像つかないのですが (以下、C言語)
     for (i = 0;  i <  size_of_array;  i++) { ...}
今回落ちたところだけは「始発駅から始まって始発駅で終るリスト」(一周して、最初の項目だけ重複して参照する)という
操作をしたいがために、
     for (i = 0; i <= size_of_array; i++) { ....   配列には i % size_of_array で触る (当然、値はキャッシュする)  }
なんて書いてしまったものだから、あら大変、本当に恥ずかしいバグです。

閑話休題。
この、「表示しても意味がない」列車、路線、どう弾くべきでしょうか?
(時刻表表示はスケジュール上の停車点の変更や追加はできないので、空を相手にしても本当に意味がない)
  (1) 何もない (列車がリストに追加されもしない)
  (2) 列車リストには列車はいるけど時刻表は空っぽ
  (3) ちゃんとエラーを言う
私は 0 も自然数であると考えてしまう種類の人間なので、(1) や (2) でも気にならないのですが、
やはり不親切ですかね?
トピック名: バイナリの元にする本家のバージョンについての相談
投稿者: wackdone さんの発言 2012/07/14 00:18
全部盛りやたまにTTTのみなど単機能に絞ってバイナリを作成し試験公開しておりま すが、
現在は、r5788 をベースに各パッチをあててバイナリにしています。
リリースである 111.3 は r5772 であり、それほどリビジョンの開きはありません。
一方で、現在Nightlyビルドされているheadは、r5821に達っしています。

これらのバージョンの並びのうち (どれも開発版ではありますが) 一般的に評価していただくのに
より適しているのはどれでしょうか。
どなたか「どっちにした方がいいよ」という情報をお持ちの方がいらっしゃいましたらご教授いただけますと助かります。
「自分のPCだと、rxxxxは普通のNightlyビルドのバイナリでもよく落ちたから避けて欲しい」なんていうローカルな情報でもかまいません。

なおパッチからビルドする場合は、r5821でも問題ないことは確認しています。
(2点rejectされますが、この二つはいずれも私が本家にバグ報告し修正してもらったものですので、rejectは無視して結構です)
手元ではr5821ベースのものも(NetBSD上と MacOSX上ではありますが)だいたい動作しています。

本スレの方でも何名かの方がバイナリで問題が発生した旨、書き込みされていましたので、
大変気になっております。

ご情報やアドバイスをお待ちしております。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/14 01:26
>正直、私より説明の上手い人、書いてくださーいと叫びたいところ

勘違いがあれば指摘してもらいたいので、お言葉に甘えて、説明のヘタな人が書いてみます ;D

◆運行周期、車両間隔、始点出発時刻3つはオフセット型(周期に乗っかって始発駅を発車)
 運行周期は、時間(TT)が この周期の倍数になったときにしか発車できない設定
 車両間隔+始発出発時刻は、オマケ。周期を車両間隔+始発出発時刻の分だけ過ぎたら発車する
 (↑見当違い、後に誤りを指摘される)

 車両間隔*n+始点出発時刻は、設定箇所は違いますが、それぞれ個別の編成に適用されるものです
 自動オフセットは、車両間隔を見直しなさいという機能です(次の始発駅で適用)
 (↑見当違い、これも後に誤りを指摘される)

◆駅間計画は、早く到着しすぎたら、のんびりしてくださいというもので、オフセット型ではありません。
 明らかに無理な計画を立てた場合には、何も設定していないのと同じように走ります。
 しかし、駅間計画が守られている限りは、周期に乗っかった発車をします。

 遅延リセットは、周期から外れてきたから、0からやり直しなさいという機能です(その場で適用)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 04:38
整理ありがとうございます。
私の説明が上手くないせいですが、正確では無い部分がありますので一端、容赦なくつっこみ訂正入れさせて頂きます。
(私が何かを書くとすぐに枝が広がるので、枝おろしをお願いすることになってしまうかも)
全体的に用語の再整理、再選択 (より感覚的に理解しやすいもの)が必要な感じですが、
なるべく今使っている言葉を使うようにしつつ。
なお、「自動設定」というのは「自動等間隔設定」と呼び直した方がいいかもしれません。


引用
◆運行周期、車両間隔、始点出発時刻3つはオフセット型(周期に乗っかって始発駅を発車)
大分類で「オフセット型」というのはOkです。「絶対時間基準型」とも言えるかも。
ですが、パラメータの小分類をするなら、

  運行周期と始点出発時刻:  前者が路線、後者が車両に設定され、先々の運行までずっと使われるもの

  車両間隔とずらし分: 出発時間の自動設定時に一時的に使われるもの (一度自動設定したらあとはいらない)

というように使われかたが違います。

引用
 運行周期は、時間(TT)が この周期の倍数になったときにしか発車できない設定
 車両間隔+始発出発時刻は、オマケ。周期を車両間隔+始発出発時刻の分だけ過ぎたら発車する
上の記述は正確ではありません。おそらく二種類の「ずらし時間」が出てくるのが紛らわしいのかと。
(英語では、始点発時刻を "オフセット(offset)"、自動設定の時のずらし時間を"シフト(shift)" と呼んでいます。)

時間の関係について、誤解のないよう式風で書いてしまえば、
いつもの運行: 路線に運行周期 C、列車個々に始点発時刻 O が設定されていて、それぞれの列車が始点を出発するのは
   ゲーム時間が、 Cの倍数 + O
になった時です。
このように始点発時刻はけしてオマケではなく、運行周期と同じくらい重要です。
これが無いと路線に所属する全ての列車が同じ時刻に同じ場所(始点)を出発しようとします。
つまり定常運行時に列車の運行に間隔を開けさせる役割を担っているのが、この始点発時刻 Oです。

そして自動設定というのは、列車ごとに異なるOを設定する(のを自動でやってくれる)機能です。

自動設定中: 自動設定をしてくれる小人さんがSimutransの中にいて、彼は運行間隔 P と、ずらし分(シフト) S を覚えています。
列車が始点に到着すると、小人さんは現在から最も近い時間
  Cの倍数 + S + P×N
を決めます。この中のNが列車ごとに異なる値になります。(簡単に言えば、到着する列車ごとに1ずつ増えていく)
つまりこの列車は路線の中のN番目の列車ということです。
小人さんは、この列車が1周期後(運行周期時間C後)も同じ時間に発車してもらうよう、
列車の始点発時刻 Oを次のように上書き設定します。
  O =  S + P × N
このように列車にOが設定されれば、最初の式の通りいつも Cの倍数+O に始点を発車するようになります。

引用
 車両間隔*n+始点出発時刻は、設定箇所は違いますが、それぞれ個別の編成に適用されるものです
上の説明の通り、ここに書くべきは始点発時刻ではなくシフトです。
つまり、間隔、ずらし分(シフト)、どちらも「運行アシスタント」の中で設定する値です。

引用
 自動オフセットは、車両間隔を見直しなさいという機能です(次の始発駅で適用)
これはその通りです。より正確に言えば、「車両間隔を見直した結果を、各列車は新しい
始点発時刻として記憶しなおしなさい」という機能です。


応用1:  等間隔でない車両間隔 (手動で設定する)
  始点発時刻を各列車に手動で設定すれば (時刻表の始点駅の行で設定可能)
同じ路線に所属していても例えば:
    0     10  15   25     45
というように間隔のばらつきのある運行にできます。
じゃあこれ何に使うの? といえば、
この開いている部分に、本数の少い優等や別方面行きを挟むのです。
駅の時刻表板で見ると
    0   7  10   15   18  25  37  45
みたいな感じに。


応用2: 行き先や種別の異なる路線同士を組み合わせてパターンダイヤを組む
一つの路線の中の列車は等間隔で良いのであれば、これは自動設定でできます。
全ての路線で運行周期と、自動設定のための間隔を揃えておいて、シフトだけを
路線ごとに異なる値を使用します。
例えば全ての路線で周期400、列車本数は4本ずつで間隔は100として、始点駅からの個々の列車の発車時刻が
  路線A   0   100   200   300
  路線B  30   130  230   330
  路線C  75   175  275   375
のようになって欲しいのであれば、
  A のシフトを 0 にして自動設定
  B のシフトを 30にして自動設定
  C のシフトを 75にして自動設定
この3つの設定をまとめてやれば、最終的にこれに落着きます。
(一時的に駅が詰まるなどして乱れ、自動設定を何度も指示する必要があるかもしれませんが。)


続きへの返答は次の投稿に書きます。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 05:58
続きです。こちらはおおむねその通りです。

引用
◆駅間計画は、早く到着しすぎたら、のんびりしてくださいというもので、オフセット型ではありません。
 明らかに無理な計画を立てた場合には、何も設定していないのと同じように走ります。
 しかし、駅間計画が守られている限りは、周期に乗っかった発車をします。

 遅延リセットは、周期から外れてきたから、0からやり直しなさいという機能です(その場で適用)

ちなみにこの運行を行う場合は、TTTの中の「運行周期」というパラメータは設定する必要がありません。
全ての駅間の時間を合計した値が暗黙の周期になります。

また、TTTのミソは (o_oさんの文章の中でも暗黙の前提となってますが)

    列車はこれまでの遅れを覚えておく

ということです。
前駅から今駅の移動は計画よりも早かったとしても、それより前に遅れたまま運行していたら、
遅れを解消するよう早めに出発します。
過去の遅れを取り返すまでは、のんびりなんかさせません。


この「以前の遅延の回復」を体感するには以下のような方法もいいでしょう。
まず、だいたい計画時間通りに走行できている路線を作っておいて、
時刻表に表示させます。(表示オプションで、実績時間もオンにしてください。)

【あとで画像を貼ります】

どの駅でも実績時刻が、計画時刻から大幅にずれていなければ、時刻表的にうまくいってる路線です。

さてここで、とある中間駅 A駅の予定時刻だけ無茶に早めてみてください。(値を入れて時刻表を改定)
しばらく走らせると、次の一周での実績時刻が記録されますから、更新ボタンを押して最新の記録を見てみましょう。
A駅を出発した実績時刻が、無茶ぶり設定した予定時刻より遅れていると思います。
では次のB駅ではどうかというと、B駅の時刻は変えていないので、A駅では遅れてもB駅で取り返せているはずです。
駅間の走行時間に違いはないはずなので、これはB駅の停車時間を短くして遅れを取り戻したということになります。
B駅の停車時間が足りなかった場合は、その先のC駅で……というように回復運転は積算遅延が0になるまで続きます。

でも、途中の想定外の列車割込みや踏切閉鎖、スケジュール設定ミスなどで無理が溜まってきたら……
もう回復は無理!  遅延時間が10000とかなってたら現実世界で言えば、翌日までかけて回復するかの状態です。
他の列車にも影響を与えたりこの先いいことないのでしょうがない、
  「遅延リセット」=ダイヤの回復をあきらめる となります。



。。。やっぱり図が必要ですね。後で画像を貼ってみます。

(o_oさんはすでに充分理解されていると思いますが、今後の広い説明のための元ネタとしてくどく書いてみました。あしからず)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/14 07:25
んーと、長くて読み込めてないですが、、運行周期がちょっと違ってて、

 運行周期は、時間(TT)が この周期の倍数になったときにしか発車できない設定
 始発出発時刻は、車両間隔とずらし分によって決まり、周期を始発出発時刻の分だけ過ぎたら発車します。

 始発出発時刻(O)は、車両間隔(P) × 到着順(N)+ずらし分(S)
 (周期=(仮想の)1日、車両間隔*n=1時間、ずらし分=分とイメージするとわかりやすい)

 自動等間隔設定は、始発出発時刻を見直しなさいという機能です(次の始発駅で適用)

...で、どうでしょうか?

>始点発時刻を各列車に手動で設定すれば (時刻表の始点駅の行で設定可能)
 これ隠し機能です、、知らなかった。

◆ 10%許容法は、周期落ちさせないかわりに、行列発車させてしまうという事ですか?
  これって、放置すると行列が成長してデットロックかかる可能性が高くなるような。。
  やるのならば、±5%を交互にかけておいたほうが良くないです?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 18:14
長くてごめんなさい、いつも盛り込みすぎなんだよな私 orz

o_oさんの再整理でOkですが、自動等間隔設定の方が実はオプションなことを考えると、どうするべきか。。。
ちなみに"TT"は、単位なので、ゲーム内世界時間はWとかにしませんか?
引用
 運行周期(C)は、時間(W)が この周期の倍数になったときにしか発車できない設定
 始発出発時刻(O)は、車両間隔とずらし分によって決まり、周期を始発出発時刻の分だけ過ぎたら発車します。

 始発出発時刻(O)は、車両間隔(P) × 到着順(N)+ずらし分(S)
 (周期=(仮想の)1日、車両間隔*n=1時間、ずらし分=分とイメージするとわかりやすい)

 自動等間隔設定は、始発出発時刻を見直しなさいという機能です(次の始発駅で適用)

以下はオマケの話。
引用
>始点発時刻を各列車に手動で設定すれば (時刻表の始点駅の行で設定可能)
 これ隠し機能です、、知らなかった。
なんと、開発の進展とともに事態が逆転してしまったことに私はびっくりしております^^;
各列車の始点発時刻は列車ごとのスケジュール編集の画面でも設定できます。
もともとは、運行周期と始点発時刻を手動で設定することしかできませんでした。
自動間隔設定(車両間隔、ずらし分による)が後づけオマケ機能というか、オプション機能です。

開発の順序:
  (1) TTTの誕生: 駅間の計画時間を指定できるようにした
                    → 1つの列車の運行時間が安定になる
  (2) TTTの成長: 運行周期Cと始点発時刻Oを指定できるようにした
                    → 列車同士の発車時間差を固定できる (優等退避なんかも組めるようになった)
  (3) もっと便利に:  オプションで(使っても使わなくてもいい) 自動等間隔設定をできるようになった
                    → 大量の列車のある路線の設定が楽になる

この順番に沿った設定をしていった方が理解しやすいかも。
ただ(2)のところで各列車にOを設定してまわるのが疲れそうですが。

(10%の話は次に)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 19:11
10%許容法についてです。(あくまで実験中機能)
また長くなります。(下手に丁寧にしようとして言葉が多すぎるのかな?)

列車は始点に到着した時、到着時刻Aと、運行周期Cと始点発時刻Oから
「自分の次の始発時刻はDだ」という判断をして、時刻Dまで駅で待機しますが
10%許容法は、このDの求め方を少し修正します。

まず、許容がいくつであろうと、前に定義した式
    D = Cの倍数 + O
であることは違いありません。
違いは、この中で Cを何倍するかです。

元の方法 (0%許容):
    D  >  A
この条件に合う最小の Cの倍数を選びます。必ず出発予定時刻は到着時刻より後になります。

10%許容法:
    D  >  A - (C x 0.1)
この条件に合う最小のCの倍数を選ぶのですが、右辺の値が小さくなっているので
選択されるCの倍数がひとまわり小さくなる(1周期前になる)可能性が生まれます。
これによって、一定範囲内(Cの10%未満)で到着している場合の段落ちを防げます。

具体例を以下に示します。
路線の C を2400とし、列車のOは800とします。
言葉を簡単にするため、Cを仮想1日とし、列車は 8時の列車ということにします。
運行開始から 4日目、ゲームの絶対世界時刻 W は9600 を過ぎています。
この日の列車の出発予定時刻は
  D = 2400 x 4 + 800 = 10400
です。
列車が出発予定時刻より前に駅に到着した場合は、予定通り 10400 に出発します。

列車が遅れて 10450 に駅に到着したとしましょう。
元 (0%許容)だと:
    D = 2400 x 5 + 800 = 12800  >  W
つまり「この日は運休」してしまいます。(当然、後続の列車はつまります。)
10%許容だと:
    D = 2400 x 4 + 800 = 10400  >   W - Cx0.1 = 10450 - 2400 x 0.1 = 10210
このように遅れてはいても、この日の8時に出発するもりでしたので直ちに出発します。
(この時、積載時間なども加わり実際の出発時刻が 10750 になったとすると、
  実績出発 10750 - 予定出発 10400 = 350 が、現在のこの列車の遅延時間として記憶されます。
 これは先の運行で取り返そうとします。)

このように、ちょっとの遅れのせいで、まるまる1周期飛ばされてしまうのを防ぎます。
(大幅な遅れは無理ですが。)
大雑把に 50% 許容までは意味を持つと思われますが、いろいろ問題もありそうなので、今は 10%で試しています。


引用
◆ 10%許容法は、周期落ちさせないかわりに、行列発車させてしまうという事ですか?
「行列発車」という意味がとりきれていませんが、「予定出発時間を無視して」という意味で言っているのなら、
正確にはそうではありません。たしかにすぐに出発はしますが、予定時刻 D を求めて参考にします。
実績出発時刻 - 予定出発時刻  が遅れとして記憶されていますので、
先の運行でこれが 0 になるよう (元のダイヤに戻るよう) 調整されていきます。
(これは、駅間指定だけの運行と一緒)

違う意味でおっしゃっていたら、ご指摘ください。

引用
  これって、放置すると行列が成長してデットロックかかる可能性が高くなるような。。
ダイヤ全体を見て無理が無いのなら、(どこか無理な区間があっても、他で余裕があるなら)
(ある程度長く見て) 行列が成長していくということは無いはずです。
行列が成長してしまうようなら、根本的にダイヤが無理なはず。
これは10%許容法の有無に関係ありません。

また、この調整法単体は列車間の関係などを見たり影響を与えたりするアルゴリズムじゃないので、
理論的にデッドロックを生むような性質のものではありません。
(単調増加する「ゲーム内の絶対時間」しか使っていないので、「ロック」が無いのです。)

起こるとすると、「デッドロック」というよりは「ポジティヴフィードバック」ですかね?
しかしこれも10%許容法の有無には関係ないはずです。
なぜなら、列車全てについて D の判断に使う世界時刻の目盛が、一様に (C*0.1) だけ前にずれるわけで、
この中に他の状態変数が入っていないので「フィードバック」はかかり得ないからです。
(Cは係数ですので運行状態によって変化はしない。)
また、実際の列車の運行可能周期よりCが極端に短いと、「駅に到着する度に遅延していると判断してしまう」ように見えますが、
  調整分が C に対する割合いで決まっていること
  出発時刻 D が C の整数倍 (+ O) から算出されること
の二点により、やはりフィードバックにはなりません。

証明(?)に間違いがあったらご指摘ください。

(なんとなく、o_oさんの言っている「何かしら詰まりが増長する問題」がどこかにありそうな気がすんだよなあ。。。)

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/14 20:38
無知ですまん。
なぜ時間通り発車できるのに20も延発がおこるのかがわからないんだが。
トピック名: 「アシスタント」の構成
投稿者: wackdone さんの発言 2012/07/14 20:39
時刻表ウィンドウの「アシスタント」は、今、構成(分割)を作りなおしています。
「運行周期」が計画アシスタントにあって、始点発時刻がここに出てこないのはまずい。

しばしお待ちを。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 20:45
kanedaiさん、20 っていうのは、実際にあなたの手元で走らせているゲーム内で列車が表示した値のことでいいですか?
なぜ時間通り発車できるのに20も延発がおこるのかがわからないんだが。

だとすると、これは現状のTTTの限界、仕様です。
Simutransの元の積載機能などなどが、どうしても余計な時間を発生させてしまいます。
これに立ち入ると、もはやSimutransの機能の改変 (拡張とは言いにくい) になってしまうので、
今は手をつけていません。(少しでも早められないか、探ってみるつもりではあります。)

また、ゲームの規模が大きくなって処理が重くなってくると、「発車時刻チェック」がされる間隔も開いてしまいます。
(これもSimutransのシミュレーションの仕組み上、仕方がない)
なので、どうしても遅れ気味になります。
私の手元でもだいたい、10〜15くらいはあたり前に延発です。

ですがこの延発分は記憶されていますので、一応はご安心を。
先で回復します。で、先でまた微妙に延発するのでその先で回復を試みて...くりかえし。

大雑把に言えば、全列車は設定した時間計画を常に 20 くらい遅れた時刻で運用している、となります。
(遅れが溜っていくわけではない)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/14 22:00
そうです。ゲーム内の列車に表示される時間です。

限界なんですね。
わかりました。

ありがとうございます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/14 22:03
wackdoneさん 難しく考えすぎではないでしょうか。   説明が下手じゃないんです。 やってることが難しすぎるんですよ。 
それだけ考えられるならいいもの作れると思いますよ。 

私のほうで実験してみましたが問題点があります。
引用
  運行周期は、時間(TT)が この周期の倍数になったときにしか発車できない設定
     車両間隔+始発出発時刻は、オマケ。周期を車両間隔+始発出発時刻の分だけ過ぎたら発車する

時間の関係について、誤解のないよう式風で書いてしまえば、
いつもの運行: 路線に運行周期 C、列車個々に始点発時刻 O が設定されていて、それぞれの列車が始点を出発するのは
   ゲーム時間が、 Cの倍数 + O
になった時です。
このように始点発時刻はけしてオマケではなく、運行周期と同じくらい重要です。
これが無いと路線に所属する全ての列車が同じ時刻に同じ場所(始点)を出発しようとします。
↑の内容だいたいわかりました 私の想像していたものと少し異なるようです。

引用
これが無いと路線に所属する全ての列車が同じ時刻に同じ場所(始点)を出発しようとします。
それでいいと思うんですよ。 2編成発車しない限り   (遅延発生時に使う10%ルールを適用すると2編成とも発車してしまうのが難点orz)
延発もあまりよくない。 発車してくれれば良いが発車タイミング見逃してしまうとちょっと厄介

往復28分で運行できる路線があったとします。 3編成の列車が10分間隔で運行して始発駅で2分調整する設定です。 
wackdoneさんの考えではこれは30分周期になるのではないでしょうか。 私はこれを10分周期にしてみてはどうかと考えているのです。
gonyo案では ゲーム時間が、 P(運行間隔)の倍数 + ずらし分(シフト) Sになると発車

※私の案だと この3編成の列車は同じ列車である必要がある。(列車の長さ、最高速度などが同じものを使用する)

wackdoneさんの案だと問題点があります。
この路線でなんらかの理由(車庫からの出庫、線路工事でのトラブルなど)で同じ路線の列車の順番が入れ替わってしまった場合どうなるのでしょうか。
始発駅 に1時02分に 1時20分発の列車が来ました そのうしろに1時10分発の電車が来ました。そのうしろに1時30分発の列車がいるとします。
さて、列車の行き違いができないとするとこれはどうなってしまうんでしょうか 2編成しか運行してなければ元に戻りますが3編成以上運行した場合こんなトラブルが起こりえます。 こうなるとどう待機時間を調整しても無駄です。

gonyo案の場合 1時20分発の列車は1時10分発に発車し 次の列車は1時20分に発車することでこの問題を解消できます。

要するに同じ路線の全編成に同じ時刻表を当てはめるということです。 このほうが簡単でしょう。

あともう1つ、 別の路線との連絡、急行との連絡などを考えると他の列車も10分間隔、もしくは5分、20分、などで運行することが望ましいと思います。 これを自動でやるとうまくいくのではないでしょうか。  そしてこれを計算すると必要な編成数が求められます。

私の案:(だいぶ前の交差点信号と変わってませんが)  設定するのはP(運行間隔)の倍数 と ずらし分(シフト) S  だけ、   
C(運行周期時間)÷P(運行間隔)= H(編成数)     ※H(編成数)は小数点以下切り上げ これじゃダメかな?

後は指定した駅での停車時間を設定できる機能とかもあるといいかもしれません(退避などに必要)(それ以外の駅では現在時刻を確認せずすぐ発車)


説明してもわかりそうにないのでTTTの設定終わった状態でのセーブデータ交換が望 ましいと思いますがいかかでしょうか?  私の作ったマップなら余計なアドオンとかないので全員読み込めるかなと・・・
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 22:31
gonyoさん、そうですね。
ただどうも私の癖として、概要と詳細を分離せずに書き連らねてしまうもので。。。
詳細機能を使いこなす「応用編」はともかくとして、まずは基本機能を最小限の設定で使う「導入編」の文章が必要かなと。

引用
wackdoneさんの考えではこれは30分周期になるのではないでしょうか。 私はこれを10分周期にしてみてはどうかと考えているのです。
gonyo案では ゲーム時間が、 P(運行間隔)の倍数 + ずらし分(シフト) Sになると発車
整理していただきありがとうございます。
私も当初はgonyo案の使い方も考えていました。仕組みとしてはgonyo案が可能なようにしてありますが、
いつの間にか考えが凝り固まってしまい、この可能性を忘れてしまっていましたね。すみません。

今の仕組みであれば、gonyo案による運行方法を包含しています。
    路線を行って帰ってくる一周の時間(駅間時間の合計) が30分だったとして、
   運行周期(C) を 10分
   始点発時刻(O)を 2分 (たとえば)
に設定すれば、gonyoさんのおっしゃる運行になります。
(この時は、自動等間隔設定とか一切使う必要なし。)
(またこの時は、運行周期の設定では自動計算は使えません。合計とは別にCを設定でるようにしていたのは実はこのため)

私の考え (周期を区間時間の合計(上の例なら)30分にする)  という使い方は、各列車のOを細かく調整したい場合ですかね。
前の投稿の例で示したように、同じ駅を発車する列車の本数が路線によって異ったりする場合です。

gonyoさんの使い方の方が(後で説明されている問題もないし)、基本利用には適していると思います。
ですが応用できる余地も作っておきたいので、中の仕組みは今のようにしておきたい。
あとはどう見せるか、どのように使い方を誘導するか、だと思います。

引用
wackdoneさんの案だと問題点があります。
この路線でなんらかの理由(車庫からの出庫、線路工事でのトラブルなど)で同じ路線の列車の順番が入れ替わってしまった場合どうなるのでしょうか。
はい、gonyoさんのおっしゃるこれも、強制段落ちの一つです。
さらにgonyoさんのおっしゃるケースが重症なのは、ずっと回復できないということです。
私の元の使い方 (C = 区間時間の合計) でこれを回復させるために、いくつか策を作ってきました。
  (1) 運行アシスタントでの最初の O 設定
     走行中の列車の順番を検出して、その順番に合わせた O をふりなおします。
  (2)  運行アシスタントで設定できる、継続的な自動設定
     列車が始点に到着するたびに、直近の最適な Oを再設定します。つまり O がgonyoさんの方式による値になります。
しかし(1)は、また順序が乱れてしまえばやりなおし。(2)はまだ使いものになるかな。

もちろん、gonyoさんのおっしゃるように、gonyoさん式に C=P、O=S で全列車共通設定すれば、
これの用はありません。(全列車に O=S を設定する手間が省けるくらいかな)

さてどうしましょう。gonyoさん式は利用初心者を誘導しやすくていいんですよね。
表面上は、gonyoさん式 を見せておいて、上級者モードで O の個別調整を見せられるようにする?
でも、あまりモーダルな作りにはしたくないのですよ、Simutrans的には。

とりあえず、「gonyoさん式」とかいう分類に名前をつけないと、この先、話がややこしいですね。
できる事から考えると、
  gonyoさん式 (C=P): 全等間隔式
  私式 (C=sum(split)):  。。。何式と言えばいいのだろう? 個別間隔式?
というあたりかな。

まずは、
  ゲーム内の仕組みとしては、CとO を PとS とは別に持っておく
ということだけは、ご了解いただけますでしょうか?

ちなみに、
引用
後は指定した駅での停車時間を設定できる機能とかもあるといいかもしれません(退避などに必要)(それ以外の駅では現在時刻を確認せずすぐ発車)
今の仕組みだと (停車時間ではなく区間時間になりますが)
  退避したい駅にだけ、前駅からの出発時間の区間計画を設定する
  ほかの駅は 0 (TTT機能が働かなくなる)
で、同じことができます。

実験の見せあいっこ、いいですね:-)
個人的には一つ問題がありまして、今の私、Simutransを起動している時間より (さらに内緒ですが本業の仕事している時間より) TTTのプログラム書いてる時間の方が長くなってます。
私からのマップ公開はちょっと待ってください。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/14 22:39
kendaiさんご指摘の件 (定刻発できるはずなのにいつも遅れる)、
表示だけならすぐに対処はできます。
設定か固定値かで、表示する値をずらしてしまえば良いので。

ただ今のところ、根本の仕組みがまだ固定はされていない。(まだ変わる改善される可能性がある)
ことと、バグがあるかもしれない、ということから、
しばらくは今の表示のままとさせてください。

「発車間際の駆け込み乗車は大変危険ですのでおやめください」
とアナウンスし続けてください。改善はしませんが。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/14 23:49
悩ませてしまったようですいません :'(
自分のTTTはまだ、0710以降のバージョンは少し眺めただけで、ほとんど触れることが
できてません。確かな確証がないまま、不用意な発言をしました。申し訳ありません。

10%の許容によって、その駅の発車時刻が全体として後方にスライドするのでしたら
自分の危惧している形にはならないと思われます。

固定式ホームを使用している場合に1編成が遅延すると、その遅延が次に連鎖しやすい。
遅延発車した列車は、翌周期も同じように遅延するため、遅延が拡大する傾向がある。
行列発車(仮想連結)した列車が他の路線の周期を悪化させるリスクが高い。
周期が守られずに、最初の設計と異なる順序で停車すると問題を広げる可能性がある。
このあたりの問題が整理できていないままの発言でした。
これらのリスクがあるのに、果たして遅延発車を認めていいのかと考えた訳です。

代替案として示した±交互については、自分でも疑問です。厳密に均等な状態は漠然と
危険だとかんがえたのでしょう。特に朝はいけません、考えなく発言してしまう。。

まだ、目を通させていただいた段階で、お話についていけませんが、取り急ぎお返事だけ。

周期運行単独では、発車時間を制御する事は出来ても、着時間を安定して制御する事が出来
ないため、どうしても問題が広がりやすいんですよね。
余裕がないなら遅れる、時刻表上は余裕があるようでも、停車するホームがなければ到着は
遅れてしまう...。なかなか、うまく運用しきれないです。

>gonyo さん
データお借りしました。ずいぶん難しいMapですね。陸地の広さ、街サイズ、集客範囲、
産業配置、しかも2月の借金返済もギリギリで...
自分のMapの貨物へのTTTが行き詰まっているので、気分転換にと思いましたが、腰が
引けてしまいました ;D TTT導入前に路線設計を計画中です。地形が、ぇぇ。。

--07/15 5:50 追記--
実験に協力したいのですが、0713は時刻表のクラッシュが多くてどうにも進みません。。
 FATAL ERROR:vector_tpl<T>::[]
 N20timetabke_view_gui_t14tt_stop_info_tE:index piut of bounds:7 not in 0..6
 (手写しのため、間違いがあるかもしれません)
というものです。列車ソートは怖くて押せたものではありません。
コードが読めれば(能力的な意味で)もっと、ましな報告できる?んですが、本当すいません。

ソートについては、試験中は手作業で入れ替えでもと思うんです。

言葉遊びですが、運行周期のほうは回転することが大事ですから、公倍数ではなく、
gnyoさん方式のように公約数で管理するほうが向いているような気がします。

とりあえず、まっさらなPak64入れて最初から開発してみます。TTTの導入までには準備
期間が必要になると思います。あまり無理なさらぬようお願い致します。
トピック名: TTT-040
投稿者: wackdone さんの発言 2012/07/15 09:08
TTT-040をアップします。対応のja.tabもここに貼ります。
バイナリは↓です。(ja.tabは↓のzipに入っている方がごく微かに改善しています)
http://ux.getuploader.com/wackdone_simutrans/download/15/simuwin-wackdone-120715.zip


  - o_oさんご指摘の「空の路線で列車あり」を表示する時のクラッシュを修正
  - アシスタントまわりの構成、分割を変更
  - 前の版で紛れ込んだ細かいバグ(クラッシュの可能性あり)の除去

ここのところの皆さんとの議論もふまえて、アシスタントに変更を加えた部分もあります。

既知のバグ:
  - 回復アシスタントからの「列車の遅延のリセット」「路線全体の遅延のリセット」は現在機能しません。
    路線管理ウィンドウや列車の詳細ダイアログからお願いします。
  - 表示する路線を追加した場合などに、時刻表での選択列車と、アシスタント内の対象列車が
    食い違っている場合があります。時刻表の中で列車を選びなおせばアシスタントにも反映されます。



なお、o_oさんのおっしゃってる所と問題が同一かはわかりませんが、ビルドによって
時刻表ウィンドウがクラッシュするケースがときどき見られます。
ある程度追ってはみたのですが、まだオリジナル側のバグなのかこちらのバグなのか
切り分けがついていません。
(demangling pointerによる、アロケータの内部情報の破壊なので、箇所特定がかなり厳しい)
この後、111.3 や最新 nightly にもパッチを適用して、症状が変わるか見てみます。
(それぞれのバイナリも作成できたらアップしようと思います。)

ご不自由をおかけしていて申し訳ありませんが、実験にご協力をお願いいたします。

トピック名: 動作確認用各種バージョン (111.3とr5830)
投稿者: wackdone さんの発言 2012/07/15 10:10
各環境で動作不安定の報告がされていますので、Simutrans本体のバグとTTTのバグを切り分けるため、
Simutransのバージョンを変えたものバイナリとして作りました。
(おそらくTTTのバグでしょうが、Simutrans本体の中にもポインタの扱いの怪しいコードがいくつかあるもので。)

↓のURLです。TTT-040のあたった最新版です。
111.3ベース:
http://ux.getuploader.com/wackdone_simutrans/download/16/simuwin-wackdone-120715-111.zip
r5830ベース: (現時点のsvnのhead)
http://ux.getuploader.com/wackdone_simutrans/download/17/simuwin-wackdone-120715-r5830.zip

差し替え用のja.tabは、すぐ上の投稿からダウンロードしてください。

手元では、VMの上で「起動すること」「これまでの全部盛りで作ったセーブデータがロードできること」は確認しています。
これからエージングテストをかけます。

これまでのバイナリで問題のあった方も、どうか一度だけで良いのでこれらのバージョンを試してみてください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/15 17:56
バイナリ版の作成など、本来こちらですべきところで、
お手間をとっていただきありがとうございます。

前のMapは個人使用前提のアドオンが含まれていて、お見せできたものでは
ないので、新しいMapを作成し、似たような構造で線路だけ引いたデータを
あげてみます。こちらの雰囲気をなんとなくつかんでいただこうかと、、。
pak64バニラアドオンなし。まだ駅配置や進行方向は未定。
zip容量が変わらないのでそのままあげてみます。問題があればお知らせ下さい。

◆バグ・不具合
◆計画時間でのソートが安定してきましたが、計画時間が読み込まれていない場合に
 ソートをかけるとクラッシュします。
◆駅の一部を非表示にした状態で、路線の追加後、駅の表示を切り替えるときの
 挙動が正常ではありません。
◆120715-r5830で混雑ログ(他は未確認)が翻訳されずに表示されます。
◆確認になりますが、路線画面、右下2つ並んだ入力窓の下側は打ち込んだ数字が
 自動的に変化する仕様でしょうか?

以上、確認宜しくお願いします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/15 23:45
いえいえ、バイナリの作成は無理のない範囲でやっていますのでお気になさらず。
逆に、こちらのテストが充分でないのに更新版をアップしているのが申し訳ないのですが、
そこらへんはフリーソフトということでご容赦を。問題のご報告を多数いただき、本当にありがとうございます。

当初頭の中にあった機能拡張はだいたい出しきってきたので (ダイヤグラム表示は今は諦めます)
  - バグ出しと修正、安定度を上げる
  - (概念部分も含めて) よりわかりやすく
  - 場合によっては、より使い易いように一部は機能をシュリンク
という方向に努力していきたいと考えています。
(特に、時刻表機能を追加したところから安定度が一気に悪化してきたので)

バグのご報告ありがとうございます。
>> ◆計画時間でのソートが安定してきましたが、計画時間が読み込まれていない場合にソートをかけるとクラッシュします。
すぐには異常動作が確認できなかったのですが、「計画時間が読み込まれていない」というのは、
「路線に計画時間が一切設定されていない」(TTTによる運行がまだされていない)という路線の列車を表示した場合ということでいいですか?

>> ◆駅の一部を非表示にした状態で、路線の追加後、駅の表示を切り替えるときの挙動が正常ではありません。
以下の操作順でおかしくなることは確認しました。同一の始点終点間で急行と普通の二つの路線があるところで
  (1) 急行を表示する
  (2) 一部の駅を非表示 (駅名をShift+左クリック)
  (3) 普通を表示に追加する (ウィンドウ上部の路線選択コンボボックスで普通を選び、その下の「路線を表示」ボタンを押す)
  (4) 全駅を再び表示させる (時刻表シート左上の空の箱を Shift+左クリック)
これでも表示状態が戻らない駅があります。この問題は再現方法がわかったので対処いたします。
これ以外にも全く違う操作や挙動があるようでしたら教えてください。

>> ◆120715-r5830で混雑ログ(他は未確認)が翻訳されずに表示されます。
7月の最初に取得した翻訳ファイルを元にしてしまっていますので、最新の翻訳ファイルに追従できていません。
どこかで最新版を取り入れようと思いますが、しばらくお待ちください。
(今はTTTの開発のベースにするバージョンをどこにするか決めきれていないものでし て)
なお、ご自身でSimutranslatorからファイルを落として、末尾に TTT.ja.tab を追加すれば、解決するかもしれません。
し、しないかもしれません (本流の翻訳が対応していなければ無理です。)

>> ◆確認になりますが、路線画面、右下2つ並んだ入力窓の下側は打ち込んだ数字が自動的に変化する仕様でしょうか?
「路線編集」という名前のウィンドウ ('w'キーで表示される) の中の、右側中段にある入力フィールドのうち
「設定開始/修正」と書かれたボタンの右にある数値入力のことで良いでしょうか?
(つまり添付画像の中の赤太線で囲ったところでよいですかね。)
自動的に変化するのは仕様ではなくバグです。修正します。

ただ、時刻表表示ウィンドウの中の回復アシスタントで同じことができるようになってしまったので、
この「路線編集」ウィンドウの中の操作を今後、残しておくか、このままか、などは悩んでいます。
(ここにあると、かえって機能の意味を理解せずに使われてしまいそうなので、
 gonyoさん式の均等間隔運転へ導くようなものに変えた方がいいと考えています。)

とり急ぎ、問題確認のむね連絡です。
いずれも修正は少々お待ちください。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/16 01:24
◆再現手順変更、複数の路線を表示し、一部の編成のみが停車する駅を選んでソートを
 かけた場合にクラッシュする。従来の手順はもう少し確認してみます。
◆ソート後に路線を追加すると、クラッシュする
 これは、上と手順は似ていますが、エラーメッセージが表示されないまま停止します。
◆駅の非表示、路線追加、表示されている駅を個別に隠す。この手順でもブレたような挙動を
 見せますが、もう一度押さないと隠れません。
◆混雑ログは、表示の変更による物なら不自由もないので問題ありませんね。
◆>添付画像の中の赤太線で囲ったところでよいですかね。
 そのとおりです。入力して路線を切り替えただけで変更されますね。

おまけ)新Mapの方は、交通事情がだいぶ違うので、貨物調整いらねーってなりそう。
 前のは、シティカーが出始めたあたりで、道路じゃ鉄鋼運べませんって年代でしたし。。

 崖から崖へ勾配のない橋をかけられたら。。元の橋が架からなくなりますが ;D
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/16 02:44
現象確認ありがとうございます。
ソートについてもコード上の字面にはほとんど問題が見当らないので、
やはりdangling pointer による広域破壊が影響しているのではないかと思われます。
このままでは、ご不便やご面倒をかけ続けるだけになりそうなので、
一端、TTTの方の怪しい部分を、よりチェックが固くできるよう書き直します。
(機能面は変わらず、GUIのコンポーネントの記憶管理などを変更する(多分、記憶消費は増えてしまう))

ですので、申し訳ないですが今は「怪しい機能は触らない」でお願いします。
問題の起こる手順割り出しには力を注がないようお願いします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/16 05:44
了解しました。乗りかかった船だし、と思いましたが、一度PC修復かけて
再設計が終わるまではTTTから離れることにします。

状況が落ち着いたら、また参加させて下さい  :'(

--07/16 22:05追記--
確認のため、セキュリティソフトでフルスキャンをかけましたが、問題は
発見されませんでした。
設計変更を行うのであれば、TTT-035以降は、公開停止にしておくほうが
良いのではないでしょうか。
トピック名: TTT-041と全部盛りバイナリ120717
投稿者: wackdone さんの発言 2012/07/17 05:07
半日で終らせるつもりが、丸1日強かかってしまいましたorz (まあ2000行くらい書きなおしているからしょうがいないか)
というわけで、連休は明けてしまいましたが、TTT-041をリリースします。
手元でいろいろ走らせる限りは、ソートの件なども含めてかなり安定してきています。
正直、過去のコードで正しさを追い切れなくなっていた部分は、思いっきり単純に書きなおしました。

どうか、いじめてあげて下さい (今回はいじめればいじめる程、どこがまずいかログも出るはず)

パッチはこの記事に添付。ja.tabは変更ありません。
バイナリは↓です。全部盛りで、今回は TTT-041/RRC-003/CWG-005/MIP-001となります。
MIPの機能もよかったら使ってあげてください。(ロード時ポーズは入れていません。)

http://ux.getuploader.com/wackdone_simutrans/download/18/simuwin-wackdone-120717.zip


メモリ管理まわりの仕組みを単純化しつつかなり冗長にチェックを入れており、若干動作は重くなっていますが、
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/17 05:29
o_o さん、せっかく御乗船(?)いただいたのに、待ちに入らせてしまいすみませんでした。
また、いろいろなチェックをしてくださりありがとうございます。

ご助言どおり、古いバージョン (安定しなくなってきたあたり) は削除しますね。

時刻表を入れたあたりから、機能拡張の勢いが止まらなくなって、コードの構造に無理が来ておりました。
ソースファイル数と行数は増えてしまったのですが、構造がすっきりはしてきたので問題があっても
対処しやすいようになっています。
またお時間が出来ましたら、お付き合いいただければと思います。

エラーダイアログが出た時に手写しでここに書くのも面倒だと思いますので、
出たログのスクリーンショットを撮影できる機能を作成中です。
ダイアログ画面だけのショットにできれば、こちらにすぐに貼っていただけるかと。
MIPに入れて全部盛りに組み込む予定ですが、完成までいましばらくお待ちください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: yoyo さんの発言 2012/07/17 18:59
wackdoneさん、こんにちは。
ttt-041で少し遊んでみて気になった事を書いておきます。

当方環境 : VC++2010ee / Win32 Debug / パッチを当ててエラーを潰してコンパイル / pak64 - アドオン無し

[ 重要なもの ]
<1>
 アシスタントでナンバリングした後で一旦セーブしました。
 その後、起動してセーブファイルを読み込んだ後、ttt-040では時刻表を表示した瞬間に、ttt-041では
 時刻表のセルをクリックした後にisdigit()でVCのassertionが失敗しました。
 デバッグしてみると
 int tt_linemanage_assistant_t::compose_convoy_name(uint32 index, char *dest, size_t maxlen)関数の
 中でlabel_numberingに入っている文字列(数字)に終端NULLが無い場合がありました。
 その時の中身は"001ヘヘヘヘヘ" = 0x30 0x30 0x31 0xcd 0xcd 0xcd 0xcd 0xcdになっています。
 ソースを追うとatoiに渡していますのでここでバッファオーバーランが発生する可能性が極めて高いです。
 ちなみに0xcdはVCがデバッグ時にまだ一度も書き込みが行われていない領域を識別しやすいように埋める値です。

<2>
 時刻表のヘッダ部分の表示がおかしくなる。
 時刻表に表示されている路線を消しても(削除ではなくHIDE)行見出しが残る
 ナンバリングしたあと編成を追加したからかも?

<3>
 std::isdigit()などで定義が無いというエラーが出る。#include <cctype>抜け?


[ 今のところ重要では無いもの(将来コミットする時に問題になると思われるところ) ]
<4>
 SCHEDULE_TIMETABLE
 SCHEDULE_TIMETABLE_TTV
 SCHEDULE_TIMETABLE_TIMINGBAR
 SCHEDULE_TIMETABLE_CONVOITIP
 全て指定しないでコンパイルするとエラーが大量に出る。
 過渡期だから#ifdefが不完全?

<5>
 gui_gridlayout.h

 class rational {
 ...
  static const double REAL_TO_RATIONAL_DENOM = 1000.0;
 ...
 クラス定義内でint以外の値を初期化できるのは確かC++11からだった気がします。
 最新のコンパイラでないとダメというのはキツイと思います。

<6>
 fahrplan_gui.ccでVCにsnprintf()は無いというエラー。_snprintf_sならあります。

<7>
 timetable_model.h : warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。
 という警告が大量に出る。
 これは、
 struct A; // 前方宣言
 struct B { B( A* ); };
 struct A
 {
  B b;
  A();
 };
 B::B( A* ) {}
 A::A() : b( this ) {}

 クラスBにAのthisを渡しても、まだAのオブジェクトは構築されてないので、
 BのコンストラクタでAのポインタを使ったら危険です。という意味だと思われます。
 gccだと警告出ませんね。
 Bのコンストラクタでポインタだけ保管して、後で使うなら問題ないのかも知れませんが。

<8>
 simconvoi.ccのvoid convoi_t::_get_timing_stats(struct timing_stats *ts)で
 timing_statsの定義はclassなのにstructキーワードが使われている。というwarningが出る。

<9>
 OVERRIDEがついているメンバ関数で「基本クラスの関数をオーバーライドしませんでした」と言うエラーが出る。
 これはVCだと仮想メンバ関数にのみ使えるようです。つまり基本クラスの同じメンバ関数にvirtualが付いていないといけない。
 付けない方がいいかも。

以上です。

セーブデータと資料っぽいものを添付しておきます。

頑張ってください(^o^)ノ
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/17 23:12
最初に皆様へ:  自動名前付けは一時的にコードが崩壊していますので、今は使わないでください!! 現在準備中のTTT-042で安定します

yoyoさん、詳細なご報告ありがとうございます。
環境や手間的な面で自分で試せていないところを試して頂くのは助かります。
特にVC++でのビルド結果はありがたいです。
とり急ぎ、簡単にリプライを。
(一部勘違いしていたいので訂正しました : 23:49)

[ 重要なもの ]
<1> アシスタントでの自動ナンバリング
simutransのsimstring.hの中にある関数を無理に使うようにした ら、崩壊しだしました。落ち着いてなおします。

<2> 時刻表ヘッダ部分の表示の乱れ
>> 時刻表に表示されている路線を消しても(削除ではなくHIDE)行見出しが残る
念のためCol/Rowの一般的な使い分けでいくと、「行見出し」(駅名)ではなく「列見出し」(列車略称) でいいですか?
Hideは列単位の表示を丸ごと切り替えているだけなので、gui_spreadsheet_tのバグの可能性もあります。現象再現させてみます。

<3> include <cctype>の抜け
リファクタリングの時にファイル分割して失われたのに、他のヘッダから ctype.hがincludeされているのに甘えていましたね。
ところでsimutrans的には ctype.hにしておいて std::つけずに isdigit()の方がいいのでしょうか? ちょっと他のソース見てみます。
# プリプロだった頃は遊べたものだけど今時のC++にはついていけてません、悪いとこあったらがんがん指摘してください。

[ 今のところ重要では無いもの(将来コミットする時に問題になると思われるところ) ]
<4> ifdefでの囲い不足
本家に持っていく時は
  minimum patch:  SCHEDULE_TIMETABLE 以外は全てoff (gui_komponenteの追加も一切なくて済む)
  utilized version:  TTV, TIMINGBAR, CONVOITIP 全部あり (コード量は大きいが便利になる)
の二つのレベルで提案しようと考えています。(minimum patch だけでも採用されれば、セーブデータの互換性問題が解決するので価値あり)
ですので、マクロによる振り分けの整理はこれに合わせる形で少しお待ちください。

<5> クラス定義内での static const (定数クラスメンバー)の値定義
ごめんなさい不精してるだけです。VC++だとだめということであれば、とりあえずdoubleのものだけでも.cc側へ移動します。

<6> snprintfの欠如
あれ? Simutransの他のコードでもsnprintf使っているところあったような 気がしていたのですが。
と思って調べたら、どこも sprintfだけでした。sprintfなら VC++ にもありますよね? (たしかANSIなので)
バッファサイズが充分に確保できておりかつフォーマットが固定なので、sprintf()を使うようにします。

<7> インスタンス初期化完了前のメンバーインスタンスへthisを渡す
今はたしかに「渡された側はポインタを保存するだけ」ですので問題は無いはずです。
ううむ、C++で無理やりinnerclass (例えばJavaのようなもの) を実現しようとしたのですが、
これ封じるとコードが見辛くて仕方なくなるんですよね。
outer class 側にも何かテンプレートでラップ入れてやってthisを胡麻化せれば、警告は消せるのかな?
(gccのようなRTL解析だとすぐにバレそうな気がしますが。VC++の中ってどういう解析やっているのだろう?)
何かinnerclassのスマートな実現方法があったらご教授お願いいたします。
なお、一部は正しい innerclass ではなく、ただの "contains" by link ですので、落ち着いたら潰せる範囲は潰してしまおうと思います。

追記: どうやら gccの RTL は、thisの先に触っていないというところまで解析しているということが判明。
  コード読み不十分ですが、gccの方が一枚上手なようです。

<8> classなのにstructで指示
最初structだった名残りですね。消します。

<9> non-virtual に対する OVERRIDE
開発途中で virtualにするかどうかの迷いが出ているのの表れですね。
どこかでまとめて潰します。ミスはしていない(ただ勘違いしやすいかも)ので、当座の問題は無いと思われます。

いただいた資料の方はこれから読ませて頂きます。
ご指摘ありがとうございました。今後とも宜しくお願いいたします。
# gcc で -wall -werror やってみようかな。オリジナルも含めて warning潰しで一週間くらいかかってしまうかも。

トピック名: TTT-042
投稿者: wackdone さんの発言 2012/07/18 02:05
TTT-042 をアップします。バイナリ(全部盛り)↓です。
  http://ux.getuploader.com/wackdone_simutrans/download/20/simuwin-wackdone-120718.zip

バイナリを落とされる方にお願い
  今回から ja.tab も「バイナリファイルである」とzipファイルの中にマークさせています。
  これで、Windows上の展開でトラブルは無くなったんじゃないかと考えています。
  zipに同梱の ja.tab (TTTの分の追加込み) を使って、表示の日本語化が上手くいったかどうか報告してくださると助かります。
  (詳細はなくても「上手くいってない」という情報だけでも助かるのです。簡単に一言だけでもいいので、どうかお願いします!)

変更の概要
主にyoyoさんから頂いた問題修正と、時刻表の若干の機能追加です。
  - MS VC++ でのビルドでの問題が減っているはずです。(残問題についてご報告いただければ幸いです)
  - 管理アシスタント: 編成の自動名前付けのコードが整いました。手元では上手くいってます。過去の問題のせいでセーブデータが壊れていると辛いかも。
  - 時刻表ウィンドウ: 時刻表更新時の車両の位置を緑の枠で囲って示します (駅間走行中は区間行に、停車中は駅行に)
  - 時刻表ウィンドウ:"Auto Refresh" (自動更新) チェックを入れることで、一定間隔で表の内容を自動更新します。

自動更新の間隔は現在は内部で 256ms (1TTT) に固定です。
重すぎるようだったらコメントください。調整できるようにするか、1024msくらいまで広げるつもりです。
また、これまで同様に路線に新たに編成が追加された場合などには追従できていません。
また編成が路線から抜けた場合や、削除された場合はある程度検出しますが、びっくりするような表示になる場合もあり得ます。
このような操作をする場合は、時刻表を一度閉じて、作業後に再び開くことをお勧めします。

日本人的には縁起の悪いバージョン番号が続きますが、この値の範囲を抜ける頃には安定していることを願いましょう :)
トピック名: TTT残課題と機能仕様の再検討
投稿者: wackdone さんの発言 2012/07/18 04:38
機能的には当初の目的は果たせてきた(ダイヤグラム表示はやめときます)ので、現状を整理します。
当面はバグ修正メインでいきたいと思います。

安定性の向上:
  - バグ出しと修正
  - コンパイル環境依存の問題の解決
  - コード細部の安全化、assertやチェック&fatal の挿入

利用利便性:
  - 各所の色使いは見づらくないか? (特に時刻表表示での実績時間列)
  - スケジュール編集部分と時刻表表示の両方から値を設定できることに混乱はないか?
  - ツールチップも含めた日本語化、ヘルプの導入

機能仕様の修正検討:
  - 「路線編集」ウィンドウでの右側中段をどうするか? (時刻表を開かなくても使いたい機能は何か?)
  - 中継点、および計画時間設定無しの扱い (後述)
  - 駅までの運行時間と駅の停車時間を分離して扱うようにするか? (今は合算)
  - 始点発時刻のチェック点を変更できるようにするか? (最初の駅以外のポイントに)


時間制御の仕様の変更と追加の案
TTTの時間制御の根幹仕様についてですが、現状は以下のようになっています。
  中継点:  計画時間が設定できてしまうが、この値は完全に無視される
  計画時間設定の無い駅: この駅で延発制御など一切行わないが、前駅発車時刻は更新される

これがそれぞれどういう問題を起こし得るかというと:
  中継点の計画時間の完全無視:
    - 値を入れてしまって勘違いする。
    - 駅だったところが駅じゃなくなる(ホームを破壊)と、運行の合計計画時間が変わってくる
  計画時間設定の無い駅があると:
    - 積載が終るとそのまま出発するが、もし次の駅に計画時間が設定されている場合、この時間はこの区間だけを縛ることになる
     (問題というよりは、今はそういう仕様。使い方次第で便・不便がある)

中継点の取り扱い案:
中継点は時間を入れられるようにしたまま、運行でもこの時間を見るようにするべきでしょうね。
   - 中継点を通過する時に、実績区間時間をチェックする
   - 前駅(あるいは中継点)出発時間と現在時間を見て、早着・遅刻があれば積算遅延時間に繰り込む。
   - 前駅出発時間を現在時間に更新する
これで、次の停車駅でこの中継点の区間も含めて早着・遅延制御がされるようになります。

ただし時刻表での表示が五月蝿くなりそうです。どうしたものか。。。
また始点駅が中継点だった場合の取り扱いについては、まだ考えがまとめられていません。

計画時間設定の無い駅の扱い: もう一つの可能性:
計画時間設定の無い駅では、前駅出発時刻の更新も行わなくさせるという手が考えられます。
こうするとどうなるか:
  計画時間の設定のある駅の間で、運行時間の評価が行われる。
  その間の駅は、TTT上は通過したかのように扱われる。
  例えば、A - B - C - D の各駅があり (とりあえず環状運行の前提)
      A  1000
      B   (設定なし)
      C    500
      D   (設定なし)
  という時間スケジュールが組まれているとすると、
   これまで: C 駅では、B発→C発 の時間が 500 になるように運行される
    変更後:   C駅では、A発→(途中Bに停車)→C発 の時間が 500 になるように運行される
  となります。同様に A駅では C→(D停車)→Aの時間が1000になるように調整されます。

長所: スケジュール全体にわたって値を設定しなくても、一部要所駅だけ設定してくだけで安定運行できます。
    (現実のスタフにあるような、一部の駅だけの発時指定みたいな感じです。)
短所: 一部区間はフリー運行(遅れようと早かろうと気にしない)、また別の区間は時間制御運行という
    ハイブリッドなスケジュールが組めなくなります。
    (これのニーズがあるかはわかりませんが。)

このように変更すると、極端な例では:
  最初の駅に 2000 と設定。
  他の駅には指定なし。
  で運行させると、この列車は全区間の運行時間が 2000になるように運行し、最初の駅でだけ停車時間調整をするようになります。
  (「絶対時間型」である運行周期やオフセットなどは全くなしに(絶対時刻指定はできないが) 一周分の時間を決められる)

上の「短所」に示したハイブリッド運行のニーズが特に考えられないようであれば、
このように変更したいと思います。
(みなさん、今は全区間に時間設定して試していますよね? (時間指定をまったくしない編成はそのままでいいとして))

ご意見募集です。
トピック名: 時刻表機能の課題
投稿者: wackdone さんの発言 2012/07/18 05:21
続いて時刻表表示の課題を記しておきます。今の私の頭の中にあるものです。
もちろん、ご提案があればどしどしどうぞ。
一人でアイディア出そうとしていても見方が狭くて限界があります。

駅とスケジュール上の指定点が完全に同じオブジェクトでは無いことに起因する問題:
Simutransの仕組み上、列車(他の乗り物も含む) の停車は、スケジュール上では
マップの中の点 (koord3d) として記憶されます。で、実際にその点が駅かどうかは
その点にホームがあるかどうかで判断されます。(内部では実は頻繁にこの判定をやっている)
またホームがあることによって、駅は三次元上のホームのある点の集合としても定義されます。

駅間距離の計算が完全ではない
今は最初に登録された編成のスケジュール点を使って駅間距離を計測しています。
またこの距離も、その編成が走行したとしてでルート計算しています。
これが問題になる例としては:
  計測に使った編成がディーゼル車で非電化路線を含めて近道で計算したが、後に追加した列車が電車だとこの距離では走れない
  (逆の順番でも同様。この場合、ディーゼル車にとっては実際より長い距離が示されます)

また、列車と自動車を並べて表示させる場合などには、駅の基準点が、線路か道路かどちらかのものになってしまい、
他種別のものの計算では困ったことになります。
(でも、時刻表の上で「このバスは、この列車に接続しているか?」なんて見てみたいですよね:)

アシスタントでの時間見積り
今の計算は   見積時間 =  (駅間距離+若干マージン) / 編成最高速度
  - 上の問題に付随して、距離が正確でないから時間も正確じゃなくなります。
  -また距離は妥当であっても、発進時、停車時、積載量、コーナリングでの減速などが加味されていません。
    いわゆる、最高速度と評定速度の差が出てしまいます。(評定速度の目安を見積りたい)
    今は固定的に若干のマージンを足していますが、固定値ではほとんど意味がない。
というわけで、実際に走行させて計測した方がはるかに信頼できる値が出せます。

通過判定
ある普通列車 L があり、L は駅 A、B、C に停車します。
また急行列車 E があり、E は駅 A と C に停車します。
この時、時刻表上で E x B の欄をどう考えるかという問題です。
選択は二つ、「通過」か「経路外」かです。 (日本の時刻表(冊子) だと 「レ」か「||」 かと言えばいいのかな?)

理想的には以下のように定義して区別したい。
  E が B の構内 (通過線を含む) を通って A から C へ移動するのであれば、この列車はBを「通過」する。
  E が B の構内を通らないのであれば、この列車はB については「経路外」である。

実際には、Eの走行経路は計算で求められますが、その各点が「Bの構内であるか否か」という判定が難しい。
なぜなら、通過線を通る場合はその各点は「駅」の情報の中に入っていないからです。(Simutransのデータ構造の問題)

今は A→B、B→C、A→C の走行経路から求まる距離を三角不等式にあてはめて
   AB + BC  ≦  AC+ε  (εは誤差吸収用の係数)
であれば、B を経由(通過する) と判定しています。
左辺が大きすぎれば「B駅を通ろうとするのは、実際の走行よりも遠回りしすぎだ。通るわけがない」という判定です。
ここで ε (誤差?)が発生する要因は:
  - B駅の認識点が、実際に走行するところより外れている (普通のために退避ホームが指示されているなど)
  - 走行経路がA駅、C駅の指定点の事情で若干変化している (急行は優等ホームから発車、など)
比較的軽めでそこそこ悪くない判定だと思いますが、ここでεというパラメータが必要なのが厄介なところ。
(ちなみに走行経路の計算は、必ず走行方向に合わせて計算する必要があります。信号や一方通行指示で走行方向によって経路が異なるためです。また実際にそこを走行する編成によって経路が異なるのは前述の通りです。その他にも速度制限標識の影響なども)

前項に関係している問題:
編成が表の上のどの駅行に「止まる」と判断するかが難しいために起こる問題です。

途中折り返し路線の表示
(例えば、関東では京浜東北線のような折り返しパターンを考えてみるといいのでしょうか。)
  A - B - C - D - E
とあって、
  A - B - C
        B - C - D
              C - D - E
という折り返し列車を同時に表示して、期待通りに表示できるかという問題です。
さらに快速運転で、
  A ----- D --E なんて加えてみるとどうなるでしょう。
周期400で、脳内ダイヤを組むと以下のような感じです。(快速の特に A-D間が160なのは速すぎな気もするけど)
列1列2列3快9
駅A0350
駅B10020v
駅C20012040v
駅D220140110
駅E240150
駅D340190
駅C32040v
駅B30020v
駅A0350

まず、今のロジックでこのように表示できるかという問題と、
さらに「折り返したところで時間表示が飛ぶのは見づらい」という問題があります。
(後述の「停車と駅間を区別」ができれば少しは解決します。)

その他、情報取り扱いの問題:
着発の分離
実際の時刻表だと、主要駅 (始終点、退避・接続駅) では、着時と発時が分離されて掲示されますね。
今の TTT は 駅間+停車 の合計の区間時間しか設定できないので「着時(予定)」を掲示することができません。
つまり、原始情報が足りていないのです。
データ構造的にこの分離をするのか (下手すると設定の面倒さが増す)、
擬似的に表示させたければ、駅手前に中継点を設定して、ここに時間を割当てるかです。
(後者の場合は特に、前の記事で書いた「中継点での取り扱い」を実現する必要があります。)

実績時間の取り扱い
今だと、その区間が「計測済みか」どうかがわからないし、
できれば(計画が設定されているのであれば) 先行しているか遅れているかを色分けや差分表示で見てみたいですね。
つまり、今の表は縦方向には差分が表示できているが、横方向の値の関係も表示できるといい、ということです。
あんまりやり過ぎると、表計算ソフトを作り出すようなことになりますのでほどほどにしないといけませんが。


他にも気になるところはあったはずなのですが、思い出したら後で追記します。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/18 05:44
さっそく使ってもらわせてもらったのだが
列車ウィンドウにあった時間差?何秒とかのぐらふはなくなったの?
詳細を開いたらあったけど。

あと、自分のマップだけなのかもしれないけど
自動設定?回復にあるやつ使ってるからかもだけど。
始発点から次の駅までの時間が最初走らせたときとはまったく変わってしまい120が 1000とかになる
んだが自動設定をやめればいいのかな?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/18 05:50
kendaiさん:

あれ? 私の手元で走っている画面だと表示されているけど。。。
走行している列車をクリックすると出てくる列車情報ウィンドウの中のバー表示のこと を言っていますよね?
自分でバイナリをダウンロードしなおして、VM上の Windowsで走らせてみているから、間違いないと思います。

追記:
  TTTに関する設定を一切していない編成には、バーを表示しないようにしています (オリジナルとの互換性確保のため)
  この判定が間違っているのかな?  対象の列車に駅間計画時間や周期時間、全部あるいは一部、どのように設定していますか?

kendaiさんが試しているのは、バイナリ? それともパッチを落として自分でビルド?
後者だとすると、ビルド時の設定が影響しているかも。(configの中に書く CFLAGS+=-Dなんちゃら)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/18 06:03
kendaiさんからのもう一点:
>> 自動設定?回復にあるやつ使ってるからかもだけど。
>> 始発点から次の駅までの時間が最初走らせたときとはまったく変わってしまい120が 1000とかになる
>> んだが自動設定をやめればいいのかな?

バグかどうかの切り分け方法:
  列車のスケジュール編集画面で (列車の情報ウィンドウの中で「スケジュール」のボタンを押す) 見てみて
  その区間の値が変わってしまっていたらバグです。

  時刻表の上で、区間時間 (下のチェックを入れた時の青字で「+xxx」と表示される値) が変わっていても、
  おそらくバグ。
  時刻表の上の、駅の発車予定時刻 (黒文字で最初に何もつかない) が変わるのは、「自動設定」によって
  始点発時刻が変更されて、それにつられて変わるものなので「正常」です。

上のどれですかね?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/18 06:49
今やってみると表示バーは出ました。

自分のやつではバグぽいものやっぱでました。
一応写真つけときます。

1枚目が一応通常
2枚目が変な奴。
福島駅の数値は時によって駅間時間変わりますが。。

自分で解析できればいいのだが、何分その知識がなくて(汗
トピック名: 現実の鉄道のダイヤ
投稿者: gonyo さんの発言 2012/07/18 21:16
simutransでの参考になればよいかとなと思うので紹介します。
現実の鉄道はだいたい始発→朝ラッシュダイヤ→昼のパターンダイヤ→夕方ダイヤ→終電→車庫 となってます。

simutransでは  昼のパターンダイヤを無限に続けるようにするというのはどうでしょうか。 これだとわかりやすい時刻表ができます。
ただし、輸送力が低下するという問題があります。※1

そこで鉄道の昼ダイヤちょっと紹介してみます。 例:大阪環状線外回り天王寺駅
http://www.ekikara.jp/newdata/ekijikoku/2701031/down1_27109011.htm
11~15がパターンダイヤ ※同じ時刻に発車する2つの電車がありますが手前の駅で連結済みの1編成の列車です。

昼ダイヤは1時間という周期で作られているのがわかるでしょうか。 他の路線もだいたい1時間周期です。運行周期にかかわらず1時間周期のダイヤになっているということです。
大阪環状線普通電車の運行見てみましょう。 1時間に4本 15分間隔ですね で時刻クリックすると 大阪環状線普通は昼ダイヤで1週42分でした。 で、天王寺で3分調整して45分間隔運行してるようです。(3分しか余裕ないからよく遅延するのかJRさん・・) すると時刻表見た感じは1時間周期の運行にちゃんとなってるということです。  

ここで解説: このダイヤでは3分調整してる間に快速電車が来ます。 普通電車とまってると邪魔ですね JR天王寺は駅ホームが多いので別のホームに快速を止めてるんでしょう。 同じホーム使うとこの時間調整ができなくなっちゃいます。 困りますねぇ
つまり、simutransでもこういった設備のある駅がないと時間調整できないです。 かといって42分周期のダイヤにすると遅延したときに困りますし・・・ 快速が42分周期じゃなかったらダイヤなんてない現状のsimutransそのものです。
 wackdoneさん ダイヤ作るためにはTTTのプログラム考えるのも重要ですがsimutransで大きい駅作る必要もあるということです。 JR天王寺駅のでかさは無駄ではないということです。 こういった配線も考えていかないとsimutransでダイヤを組むのは大変ですね。

ところでsimutransではこの1時間ってのがないですね。 TTTでこの1時間に相当するものを作ってしまえば楽なんじゃね?って考えもアリかもしれません。
ただし輸送力が多少犠牲になります。 simutransで限界まで本数を増やしたい場合これだとちょっと不都合です。 
混雑解消ゲーになってくるとこれではちょっと・・・

---  ここから下はsimutransで混雑やばくなってきた場合の話 ----

線路がつながっている路線(普通、優等、その他乗り入れしてる路線すべて)の運行周期は同じにしておかないとダイヤ組めません。 線路つながってない別の路線と運行周期がずれても無問題です。 つまり14分周期の路線と 線路がつながってない路線で27分周期ダイヤとかあっても問題ありません。 ですがそのへんの説明をみなさんにするのがとても難しいのです。 それをTTTに判断させようとするとまた面倒になります。
Q:14分周期とかする必要あるの? 15分でよくね?
A:混雑してきた場合14分周期とかする必要あるんです・・・
そこで最大運行密度を考えてみよう
要するに本数どこまで増やせるの?って話です。
普通、急行が2:1の割合で運行させる場合を考えます。 2つの普通列車は退避駅とか変わってくるので普通A、普通Bとしましょう
一番混雑しやすいところ(2面2線の急行停車駅)で 普通A、普通B、急行、普通Aの順に団子状態で運行させてみます
普通Aが出発してから次の普通Aが出発するまでの時間が最大運行密度です。 これが14分とかだと14分周期のほうが本数増やせるんだよね・・・これ以上本数増やせません あきらめましょう。 

で? 最大運行密度ってのTTTで求めるのか・・・  列車を渋滞させ、その渋滞の先頭部分で列車が通過してから次の列車が通過するまでの時間を求めてと・・・・  ここまでやってたらwackdoneさん倒れそうだなorz
最大運行密度は信号の間隔 線路の構造の他 満員時の列車の加速などで決まります。

TTTってプログラム面以外にも難しいところ多いですね。  2つのどちらの場合でも 編成数に関してですがまずダイヤを決めてからそのダイヤで運行するための編成数を決めたほうがいいかなと思います。

フリーズとか文字化けなどは明らかにプログラムの不具合ですが強制段落ちなど難しい 問題もありますね。
デッドロックとか 線路の構造や信号配置のミスが原因となるものもあるのでややこしいです。
例えば退避1つやるだけでも 待避線ないとできませんから・・・
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/07/18 22:38
こちらもkanedaiさんと同様の症状が出ていますので、これはバグだと思います。


また、時刻表表示の課題内の途中折り返し路線の表示に関連して…    
A─B┬C─D…路線1
   └E     …路線2
という路線を組む(A-Bは線路を共有する、要するに路線1が路線2に乗り入れる形)時に路線1と路線2を同じ画面に表示させようとすると
   L1C1 L1C2 L2C1
A駅  0   350
B駅 100  450
C駅 200  550
D駅 300  650
C駅 400  750
B駅 500  850
A駅 600  950
A駅           130
B駅           230
E駅           330
B駅           430
A駅           530

となってしまい全く同じ画面に表示する意味がなくなってしまいます。

これの対策をするには例えば、最初に表示する路線を「基本路線」として、追加する路線は「基本路線」に入っている区間だけ表示するようにすれば線路共有部分のダイヤが組みやすくなるかと思います。(わかりにくかったら言ってください)
こうすれば京浜東北線問題も解決できるかな、と思います。
トピック名: 自動再計算によって最初の区間時間がおかしくなる件について
投稿者: wackdone さんの発言 2012/07/19 04:22
kendaiさんとsima0222さんからご報告いただいている件ですが、
お二人とも Persistent auto-offset 継続的な始点発時刻の再計算
(「回復アシスタント」の中で、「処方3」の「常に再計算」を有効にしている)
状態で起きているということで宜しいでしょうか?
もし、これが有効で無いのに勝手に時刻が変わるようでしたらお伝えください。

(09:20 更新)
事情がわかってきました。
  (1) 「常に再計算」の状態にしておいて
  (2) 「運行アシスタント」の中で「運行周期」や「間隔」を変更して
  (3) 微妙なタイミングで「時刻表を更新」
すると、発生しうるようです。
内部の動きの予想:
  (1) 常に再計算は、時刻表の表示の上でいうと、最初の駅の行の時刻を変更している。
  (2) 時刻表表示は、これに合わせて各駅の出発予定時刻を、各区間の計画時刻を足していって決定している
  (3) 始点発時刻が自動で変更された直後は、時刻表の表示側はこのことを知らない
  (4) 表示の更新などのタイミングと絡んで、あるタイミングで「時刻表を更新」とすると
       時刻表ウィンドウは、「第二駅の発時刻」 - 「始点の発時刻」を、最初の区間の計画時間にしてしまう
という感じではないかと。
「表示の自動更新」「自動調整」「アシスタントでボタンを押した時に、すぐに編成に反映されるかどうか」
など、情報と操作の関係を整理しないと、安全策をとれないでしょう。
修正にはしばらくお待ちを。



これより下は、今後また別のトラブルが起きたときのために残しておきますが、今は無視してくださって結構です。

(05:45 以下、書き直します)

運行密度の高い路線を作って、gonyoさんの鉄道ダイヤ講座を読みながらしばらく走らせてみましたが、(gonyoさん、あとでお返事しますね)
なかなか問題の現象に出会えません。

kendaiさんにスクリーンショットを貼っていただいたのは助かったのですが、もう少し情報が欲しい。
以下、次に同じような現象が再現した場合でいいので、以下の情報を教えていただけませんか?
  * 現象が発生するまでに至った手順 (例えば:「xxアシスタントの何をした後に、yyをやって……」と)
  * その時点で「常に再計算」はオンだったかオフだったか
  * その時点の、再計算のために使われる各パラメータの値
    「運行アシスタント」より: 運行周期、発車間隔、出発ずらし時間
     また、その路線に所属する編成数も参考までに知りたいです。
      (列車を選択して、「運行アシスタント」の画面をそのまま撮影してもらうが簡単かも)
  * 列車の「スケジュール編集」の方で見える、各区間の計画時間 (今回の場合は特に最初の区間。つまり2駅目のところに表示される時間)
  * 最初の運行は正常に見えたか?
  * 全編成が何回りくらいしているうちに、異常が観測されたか?
  * 異常が発生した時の時刻表全体の様子。表示オプションは「周期時間」以外全てオンで
        (「周期時間」は絶対オフにしてください。問題が隠れてしまいます)
     ちなみに、表の左上隅の箱部分を Ctrl+Shift+クリックすれば全部オンになります。
      (二回クリックすると全部オフになるので、もう一回!)

ご面倒をおかけしますが、どうか宜しくお願いいたします。
(こんな路線を組むと一発で再現するよ、という情報があれば勿論ベストです)


以下、脳内切り分け中:
  - kendaiさんからの画像を見る限りは、最も酷い異常は、最初の区間「大阪駅」→「福島駅」の
    計画時間が、「元設定されていた計画時間」+「運行周期」になってしまっているところ。
    (おそらく運行周期は1520にされていると予想)
  - 「自動発時刻調整」機能は、始点駅の時間(オフセット)を変更するだけで、
     原則、どの区間の計画時間を変更してもいない。(ソースコード上も見当らない)
  - しかし変更されてしまっているということは、コード上からは見えてこないメモリ破壊か?
  - しかし「元の値」+「運行周期」という、あまりにキリのいい値にされてしまっている
    (外からのメモリ壊し系のバグは、こんなに都合良くはいかないのが一般的)
  - 一方で、時刻表表示のバグということもあり得る (時刻表は差分時間を集計して各点の時刻に変換しているので)
  - 各パラメータが想定外の値だと、チェックが甘くて (異常設定でもメッセージが表示できていない部分もある)
    予想外の動作になっているだろうな
  - とかいいつつ、単純なコーディングミスだったりするんだよな、こういう時たいていは
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/19 06:35
上に書いた「最初の区間の計画時間がおかしくなる」とは別に、
自動調整中に、異常な始点発時刻が設定される問題があることは把握しています。
  運行周期C、運転間隔P、ずらし時間S
の組み合わせによります。

具体的には、始点発時刻 O が、C より大きい値になってしまうという現象です。

現在、デバッグ中です。
  O = P*m + S
  C*n + O >= Now
の条件に合う、nとm (非負整数) を求めなければいけないのですが、
そもそも 2変数なので決定的には求まらないというのが厄介で。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: yoyo さんの発言 2012/07/19 13:04
wackdoneさん:
042でVCでのビルドが楽になりました。ありがとうございます。

<行見出し>
自分が言っていたのは駅名の事です。
路線をHIDEしたのに駅名が残ったままなのは変かなぁと。

<インスタンス初期化完了前のメンバーインスタンスへthisを渡す>
コンストラクタでは何もしないで、initメンバ関数で初期化するとか...自分もよく分かりません。

<VCでの残りの問題点>
gui\timetable_model.cc(457): warning C4138: 始まりのデリミターがない閉じのコメントデリミター (*/) が見つかりました。
void timetable_convoiinfo_t::insert_passage_stopinfo(uint32 pos, timetable_haltinfo_t const */*hi*/, koord3d const& refpoint)
"const */*hi*/"のところを"const * /*hi*/"で通りました。

gui\timetable_model.cc(719): error C2065: 'uint8_t' : 定義されていない識別子です。
gui\timetable_model.cc(1028): error C2065: 'uint32_t' : 定義されていない識別子です。
"_t"を削除してOKでした。

---
[絶対時刻の扱いと認識]を読みましたが、
逆の発想でsimutransのbits_per_monthを削除して新たにbi ts_per_dayを作るってのはどうでしょう?
これなら1日の長さは固定になりますし、内部はtickのままでUIだけday等に変換するのも簡単な気がします。
---
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/19 19:07
電車の中でコードを睨んでいたら、時刻表まわりのバグがだいたいとれてきました。
(通勤途中にコーディングはできても、Simutransをテストランさせるのは何故か恥ずかしくてできない  :(
真夜中になる前には最新版をリリースできると思います。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/19 19:48
皆様への返信を書いてる途中でXがいかれてしまったorz
すみません、手短か版になります。

gonyoさん:
ぜひとも、Simutrans+TTTダイヤ追求講座を、Wikiに開いて頂きたい :)
上限密度  (正確に言えば、密度は時間の逆数ですね) を、近似的に求めることは可能です。
精度を高めたければ、各列車が(積載量は最高か中程度か空荷か選んだとして) どの区間をどのように走行するか事前計算して
「これ以上早くできない」という各列車の区間時間の集合を準備します。(個々の列車の理想走行が決まる)
そして、今いる順序で無理に走らせたらどうなるかをシミュレートします。
(ボトルネックを見つければいいので、NPではなくP問題に落とせると思う。)
で、詰まったところにどれくらいマージンを入れていけばいいか、簡単な最適化問題で解いて、
出てきた総マージン量の逆数が限界密度になるんじゃないかな。

と書いてみましたが、gonyoさんの言うように、実際の線路設備の影響の方が大きいですし、
実際に人間が見て納得するような結果を出す解法に育てるまでには、ずいぶん手間がかかるでしょう。
そして何より「シミュレーションの上で上手く走らせるために、さらにシミュレーションしてどうすんの?」という話があります LoL
(まあ、偉そうに書きましたが、正直、そんだけコード作るのしんどいなあ、というのが本音です、はい ;) )

今だと、時間制約を全部とっぱらってみて、実績時刻を時刻表ウィンドウ上で眺めてみることで問題がわかってこないかな?
そのためには、表示している情報が足りない気もしますが。
例えば、各列車が始点を実際に出発した時刻がわからないと (今はこの情報は出ていない。あくまで計画上の始点出発時刻を使っている)
列車間の関係はわかりませんね。
これに限らず、ダイヤを組む(あるいは線型改良するなど)人の何か助けになる情報を拾って表示できるといいのですが。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/19 20:06
sima0222さん
示して頂いた表は、現状の TTTで表示させると、という話でいいですよね?

一応、よくある簡単なアルゴリズムでそこそこ良くなる版のコードは、手元で眠っているのですが
少し改修して次の版に入れられればと思います。
「基本路線」つまり、pivotを置いて、そこを中心に描くというのはありですね。
あわよくば、表示途中でpivotを再設定して構成しなおすが出来るともっといいのかも。
基本のロジックが固まれば、そこはUIとしての作り込みで進められます。

さてその基本ですが、根本的には、単方向エッジの集合でできたグラフを、脳内で双方グラフに再構成しつつ、
結局はベクトルに落としこまなきゃいけない、という数学的にも結構派手な話なので、
完璧なアルゴリズムを見つけるのは簡単ではないでしょう。
(すでに世間に出ている論文などご存知の方いらっしゃいましたら、教えて頂けると助かります。)
「スケジュール」という形で、各エッジの間には時間的前後関係があるため、これをグラフ上でどう扱うかも問題です。
また「スケジュール」から読みとれるグラフの中には存在しないノードを作り出さなければならず、
このためには、下に示す区分けのうちの(1)が出てくるので、完全に位相空間だけでは取り扱えない。
そもそもグラフと捉えているのが問題だろうか。。。

また、この問題は以下に示す2つの問題に分割でき、それぞれの精度(あるいは人間の期待に沿うか)を出すのが難しいです。
 (1) 点 A、B、C が与えられた時に A から C へ移動する時にBの近傍を通過するかを判定する
    (乗り物の事情に合わせた判定がされなければならない)
 (2) 上の(1)を使用して、既にある点のリストの中に、新たな点を挿入する場所を決定する
      また、リストの各要素には (その点間の距離を計測するために) 他の要素との接続関係が記録されなければならない
      (単方向でよい。ただし接続先はどれか1つの要素に絞らなければならない)

(1)の方は頻繁に使用されるので、できるだけ軽い内容であって欲しい。(というわけで今は距離関数を定義してシュワルツの不等式で簡単に判定)
(2)の方は、三乗オーダのアルゴリズムならそこそこあるのですが、 編成のスケジュールを舐めながら、かつ速くしたいので、
 できれば線形オーダに毛が生えたくらいであって欲しい。
という要求がきつくって。。。
あとは「場合分け」をできるだけしたくないという私のロジック屋としての性格の問題かな。

特に(2)の方は、パズルとしては楽しめると思うので、参加者募集です。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/19 20:19
yoyoさん、VCの件了解です。

_tつきの定義が無いなんて。POSIXじゃなかったっけ? まったくMSは。。。 という愚痴はおいといて直します。
"*/*"を1つのトークンとして認識するなんて、いったいどんなパーザ書いてんだよMSの連中は。。。という愚痴は(以下同文)

innerの件は、コンストラクタでやってしまわないとinsecureなんですよね。
本当は、outerへのポインタは const メンバーにしたいくらいなので。
(innerからouterを指すポインタが途中で変化してしまっては、innerクラスとは呼べないだろうというわけで。)
また、outerインスタンスへのポインタが定まらないデフォルトコンストラクタも廃絶しないと、危険ですし。
timetable_view の更新判定が成長してきたので、そろそろちゃんと Model と View の分離をやって、
その暁には inner class は廃絶できると思いますので (残りは contained by linkだけにできる)、もうしばらく我慢してやってください。

bits_per_day は、誘惑があるのですが、bits_per_month の廃止はできないですね。
廃止してしまったら本家の機能の改変にあたるので、まず本家に入れてもらえなくなると考えていいと思います。
やるとしたら、TTT用だけの bits_per_dayを準備して、TTTで見える姿だけ変える感じですかね。
ticksそのままでUIだけ、というのは、そういう意味でおっしゃってたのかな?
まあ、昼夜の表示の切り替えも、bits_per_month にもとづく1日の中で行われているわけではないので、
いいのかなあとも。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/20 00:10
電車を走らせて、1周程したときに時刻表を表示して実績時間を選択したらえげつない数が出てきました。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/20 00:13
とりあえず今の段階で確認。
「自動再計算」を有効にしている列車ですか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/20 00:16
何も設定せず環状線を走らせただけです。
積荷待ちも設定せずです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/20 00:19
「何も設定せず」というのは、TTTに関する設定も一切なし?
それとも、
  (1) 駅間計画時間だけは設定している
  (2) 運行周期と始点発時刻だけは設定している
  (3) 上の(1)と(2)を設定しているが、それ以外のパラメータは一切設定していない
のいずれか?

あと、「えげつない」数字が出てきたのは時刻表の上のことだと思うのですが、
  (a) 計画時刻 (黒文字) のところに出てきた
  (b) 実績時刻 (オレンジや赤)のところに出てきた
  (c) それ以外のところに出てきた
のどれでしょう?

(0)本当に何も設定していない、で (b) のところに出てきたと予想。

追記: ごめん、タイムテーブル一切無しの方に気がまわりきっていなかった。
これだと、アシスタントでダイヤ作るの難しくなりますね。
急いで対応してみます。差し替えにする予定。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/20 00:57
予想通りの
(0)本当に何も設定していない、で (b) のところに出てきました。

アシスタントで作ろうとしたら出てきましたww
トピック名: TTT-043c
投稿者: wackdone さんの発言 2012/07/20 01:13
TTT-043、TTT-043bからの差し替えです。何度もお手数をおかけしてすみません。

TTT-043c パッチです。バイナリは↓
  http://ux.getuploader.com/wackdone_simutrans/download/23/simuwin-wackdone-120719c.zip

アシスタントが台無しになるバグだったので修正します。
kendaiさん、素早いご指摘本当にありがとうございました。

TTT-042からの変更点:
  バグ修正: 時刻表での更新時の異常の修正、自動再設定時の範囲外値の取り扱いを改善
  機能追加: 時刻表修正時にチェックを多くした (更新しようとしたら路線のスケジュールが他で変更されていた場合の検出なども)
  仕様変更: 中継点(waypoint)に計画時間を設定した場合に評価されるようにした (前駅発時刻が更新される)
  仕様変更: 上と合わせて、計画時間の設定の無い駅、中継点ではTTT処理が一切行われない(前駅発時刻の更新もなし)
  機能改善: 複数の路線を表示させた場合に少しだけ表示が見易くなるようにした (優等マージは前と変わらずできている)

特に「仕様変更」の部分が重要かと思います。
今回の修正で、「一部だけ計画区間時間値を入れた運行」が可能になりました。
ある駅に計画時間を入れると、前の計画時間が入っている駅からその駅までが、指定された計画時間の制御対象になります。

(まぎらわしいので、TTT-043、TTT-043bの投稿は削除しました。)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/20 02:17
さっそくの反応ありがとうございます。
治ってました。

あと、前のよりもスムーズになった気がします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/20 18:30
いろいろ試していますがよくわからない機能が多いので解説なんてとてもできません。

今普通+急行の等間隔運行に成功しました。

気になったこと
段落ち問題の特効薬
入線振り分け信号で段落ちが直ったようです。! 大発見?(4編成2ホームで実証) 団落ちなおす実験してたつもりじゃないんですけどね。
普通同士の退避が行われて列車の順序を自動で正しく並べ変えます。 特効薬ですね
医者が患者に治療されるような状態ですが・・・  線路構造がいかに大事かということだと思います。 そしてTTTが完璧なものになったとき入線振り分け信号は役目を終えるんでしょうね。


もう1つ: 私はいつも車庫に1編成残して運行しています。 増発したいときにそうすると便利なのです。
で、今回車庫で眠ってるものに時刻表が割り当てられちゃいました。 これで運行間隔がずれてしまった模様
 他にも車庫に1編成待機させてる人いないでしょうかね? 

他に simutransは乱開発する人多いのでダイヤあんまり考えてられないことが多いかもしれません。

急行と普通を運行する場合 列車間隔は統一しないといけません(これがうまくできない)  普通12分間隔 急行13分間隔とかだと困ります。
これをあわせるには編成数を計算で求める必要があります。 必要な編成数をTTTが指示する必要がある (普通と急行の編成数を合わせてもダメ) 編成数が多すぎると始発駅手前で渋滞する。
また増発や路線の延伸などの際設定しやすいようしておいてほしいです。

↓は成功したもののセーブデータです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: yoyo さんの発言 2012/07/20 18:57
043c にて
   適当に3つくらい駅を作って1つ路線を作って列車を走らせます。(tttに関する設定はしなくてもよい。)
   その後、時刻表を表示してautorefreshをONにします。
   そして列車の「車庫へ」を押すと、時刻表に車庫の座標と他の駅が追加され、
   車庫に入った瞬間にminivec_tpl<T>:[]で落ちます。
   こちらでは100%で再現してます。

OVERRIDEについて
   overrideとfinalはvirtualメンバ関数のみが正解らしいです。
   この辺 -> http://stackoverflow.com/questions/5530022/override-non-virtual-functions-in-c-2011
   次期C++1yではnon-virtualもOKになるかも知れませんが、今のところダメみたい。
   gccが先取りしすぎなんですね。

uint32_tについて
   VC++2010にもありますが、ヘッダをインクルードしないと使えません。<cstdint> or <stdint.h> C99
   gccでも同じはずなのですが...

bits_per_dayについて
   >TTTで見える姿だけ変える感じですかね。
   そうです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/20 19:48
皆様、動作確認ありがとうございます。
私事としては8月ががっつりどっぷりの仕事になりそうで、その前にある程度固めておきたいと考えています。
というわけで原則として問題(クラッシュするようなバグ、運行の致命的な不調など)対応優先。
機能追加は後回しですいきます。 (といっても、時刻表の見てくれを改善していくくらいしか今はアイディア無いんですけどね)

kendaiさん:深夜に何度もチェックしてくださりありがとうございます。
改版する途中で、重そうだ無駄そうだと判断した場所はちょくちょく書き直しているのですが、そんなに一気にスムーズになるような変更はしていないつもりです。
もしかして、どこかにお化け(コード内で不正に他所を破壊しているところなど) がいて、どこか直した時にその除霊ができたのかもしれません。

gonyoさん:high-low mixの振り分け成功おめでとうございます。私も嬉しい!
たしかに、choose signal を使えば入線可能ホームの数まではreorderを吸収できますね。
またconvoy reorder の原因に車庫内の列車の存在が絡んでいるというのはあり得ますね。
(すみません、reorderとは「順序の入れ替わり」。一般的な英単語かもしれませんが、コンピュータネットワークの世界では、packet reordering という風に使っていたります。
コンピュータネットワークの用語の方が使い慣れているのでつい使ってしまいますが許 して。)

現状の順序付け(というか順序付け*られ*)について簡単にさらっておくと、
  (1) (TTTを入れる前) そのままそこで走っている状態
  (2) 運行アシスタントまで行って、「始点発時刻を設定する」で時刻表の始発駅が決まるところ (で「時刻表を改定」をする必要あり):
        この段階で、路線の全編成の位置を把握しなおして、始点駅に一番近い列車から順に、n*P+Sの時間をふっていきます。(一つの列車につき、n が1ずつ増えていく。)
  (3) 「自動調整」(一発あるいは「常に」のどちらでも) によって、始点に到着するたびに始点発時刻の変更が行われる。
        なので、ここでまた順序に合った時間が振りなおされるはず。

さて、こう書いたのはあくまで、こういう動きをする*つもり*のプログラムを書いたというだけで、バグあるいは想定できていなかった要素がどこかにあるということになります。

まず想定できていなかった要素(1): 車庫にいる編成にどういう値を振るかは考えていなかった。(車庫にいるということの検出すらしてなかった)

あとは(2)にバグがある可能性かなぁ。バグとは言い切れないけど、(2)の段階で時刻をふって行く時に
最初のnをどうするかは課題です。今は「最も始点に近い」列車が「始点に到着する予想時刻」(計画時間から求める)をもとに、適切な n を出しています。この予想がうまくないと、まずい。
(ただこれだけでは reorder の原因には直接はならない)

また自分で試していて発生したのは(3)で、列車のスケジュールに(少しでも)無理があった場合ですかね。
無理があった時に(3)がきついのは、段落ちしちゃった値をそのまま設定されてしまうこと。

こうして見ると、「区間時間計画だけの運行」というシンプルさから「周期と発時刻」を設定した途端に始まるややこしさの間の開きが大きすぎますね。
gonyoさん式のシンプル周期運行も含めて、の間の開きを埋めるものが無いとちょっときつそう。

散文ですみませんが、とりあえず頭の中を吐き出しておきます。一回投稿。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/20 19:59
yoyoさん、ありがとうございます。

* 車庫送りにすると minivec_tplのfatalで落ちる
たしかに車庫行きの状態の扱いが微妙でした。まず落ちないようにはします。
でここで、仕様としての検討課題が。車庫送りにした編成は時刻表の上ではどう扱うべきでしょうか。
(ちなみにSimutransの内部の作りとしては、車庫送りにした途端に独自のスケジュールを持って、路線から一時的に外れてしまいます。)
  a. 時刻表の上から消す
  b. 車庫行きのスケジュールをそのまま見せてしまう (路線から一時的に外れていることをどう示すかはまた別の課題)
  c. 車庫行きなど何も知らないかのように、いつも通りのダイヤを見せるけど、マーカだけ表示されなくなる
aが一番簡単。実はcが最も難しい。とりあえずは落ちないようにaにふろうかとは思いますが。

* override
すみません、C++脳がStroustrup初版で止まっている人間なものでついていけてませんでした。ご教授ありがとうございます。やっぱり仕様は読むべきものですね。
しっかし半端な仕様作りましたね。ここ10年くらいは誰がやってるんだろう。
virtualのoverrideもremarkするべき要素はいっぱいあるけど、実はnon-virtualのoverrideの方がよりremarking必要ですよね?
どうせcastであれだけキーワード増やしちゃったのだから、overrideも non-virtual と virtual それぞれに作ってしまえばいいだろうに。
さらに implements (純粋抽象の仮想メソッドを実装する時にだけ指定する、ってJavaのまねですね) まであれば完璧w

* uint32_t
ああ、ごめんなさい。stdint.hにまとまったんでしたね。たしかにインクルードしてません。
(UNIX系の多くが、sys/types.h を stdio.h から読み込んでいるんで、simutransのどこかが読み込んでいるstdio.hでなんとなくうまくいっちゃうんですよ)
いろいろとお行儀悪いですね、私。お恥ずかしい。
いずれにしてもSimutransのお行儀的には uint32_t ではなくuint32なので、そちらにまとめます。

* 独自の時刻体系での表示
まずは時刻表で、それも表示だけで、ということであれば低リスクで実験はできそうです。
入力の部分は hh:mm:ss なりのフォーマットを入力しやすくするのが手間くいそう。
あと、これやった場合、路線ごととの運行周期との関係はどうしますかね?
まずはそういうのを無視して、えいやっと全体設定でやってみるものなのかな。
例えば:
   「この時刻表は、2400tt == 1day として表示する」とどこかで設定できるようにして、
   「時刻表示形式の変更」とかいうボタンをお押すと、全部の表示が hh:mm.(ss) 形式になる
という感じ。
問題は、半端なtt==1day とされた場合に、誤差を気にするかどうかですね。
なんせ、24や60で割ることになりますので。
なんとか「ややこしい設定が少なく」「見て意味のある」(イメージしやすくなる) ようにしたいのですが。
もう一段、アイディアを集めたく思います。

とり急ぎ。
バグ修正はいましばらくお待ちください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/07/20 20:04
sima0222さん
示して頂いた表は、現状の TTTで表示させると、という話でいいですよね?
はい、そうです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/20 23:06
普通と急行の運転に成功しました TTTなしでこれを実現するには バスで線路を封鎖して以下いろいろやった技を使わない限りできないことです。 ひとつの目標が達成されました。 いわば完成です。
http://gyazo.com/2fa5f92036edd808ace477cfa7a9ba2f
これが完成後の時刻表です。 見やすいですねこれ

ただ扱いがかなり難しいのが難点です。
ただその過程でいろんなトラブルと遭遇しました。 わけもわからず「距離÷速度を計算する」→無理なダイヤ組まれる→実測値を活用
→で団落ち→チューズで対処  
退避駅での待機設定: これやり方わからないんですが 「区間時間」ボタン押して手動で退避駅の前の区間を長くしました。 駅の発車時間を遅くすると 次の駅以降そのままなんで困る。  「区間時間」をいじると後のほうも自動で動いてくれました。

急行のダイヤ設定
急行の路線作成して流します。 ここで困ることがあります 「距離÷速度を計算する」これは当然ダメ、 実測値を使うほうですが 普通電車に妨害された中の運行になります。  邪魔な普通電車がいるときといないときでダイヤは変わるため非常に面倒でした。 対策ないもんかね
次に発車間隔を手動で設定します(普通電車と合わせる必要がある)   始発駅での発車タイミングを調整します。 急行が普通の80ttt遅れで出発し、途中で追い抜くダイヤにしました。   発車タイミングによっては退避がうまく行きません。 このタイミング難しいですね。
で急行同士が団落ちしてたりでもういろいろ大変 勝手に直るとはいえ早送りで何週もまわしました。 そして完成 

ですが急行の編成数が1余りました。 普通より早いのに同じ数流せば余っちゃいます。 駅で長時間(列車間隔より長く)待機する状態になっています。  1編成売却したいのですが・・・ またダイヤ作成やり直しになりそうなのでそのまま放置・・・

1編成ごとに時刻表を当てはめると列車余ったときに困るし 足りなくて列車追加すると団落ちですw  終着駅で列車を余らせる状態で落ち着いています このへんは見直したほうがいいかな?
複雑なダイヤ(本数の少ない貨物列車のための筋をあけておくとか・・・)が組めなくなりますね でも、そこまで制御できる人いる?
このあたりも難しいところ 同じ路線を2つ作ってダイヤを変えればいいと思いますが・・・

1day=編成数で割り切れるようにしたほうがいいですね  ただ限界まで本数増やすときにはこれが邪魔になるので困ったものです。

他の路線と運行間隔を合わせる ボタンとかいいかも。 これあれば1day統一しなくておkか・・・ 普通と急行がうまく運行したからこれで1dayが統一されてるのかな


とりあえず目標一応達成ですかね。 おめでとうございます  列車が時間通りちゃんと動くなら連結とかもできる(ここではもうやめよう)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/20 23:32
途中下車後、どんどん開発が進んでいますね :o
やっぱり、乗車中はいろいろと混乱させてましたねorz
引き続き見守っております。時々出てきてややこしいこと言ってますが、
応援してるつもりなんですー :-[がんばってください~~

自分の幻想を追及すべく、当初イメージした時刻表(管理に特化)を添付しておきます。
内容について簡単に説明しますと、

開いた時点で記録を開始し、閉じると忘れる。編成が駅に到着する度に、駅到着時刻を
更新記録させている。

少編成数でも評価ができるように最大値、最小値を継続して更新記録。
ここでは、異常値(前駅発車が遅れている場合)は、反映しない処理も想定できるが、目に
見えない処理は混乱の原因で、問題も隠蔽してしまいそう。

[ 駅到着時刻-始発時刻 ]を表示。例では、さらに区間計画を差し引きし、停車時間の
目安を示している。

次の周期までの時間と、列車の位置、状態を背景色で示す(手動更新でいいはず)。
停滞中の車両に飛べば、他の編成が干渉している現場を確認できる。
停車が長くなりそうなら即発車。調整時の混乱を緩和。取り扱い注意。

(ここまで時刻表の話、時刻表評価の例はこの投稿の最後に移動しました)

ひとつ思いついたことがあります。周期と発車時刻の間に新たな考え方を
という話もあったのでひとつ語らせてください。
(多分TTTの発想段階の話。なんだか、忘れられている気がする。。)

◆ 干渉と周期
 干渉は、編成同士が、同経路に進入する、平面交差する、信号によって思わぬ関係
になるなどして、生じる遅れのことを指すこととします。

 干渉は、周期との間でちょっと面白い働きをします。AB駅を結ぶ単線を準備します。
 AB駅の両方から車両を同時に発車させ、ぶつかるところにすれ違い線を作る。一方が
遅れても、すれ違い線で干渉して周期を修復する。これが従来の周期調整術の代表例です。
 実際に作ると明らかですが、すれ違い線を均衡位置からはずして、周期を長くできます。
信号による干渉を大きくすることで、周期を伸ばしていくことが出来るわけです。

 もし、信号による干渉がなかったら、駅の停車時刻を調整して、正面衝突を起こさない
仕組みが必要になります。逆に言えば、正面衝突しない路線設計になった段階で、停車
時刻を管理するなどの新しい仕組みが必要になるということ。

 TTTは、干渉を停車時間に置き換えて管理する方法ともいえそうなので、調整上、干渉
の考え方が使えるはず...。
 
◆ 干渉を測定して時刻に反映させる
 計測指標・表示指標が何かは別問題として、調整を行うにあたっては、編成間の干渉
を見る局面があるだろうと考えています。
 これを計算で求めるのは、なんだか難しい。時間、列車位置、経路が影響し、1対1の
関係で生じているとは限らない。羊さんとか、不安定要素もある。

 しかし、ダイヤグラムの交差部分の時間か座標を見れば発生箇所もわかりますし、解消点と
均衡(非干渉点)のズレから大きさもわかります。もっと原始的に、実際値と理論値を比較する
方法もあります。運行経路の測定がネックですが、ここをクリアできれば、単純な数式で求め
ることができるはず。。干渉相手が遅れる場合もあるということと、進入順を変化させて干渉
を避ける選択肢もある、これも面倒くさい。

 アシスタントが優秀すぎれば、悩みながら調整する楽しさを奪ってしまわないかという
別の問題もあるので、そこはほどほどに。

◆ 時系列アプローチ(駅の並べ替えについての考察)
 非常に単純で扱いやすい整列規則。例えば、ABCという路線に、ADCを加えるとする。
時刻表の時系列を守るには、追加点DはAの後、Cの前に並ぶことになる。
 では、ABDC、ADBCのどちらがいいか。
 全体が時系列ならば、支配軸は時間である。B郡、D郡の計画時間を比べて、より小さい
(最低値か平均値)ほうを、前に配置するのが自然。
 ここで、共通していないBとDの行はXとして合計してしまうことも考えられる。ただし、
Dが複数駅の集合だった時に、個別に時刻を修正する場合の扱いが問題になる。

 時系列アプローチは、距離や座標を加味していないので、ABDCと並べたのに、座標上
ABの間あたりにDがあるなんてことも。また、ABCとADの配列を考える場合にも、一律に
時系列に並べていいのかという問題が出てきます。単純な並び替えには向いているはず。

◆ 通過か経路外か
 干渉の話と関係がありますが、通過か経路外かについて、ひとつ解決策として提案します。
 分岐点駅と合流点との間の路線距離を判断基準に加えてはどうでしょうか。

◆(話を戻して...)例示路線の評価
 添付した時刻表をご覧になりながら、お読み下さいませ。

(更新凹) 始点発車時刻を過ぎたというのに、A環状4号は何をしている?
 前回は、A駅には20早く到着し、問題なく運行していたというのに!!
(ジャンプ凹) D駅で遅れて、普通列車を突っついてますw
 ここらに追い越し付けます?B駅が始発駅なら問題なさそうっすけど。

しかし、E路線増発前にはなかった、C駅、D駅での遅れも問題だ。
あ、最近、2周に1回遅れてる気がしてたっす。んじゃ、C駅着を安定する方向で、
E路線と合わせて調整っすね。

じゃあ、B駅停車中の環状2号を即発車させて影響を...(即発車凹)
早まるな、もっと計画的に!!
だって、この表にはそんな機能ないじゃないですかー

...となります
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/21 05:15
自分の返信を見返しましたが、睡眠が足りていないとつまらない事ばかり書いてしまっていますね、私。
皆様のお目汚し、申し訳ない。うざい事書いてますが、どうかスルーでお願いします。

gonyoさん、ディープな開発の実践ありがとうございます。また、o_oさん、お帰りなさいませ。
皆様お時間の許す範囲と興味の促す範囲でどうか今後ともお付き合い頂ければと。

現状、バグ潰しが優先ですが、gonyoさん、o_oさんから頂いた問題や改善案、および私の頭の中の懸念点などについて、私なりにまず項目挙げをしてみます。

運行全般: (主に私の懸念点)

時刻表表示: (主にo_oさんのイメージおよびsima0222さんのご提案より)

時刻表編集とアシタント: (主にgonyoさんの経験から)

全般:

gonyoさんから提示されている、ダイヤ作成上の課題などは別で整理しましょう。
(普通と優等での必要編成数の違いの吸収など)
おそらくTTTに限らず、一般の鉄道でも編成仕業計画などで苦労するところでしょうし。
(ちなみに Simutrans + TTTの辛いのは、運行計画と仕業計画を別に作れないところだと思っています。)

またo_oさんから頂いている発展的テーマ、ならびに時刻表上の駅順序問題なども別で整理させてください。
トピック名: 時刻表編集の方法 (値を修正した時の挙動仕様)
投稿者: wackdone さんの発言 2012/07/21 06:20
gonyoさんから、わかりにくいとご指摘のあった、時刻表編集時の各値の編集についてです。
試みとして言葉に色をつけます。できるだけ表の色に合わせるつもりで。
   計画区間時間:  前駅から今駅までの発→発時間。時刻表では、駅名の行の1段上に表示されます。
   計画駅発時刻:  駅を発車する時刻。駅名の行に表示されます。(編集される前は黒色です)
   運行周期時間:  (始点で発時刻を絶対時間で制御する時の) 運行周期の時間(周波数の逆数)です。
また現在の時刻表には表示はされていませんが概念として次のものがあります。
   全体計画時間: 全ての区間の区間時間の総和です。列車はこの時間をかけてスケジュールを一周します。

表のセルの値を編集した時の動作
ある駅の発時刻、あるいは駅間の区間時間の欄を選び、その値を変更するとどうなるのか。現状を説明します。
(図示するのがいいのでしょうが、ちょっと待って。頭の中にあっても手が追い付かないorz)
(「最後の区間時間」とは、スケジュール上の最後の駅から最初の駅までに設定される計画時間です。つまり、スケジュール編集画面ではこの値は最初の駅の欄に[]に挟まれて表示されます。)

このような仕様にしたのは、プログラム上での値の扱いのルールをシンプルするためですが、
一応は以下のような使い方を想定してです。

ダイヤ作成過程での編集手順例

(1) 計画全体時間が定まるまでの間:  駅間の計画時間 (区間時間) をそれぞれ設定、変更していきます。
  これにつられて、各駅の発時刻が変化し、また全体の計画時間和が増減します。

(2) 全体時間に目処が経った後の調整:  退避などの微調整は、各駅の発時刻を変更します。
  この駅での待機時間だけが変化し、全体計画時間和はそのままです。

(?) 周期は……これといった方法論をまだ見つけられていません。
ダイヤ作成の手順というのは様々考えられるので、皆さんの考えた方法で使いにくいようであればご指摘ください。

派生1. 途中に停車駅が増えた場合 (既存路線の途中に駅が新設、あるいは優等の停車駅が追加)
  この場合、ある既存の駅間に、新駅が挿入され、区間時間0となります。
  A-C のあいだに B が挿入されたとして、A-B-C になる。で A-B の間の時間が0。Bの時刻はAと同じ値が表示されます。
  (これまでの全体計画時間和をそのままなら) B の時刻だけを変更すれば、A-B間、B-C間の区間時間が調整されます。

派生2. 列車の総行程が延びた場合 (路線の延伸などで終点(折り返し点)が遠くなった)
  この場合、(往復路線だとして) 時刻表の中央部分に追加された区間が表示されます。(いずれも区間時間0)
  この追加された各駅間の区間時間を設定していってください。
   つられて、復路の各駅の発時刻が繰り下げられていきます。
  ただし「運行周期」は自動では変化しないので、これは手動かアシスタントの合計計算で設定しなおしてください。
   (逆に、新たな運行周期を先に設定して、最終区間で増えてしまった分を新区間に割り振っていくという手も使えますが、これをやるには復路の全駅の発時刻を手で変更していくことになります。面倒です。)

TODO: 用語統一

トピック名: アシスタント頑張れ
投稿者: wackdone さんの発言 2012/07/21 07:20
gonyoさんから頂いたアシスタントの使いにくさについてです。

距離/速度による見積の精度が悪い:
できるだけ精度を上げる方法を考えてはみましたが、これを突き詰めると実際に走らせるのと同じ計算をすることになります。
(でも実際に走らせて計測するには、空っぽの線路(他の列車がいない)じゃないと、というのもgonyoさんの指摘どおり)

考え方を変えてみました。目標とする評定速度を指定して計測するというのはどうでしょう?

案1: 編成の最高速度に対する割合い (0超〜100%のあいだ) を指定する。
  例えば、最高速度110km/hの編成で、70%を指定すれば、77km/hの速度で走行した場合を計算します。

案2: 評定速度の値をそのまま入力する。(0超〜編成最高速度のあいだ) を指定する。
  そのままです。入力された速度で走行した場合を計算します。

アシスタント画面の項目はできる限り少なくしたい (面積的にも簡潔さ維持のためにも) ので、どちらかにしたい。
手間を減らすには案1で、デフォルトで 80% とかが入っているというのはいかがでしょう。
路線(編成)を選びなおしても、割合いは変化させないでおいて。
デフォルトがどんな値がいいのかは、世の中の一般論や皆さんの経験によって考えたいです。

また問題としては、「全ての区間で均一な評定速度を想定する」ことでしょうか。良質の線区から低質の線区へ乗り入れる列車では困りそう。過疎線区と過密線区をわたり歩く列車も同じく。
(見積りをコピーせずに、実績時間の欄を参考に計画を編集していくのであれば、何度でも見積をりなおせますが)


トピック名: 複数の路線間での情報の交換・共有
投稿者: wackdone さんの発言 2012/07/21 07:37
まず最初に「路線」という言葉が適切かどうか。
ちなみに、Simutransでは既に line = 路線 と訳していますので、変えるつもりはありません。
私、鉄道用語に明るくないので、皆さんに指導して欲しいのですが、
路線:  広義ではさまざまですが、列車の運行ではなく線区の集合、始終点の定まった一つの線路区間を指すことの方が多いですよね?
もとのSimutransでは、緩急のクラスづけとか途中折り返しとか、面倒なことは考えずに「同一の運行スケジュールを持つ列車(乗り物)の集合」ということでいったのでしょうが、
今のように複雑な運行をさせていく状態だと路線という言葉が誤解を産みそうなのが気 になっています。
(まあ現実にも「京浜東北線」は路線と言えるのか?「山手線」は?(山手貨物線+東北本線+東海道本線...)うんぬん  とかあるようですが)

というわけで、「路線」という言葉は今のままでいくとして、TTT では時刻表で並べて見てみたい路線の集合である「何か」を概念的に取り扱いたいと思います。
(実際にプログラム上でそういうオブジェクトを持つかどうかは別の話。あくまで議論のための概念定義)
いい言葉が思いつかないので仮に「路群」としておきます。

時刻表表示の使い方は様々ですが、主にこの「路群」を俯瞰できるように改善していきたいと思います。
あるいはこの路群は時刻表に表示した時に一時的に決まるもので、「その時、並べて見たいもの」=「路群」としてもいいです。

言葉を仮に定めたところで、以下のお題

時刻表での駅の並べ方に中心を設ける
駅の並べ方や停車駅の判定について、sima0222さんの提案の方法です。
路群の中から主となる路線を選んで、そこをpivot(軸足のようなもの) に、路群内の他の路線を表示させていくというもの。
使う時は「本線上の全線全駅各駅停車」という路線があれば、それをpivotにするのが基本となりそうですね。これを本線基準路線とでも呼びましょうか。
たまに支線系統を選んで表示しなおせたりするといいかも。

しかし本線基準路線が無かったら? (たとえば東京−神戸な東海道本線)
今だと次の方法でしのげます。
  (1) 実際に運行には使わなくても路線を作って
  (2) 実際に走らせないけど(車庫止め) 編成を作って
  (3)  (2) に (1) を適用
車庫止め編成をちゃんと表示できるようにする必要はありますが、一応はできる。
本当は「編成が無くても何らかの方法で時刻表に表示できる」ようになっていればいいのでしょうが。
プログラム上は、ghost編成を作ればいいのだろうけど、すぐに出来るか、全ての点で不整合が生じないか、まともにするにはちょっと時間がかかりそうです。

なお、妄想上はこの「本線基準路線」を半自動で生成するという考えもありますが、きっと破綻するので無理です。
余談続きですが、TTTは本質的に人間側の意図を優先させるものですので、「全自動」は無理だし「半自動」も難しい。
時刻表に登場するのを「ウィザード」ではなく「アシスタント」にしたのも、そういう面からの意識です。
(MSに権利関係で訴えられるのが嫌だった、という話もあるような無いようなw ま、そんなことあるわけないか)

路線の間で運行周期を揃える
gonyoさんのコメントからです。この場合は、「強い関係づけがされている路線同士」という路群であり、「今そこに表示している」という曖昧な路群ではいけません。
これも上の話と比較的同じように、路群の中で主路線を選べればいいのかなと考えています。
ただしこの場合は、運用しない本線基準路線ではだめ。実際に特定の区間を運行する普通路線などを選ぶ必要があります。
  (1) 主路線を決定する
  (2) そこに揃えたい従路線をアシスタントに表示して
  (3) 「運行周期を合わせる」ボタンでその場だけ設定
  (4) 従路線の表内の値が変更されるので、「時刻表を改定」
という手順でしょうか。

自動で継続的に揃えさせようとすると、目に見えにくいトラブルがありそうな気がしています。
またその場合は 「B路線は A路線に従属である」という路群とその中の関係を、プログラム上で常に維持しなければならなくなります。
(こういうのやると、「じゃ路線なくなった時どうすんの?」「それが主路線だったら?」と異常系ばかり増えて、少なくともプログラマとして非常に楽しくなくなる)
しかし例えばgonyoさんの経験だと以下のようなニーズもあるのかな?
  ダイヤ開発中は頻繁に周期を変更する
  その際、ある路線は変更しても、他の路線の変更をし忘れることがある、あるいは面倒が多い
  ので、自動的に追従してくれるといい
このような場合は、どちらかというと本格的に路群を導入して、「周期を変更する時は路群の編集画面で設定」とした方がいいでしょうね。
いずれにしても、ちょっと頭が痛いです。


散文になりましたが、適当にお付き合いいただければ。
トピック名: TTT-044
投稿者: wackdone さんの発言 2012/07/22 03:41
TTT-044をアップします。バイナリは↓からどうぞ。
  http://ux.getuploader.com/wackdone_simutrans/download/24/simuwin-wackdone-120722.zip

yoyoさんからご指摘いただいたバグの修正、だけで済ますつもりが潜伏していたバグの炙り出しと退治、
そして並行して結局、機能追加をしてしまいました。
主に上で書いていたような機能です。
最高速度の80%で計算させると、手元のある状況では実測値にものすごく近い値が算出されたので
ディレーティングして75%をデフォルトにしています。しかし種別や線形などによるのでなんとも。
また通過駅のある列車はどうも計算結果がおかしいように見えます。まだこれからですかね。

他の追加機能は画面を見ればだいたいわかると思います。(セルをCtrlクリックするのは気付かないかな)
もしくはCHANGELOG_TTT_ja.txtをごらんください。

また、後でサンプルデータとして私が pak128 で作りなおした簡単路線のデータを貼ります。
gonyoさんにならって、addon無しで作ってみました。
トピック名: サンプルデータ
投稿者: wackdone さんの発言 2012/07/22 07:09
すでにgonyoさんが立派なデータを作って公開してらっしゃいますが、私からは極単純なサンプルを。
TTTとpak128の最新 (アドオン一切なし) で作りました。別に特別なオブジェクトは使っていないつもりなので、pak128は最新でなくていいのかも。
既に大赤字なマップですから、ゲームとして楽しもうとは思わないでください。
あくまでTTTの動いている様子を見て、軽くいじってみる程度で。

画像一枚目:
以前に動画で紹介したのと同じようなシンプルな路線です。(128のデフォのホームなんで「面」は脳内補正してください)
  引き上げ   ===   A駅(4線)  ===  B駅 (2線) === C駅 (4線) === D駅 (3線)  === E駅 (2線)

画像二枚目:
この線区上に現在は二つの路線、急行と普通が設定されています。
(日本語入力できない環境だったので横文字になってるのはお許しを)
路線編集ウィンドウを開いて、(1)フィルタのところに"AE"と入れると (2)時刻表を表示するボタンが押せるようになりますので押してください。

続く。

トピック名: サンプルデータのイントロ(続き)
投稿者: wackdone さんの発言 2012/07/22 07:57
すでにTTTを使い慣れてきている方はスルーでお願いします。まずはデモ状態を見てもらうための画像だけ作りましたので。

画像03: 最初に開く時刻表ウィンドウはこんな感じ。
現在は、急行2編成、普通4編成が走行中です。
普通には既に TTT による定時運行の設定がされていますが、急行はフリーラン。
A駅手前の引き上げから出て、戻ってきてまたそこを出発するまで、丁度 1000ttになるように普通には設定されています。
その調整のために、C駅で上下とも退避時間が挿入されており、この時間を使ってフリーランな急行が追い越す場合もあります。

時刻表で見られる全ての情報を見るためには、赤でマークした下のほうのチェックを入れてください。
もしくは表の左上隅の部分を Ctrl+Shift+左クリックでも全部が開きます。
また、とりあえずぼうっと走行の様子を見てみるために、ウィンドウの上の方にある(添付画像ではこれも赤マーク)
「自動更新」もチェックしてください。

画像04: 表示オプションを全て有効にして、ウィンドウを広げるとこんな感じ。
スケジュール一周分が縦方向に展開されて、横に各列車が並びます。
スケジュールの最初の駅は、表の最上段と最下段の二箇所に出てくるので注意してください。

表の上の各セルは駅対列車の時間情報を出していますが、列車の現在位置に合わせてセルが色枠囲みされます。
  緑の枠: 列車が現在その区間を走行中です。途中駅通過の列車は通過駅の前後全てがマークされます。
  茶色の枠: 列車が現在その駅に停車中です。
また画像では例示がありませんが、走行区間がオレンジ色の枠になることもあります。
これは、その列車が信号待ちなどをしていることを示します。

「自動更新」を有効にしていると、(精度は悪いですが) このように各列車の進行状況を眺めることができます。
また自動更新が重いようであればこれを止めて、適度に「表示を更新」ボタンを押して使うこともできます。
なおこの先、時刻表を編集する時には、その間は更新が使えないのでご注意を。
時刻表の改定を完了させる前に表示を更新してしまうと、編集中の値が消えてしまいます。

画像05: 各駅と各列車の交点はこんな感じ。
左列が列車に対してユーザが設定する計画、右列が実際に列車が走行した時に計測した実績値。
上段がその駅に達して出発するまでの区間時間、下段がその区間時間を足していって出される「出発時刻」になります。
計画の方はどちらもセルを選択して、値を変更することが可能です。


今の段階では、とりあえずここまで。
とにかく触ってみるという人には、もうお分かりのことばかりだったかもしれません。

ちなみに、この状態 (普通は計画設定、急行はフリーラン)にして感じたこと。
ぼうっと時刻表を眺めていると、どこら変にどういう時間を差込んで退避させるかなんとなくイメージが湧いてきます。
また、急行は何編成でまわすのがいいのか、などもなんとなく。(今の雰囲気見てると3編成にしたくなりそうなんだよな)
ただ実際に詰めようとすると、gonyoさんが言っていたようにいろいろと細かい部分で苦しむのでしょうが。

この単純サンプルだけで実験できそうなこと:
  - 急行追い抜きの運行時間設定: C駅にスムーズに入線してそのまま普通より先に出発できるようにする
  - D駅で途中折り返しの普通を設定: 中線折り返しにするか、中線は急行通過用に空けておくか考えどころ
    (折り返しに外線使うのなら、渡りが足りてないですね)
  - 急行、快速、D折り返し普通の 3本だてなどミックス
  - 運行周期を揃えないで何かできないか
やっぱり、一本の列車設定と、編成の仕業は分離できて欲しくなりそうだなあ。ますますややこしくなるけど。

なお信号などは気分で適当に建てただけですので、目的に合わせて設備改善する必要があります。
また今のままでは旅客が発生しないので、公共事業にお願いする必要もあります。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: yoyo さんの発言 2012/07/23 21:56
044のバグっぽいもの

   <1>
   適当に3つくらい駅を作って1つ路線を作って列車を走らせます。(tttに関する設定はしなくてもよい。)
   その後、時刻表を表示してautorefreshをONにします。
   そして列車の「車庫へ」を押し、車庫に入るのを待ちます。
   車庫に入ったら、その編成を売却するか「すべて引退」で消します。
   すると
   FATAL ERROR: vector_tpl<T>::[]
   class timetable_convoiinfo_t *: index out of bounds: 1 not in 0..0
   と表示され落ちます。

   <2>
   路線管理で番号部分に何も入力していなくても番号が振られる。(仕様?)

以上です。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/24 00:02
yoyoさん、いつもバグ出しありがとうございます。

<1> 「すべて引退」など編成が消滅すると、FATAL ERROR
編成がなくなる系のチェックが甘かったですね。潰します。

<2> 番号部分に何も入れなっかった場合の動作
現状「仕様」です。というか迷いました。
番号部分にうっかり何も入れなくて、全編成に同じ名前がつくと嫌かなと思いまして。
ただ、あえて「全編成同じ名前」にしたいというニーズもあるのかもしれませんね。
さて、どちらにしましょう。
ちなみにyoyoさんは「同じ名前にしたくて」意識して番号部分を空にされたのでしょうか?
また、他の方々はいかがでしょうか?

バグ修正はしばらくお待ちください。
トピック名: TTT-045
投稿者: wackdone さんの発言 2012/07/24 01:30
TTTの最新をアップします。全部盛りバイナリは↓です。
http://ux.getuploader.com/wackdone_simutrans/download/27/simuwin-wackdone-120724.zip
(これまでから、exeとtextのあるディレクトリが1階層下がってますのでご注意ください)

変更点:
  * (yoyoさん指摘) 編成が消滅した後の時刻表の更新でクラッシュする

編成を売却、引退などで消滅させた場合、ラベルを白文字、値を全て消して、時刻表の列は残しておきます。
「再構成」で消えます。(時刻表を見ていて突然消えたらびっくりしそうなので「引退した」ことがわかるようにしてみました)

注意: この後のバイナリですが、RRCと MIPの最新があたっています。
  MIP: NO_LOAD_BEYOND_DEPOT と SMART_GO_HOME_DEPOT(+STEP_BACK) が有効になっています。
       特に車庫行き編成への積載がオリジナルから変わっていますのでご注意ください。
  RRC: この版から、特に指定をしなければ RRC のパラメータがセーブファイルに入らないようにしました。
        RRCを積極的に使用している方はご注意ください。simuconf.tabに書くことでフォローはできます。
        (詳細は、RRCの方のトピックをご参照ください)

残課題:
  - 安定性向上 (内部では表示スレッドと時刻表モデルの側との干渉を整理しなければならない)
  - o_oさんから頂いている改善案の吟味、実装 (あとでo_oさん宛て返事書きます。もうちょっと待って)
  - 同じくo_oさんからですが 「今すぐ走り出せ」ボタン
    (一般化すると、停車中であっても走行中であっても、スケジュールの次の項目へ進めとなる。
     これはTTTがなくても個人的には欲しかった機能。スケジュール編集を開かなくてよくなる == 列車が一旦停止しなくなる)
トピック名: TTT-046
投稿者: wackdone さんの発言 2012/07/24 19:23
TTTの最新版をアップします。バイナリは↓です。
http://ux.getuploader.com/wackdone_simutrans/download/28/simuwin-wackdone-120724a.zip

変更点:
  時刻表の値の修正について、操作性を改善した(つもり)

自分でしばらく使ってみて、時刻表編集の操作性があまりに酷くなっていることに気付きました(ぉぃ)
ごちゃごちゃと機能を追加しているうちに、いろいろと崩壊していたようです。これまで酷いものを使わせていてすみませんでした。
一応、改善したつもりです。また、操作によって路線の他の編成に値が伝わらなくなっていたのも修正しました。

一周時間: 「区間時間」表示を有効にすると上の方に出ます。「運行周期」とは別に、今の全ての駅間時間の合計です。
この値を編集すると「全ての駅間に均等に追加時間を挿入」
あるいは「今の駅間時間の比を維持したまま全体を伸ばす」
(それぞれ値を小さくした場合は逆の動作)をします。
他の路線に運行周期を揃えたい場合などに、その叩き台を作るのには役立つかもしれません。
(結局は、各駅間や各発時を修正ていく必要はありますが)

周期時間を変更した時:  ただ単に周期時間が変更されるだけにしました。これまでの機能は一周時間の変更の方で対応できると思います。

駅発時刻と駅間時間の変更: 「そこだけ変える」か「後をずらす」の両方をできるようにしました。
数値入力の右側のボタンを押し分けることで、
  「そこだけ」 == 前後の駅間時間を増減させて、駅出発時刻をその場だけ調整する
  「後をずらす」 == そこで変化した分だけ、以降の駅出発時刻が全部ずれていく
のそれぞれの操作をできるようにしました。

始点発時刻の変更: 最初の駅の出発時刻です。これの変更は、その列車にのみ有効です。
運行周期が設定されていれば、これによって列車間の時間間隔調整がされることになります。
運行周期が設定されていなければ、これはただ時刻表の上での表示時刻をずらす意味しかありません。


アシスタントの操作などとの連携がまだ充分にテストできていませんが、とりあえずお試しいただければと。
(いよいよドキュメントからの乖離が酷くなってきました。そろそろHOWTOを書くところから始めようかとも)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/24 23:10
俺の設定が悪いのかわからないが、今日の新バージョンを使おうとしたらできなかった。
それまではショートカットを作成して -singleuser -freeplayをつけていたんだが、いきなしだった。

シムトラのバージョンがあがったからなのだろうか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/24 23:43
kanedaiさん
こちらで試しに同様のショートカット (-singleuser -freeplayつき) を作って起動してみましたが
普通に起動します。
(最初に試した時はショートカットの内容を typoしていたので落ちましたが、治したら大丈夫)

切り分けとしては、
  * ショートカットでなく直接 exe を起動したらどうなるか
  * コマンドラインから上がるか上がらないか
あたりでしょうか。

あと、
>> シムトラのバージョンがあがったからなのだろうか?
というのは、何のバージョンのお話?
全部盛りのベースバージョン(元にしているSimutransのバージョン)であれば、上がっていません。r5788のままです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/07/25 00:07
機能いろいろ追加お疲れ様です。 まだ最新版使ってませんが 前優等運転のテストしたときに使った技紹介します。
機能が二重になってないでしょうかね。 

引用
退避駅での待機設定: これやり方わからないんですが 「区間時間」ボタン押して手動で退避駅の前の区間を長くしました。 駅の発車時間を遅くすると 次の駅以降そのままなんで困る。  「区間時間」をいじると後のほうも自動で動いてくれました。
 これ自分の書き込みです。

で、最新版が↓の機能追加ですよね。   前のバージョンでは駅の時刻表部分を変更すると「そこだけ変える」 、下のボタン押すと出てくる待機したい手前の駅と待機したい駅の「区間時間」を長くすることで「後をずらす」の設定が可能です。  要するに、駅間の設定時間を必要以上に長くすると早着になり駅での待機時間が長くなります。 私はこの方法で列車の追い抜きダイヤを作成しました。

で 今回の新機能 
駅発時刻と駅間時間の変更: : 「そこだけ変える」か「後をずらす」の両方をできるようにしました。
区間時間の設定と重なりますね。 二つも同じ機能いらないですよ^^   

難しいプログラム組みすぎて自分で扱い方わからなくなっちゃってません?  作っちゃった機能だけにどうしようか・・
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/07/25 00:18
こちらでも全部盛り120724が起動しません。コマンドがついていてもついていなくても。
環境 Win764bit
あと、120722でアシスタント内の「時刻表を適用」ボタンが効いてないように見えます。これ以降のバージョンで修正されていたらごめんなさい。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 00:34
もしかして、またzipがおかしな話になってますかね。
また一度、Windows側でzip作りなおして上げなおしてみました。
  http://ux.getuploader.com/wackdone_simutrans/download/29/simuwin-wackdone-120724z.zip
exeとtextのみです。

逆に、元の 120724a で上手くいっている人はいないのでしょうか?
(私の手元だけ、Winまで変なのか?)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 00:49
gonyoさん、
二つも同じ機能いらないのは私も最初そう思ってたので最初の仕様だったのですが、
(gonyoさんのように使ってもらうことを想定していた)
細かいこと言うと同じ機能じゃないんですよね。入れる数値が違います。

  後を全部ずらしたい、ということと、その場だけいじりたい、ということ
これと
  区間時間で値を入れる、ことと、駅の発時刻で値を入れる
ということ、問題として独立なんですね、一応。

まあ暗算すればいい話なのですが、一応、くどいまでに作ってみました。
かえって混乱を産むようだったら、元のように
  「後にずらしたけりゃ、区間時間で考えて入力してね」
  「その場だけ動かしたければ、発時刻で入力してね」
に戻すかもしれません。

今、「こういう風に操作してけば、だいたいダイヤできるよ」というのを自分でやったり、
gonyoさんの辿ったりしながら書いてみていってます。
この流れで、どっちかの操作へ(半ば強制的に)誘導できれば、シュリンクできるのですが。
(ダイヤ調整や、新規の路線を追加する状態への入り方によって様々になってしまうのですよね)

普通、急行、途中折り返し快速のミックスを作ろうとしていて、路線構成の成長パターンにもいろいろあるものだと気付いてしまいました。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/25 00:50
ショートカットではなくexeを直接では開きます。

ショートカットを使用すると読み込もうとして、読み込まずなにもかわらない><
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 00:56
参考までに、普通だけの路線に、同じ運行周期の急行を加えた場合の、この急行の時刻表作成手順を簡単に。(私のやってみたケース)
あらかじめ普通の退避設備はあったとして、さらにその退避駅で普通に余裕時分を入れておいた上で。
(1) アシスタントで、速度による見積り (普通より速め) をさせて下書きとしてコピー
(2) 一周時間を予定の周期時間の値に変更して、「等間隔に余裕を挿入」
(3) [ここちょっと面倒] 折り返し駅、および(表の最後になる) 始点駅の手前に余裕時分が寄るように、駅の時刻を適宜移動
(4) 周期と始点発時刻(普通よりちょい遅くなど) 設定して、時刻表改定

(2)と(3)は、あんまり上手くないかも。
(予定周期時間 − 急行の最短一周時間) / 2 を、始点と終点(折り返し点) のそれぞれに手で追加挿入した方が早いかもしれません。

このような感じで、以前にアップしたデータの上で急行に時間付けしてみたデータと、
時刻表の様子をここに貼ります。
(後者は、Chris駅の普通の出発時間を微妙に遅らせようとしている時に撮影したものです)

 引 = A = B = C = D = E
とあるうちの C が上り下りとも接続駅ですが、信号設置を不精しているので、ぎりぎり接続になっています。
特に戻り: E から急行が発車したものの、Dで出発しようとしている普通にひっかかると減速してしまい
  C への到着も大幅に遅れ、結果、A まで普通の先行を許す。
現実でもダイヤが乱れ出した時によくあるような光景ですが、結構シビアですね。

あとダイヤ作っていてやっぱり思いました。「走行時間」と「停車時間」を分けて扱いたいですね、主要駅では。
今でも経由点を作れば擬似的に近いことはできるのですが、それだけのために経由点を作るのはちょっと嫌かも。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 00:59
むむむ、exe直接なら起動できるとなると原因は zip の展開じゃないですね。
ものすごくベタな切り分けとして、ショートカットの中で何もオプション指定しなかったらどうなります?
exe で「ショートカットを作成」して、出来たショートカットを何もいじらずそのままダブルクリック。

(私、kanedaiさんのお名前ずっと間違えていたかも。本当にごめんなさい)

00:58追記:
あと「突然何も言わずに落ちる (起動できないと一緒)」の症状としては、
settings.xml が期待していない状態になっている可能性があります。
(このあたりは、Simutrans オリジナル自体もけっこう怪しい)
マイドキュメントの Simutrans の中や、singleuserならゲームディレクトリの中の
settings.xml を一時的に別の名前に変えておくなどして、起動してみたらどうなりますか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 01:08
sima0222さん
120724a で試したところは「時刻表が更新されました」なんてメッセージつきで更新されましたので、
今は治っていると思います。過去の見逃しすみませんでした。
もしこのメッセージが出てこないようだったら、更新されていませんのでバグです。
まだ残っているようでしたらご指摘ください。

追記:(重要)
アシスタントに関係なく、変更した数値の種類によっては「時刻表を適用」や「時刻表を改定」を
押しても効果がない、押せなくなっているなどの症状が出ます。
次のバージョンまでには治しますが、とりあえずの対処法としては
  * 嘘でもいいから、運行周期を一度設定する、あるいは違う値にする (設定ボタンを押さないとだめ)
  * すぐに戻す (値を元に戻してまた設定ボタン)
これで「時刻表を改定」が押せるようになります。
ご面倒をおかけしてすみませんが、対応までいましばらくお待ちください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/25 01:14
切り分けしなかったら大丈夫でした。
 -singleuserがなんかひっかっかってるみたいです。
なんでだろ?
 -freeplayは大丈夫なのに・・・。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 01:22
う、すみません、「切り分け」というのは一部のエンジニアの使う言葉で「問題の切り分け」というところから来る言葉の先の省略でした。
(どこに問題の根本原因があるのか調べるために、Aだったら起きるけどBだったら起きない、という状態を作りたい。
この状態を作り出すために試すこと、みたいな感じ)

-singleuserが邪魔をするということは、exeの置かれたディレクトリに何かあるってことですね。
私の経験からの最有力候補は上述の settings.xml です。

あ、一つ思い出した。RRCの側が変化したせいで、settings.xmlを消さないといけなくなっているかもしれません。
どうしようかな。。。
手元のsettings.xmlが消えては困るという方がいらしたら言ってください。救済策は作れます。
消えてもそんなに問題ないという方は、settings.xmlを消してから起動してみてください。
お手数をおかけしてすみません。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/25 01:33
なんかよくわかんない言葉つかったのは失礼しました。

settings.xmlを消したら、開きました。
これがないとこまることってあるんですか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 01:47
いえいえ私が内輪言葉みたいなのを半端に使うからいけないのです。
まあ言葉というものは擦り合わせていくものでしょうから、少しずつでも説明加えていくように致しますし、意味不明な言葉があったら突っ込んでください。

settings.xml は、大雑把に言って、新規マップを作る時などの設定、「高度の設定」などの中で入れた個々人の好みのパラメータを残しています。
あと普通に使っていて一番大きいのは言語かな。
毎回入れなおすのが面倒ということで無ければ、消えてしまってもそれ程困りません。
(二度とSimutansが使えなくなる、なんていう情報は入っていませんので)

私は個人的には実験用マップを作る時のパラメータが毎回消えてしまうのは嫌だったり するのですが。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/25 02:22
これとは別件かもしれませんけどsettings.xml を移動さして起動さして
セーブデータを読み込んだら

FAITAL ERROR: loadsave_t::rdwr_str()
string longer(4913)than allowed size(1024)
PRESS ANY KEY

と出てきたんですがどういう意味なんでしょうか?
初心者的しつもんですいません
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 02:30
kanedaiさん、いえいえ初心者的どころか大事な指摘です。

>> FAITAL ERROR: loadsave_t::rdwr_str()
>> string longer(4913)than allowed size(1024)
>> PRESS ANY KEY

こういう「FATAL ERROR」で出るのは、バグが致命的な不整合によるクラッシュです。
ただしこの場合、TTTのバグかどうか確かではありません。(今の状況だと、たいてい間接的にでもTTTが絡んでいますが)

簡単に言うと、これ、セーブデータが壊れていると言われています。
あるいは壊れているように見えるというやつです。
以下の各点を確認させていただけませんか?
確認1: 起動したバージョンは 全部盛りですか? それともオリジナルとか、トラディショナル・ブレンドとか?
確認2: セーブデータを作ったのは、過去の全部盛りですか? それとも別のバージョン?
一応、過去の全部盛りで作ったデータも手元では読み込めているように見えるのですが、
どこか不完全さがあるのかもしれません。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/25 02:49
自分でビルドできないんで、全部盛りをずっと使わしてもらってます。
セーブデータも過去の全部盛りです。
7/22バージョンでは開けたんですが(汗
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 02:51
おそらく問題が掴めたと思います。
RRCの側の仕様変更が影響しているようです。
この問題を修正したはずのバイナリを作りました。
http://ux.getuploader.com/wackdone_simutrans/download/30/simuwin-wackdone-120725.zip

ぶっつけでテストして頂くことになってしまうのですが、お願いできませんか?
私の手元でも並行してテストしてみます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/25 03:50
早速ダウンロードしてsettings.xmlをもどして使ってみたんですが、ちゃんと起動しました。
こんな夜中にありがとうございます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/25 04:04
いえいえ、試していただく方がいる限り、ぎりぎりまで頑張りたいのがプログラマってものですから :)
ただし、眠くなるとミスが増えるので、ギブアップ&翌日持ち越しになることもあります。
その場合はゆっくりお待ちください。

余談
こんないい加減なコードとバイナリ提供をしておりますが、一応は場末のプロのソフト&ハード屋だったりします^^;
トータルプロの仕事としては許されないような状態で提供してしまい申し訳ありません が、
フリーウェアということに甘えて、多くのケースのテストを皆様に頼ってしまっております。
そのかわり、低コスト、短時間で提供されるということでお許しください。

実際、製品開発の現場では、テストのために割かれるコストと時間がかなりの部分を占めます。
(下手をすると設計や実装よりも喰ってしまうケースもあります。)
フリーウェアの良いのは「これで困っている人がいないのなら、それで良し」という形で
「ユーザを想定しきれないテスト」をしないで済むことかもしれません。

また、私事ながら立場や業態の変化によって、エンドユーザからの声が届きにくい場所に来ております。
ここでは皆様の声を直接聞かせて頂けるため、あらためて初心に帰った気持ちで頑張ることが出来ております。
あらためまして、ここまでの開発を支えてくださったコミュニティの皆様に感謝いたします。


「ちょっと不安定すぎるんじゃないの?」と思ったら、たまには「お前、プロだろ?」とつっこみ入れてやってください:-)
トピック名: TTT-047
投稿者: wackdone さんの発言 2012/07/25 04:21
TTT最新版パッチをアップします。バイナリは↓です。
http://ux.getuploader.com/wackdone_simutrans/download/32/simuwin-wackdone-120725a.zip

変更点:
  * 時刻表の値を変更しても「時刻表を改定」ボタンが押せない問題を治した(つもり)

またバイナリの方では、MIPのSMART_GO_HOME_DEPOTにあった不具合の解決も含まれています。
トピック名: Simutrans経済とTTT
投稿者: wackdone さんの発言 2012/07/25 04:33
# o_oさんやgonyoさんの案に応えきれていないところですが、もうちょっと待ってください。

かつて「最小の設備で最大の運用効率」と言いましたが、もう少し広く、
「TTTを用いると、利益を増大させられるのか?」について考えてみます。

前提条件: (最新版において間違いがあるようでしたら指摘してください)
Simutransでは、以下のようなところで費用がかかります。
逆に言えば、以下のようなところでは費用はかかりません。
実際の世界では、列車がずっと停車したままだろうと、自然損耗がありますのでそれを回復するコストがどこかでかかります。
(車庫にずっと眠っていたままの車両であれば、復活運転のためには復元費用がかかるというのもその例ですね)
OpenTTDなんかでは、この点はよりリアルで、乗り物は存在しているだけで毎月維持費が計上されます。
また、111.3あたりから増えた経済要素として以下のものがあります。
多くの輸送需要がある区間は、できるだけ速く、早く結んだ方が売上が向上します。


Simutransの経済モデルから得られる単純な結論:
このようなSimutransの経済から導き出されるのは、以下のようなことです。
[li]需要のあるところは、なるべく速く結べ: できれば全ての需要をと言いたいところですが、特に需要の多いところは乗り物の最大性能が出せる時間で運んだ方が利益が出ます。
[/li][/list]


TTTでは何をできるか:
相対的に速く結ぶ必要が無いのだったら、駅なり引き上げ線で止めておきましょう。
それによって必要編成数が増えたら購入費用がさらに発生しますが、いつかは運用コストと収益側で元をとって
資産の有効活用側にまわります。

退避のし過ぎは、スピードボーナスを悪化させますが、より大事な運行を優先させれば利益の大きい側で稼げますので
退避ばかりの列車もあっても大丈夫でしょう。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/28 13:16
路線を削除しようとおもって間違えて時刻表を表示を押したら落ちました。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/07/28 17:55
新MAPがやっと1年進み、旅客列車がちょこちょこ停止するようになって来ました。
待避線の導入や路線の再設計にあわせてTTTも導入してみたいと思っているところで す。...が
早速クラッシュしたので報告しておきます。

◆ 駅の並べ替えでクラッシュ
 クラッシュするセーブデータ(TTT-crs.save)と、それを元に時間を進めてクラッシュしなくなった
データ(TTT-nocrs.save)を添付しますのでご確認ください(120725a/Pak64)。
手順1) 路線名「P」で路線をフィルタリングして、時刻表に表示(4路線)
手順2)「P-豊田線」を選択して「表示を再構成」を押す
 こちらでは、crs.saveの方だけクラッシュします。路線設計にそんなに大きな違いはないと思うが...。

◆ setting.xml関係の不具合?(クラッシュあり)
 本家版と交互起動したりすると、こちらでもアイコンクリックしても起動しなかったり、新規MAPで
default.savを読み込んだ時に、おかしな数字が入ってしまったり、同じく、default.savのlength云々の
エラーが出てクラッシュしたりといろいろありました。
 同梱のconfig.settingが何か役に立つのかな?と思って見たけれど、バイナリ版には関係なさそう。

ここから先は、提案っぽい文章になってますけど、提案というよりかは、疑問に感じている点を素直に
ぶつけてみたいという感じなので、wackdoneさんや皆さんのお考えを聞かせていただければ^^

◆ 駅の並べ替えは?
 wackdoneさんの頭の中にどんな構想があるのか、どんな完成形になるか楽しみにしてはいるけれど、
現時刻表は、編成列と駅間行とで軸が制限されている以上、どんな路線の組み合わせでも使える万能な
並べ方は難しすぎて思いつかない。「用途によって使い分けてください」の案ならそこそこ浮かぶけど。
 ・駅の運用を見る:駅時刻表のように、特定の駅を通過・発車する列車の時刻を一覧できる形
 ・区間の運用も見る:特定位置を中心にして距離基準で配列させたダイヤグラムを作ってしまう

◆ 運行周期は必要か?
 全体運行時間の実績値が表示されて、使いやすくなりました。...が、それに伴って疑問が。
計画時間が守られていれば、同じように動かすことができるし、周期が安定しないなら危なくて使えない。
 パターン化には、シフト分の制御の方は必要になると思うのですが、全体計画時間という項目があるなら、
これを元にシフト分を安全に設定できるほうが使いやすい気がしますね。

◆ 干渉についての補足
 TTTは、想定外の干渉が発生しない状態で機能する仕組みなのに、干渉状態を一覧できるツールがないので
不便だなーと思って語っただけです。均衡云々はTTTに結びつけるためのオマケです^^;
 ・TTTに慣れるまでは、発車時刻のみの表示ではどれくらい安全に守れるのか見えにくい。
 ・慣れてきた後も、どこでどのくらいの干渉があるのかを示してもらえると、調整に役立つ。

 信号手前の速度軽減まで避けたい人もいれば、停車が入ろうが、時間さえ守っていれば、正常運行には変わり
ないと考える人もいると思います。どちらにしても、間隔を調整したりするのには有用な情報だと思う。
 アシスタントさんが正確な見積もり出して、発車時間まで割り出したりでは面白くないけれど、実際値の観察
手段の導入をご検討いただければなと。
 中継点の計測が出来るので、じっと見守っていればいいんですけど、長周期だと、最大値・最小値を全部確認
するのがちょっと大変なので :'(

◆ TTTのいいところ
 実のところ、速度を統一して、詰まっていてもそれなりの周期で流れる「やわらかいダイヤ」が好みですが、
でかくなりがちな駅面積の縮小を考えてホーム・倉庫最小化を進めるので、いつも短編成ばかりになってしまう。
 TTTで退避がスマートにできたらその分ホームを延ばして...と思ったものの、軌道に乗るまでは同等の設備が
ないとダメっぽいですね。車庫入れ禁止プレイヤーなので特に調整が大変ですw

 他にもTTTには期待してますよ。費用の少ない低速列車も使えば、万年赤字路線も減らせるだろうし、路線の
運用情報を集めるにも便利ですね。ダイヤグラムを見ながらの管理は需要もあるはず。
 gonyoさんのデータをお借りして、急行800周期、普通1200周期でパターン化してみました。久手駅に退避
設備が準備されていて、急行は100間隔なら好きな本数で運行できる設計になっていますね。
(ダイヤ線形を維持する為に停車時間を短く調整したので、PC負荷に応じた遅延発車分の調整が必要です...)
 必要な本数を美しく走らせられる。パターンダイヤのいいところ。ダイヤグラムなら、運用計画も立て易い。
(遅いヤツなら1時発で途中急行退避、早いヤツなら3時過ぎに発車させる感じかな?)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/29 18:05
kanedaiさん、o_oさん、いつもありがとうございます。
クラッシュの件、了解いたしました。
対応までもうしばらくお待ちくださるようお願いいたします。

kanedaiさんの
>> 路線を削除しようとおもって間違えて時刻表を表示を押したら落ちました。
は詳細がなんとも不明ですが「路線を選択していたところで時刻表ボタンを押したら落ちた」ということでよろしいですかね?
基本動作の一部なので、現象を再現でき次第対処します。

o_oさんから頂いた
>> 駅の並べ替えでクラッシュ
については頂いているデータで検証させて頂きます。丁寧なご報告、たいへん助かります。
>> settings.xml
これは、今の TTT および RRC がセーブデータや設定に一部手を加えてしまっているので
いかんともし難いところです。即効果のある対処法が見つかっていないため、今の段階では
  * バージョンを切り替える際は、settings.xmlを削除してください
  * TTT や RRC が本家に入ることを夢見ていてください
としか言えません。ごめんなさい。

いいのか悪いのか、ここまで来ると時刻表機能の程良いまとめ方をどこらへんに持っていくのか
楽しくも悩ましくもあるところですね。
o_oさんのかつての投稿にあったような「運用状況を見る画面」としての機能も整備したいところ。
今の時刻表は編集主体に若干、運用状況も見られるよう追加というところですので、
これを
  * モード替えにするのか
  * 表示オプション選択の追加などで対処するのか
考えていかなければというところです。

ここ数日、若干成長が止まってしまいましたが、どうぞゆっくりと成長にご期待いただければと存じます。
また個別のご提案内容については、再度、時間を作って返信させて頂きたく存じます。
とり急ぎ。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/07/29 18:19
また、詳細不足でしたね。
その路線に列車が存在しない状態で時刻表表示を押すとおちます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: wackdone さんの発言 2012/07/29 18:20
kanedaiさん、追加情報ありがとうございます。
「列車が所属していない路線」問題がまだ残っていたようですね。
調査して対応いたします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: gonyo さんの発言 2012/08/18 17:10
wackdoneさんいなくなちゃった?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/08/19 15:21
たしか前に8月になったらこれないとか言ってましたよ。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/08/27 16:21
お久しぶりです
wackdoneさんの近況はわかりませんが2点書きます。

1点目はバグです。回復アシスタントで「常に再計算」を利用している場合のことですが、始発駅が車両基地などたくさん停車場があるところだと同時刻発の列車ができて困っています。修正をお願いします。
2点目は計画アシスタントのステップ2のことで、「各駅間の見積り時刻をxの位で切り上げながらコピー」という機能がほしいです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/08/28 21:01
はじめまして,最近TTTを始めたのですが,毎回下のようなメッセージが表示されてSimutransが強制終了してしまいます。どのような意味なのでしょうか?

Assertion failed!

Program: ...
File: dings/roadsign.cc
Line: 285

Expression: zustand==0

For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts

(Press Retry to debug the application - JIT must be enabled)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/08/29 20:56
はじめまして、竹麻呂と申します。
普段はBattle Simutransをやっております。

今回、暇だったのでBattle Simutransのデータを流用してTTTを利用してダイヤを組んでみました。

かなりいい感じのものが作れますねこれ。
ただ、ダイヤが整うまでの調整が結構面倒くさい感じ…
まあ、現状の仕様を考えると仕方ないと思いますが。

データ等の詳細はBattle Simutransのフォーラムに書きました。こちらからアクセスしてください。 (http://bb2.atbb.jp/battlesimutrans/viewtopic.php?p=6805#6805)

T.TANAKAさん>どうも信号の方でエラーが出てる感じですね…
・どのような状況でエラーが出るのか
・使っているTTTのバージョン等
・ダウンロードしたそのまま+pakバニラ(=アドオン無し)なのかアドオンがあるのか
あたりの情報があるといいかと思います。
(といっても僕はプログラマでもなんでもないので僕に分かるかどうかは分かりません)

wackdoneさん>
とりあえずエラー報告をしようと思ったのですが、エラーがFATAL ERROR+エラー出たときにショートカットキー使ってた→エラーメッセージが分からない、という…
一応何があったか書くと、
・編成がすべて車庫に入っている路線で「時刻表を表示」を押すと落ちました。やっぱりこの辺が完全じゃないようですね…
役にも立たない情報かと思いますが、報告しておきます。
無理しないでくださいね。

あとなんかあった気もするけど忘れました。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/08/30 20:39
竹麻呂さん

信号のエラーですか・・・ TTTのバージョンは7/25の最新なやつなのですが・・・
アドオンは128氏の熊谷半島開発記17話(http://simutrans128.blog26.fc2.com/blog-entry-318.html)で公開されているセーブデータにはいっていたアドオンに,電車道(http://blog.goo.ne.jp/tmaster-h/c/1ab4070443835ba753b95d982b9f9837)に掲載されているアドオンをメールで配信していただいたもの(・・・だけだと思います)です。
たぶん鉄道信号は,日本語WIKIで481氏が公開されているJapan_railway_signals / 日本鉄道信号機セットと128氏のFAKE ATC signal / 擬似ATC信号機だと思います。
道路信号はわかりません。pakファイルを分解すればいいと思うのですが,ちょっとよく分からないので・・・

あと,このエラーはヘイトカットモード(CTRL+Uでもヘイトカットモードのボタンでも)をしたときに起こることが多いです。表示設定からやったときも同様です。

まあ,TTTの仕様かもしれないですね…
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/08/31 05:41
T.TAKAYAさん
7/25のバージョンというのはここではなくてアップローダーからexeファイルをDLしたということでよろしいですか?
ここに貼ってあるURLのexeファイルには、TTT以外にMIP,RRC,CWGが含まれています。
このうちCWGは信号関連の機能なので、そっちのエラーの可能性が高いですね。
エラーコードを見る限りおそらくアドオンは関係ないと思います。
僕もプログラマーではないのでなんとも言えませんが
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/08/31 18:57
sima0222さん

すみません、7/25のverというのは、このページに貼ってあるやつのことです。
全部盛りじゃないとやり方がよくわからなくて・・・
CWGのエラーだと、どうすれいいのですか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/08/31 19:03
T.TAKAYAさん>
たぶんobjとしての信号にエラーが出てるからやっぱりアドオンは関係ない感じのよ うな気がします…
で、「どうすればいいのですか?」とのことですが、どうもしようがありません。
同じ書き込みに添付ファイルでパッチファイルのみのデータがあるので、自分でビルドできる環境があるならTTTのみのexeを作ることができますが、通常ビルドできる環境なんてあるもんじゃありません。

まあ、バグは覚悟の上で定期的にセーブしてプレイしてくださいということで。
(僕が言うセリフじゃない気がする)

sima0222さん>
1点目はバグです。回復アシスタントで「常に再計算」を利用している場合のことですが、始発駅が車両基地などたくさん停車場があるところだと同時刻発の列車ができて困っています。修正をお願いします。
これに関しては、現在のTTTの仕様が、(「常に再計算」を利用している場合、)「到着時刻よりあとでもっとも適切な時刻」を探すようになっていて、同時刻発になっているかどうかをチェックしていないためです。
まあ、仕様として改善すべきとは思いますがね。

wackdoneさんがいませんがTTT本体の機能面とかでいくつか気になったとこ ろを
UI面
んーとりあえず制約の中で最大限頑張ったって感じですかね。機能を増やさないのであればとりあえず時刻表に関してはこんなもんかなーと。
時刻表の駅順序に関してはどうしようもないですよね。なんらかの形で設定できるといいんですけど…

ただ、アシスタントなんですが、説明の文章をヘルプに移してアシスタントの部分はボタンだけにするとかどうでしょうか。
そうすると高さ的になんとかタブをなくせるような気がする
あと、こんな感じの方がわかりやすいかなーと

・計画アシスタント
<(選択リスト1)>を<(0~500)>の単位に<(選択リスト2)>して[計画時刻に入力]\n想定実用速度は選択されている車両の最高速度の<(5~250)>%=<(1~2000)>km/h
選択リスト1:「選択された編成の実績値」「路線に所属する全編成の実績値の最小値」「路線に所属する全編成の実績値の最大値」「距離÷想定実用速度」
選択リスト2:「四捨五入」「切り上げ」「切り捨て」
切り上げに関してはsima0222さんからも意見がありましたね。

・運行アシスタント
ボタンの縦位置がそろっていると便利かなぁとか

・回復アシスタント
「常に再計算」は「回復」とは違う気がする・・・まあ仕方ないか

・路線管理
これは別ウィンドウで開くようにしてもいいような気がする

機能面
・起点駅でないと列車の計画時刻が変えられないので起点駅でなくても「時刻表の時刻を適用」みたいなことができるボタンがあると便利かなぁと

・路線群の話
路線群は結構面倒なような気もしますが、「路線群として登録」して、時刻表ウィンドウから路線群で開けるようにするとまあ使いやすくはなると思います。
ただ、機能として絶対的に必要というわけではないと思うんですよね。

・自動遅延
運転整理みたいなイメージですが、「ある列車が<(50~?)>tt以上遅延したら全列車の計画時刻を同じだけ後にずらす」みたいな機能があるといいようなよくないような
これに関しては、同じ路線でも急行だけ遅れられると迷惑なので路線群の機能を導入して路線群ごとに設定できるようにしないといけない感じ。

・遅延許容時間
路線(または路線群)ごとに「最大<(0~?)>ttまでの遅延は許容する」(始発駅での調整時ですね)みたいなのが設定できると便利かなと。たしか今は一律10%でしたっけ?

なんかまとまりのない文章ですが、勘弁して下さいorz
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/01 00:09
竹麻呂さん

そうなのですか・・・
なんか最近1分に2,3回以上同じエラーが出るようになりました。無視(I)というボタンを連打すればいいのですが,結構めんどくさいです。
ビルドできる環境なんてないと思いますし,まず,ビルドについても最近知ったくらいです。
この状況だとセーブも難しい感じです。
あとはwackdoneさんが戻ってくることを待つだけです。(というか,いつ戻ってくるんですか???)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/01 09:47
T.TAKAYAさん>
んーとなると
・セーブデータが壊れている
→新しくマップを作成してしばらくプレイしてみて、発生しないか?というのを調べてみるといいかと
・Simutransのログを見る
Simutransから右クリックで「ショートカットを作成」というのがあるので、それを押して、できたショートカットを右クリック。「プロパティ」を押して、「リンク先」の一番最後に
_-log_1_-debug_4
(アンダーバー(_)は半角スペースに置き換えて下さい)
を追加して、そのショートカットからSimutransを起動するとsimu.logというログファイルが作成されます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/01 21:11
>T.TAKAYAさん
zipファイルの中身が無いような

んー新規マップで問題ないってことはセーブデータがおかしいってことかな。
本家との互換性は一応あるはずなのですが若干アレなのかもしれない。

まぁといってもプログラマではないので(ry
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/09/02 01:31
んー新規マップで問題ないってことはセーブデータがおかしいってことかな。
本家との互換性は一応あるはずなのですが若干アレなのかもしれない。
もしかしたら本家111.3.1とこちらの互換性は怪しいかもしれません。
もしT.TAKAYAさんが111.3.1でセーブしたデータをこちらの方に持ち込 んだのであればそれが原因の可能性もありますが…
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/02 11:20
もしかしたら本家111.3.1とこちらの互換性は怪しいかもしれません。
もしT.TAKAYAさんが111.3.1でセーブしたデータをこちらの方に持ち込 んだのであればそれが原因の可能性もありますが…
こちらでは111.3.1のデータを持ってきてもエラーは出ませんでしたが(64)、TTTの開発のベースとなっているのは111.3.1より前なのでそれはありえると思います。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/02 12:08
もしかしたら本家111.3.1とこちらの互換性は怪しいかもしれません。
もしT.TAKAYAさんが111.3.1でセーブしたデータをこちらの方に持ち込 んだのであればそれが原因の可能性もありますが…
もってきたのは、111.3.1ではなく、110.0.1 r4359です。
前に128氏のセーブデータをいじってたときからSimutransのバージョンU Pはしていません。

あと、zipファイルの件は申し訳ありません。今日中にログファイルをあげる予定です。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/02 14:13
ご迷惑をおかけしてすみませんでした。
改めてログファイルを添付します。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/02 17:25
>T.TAKAYAさん

日本語フォーラム内に似たような報告がありますね。
TTTの互換性の問題というより、本家(110.0)のバグで正常にセーブできていないのかもしれません。
本家の最新版でエラーが発生しないかどうかも一応確認してみて下さい。

http://forum.japanese.simutrans.com/index.php?topic=443.0 (http://forum.japanese.simutrans.com/index.php?topic=443.0)
http://forum.japanese.simutrans.com/index.php?topic=470.0 (http://forum.japanese.simutrans.com/index.php?topic=470.0)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/02 17:40
o_oさん

111.3.1で確認をしたのですが、同じようなエラーは確認できませんでした。
110.1で1ヶ月近くやっていたときは、エラーはなく、このエラーはTTTをはじめてから起こったので、フォーラムの報告とは違うような気がします。
でも、フォーラムの方もまったく同じようなエラーなんですよね・・・

あと、ログファイルはどうでしょうか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/02 20:12
>111.3.1で確認をしたのですが、同じようなエラーは確認できませんでした。

むむむ、signalならまだしも、roadsignだからCWGも関係してないと予想したんだけど、
駄目でしたか。。

ログは...sound、pak関係がどっさりですね
うちで確認できるログと目立って違うのはこのあたり、というくらいで力になれそうにありません :-\

22986行他多数 Warning: convoi_t::laden_abschliessen():   convoi ((4146) JRC_700_Shinkansen) is broken => realign
24381行 ERROR: schedule_t::sscanf_schedule():   schedule has wrong type (0)! should have been 2.
24496行 Warning: wegbauer_t::intern_calc_route():   Too many steps (1>=max 1000000) in route (too long/complex)
24497行 Warning: wegbauer_t::intern_calc_route():   Too many steps (1>=max 1000000) in route (too long/complex)


wackdoneさんがいつ戻ってこられるかは、わかりません :'(
「8月ががっつりどっぷりの仕事になりそう」という記述だけがたよりです
http://forum.japanese.simutrans.com/index.php?topic=511.msg2585#msg2585
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/02 20:49
o_oさん

そうですか・・・
ログなんか見ても意味がわからないですし、なんせ分量が半端ないので・・・

もう、どうしましょう?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/02 21:16
>もう、どうしましょう?

savが壊れていないとすれば移行できる気がするわけで、
JRC_700_Shinkansenを別の車両に変更して、純正でない道路信号を取り除いた上で
セーブしたデータから移行できないか試してみる...かな

それでも駄目ならデータの移行はあきらめて、「わかるひと」を待つ ;)

TTTのみ当てたバイナリで試してみる手もあるのですが、古いバージョン(TTT-032)
しか公開されていないのでこれはおすすめできません、、。
http://ux.getuploader.com/wackdone_simutrans/ (http://ux.getuploader.com/wackdone_simutrans/)
本家のソースとパッチを入手すれば、ビルド環境がなくても眺めることはできるので、
「わかるひと」を目指してみるのもアリだと思いますw
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/02 22:15
savが壊れていないとすれば移行できる気がするわけで、
JRC_700_Shinkansenを別の車両に変更して、純正でない道路信号を取り除いた上で
セーブしたデータから移行できないか試してみる...かな
700系新幹線と道路信号(純正でない)を取り除くのですか・・・
私のmapでは,700系を57編成所有しているので,置き換えが大変そう :'(
ちなみに,700系はhttp://archive.forum.simutrans.com/topic/03990.0/index.htmlからダウンロードしています。
純正じゃない道路信号は何というやつかが分からないので,アドオンを全て添付しておきます(容量の関係でpakがすべて統合されています。PakHelperなどで分解してください)。できたらでいいので,置き換えるべきやつを教えてください。
とりあえずこれだけやって,だめだったら「わかる人」を待つことにします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/03 14:21
o_oさん>
むむむ、signalならまだしも、roadsignだからCWGも関係してないと予想したんだけど、
駄目でしたか。。
roadsignは「道路信号」ではなくてオブジェクトとしてのway上に置かれる標識・信号の類のオブジェクト名なのでそれは違うような気がします。

逆に、オブジェクトとしてのエラーが出ている以上アドオンは関係ないようななくないような
(もっとも、アドオンによってエラーが出ることもありますが)

「純正じゃない信号」というのは、デフォルトではない信号と言うことです。
デフォルトのpak128をダウンロードして、アドオンっぽいっておもうやつを削除すればええかと思います。

もっとも、僕も「わかる人」ではないんですけどね…
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/03 20:30
竹麻呂さん
「純正じゃない信号」というのは、デフォルトではない信号と言うことです。
デフォルトのpak128をダウンロードして、アドオンっぽいっておもうやつを削除すればええかと思います。
わかりました。でも,デフォじゃないやつも使っているので…(特に高速道路関係)
どうにかしてやっていきたいと思います。
それでもだめだったら・・・我慢します。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/03 22:04
原因になりそうだと予想しているのは、
 110.0のセーブと最新版と互換性が怪しい
 113以降のアドオンの受け継ぎ問題でobjが正常に動作していない
 特殊な設置が可能な信号か標識が機能衝突を起こしている
 TTT以外のパッチが悪さをしている
 TTTにバグがある
というところです。

アドオン込みで113.1で正常に動いているなら、113.1でセーブし直して、
それをTTTでロードで解決しないでしょうか。
解決しなければ、わかるひと待ち一択でしょうね...。

それと、聞いたところで力にはなれませんが、
強制終了時と無視連打で切り抜けられるのは、同じメッセージが表示される
のでしょうか?もしかしたら別々の問題?

>roadsignは「道路信号」ではなくてオブジェクトとしてのway上に置かれる標識・信号の類のオブジェクト名なのでそれは違うような気がします。
なるほど。ソース覗いたら、dings/roadsign.ccとdings/signal.ccに分かれていたので、
roadsign.ccのほうは、道路標識の表示と制御でもやってるのかな〜と ::)...
simutrans暦も短いですし、c++とか全然知らない上、目を通しただけという前提は
察してやって下さい :'(

>容量の関係でpakがすべて統合されています。PakHelperなどで分解してください
pacのListができないと思ったら容量1k未満だったでござる。。
標準のパックセットはおおよそ同じ日時で作成されているはずなので、
アドオンの見極めは日付を参考にするとやりやすいかもしれません。

純正の道路標識は、roadsign.all.pakでまとめられてるやつだけじゃないかな。
道路標識をひとつずつ撤去するのが無謀そうなら、諦めてアドオンだけ外して様子見。
700系は再pak可能か最新pakが入手できそうなら入れ替えしてみて下さい。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/03 22:41
o_oさん

>アドオン込みで113.1で正常に動いているなら、113.1でセーブし直して、
それをTTTでロードで解決しないでしょうか。

・・・無理でした :'(

>強制終了時と無視連打で切り抜けられるのは、同じメッセージが表示される
のでしょうか?もしかしたら別々の問題?

強制終了と無視連打の時のメッセージは同じです。

>pacのListができないと思ったら容量1k未満だったでござる。。

すみません。添付ファイルの制限が500GBなので、変な方法でやってしまいました。
できたらどうにかします。

>純正の道路標識は、roadsign.all.pakでまとめられてるやつだけじゃないかな。
道路標識をひとつずつ撤去するのが無謀そうなら、諦めてアドオンだけ外して様子見。
700系は再pak可能か最新pakが入手できそうなら入れ替えしてみて下さい。

道路標識のアドオンって、roadsign...pakみたいなやつですよね?
あと、700系はN700に変えたりしたいと思います。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/09/04 01:08
前にwackdoneさんに聞いてやったのは何のバグだったか覚えてないんですが、
一度、settings.xmlをどこかに移動、もしくは削除できるならしてみてください。

もしかしたら治るかもしれないです。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/04 07:32
最新版でセーブしなおしたデータもダメだったということなので、
CWGのパッチがdings/roadsign.ccに当たってるのを、今更ながら確認しました。
表示されているメッセージと修正箇所も一致するので、CWGのバグで間違いなさそうですね。
いろいろ遠回りさせてすいません。
問題になっている信号は、CWGのパッチに同梱されているドキュメントにヒントがあるかも。
地下表示にすると起こりやすいとのことなので、主に地下に設置している信号なのかな。

CWGのパッチを抜けばいけると思います。
あるいは、CWGを無視して起動できるオプションがあれば...。
Simutrans 日本語化・解説の開発/ビルド方法で解説されてるみたいなので、
興味があったらビルドに挑戦してみて下さい。
ライブラリを正規に入手できる場所もよくわからないので、自分は試してませんが :-\

http://japanese.simutrans.com/index.php?cmd=read&page=%B3%AB%C8%AF%2F%A5%D3%A5%EB%A5%C9%CA%FD%CB%A1 (http://japanese.simutrans.com/index.php?cmd=read&page=%B3%AB%C8%AF%2F%A5%D3%A5%EB%A5%C9%CA%FD%CB%A1)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/04 21:53
o_oさん

やっぱりCWGのバグでしたか・・・
ちなみに,ドキュメントで気になったのは,この文です。CWGは使ってないので,わかりませんが・・・
--------------------
= 使い方
--------------------
この機能の使用にはオブジェクト(pak)の追加が必要です。

== pak の作成と導入
timing_gate および block_gate の機能を持つ新たな roadsign の pak を
pakディレクトリに入れる必要があります。

pak の作り方は後述しますが、サンプルとして pak64 と pak128 用の
追加 pak (鉄道用のみ) を同梱しておきます。

  CWG_sample_gates_64.pak
  CWG_sample_gates_128.pak

どちらもそれぞれ pak64 と pak128 のオリジナル内にある private_way の
画像をそのまま使って、waygateにしたものです。
ゲーム上では見分けがつかなくなりますが、あくまでお試しですのでご容赦ください。
ツール上ではツールチップを読めば一応区別できます。
また建設した後は、情報ウィンドウを開けばすぐにわかります。

CWG_sample_gates_128.pakはpakファイルには入っていま せんでした。ってことは,このpakが入ってないのがバグの原因なのかも。
でも,同封されてなかったので(同封されていると書いてある),どうかはわかりません。

よく意味の分からない文章になってるかもしれませんが,ご了承ください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/04 22:25
kanedaiさん

前にwackdomeさんに聞かれてたバグは,
これとは別件かもしれませんけどsettings.xml を移動さして起動さして
セーブデータを読み込んだら

FAITAL ERROR: loadsave_t::rdwr_str()
string longer(4913)than allowed size(1024)
PRESS ANY KEY

と出てきたんですがどういう意味なんでしょうか?
だと思います。
早速settings.xmlを別の場所に移動させたのですが,同じメッセージが出てしまいました・・・
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/09/05 12:54
全部入りですよね。
一応確認ですけど
一番新しいの使われてます?

最新に変わってから自分はエラー出てないので。。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/05 19:27
全部入りですよね。
一応確認ですけど
一番新しいの使われてます?
はい。このフォーラムで一番新しいやつの全部盛りです。

トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/05 22:52
CWGのアドオン(pak)は、自分も追加してないので、そこは大丈夫だと思います。
あちらの掲示板にあるパッチに同梱されているようですので、心配なら追加してみて下さい。

ソースのほうは、挫折ポイントが多くて、訳がわからんです。問題座標の打ち出しとかを
プログラムに挟み込めば、あっさり解決してくれそうですし、待つのが良さそう ::)

128な人さんのブログから、熊谷半島開発記のデータをお借りしてきました。
1955年以降のsaveで、エラー再現できましたので、50年から55年の間の開発を追えば
問題箇所は特定できるかもしれません。

そろそろTTTから離れすぎてますが、
 roadsignの仕様変更(is_private、signals_on_leftあたり)への互換性がない
 プログラムの穴をついたアドオンの問題が表面化した
 直線にしか設置できない信号を設置後、分岐・変形できる形をカバーしきれていない
 チェックを簡素化したら、カバーできてない部分が発生した
このへんは、問題が出てから対応する形になっているかもしれないです。
うちだと鉄道信号の入力窓がまだ残ってますし、実は、if文を入れる場所を間違えたとかの
単純ミスかもしれませんね。。

8月が忙しいのは、情報インフラ系あたりでしょうか。某国民的ゲーの運営関係者という線も。。
そろそろ戻ってきてくれる予感が...?無賃乗車で急かすのはアレですか 8)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/06 22:28
o_oさん

さっきやって見たところ、128さんの開発期のアドオンで新規マップ(#00)をしてしばらくやってたときにもまた同じエラーがでました。

o_oさんが仰ってた通りに一度やって見たいと思います。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/07 20:45
1955年のデータでは、Rord_Sign_Parking(安曇野の地下)がエラーの原因のようです。
設置場所に問題はなさそうなので、CWGの一種として判別されているのでしょうか。

マップが広そうだったので、個別に探すのは無謀だと思って、アドオンを外して...と軽く
言いましたが、大量にMergeされている可能性を忘れてました。。

良い方法とは言えませんが、別の方法で、2009年のデータでもエラーは回避できました。
他のdatつきの道路標識を入手して、「Name=Rord_Sign_Parking」に変更したPakを
別途Pak128フォルダに追加してみてください(Highway_Sign_Parkingも)。
これで起動時に勝手に置き換えてくれるはずです。

一応、こちらで使用したPakも添付しておきます。エラーは回避できたのですが、捜索用に
作った一方通行標識なので、個別に探して撤去する作業が必要です :-[

---9/10 追記---
探偵ごっこに巻き込んだ感じでしたが、解決できて安心しました。添付は同名Pak作者さんに
苦情がいかないように削除しておきますね^^;
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/09/07 23:51
o_oさん

これでうまくいくことができました!

わざわざpakも作っていただいて,本当にありがとうございました。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/08 10:49
バグ報告を1点。
①時刻表ウィンドウを表示
②車庫内にいる列車を非表示にする
③その列車の「編成を解除」
④「表示を再構成」
FATAL ERROR: array_tpl<T>::[]
index out of bounds: 107 not in 0..105, T=N17gul_spreadsheet_t8row_infoE
PRESS ANY KEY

やっぱりこのへん(編成消失系)のバグは結構残っている感じですかねぇ
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/08 14:11
前回 (http://forum.japanese.simutrans.com/index.php?topic=511.msg2662#msg2662)の続きで次のターンでもTTTデータを作成してみました。

データダウンロードなどはこちら (http://bb2.atbb.jp/battlesimutrans/viewtopic.php?p=6816#6816)からどうぞ。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: powan さんの発言 2012/09/11 00:03
はじめまして、このパッチで楽しく遊ばせてもらっています。(バージョンは7月25日くらいにDLしたやつで、最新版ではありません)

各停、急行などをおりまぜたダイヤを組んでいます。こんな感じです。ttp://www.nicovideo.jp/watch/sm18713494
(このデータでは特急、急行、区間準急、各停、貨物の5種類の列車を複線に走らせています)
個人的に気になったところをあげてみます。ちなみに、私はアシスタント系は全く使ってません。
ダイヤが複雑なのでアシスタントでの簡易設定が役に立たないからです。1台ごとに車両のスケジュールから設定しています。



1 遅延回復のため、遅延の有無によってダイヤを変えられるといい。
2 車庫で個別の運行時間を設定した後に車両を複製すると、標準的なダイヤに戻ってしまう。コピー元のダイヤを優先してほしい。
3 車両選択のスケジュールから列車個別のダイヤを組んでいるのですが、経過時間よりも出発時刻で記述したいので切り替えられるようにしてほしい。
4 ttの単位に馴染みがないので、ttを表示する時計を内蔵してほしい。(時計なんか存在しなくても、他の列車のttを参照すればOK,といえばそのとおりですが。)
5 駅属性の無い通過点ではttの設定ができないのが残念。仕様的に可能であれば通過点にもttを設定したい。
6 「車両のダイヤを別ファイルに保存し、異なるデータで同じダイヤを再現する機能」が作れたら欲しい。

1 具体的には、遅延発生の有無を条件とするif文みたいな構文が欲しいなぁ、と思いました。
  「遅延時にはこの駅には停車しない」だとか、「遅延してたら車庫に送って他の列車に迷惑をかけない」みたいな使い方が考えられます。
2 同じ各停でも、緩急接続の有無でダイヤが異なる、みたいな時、複製するとダイヤも初期化されるので面倒くさい。
3 緩急接続の時、各停は急行が追い抜いた直後のタイミングで発車して欲しいのです。しかし、現在の方式では時刻と時間の変換が面倒くさいです。
  あと、途中一点の時間を変更すると、その後のタイミングもすべてずれてしまうので、複数回退避をする各停だと面倒です。
4 時計機能は他に影響を与えずにいろいろ遊べそうな予感がします。「クリックしたタイミングのttを保存する機能(時刻メモ)」があると嬉しいです。
  こういうことがしたい場合、普通は「実所要時間を参照」ボタンをワンクリックすればいいのですが、そうするとすべての駅の時間が入力されてしまいます。
  すべての駅にttを入力すると修正が面倒なので、主要駅のみにttを設定する場合が多いので、外部の時計があると嬉しいです。
5 補足無しです。もしも仕様的に可能であるなら、あると嬉しいです。

6 「誰得??」と思われるかもしれませんが、以下のメリットが存在します。
  シムトラでは列車の速度は積荷の重さに依存し、特に混んでいる旅客列車だと加速やカーブが遅くなります。
  そのため、厳密なダイヤを組むだめには、常に旅客が満員の状態でダイヤを作成する必要があります。
  私がダイヤを作成する時、まずは別データにコピーし、その後公共事業で人口やら産業やらを増やしまくって、旅客が常に満員になるようにして、
  その状態でダイヤの検証をします。
  その後、各列車の発車時刻や走行時間などをすべてメモし、本来のデータにコピーしてダイヤが完成、という手順でダイヤを作っています。
  なので、列車のダイヤを別ファイルにアウトプットし、それをインプットできると手間が省けて楽になります。

いろいろ挙げましたが、1以外は表示方法や労力軽減のための小ネタになってしまいました…。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kanedai さんの発言 2012/09/11 19:41
powanさん
1 路線を作るのがとてつもなくややこしくなると思います。
2 路線の時刻表の画面で設定したらいいと思います。
3 路線の時刻表を設定という画面でできますよ。
5 早着した場合時間を待つので変になると思いますよ?

無料で作られていることをお忘れなく。。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/11 21:26
powanさん>

(2と3あたり)
んーと、
アシスタント系はまったく使われていないと言うことですが、「時刻表ウィンドウ」(路線編集で路線削除(たしか)の下にあるボタンで表示されるやつ)も使っていないと言うことですか?

時刻表ウィンドウでは、計画時間を路線ごとコピーして、始発駅の発車時刻(文字色がないので適当に設定)を調整できます。

たぶんpowanさんの言いたい機能はそういうことじゃないかな・・・?と推測。

(1)
kenedaiさんの言うとおり、ダイヤの作成が非常に面倒くさくなると思いますし、というかそれ以前にシステム的にも面倒くさくなると思います。
(4)
走行中の列車の収益の隣から現在時刻を確認できる・・・と思います。
(ただし周期時間で割ったあまりの表示ですが)

たしかに個人的に時刻表ウィンドウのどこかに
現在の絶対ゲーム内時刻(単純増加する数列の方)と、「デフォルトでは選択中の路線の周期時間で割ったあまりの時刻」が表示されると便利な感じ。
イメージ
現在時刻:123456tt
<(数字)>tt周期の場合の現在時刻:56tt
みたいな。

powanさんがttをどういう風に理解されているかわかりませんが、「tt=単純増加する数列を周期時間で割ったもの」なので、周期時間が異なる路線では違う時刻になってしまうんですよね…
そういう点ではたしかにわかりにくいかな、と思います

(5)
システム的には可能・・・なのか?中継点で停車する機能ってあるのだろうか。。。
ただやっぱり中継点で停車するのは変だと思う方もいらっしゃると思うんですよね。
今のところTTTはパッチファイルなので、設定ファイルを弄るような仕様にするのはよろしくないかと思う気がするので、これに関しては旅客属性のない駅を設置してそこで待機するといいかなーと思います。

(6)
やはり路線が変化してしまうと色々と面倒なことが起きる気がします。
(たとえば「ダイヤセーブデータ」に路線を記憶しておいて変化が無ければ云々と言うこともできるかもしれませんが、それはSimutrans的にアレな方法のような気がしますし、少なくともパッチの段階でセーブデータ形式とかそういうシステムの根本に関わる変更を加えるのはよろしくない(本家導入の確率が下がる)と思います。)

文章gdgdですが勘弁してください。。。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/09/11 22:37
僕からもpowanさんの提案にコメントしたいと思います。
まずバージョンに関しては7/25が正確ならば最新か最新の1こ前だと思います。

1に関して、wackdoneさんの方針に、「できるだけ本家に比べて追加パラメーターを少なくしよう」という方針があります。その方針に則ると比較的難しい提案だと思います。
今のところは「遅延を未然に防ぐ」のが基本です。
僕は遅延対策を2つやっています。
・時間設定にゆとりを
駅間の時間設定にゆとりを設けています。基本的には、(実測時間)*X+20くらいに設定します。xには種別に応じて1.03~1.10くらいの値を入れます。+20は停車時間を想定しています。
こうすれば大体の場合、遅延は発生しません。しかし工事の時などはどうしてもダイヤが乱れます。そのような時のために
・車両基地の作成
車両基地を作って、「始発駅」にし、停車時間を長めに設定します。これにより小規模な遅延は解消できます。
また、車両基地は「強制段落ち」対策にもなります。路線のうち1編成が周期時間の1割以上遅延し、強制段落ちが発生した時でも、その編成だけ「間引き」されて、全体に与える影響は減らせます。

2についてはありだと思います。ただ、ダイヤによっては緩急接続の有無のパターンによって路線を分けたほうが楽に管理できると思います。(あくまでもアシスタントを使っている立場からの家権ですが)

3については時刻表ウィンドウだと出来るんですけど、時刻表ウィンドウだとあなたのダイヤを作るのは少し難しいかもしれません。…アシスタントの機能改善によりあなたが使えるような時刻表ウィンドウができることを期待します。
なお、2に書いたように緩急接続の有無によって路線を分けると時刻表ウィンドウがつかいやすくなるとおもいます。

5についてはおそらく単線での行き違いを想定したものかと思いますが、中継点で止まることに違和感を感じる方が多いようなので難しいかもしれません。

6は賛成します。1に書いたような事情で、Excelでダイヤを作ってSimutransで数字を入力するってことが多いので、CSVデータが読み込めるといいなと思っています。
ただしTakemaroさんの書いていらっしゃる欠点は考慮すべきだと思います。


長文失礼しました。日本語苦手なので読みにくいところあったら聞いてください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: Takemaro さんの発言 2012/09/12 19:49
(1)遅延に関してはやはり未然防止(始発駅でなくても途中駅で余裕を持たせても後続列車に影響がないのであれば問題ない わけなので)かなーと

(2)たしかに待避パターンの違う列車だと面倒くさいですね。

僕は路線を2つつくっています。まぁ仕方ないと思います。
でもまぁ
□計画時間を路線の全編成に適用する
みたいなボタンがあると便利かも

でも考えてみるとスケジュールウィンドウで計画時間を設定していると言うことは路線内で列車によって計画時間を変えられないのか…

駅によって
□この駅に停車時間を設定
みたいなボタンで停車時間の設定をオンにした駅だけ停車時間設定ができるようにする・・・あーどんどん仕様が複雑になって使いづらくなっていくなw

(3)列車の詳細ウィンドウから「列車の時刻表を表示」?・・・んー何か(技術的な意味で)面倒くさいような・・・

(5)単線での交換は途中駅での発時刻が定刻であれば勝手に信号で待機してくれるかなーとも。

(6)あー「この路線(または、路線群)の時刻データを保存」で路線毎に保存する形式にすれば全路線が変化していないかチェックしなくていいわけだし技術的には可能か?・・・とはいえバグ多発の予感

sima0222さん>竹麻呂って呼んで頂ければ大丈夫です。いちいち英字に切り替えるの面倒でしょう?(違
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/09/16 09:30
>powanさん
動画拝見しました。最小設備での接続と退避っぷりに、思わず、「いいね!」と叫びました。
自分はそもそも配線がうまくないので、綺麗に退避してくれないのです...orz

遅ればせながら、1)、2)にコメント(...だけ)。。。
1)単純な処理で、回復アシスタントに遅延時限定処理が実装できれば、便利かもしれないですね。
 乗車後に停車駅が変わるのは乗客的にどうか...は別として。
 ・遅延時スルー:経路探索上、次は駅フラグ(ある?)を中継点と偽装するか、スケジュールを1つ
   飛ばす。複雑な指示にならないように、スケジュール上の1点(n番目)に限定する。
 ・遅延時入庫:始発駅行きを車庫送りなら混乱は少ない?でも、出庫させなくてもいいのかな。
   出庫予約は、調整過渡期の混乱防止用にも欲しいけど、作るのは大変そう。

2)路線の設定が優先してコピーされるのは、本家の仕様で、TTTもこれに準拠した形のようです。
  中継点を追加するなど、標準路線から外してコピーすれば、編成の設定をコピーできます。

------------------------
wackdoneさん不在のまま、スレッドが伸びてきました。意図的に特殊な指示を出したりしてますが、
無編成路線を除けば、ほぼクラッシュすることはありません(鉄道以外は全く試してないけど)。
些細なものばかりで、確認済みの内容が多いかと思いますが、一度まとめさせてください。

◆クラッシュ:時刻表表示中の路線スケジュールの駅(中継点)削除し、時刻表改定や再構成を押した時。

◆バグ1:(以前yoyoさんから指摘?)時刻表再構成前に路線表示を解除をすると、不必要な駅表示が残る。
    再度、路線表示、解除を行うと想定した表示になります。
◆バグ2:運行周期のない編成に始点発車時刻を設定できるが、これを設定しても効果はない。
◆バグ3:一周時間短縮時に、マイナスになる区間の値がおかしくなる。
◆バグ?:運行周期のみの運行時、nowの計算のタイミング上、ほぼ遅延状態で表示されます。不都合は
    感じませんが、報告しておきます。
◆バグ?:路線ウインドウで、ピッチ>周期、シフト>ピッチに変更した状態で、始発時刻再計算が可能なよう
    です。不都合はないですが、安全上懸念があるようでしたら、修正をお願いします。
    
 この、シフト<ピッチの制約は何者ですか?24時間周期の5時と7時に始発(遅延は翌日5時まで待機)
のように計算できても良さそうですが。...自分は、この辺りが理解できてないっぽいです ???

◆その他1:数字入力時にはお決まりのクレームですが、時刻表で、改定時にマウスとキーボードの往復に
    なるのが気になります。改定箇所を選択後、そのまま数値を入力してHelpを開いたり、数値入力後
    Enterを押して、変更されないまま次の改定箇所選んだりしてます。...いちゃもんですね ;D
◆その他2:遅延許容率が10%なのを路線ごとの設定値にして、これを越えたら始発時間再設定というのは
    どうでしょう。種別や距離に関係なく10%なのは、ちょっと不便に感じました。

◆おまけ:駅並び替えは3次元+αの難問ですね。路群表示するには、現時刻表の制約(上から順に進行)が
    ネック。自分は、枝のない○○線単位で時刻表を表示し、路群間の調整が必要な時は外部に出力して
    ます(ソート以外の理由が大きいですが)。    
◆おまけ:時間見積りのほうも、sintやらuintやらがたくさん出てきて、誰が誰だか判りませんが、大変そう
    なのは分かりました。。実測値のほうで、管理に有用な情報を示していただければ。
     実測値で管理上特に意味があるのは、周期に間に合わなかった原因を示すことですかね。周期内に
    間に合わなかったら、時間を停止するモードなんてどうでしょう。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/09/17 20:42
◆その他2:遅延許容率が10%なのを路線ごとの設定値にして、これを越えたら始発時間再設定というのは
    どうでしょう。種別や距離に関係なく10%なのは、ちょっと不便に感じました。
僕は路線ごとの設定値より、Simuconf.tabで設定できたほうがいいと思います。
路線ごとの設定値にしてしまうと設定項目が増えてしまって面倒くさい。

◆その他1:数字入力時にはお決まりのクレームですが、時刻表で、改定時にマウスとキーボードの往復に
    なるのが気になります。改定箇所を選択後、そのまま数値を入力してHelpを開いたり、数値入力後
    Enterを押して、変更されないまま次の改定箇所選んだりしてます。...いちゃもんですね ;D
これは是非お願いしたいですね。
トピック名: TTT-47パッチの適用について
投稿者: o_o さんの発言 2012/09/30 17:56
wackdoneさんが、戻ってこられる気配がしない ;Dので、ビルドに挑戦してみました。

ttt-047をr5772に当ててみたところ、gui_timingbar_tのundefindの後に

collect2: ld ヘXe[^X 1 ナIケオワオス
make: *** [build/default/simutrans] Error 1
なんて表示されて失敗してしまいました :'(
どうしたものか分からないので、ご教授ねがいます・・・。

'strlen'、'strcpy'、#include<typeinfo>のエラーを我流で変更したのがいけなかったのかな。
パッチを当てないでビルドかけたのは完成(起動確認)したようです。

----10/02 21:20追記----
自己解決しました。エラーの意味は分からないままですが、
config.defaultに[SCHEDULE_TIMETABLE_TIMINGBAR=1]を追記したら
無事に(?)完成しました。とりあえず、動かして問題がないか確認してみます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/10/27 23:22
お久しぶりです。
o_oさん

ビルドお疲れ様です。o_oさんがTTTパッチを当てたバージョンは何でしょうか?
安定版112.0が出たので、そのバージョンでTTTをやりたいなーと思ったので・・・

なんかわがままな文章ですいません。できましたら解答よろしくお願いします。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: o_o さんの発言 2012/10/30 21:40
ご無沙汰しております。わがままを吐くだけなのもどうかと思ったので、簡単に改造したりして遊んでいました。
時刻表とスケジュールの連動が何とかならないか、なんて考えているうちに行き詰って、しばらくは、simutransも
起動させてなかったです...(--;)

ビルドの段取りについては、多少は力になれるかもしれませんが、現能力では、パッチをメンテナンスして公開する
ところまでは辿り着けそうにないです。
申し訳ないですが、自己責任でパッチを適用するか、えらい人を気長にお待ちください。


>TTTパッチを当てたバージョンは何でしょうか?

自分が当てたのは、r5772(111.3)とr5788の2種類です。
r5788のソースはSVNから入手してください。これが面倒なら、r5772(111.3)で代用できるとのこと。
パッチコマンドなりで、入手したソースにTTTのパッチを当てて下さい。
READMEにあるとおり、r5772では、simversion.hをテキストとして編集して手で当てることになります。

自分は、MinGWとVC++2010 Expressとでビルドしてみました。
日本語化wikiで解説してくださった方のおかげで、MinGW、gcc版は初見でも準備できました。libzだったかを入手
する際に、どのディレクトリにあるか、ちょっと探し回った記憶がありますけど...。

MinGW、gccでビルドをかけたところ、こちらでは、4箇所エラーを潰してexeが完成しました。どこか段取りに誤りが
あったのかもしれません。ビルドがすんなり通ってくれれば、TTTのみのバイナリを上げてもと思ったのですが、
wackdoneさんと連絡が取れないこともありますし、改変したものを無闇に公開するわけにはいかないかなと。


>安定版112.0が出たので、そのバージョンでTTTをやりたいなーと思ったので・・・

r6000(112.0)のソースをお借りしてきました。これにr5788-047のパッチを当ててみると、いくつか弾かれる項目が
あるので、変更点をそれぞれ確認しなくてはいけないですね。パッチ行のズレが大きいものもあるようです。
形式的にビルドが通っても、深刻な不具合が出ないとも限らないので、パッチが古くなってきたら、下手に使わない
ほうがいいと思いますよ。

vector_tpl.hで弾かれる所を調べてみようと思ったのですが、ちょうどVC++の期限が過ぎてしまったので、詳しく
確認できていません。無料登録するだけみたいなので、暇があれば、ちょっと見てみようかと思います。
修正が少ないリビジョンから調べていけば、112.0でも一応動くようにはできると思いますが、具体的な修正に言及
できる見込みはないので、そこのところはご了承ください。

----11/04 15:25追記----
こちらでは、r6000TTTが完成しました。が、時間を止めて表計算ソフトで作業している時に、なぜかsimutransが
応答停止してしまいました。。。ちょうど月の変わり目だったようですが。
再現しないので、オリジナルに問題があるのか、パッチの適用に問題があるのか、simutransとは関係のないところに
問題があるのかも不明。うむむ :'(
久しぶりにTTTを導入しましたが、やっぱり、始点での停車時刻くらいは計測しないと使いにくい感じがしますね。
ピッチよりも長い時間停車する周期だと、導入する意味が薄れてしまうし ::)
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/10/31 01:12
僕もr6000へのパッチ当てに挑戦しています。
念のためオリジナルにあるファイルを書き換える場合は手で当てています。
明日明後日と休みなので、明後日には完成するといいなって思ってます。
バージョン番号は113.5にすればいいのか?

>>o_oさん
vector_tpl.hについてですが、オリジナルの該当箇所のソースが変更されていました。
パッチの方に"original bug fix"というコメントがありますので、r5788~r6000の間に本家のほうで修正されたと思われます。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/12/03 15:40
こんにちは。
前と同じ条件でSimutransをやっていたらロードできなくなったので報告しま す。

FATAL ERROR:vector_tpl<T>::[]
7koord3d: index out of bounds:466 not in 0..27
PRESS ANY KEY

これって,TTTに関係あるのか,僕の使い方が悪いのかわかりませんけど・・・

-------12/3 22:40 追記-------
2chのSimutransを語るスレで似た事例を見つけました。

<Simutransを語るスレ part56より>
675 :名無しさん@お腹いっぱい。:2012/12/03(月) 22:01:10.44 ID:zkSf+Rw3
FATAL ERROR: vector_tpl<T>::[]
7koord: index out of bounds: 783 not in 0..500
PRESS ANY KEY

読み込み時によく全く同じこのエラーはいてセーブデータ遡る羽目になるんだけど、何なんだろう
バージョンは111.3。アドオンはてんこ盛りだけど入れる→エラーじゃないからアドオン投入が原因じゃないんだろうね
インデックス指定違うよなんて言われてもなあ…教えてえらい人

これ見てると、何が原因なのかわからなくなっちゃいました。

わかる方は助けてください!
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/12/27 17:05
どうも,こんにちは。
前回の件はMAP復旧させたらどうにか治まりました。

話は変わりますが,TTTで列車を運行させると,終着駅(「路線編集」の一番上の項目にある駅です)で6000tt先着とかなって,後続の列車が詰まるという事態が発生しました。
同じ系統でも,そうなる列車とそうならない列車が有るのですけど・・・
これはTTTの仕様なのでしょうか?それともバグなのでしょうか?
画像を添付しましたので,分かる方はご教授願います。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: sima0222 さんの発言 2012/12/29 10:18
これは、TTTの仕様です(このトピック内では段落ちと言っています)
終着駅に周期時間の10%以上の遅れを持って到着すると、遅れの拡大を防ぐために1周期始発駅で止まって待機するという仕様です。
これを防ぐために、
1.終着駅での停車時間を長めに設定する
2.終着駅のホームを多めにする、列車の多い路線においては車両基地を作る(1つしか折り返すためのホームがないと、1つ列車が段落ちしたら後続列車が次々と運転できなくなります)
現在のところはこれくらいしかできることはありません。

ただもし6000という数値が添付された画像の路線においてのことなら、この状況は当てはまらないはずなので、もう少し詳しく聞かせてください。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/12/30 15:52
これが「段落ち」ですか・・・ 対策のために,始発駅(留置線)を8線用意してるんですけど・・・
ダイヤは,
引用
・時間設定にゆとりを
駅間の時間設定にゆとりを設けています。基本的には、(実測時間)*X+20くらいに設定します。xには種別に応じて1.03~1.10くらいの値を入れます。+20は停車時間を想定しています。
こうすれば大体の場合、遅延は発生しません。しかし工事の時などはどうしてもダイヤが乱れます。そのような時のために
・車両基地の作成
車両基地を作って、「始発駅」にし、停車時間を長めに設定します。これにより小規模な遅延は解消できます。
また、車両基地は「強制段落ち」対策にもなります。路線のうち1編成が周期時間の1割以上遅延し、強制段落ちが発生した時でも、その編成だけ「間引き」されて、全体に与える影響は減らせます。
を参考にしてやってみたんですけど・・・
前に投稿した時に添付した写真ですけど,違う写真を添付して居ました。正しいのは,ここに添付したやつです。
でも,この写真の路線で,たった300ttの遅延(周期時間の10%以下)でも,1000tt先着になります。
これも「段落ち」なのでしょうか?
--------23:03追記--------
上に書いた事について補足します。
キャプチャ3の路線で,始発駅で,10000ttや3000ttや1000ttなどと1周期待ちでは無いというのが見られるという事です。
8線の留置線を確保して2路線を運用して居るので,遅延していない列車もなぜか知らないですけど,長時間待ってしまう→それで留置線が満杯→後続列車が詰まる→後続列車が遅延する→段落ちする・・・のくりかえしとなってしまうのです。
sima0222さんに教えて頂いた様にしているんですけど・・・
「常に再計算」を使うと,電車の発車時刻が同じとなってしまうから使いたくないし・・・
なんかいい方法は有りますか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: jomoyama さんの発言 2012/12/31 11:13
等間隔で種別変更ナシのパターンダイヤなら
・始発駅を同一駅の別ホームに設定しendofchooseで区切る。
・一度架線を切って2編成ほど渋滞させてから一周期再設定ボタンを押す。
・あふれるなら臨時ホームを増設する。
で処理できます。

熊谷→留置線が1100ttほど取られているようなので1000tt待ちはダイヤ通りです。
10000、6000待ちはそれぞれ留置線進入待ちによる3000、7000程の延着と考えられます。

おそらくダイヤに問題あります。
周期、列車間隔ともに快速急行と特急で合ってないので、快速急行の続行になる特急がダイヤ通りに運転できなくなっているのでは?

たとえば
快速急行を14000周期500間隔28編成、特急を12000周期500間隔24編成オフセット400
がスムーズかと。

長文かつ余計なお節介すいません。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: T.TAKAYA さんの発言 2012/12/31 13:29
>jomoyamaさん
ありがとうございました。おかげで半分はよくなったんですが,今度は,遅延していない列車も10000tt遅延という表示が出てしまいました。
これも「段落ち」に入るのでしょうか?
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: jomoyama さんの発言 2012/12/31 14:28
現在携帯からなので画像が見られませんので推測で………。

車両の情報画面のバーを開いて
・もともと橙、赤(遅延あり)で、留置線に着いても赤→段落ちです。
・緑から到着時赤→一周目が出庫、ダイヤ改正で、その列車にとって初めて始発駅に来たために所定の発時刻を待っている。
・赤から到着時緑→上の逆でちょうど発時刻付近に始発駅に着いた。

のパターンがあります。

先に自分が書いたやり方がうまく進むと
ボタンを押してから
①渋滞を作ったので渋滞に含まれていた列車が入線し発時刻を順に割り振られる。(間隔500なら一編成目が0~500待ち、二編成目が501~600待ちになります)
②留置線4本が埋まると渋滞が出来ますが、最初の電車が出るとそこに入るを繰り返し、一周期が終わると渋滞が消えている。

という流れになります。

もしかすると快急の入線待ちに阻まれて特急が周期時間内に入れていないのかもしれま せん。そのときは渋滞から特急が入選するタイミングでもう一度特急の周期再設定ボタンを押すとうまく流れてくれます。

どうしてもダメなら渋滞分だけ一時的に留置線を作って押し込みます。綺麗なやり方では無いですが確実ではあります。
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kou813 さんの発言 2014/11/08 10:30
こんにちは。はじめましてkou813です。
最近忘れられたかのような気さえするTTTではございますが、ここに愛用者がいるわけでございます(汗)
そこで、お聞きしたいのですがどなたか120.0又は112.3にTTTをあてることのできた方やあてる技能をお持ちの方はいらっしゃいませんか??
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: tamaina さんの発言 2014/11/24 17:01
120.0.1も安定版として公開されたわけですし、そろそろ最新版が出てもいいのかなぁ・・・と
私も挑戦してみます、手探りですけど
トピック名: Re:tiny timetable patch / 簡易タイムテーブルパッチ
投稿者: kou813 さんの発言 2015/11/14 09:38
>tamainaさん
その後進展などありましたでしょうか??