最近のNightly版のルート探索について

投稿者: | 2015年1月9日

よく「バスが動かない!」などなど、最近のnightly版の2つの特長を挙げてみる。


・ルート探索経路の変更
明らかに乗り物のルート探索経路が変更されていることが多々あり。
以前は飛行機系が多かったが、昨年以降は自動車系が多くなった。

ちなみに88.xxと120.xxのセーブデータの互換性がなくなったのも、この探索経路の変更による。
120.xx以前は102.xxや96.xxなどの開発版では互換性が存在した。

中身をいじっているが故の現象なので、こまめにnightly版を試すしか解決方法がない。
さらに言えば、今後にその解決の見込みが立たなければ、プレイ中のマップを捨てるしかない。

最新版または過去のnightly版の経路探索に関してはノータッチ。
完全な内部動作であるため、アルゴリズムのみの取り出しは面倒。よって各自調査されたし。

(ちなみに表面的には振り分け標識のアルゴリズムはある程度書き出せる。そもそも「スケジュールに対して一時的な変更かつ状況に応じた条件式の書き出し」をしているだけなので、取得→反映だけで再現可能。If・else文で停車場数分だけ回し、なければそのまま待機、停車場内に車両が存在していないならその停車場へ進む。振り分け標識の方がスケジュールよりも優先され、スケジュールは優先順位が最も下。ルート存在確認>条件付加標識(速度制限など)>振り分け標識>スケジュールの順で優先順位が付けられている。そのうちJavaでランダム関数を用いてつくろうかと思っているぐらい、simutrans内での振り分け標識の動作は面白い。逆効率が良いアルゴリズムの構築の練習にもなる。)

・スケジュール動作の変更
これはTTT版(tiny time table patch)と本家版の互換性がないだけである。
付け加えるなら本家版の部分上位互換版がTTT版。

ちなみに現在ではほとんどプロジェクトに動きがないので、最新版での動作は不可。
最新版では挙動の変更がなされているため、C#の知識を持つ人がパッチを当てるまたは書き換えるのが望ましい。

ルート探索の項に記載してある優先順位のところに追加するなら、
ルート存在確認>条件付加標識>振り分け標識>time table>スケジュール。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です