投稿者 トピック: tiny timetable patch / 簡易タイムテーブルパッチ  (参照数 106841 回)

wackdone

  • 準急
  • ***
  • 投稿: 126
TTT-034
« 返信 #15 on: 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から先に考えるという方法の方がいいかもしれませんね。私はまだ暗算で求まる程度の周期や編成数でしか試していないのですが)

とりあえず、パッチをアップしますので、人柱募集と改善案募集です。
(バイナリはちょっと待ってください。全部盛りにして大丈夫かを確認するのに手間が。。。)
« 最終編集: 2012/07/05 05:05 by wackdone »

wackdone

  • 準急
  • ***
  • 投稿: 126
mokaさん wrote:
>> どのような意図でこのようになってるんでしょうね?将来的になにか二つに分けた意味が出てくるのかな?

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

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


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


moka

  • 各駅停車
  • *
  • 投稿: 42
>この先の配布には、mokaさんに作っていただいた分を追加させて頂けませんでしょうか?
了解いたしました。どうぞ気にせずお使いください。

過去との互換ですか。このゲームもそれだけの歴史を積み重ねてきたのですね(感嘆)

gonyo

  • 各駅停車
  • *
  • 投稿: 16
すみませんpatichのあて方わかりません。 アドオンの追加とかja.tabとかいろいろややこしいみたいです。
私よくわかりませんが開発がんばってください。 

wackdone

  • 準急
  • ***
  • 投稿: 126
TTT-035 & 全部盛りバイナリ
« 返信 #19 on: 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の次の課題は、計画時間自動作成機能 (ウィザード?)かなと考えています。
(時刻表ウィンドウをベースにするかどうかは、ちょっと悩むところですが)

wackdone

  • 準急
  • ***
  • 投稿: 126
gonyoさん、バイナリの更新が遅くなってしまいすみません。
今回の配布では、展開した中の simutrans フォルダを使って、その中にお好きなpakを入れてもらえれば
ja.tabなどはそのままでいける(はず)です。

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

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

Windowsでpatchをあてるのは今はどうするのが一番簡単なのでしょうかね。
私はマイナーなUNIX系使いなものなので、cygwinとか入れてもらっていればまだ説明はできるのですが、
どうもそこらへんはガイドしにくいです。ごめんなさい。
そういえば、Windowsってデフォルトだとファイルの拡張子すら表示してくれないのでしたっけ?
(なんだか、自分がごくたまに使う時はまっさきにそれを切り替えていたような記憶が。)
ドキュメント書きなおしたり、ファイル名変えたりしないとまずいかな?

wackdone

  • 準急
  • ***
  • 投稿: 126
既知の問題: TTT-035
« 返信 #21 on: 2012/07/07 21:08 »
現時点でわかっているバグなどを列挙しておきます。
いずれも次のバージョンまでには修正するよういたします。

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

時刻表ウィンドウ: 出発時刻の入力が不完全だと、異常に長い計画駅間時間が設定されてしまう
  入力されている時刻表のチェックができていないためです。
  A-B-C と運行する路線でたとえば、Bに入力した時刻がCの時刻より後の場合、この問題が発生します。
  (内部で値が負になってしまい、符号無しで扱った結果、異常に大きい値になってしまう)
  ダイヤの反映の前にチェックを行うようにします。

wackdone

  • 準急
  • ***
  • 投稿: 126
時刻表の作成支援について途中経過 (まだ実際の計算が入っていない)ですが、画面の様子を貼ります。

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

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

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

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

私の頭の中の考え方が狭まってきてしまっているようです。
オフセットの話も、ユーザインターフェースの話も、ぜひぜひアイディア募集です。

wackdone

  • 準急
  • ***
  • 投稿: 126
TTT-036 & 全部盛りバイナリ
« 返信 #23 on: 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) だいたい上からボタンを押していけば、なんとなくいい感じの時間計画が立ちます。

あとは、また開いて時刻修正するか、それぞれの路線のスケジュール編集で具体的な値を直していきます。

wackdone

  • 準急
  • ***
  • 投稿: 126
既知の問題: TTT-036
« 返信 #24 on: 2012/07/09 18:36 »
現状、以下の問題のご報告を頂いています。

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

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

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

問題をご報告くださり、ありがとうございました。
みなさま今後とも問題の御報告、機能改善のご提案を宜しくお願いいたします。

wackdone

  • 準急
  • ***
  • 投稿: 126
時刻表表示の仕様について
« 返信 #25 on: 2012/07/09 18:54 »
仕様の再検討が必要な場所は多々あるのですが、まずは現在、まだ実装途上の時刻表表示ウィンドウについて。
「わかりにくい/わかりやすい」、「使いにくい/使いやすい」といったコメントや、なんとなくでもいいので改善案をください。

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

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

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

wackdone

  • 準急
  • ***
  • 投稿: 126
TTTでの時刻の扱いについて
« 返信 #26 on: 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

  • 準急
  • ***
  • 投稿: 126
出発時刻(オフセット)の自動調整のありかた
« 返信 #27 on: 2012/07/09 19:57 »
現状は路線編集ウィンドウの中で
  pitch (運行間隔)
  base (時刻0からのずれ分)
の設定でできる 自動出発時刻 設定ですが、これをどうしようか?という話です。

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

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

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

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

個々のアルゴリズムはとてもシンプルなTTTなのですが、このあたりの「使い方」の束ね方に悩みます。
ご意見ください。

o_o

  • ゲスト
TTT(0709)ダウンロードしてみました。
111.3のデータから移行したところ、線路と道路の交差点(まだ踏切と言うものは無い)上の
列車信号が無視されてしまいました。(これは、TTTとは関係がないのかな。)

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

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

追伸 計画アシスタントに対応したja.tabの同梱をぜひご検討下さい ;D

wackdone

  • 準急
  • ***
  • 投稿: 126
o_o さん、問題のご報告ありがとうございます。
機能について頂いたアイディアの方は、分けて返信いたします。

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

ご報告の内容について質問させてください。
上の引用の中の「(まだ踏切と言うものは無い)」の意味を私が正確に理解できていません。
  • 表示されるはずの踏切が表示されない
  • ご使用の環境で踏切のpakが無い
  • もしかして時間が経つと踏切が建設される機能が今のSimutransにあったりする?
  • いやいやもしかして、実はただ単に路面電車の線路だったり?
すみません、ジョークまがいが入ってしまいましたが、一般的な線路と道路の交差と違って、なにか特殊な状況なのかそうでないのか、教えていただけると助かります。

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

CWGの実装の中で思いあたるフシがあります。
たしか私、「線路と道路の交差部分には踏切は置けない」と思い込んでコード書いてた気がしますorz
動作とコードの中身を確認してみます。
修正までもうしばらくお待ちいただければ。