shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

Simutrans の Scripted AI : sqai の作る路線の設定を弄る

フリーの交通?シミュレーション
Simutrans(http://japanese.simutrans.com)が, 素晴らしい.

SimutransにはAIプレイヤーがあります.それも2種類あります.
1種類はソースに組み込まれていそうなもの.もう1種類はスクリプトで改造,追加ができそうなものです.
今回は,後者のスクリプトの改造についてです.
Scripted AI のデフォルトでいる, sqai を改造するということです.

最初の改造どころは,sqai の作る路線の設定です.
・積むまで待機(%)
・最大待ち時間(月)

sqaiが作成する路線は,どうも貨物関係ばかり.
始点が資材を送る方,終点が受け取る方のようです.
路線の設定は,始点の"積むまで待機(%)"が 100 で,それ以外は 0 のようです.

実装箇所は,$simutrans/ai/sqai/road_connector.nut l.129-130 です.

sched.entries.append( schedule_entry_x(c_start, 100, 0) );
sched.entries.append( schedule_entry_x(c_end, 0, 0) );

わかりやすいですね.
schedule_entry_x の第二引数が 積むまで待機(%), 第三引数が 最大待ち時間(月) のようです.

試しに,以下のように書き換えてみました.

sched.entries.append( schedule_entry_x(c_start, 50, 1) );
sched.entries.append( schedule_entry_x(c_end, 50, 8) );

第二引数の 積むまで待機(%) は,指定した通り 50 % になりました.
わかりにくいのが第三引数です.始点(上の行,1を指定)では 1/32768 , 終点(下の行,
8を指定)では 1/256 となりました.
1/32768 が最小単位として,2^(8-1) ということでしょう.