Skip to content
teamhimeH edited this page Mar 30, 2024 · 32 revisions

(ロゴ提供: 128な人

English document is not available. Please use a translation service.

OTRPとは?

本家simutrans standardに機能をいくらか付け加えた改造版Simutransです.

  • 道路で片側二車線走行.往復4車線高速道路が作れるようになります.
  • 道路に市道化防止・自家用車進入禁止を設定
  • 範囲整地・建築ツールなど大規模開発に適したツール群
  • 運行スケジュールの高度な設定.発車時刻の絶対時間指定や,乗降禁止等.
  • 列車の増解結

といった機能が使えるようになります.

  • 導入は簡単です.コンパイルなどは必要ありません.
  • セーブデータはいつでもsimutrans standardの形式に戻せます.
  • simutrans standardと全く同じように使えます.OTRPの機能を一つ一つ探検してみてください.

本家フォーラム: https://forum.simutrans.com/index.php?topic=16659.0
Twitterハッシュタグ: #OTRPatch

ダウンロード

実行には本体の他にribi-arrowアドオンが必要なので こちらからダウンロード してpakセットの中に突っ込んでください.

v35_1以降の過去のバイナリは https://github.com/teamhimeh/simutrans/releases から取得できます。

v35以前のバイナリについて

OSDNは、2023年7月ごろより機能を停止しています。このため、現在はミラーサイトをダウンロードリンクとして案内しています。

ミラーサイト(IIJ)

もともとのOSDNのプロジェクトページ

v35以前のリリースノート

導入方法

  1. ribi-arrowをDLしてお使いのpakセットに入れる
  2. pakフォルダの中にあるmenuconfでsimpletoolsの37番に適当なキーを割り当てる.例えばmenuconf.tabにsimple_tool[37]=,:と追記すればコロンを押すとRibiArrowが出現する.
  3. 本体をDLし,simutrans.exeが入ってる所と同じディレクトリに実行ファイルを入れる.
  4. DLした実行ファイルを起動する. standard版のsveファイルを上書きしないように気をつけましょう.

mac・linuxユーザーの皆さまへ

OTRPの動作にはzstdというライブラリのインストールが必要です.
macの場合:homebrewをインストールの上,ターミナルでbrew install sdl2 libpng freetype zstdを実行してください.
linuxの場合:zstdをソースからコンパイルの上,make installしてください.バージョン1.4.4以上が必要です.

ja.tabについて

https://github.com/teamhimeh/simutrans/blob/OTRP-KUTAv6/documentation/ja.OTRP.tab にOTRP用ja.tabを置いておきました.ご自由にお使いください.

使い方

OTRPは使い方を知らなくてもstandardと同じように遊べるようになっています.少しずつ理解していきましょう.

道路の設定

fig1
道路アイコンをCtrlキーを押しながら選択すると追い越しモード等を設定できます.

[追越モード]

  • oneway: 道路を一方通行にして二車線同じ方向で通行するモードです.このモードの時は道路が一方通行になるので建設時は「:(コロン)」を押して接続方向を確認してください.
  • halt mode: 停留所において追越車線でも客扱い・荷捌きをします.走行中の挙動はonewayと同じです.
  • twoway: 本家standardの道路と同じ挙動をするモードです.対向車が来ないことが保証されるときのみ追い越しできます.
  • only loading convoy: 停車中の車のみ追い越します.
  • prohibited: 一切の追い越しが禁止されます.
  • inverted: twowayモードの状態から車線が左右反転します.

[その他]

  • avoid becoming cityroad: 有効化すると道路は市道化しなくなります.(地面の道路にのみ有効)
  • citycars do not enter: 自家用車の進入を禁止します.

道路確認ツール

「:(コロン)」キーを押すと,道路の接続方向が矢印で確認できます.(表示設定ウィンドウにあるボタンからも使用できます.)また,市道化防止や自家用車進入禁止が設定されている場合以下に従って色が変化します.

  • 市道化防止が有効 → 緑
  • 自家用車進入禁止が有効 → ピンク
  • 市道化防止・自家用車進入禁止がともに有効 → オレンジ

車線誘導標識

交通量が増えてくるとこのように分岐部分で渋滞が発生することがあります.
fig3
これは内側車線の車が車線をまたいで出口に進もうとして外側車線を塞いでしまうためです.一般道の複数車線信号つき交差点ではこの傾向がより顕著になります.
OTRPでは標識を使うことで車がどちらの車線を使うか誘導することができます.oneway属性の道路上に一方通行標識を設置すると車線誘導標識になります.車線誘導は「intersection」で示されている座標(標識が設置されたところから次の交差点)まで有効です.
fig4
「Left」を有効にすると次の交差点で左に進む車のみ左車線に誘導します.「Right」は右に進む車のみ右車線に誘導します.次の交差点がT字路のばあい,例えば左方向のみに分岐しているT字路であれば直進は右に進むという扱いになります.(なのでRightを有効にすると直進車が右車線に誘導されます.)
車はこの標識を通過すると指示された車線に移ろうと努力はしますが交通量が多すぎると車線移動に失敗することがあります.
なおcitycarでは標識と交差点の距離がcitycar_max_look_forward未満の場合のみ有効です.(設定項目の章を参照)

車両描画位置の変更

pak128では鉄道車両の描画位置変更が行われた影響で,古い車両アドオンが新描画位置軌道から浮く現象が発生しています.

fig10
713氏作 [Emu]JRK Limited Express Electric Cars "Intercity Kyushu" Set/JR九州 特急列車「インターシティ九州」セット より

車庫画面で下図赤枠のボタンを押し,「set offset」と表示されるようにしてから車両を選択すると,その車種は4px下に描画されるようになります.これで,新描画位置軌道上に走らせても車両の位置が正しくなります.
fig11

オフセットの設定は,pakxyz/config/reposition.tabに保存されます.reposition.tabはテキストファイルなので手で編集することもできます.
なお,車庫画面でset offsetが出てくるのと,reposition.tabが保存されるのは128系のpakサイズでsimutransを起動したときのみです.reposition.tabの読み込みはその他のサイズのpakで起動したときも行われます.

スケジュール設定

OTRPでは高度なスケジュール設定により,より柔軟な運行ができるようになっています.
スケジュール画面で「詳細設定を展開」の三角形アイコンをクリックすると,詳細設定が出現します.詳細設定を閉じるには,もう一度三角形アイコンをクリックします.
fig12

臨時系統/乗車・降車不可 等

  • 臨時系統:このスケジュールはRouteCostの計算に影響を与えなくなります.一時的な混雑解消用の直通路線の設定によって旅客の経由地を変更させたくない場合に便利です.
  • 乗車不可(No Load):この停留所で乗車・積載が不可能になります.すなはち,降車専用になります.
  • 降車不可(No Unload):この停留所で降車・荷降ろしが不可能になります.すなはち,乗車専用になります.
  • 全員降車(Unload All):この停留所ですべての積載物を一度降ろします.すなはち,乗り換え扱いになります.
  • 出発直前に積載(Load before departure):発車時刻まで待機している間は積載しません.

乗車不可・降車不可を両方有効にすると,乗車・降車ともにできなくなりますので,運転停車となります.

  • 応荷重制御:このスケジュールが登録された編成は,積載率に関わらず満載時の加速度で運転します.
  • 最高速度:このスケジュールにおける最高速度を指定できます.0は指定なしです.

増解結

本機能はInternational Forumで議論中の機能の先行実装です. 本家フォーラムのスレッドはこちら

増解結の使い方は こちらを参照 してください.

発車時刻指定

「発車時刻まで待機」を有効にすると,予めスケジュールされた時間に発車するようになります.発車時刻には,ゲーム画面左下部に表示されている時間軸が使用されます.
fig13
この場合,一ヶ月が1440等分され,発車時間として使用されます.ゲーム内時間を使用しないのは,ゲーム内の月日表示は月によって一日の長さが異なるためです.一ヶ月を何等分するかは,高度な設定の「全般」タブにある spacing_shift_divisor で設定できます.デフォルトは1440です.

発車時間を指定するには,月あたりの 発車本数オフセット遅延許容時間 を設定します.月あたりの発車本数をF,オフセットをDとすると,1ヶ月を1440等分した時間軸で,(1440/Fn+D (0≦n<F) の時間に発車します.例えば,月当たり発車本数を8,オフセットを20に設定すると,発車の間隔は1440/8=180となり,20, 200, 380, 560,...の時間に発車するようになります.

遅延許容時間を設定すると,正規の発車時刻から許容時間以内は発車が許可されます.例えば,遅延許容時間が30,正規の発車時刻の一つが100の場合は,列車が100+30=130までに発車できるのであればそのスロットでの発車が許可されます.

「全て同じ発車時刻設定を適用」を有効にすると,それを有効にして以降の発車本数,オフセット,遅延許容の設定がそのスケジュールの全エントリに適用されます.

路線間での発車枠の共有

路線に設定されたスケジュールの場合は、発車スロットを他路線と共有することができます。スケジュール設定画面において、発車スロットを共有したい路線を下図のように選択してください。

image

路線Aに所属する停車エントリαと路線Bに所属する停車エントリβ間で発車枠が共有される条件は以下の通りです。

  • 路線Aの設定画面において、路線Bが発車スロット共有路線として指定されている。(路線B側で路線Aを共有路線として指定してもokです。)
  • 停車エントリαおよびβは、「スケジュール内で何番目か」および「停車する駅」が同一である。

発車スロット共有路線として選択ボックスに表示される路線は、以下のように決まります。

  • 他のどの路線とも発車枠を共有していない場合 ... スケジュールが所属する路線が表示されます。
  • 1つ以上の他路線と発車枠を共有している場合 ... 発車枠を共有する他路線のうち、いずれか一つが表示されます。

他路線との発車枠共有を解除したい場合は、路線選択ボックスの中で <新しい発車枠グループ> を選択してください。

Squirrel API

IOライブラリ

OTRP v29_5より,Squirrel Standard Libraryのうち,I/Oライブラリ が追加で利用できるようになっています.また,マルチバイト文字を扱うためにfile クラスに以下の関数が追加されています.

  • file.readstr(n) ... 最大n(integer )バイトの文字列をファイルから読み,String で返します.
  • file.writestr(str) ... ファイルにString 型文字列 str を書き込みます.

例)

local myfile = file("myfile.txt","r")
local txt = myfile.readstr(100)
print(txt)
myfile.close()
  
myfile = file("out.txt","w")
myfile.writestr("Simutransへようこそ")
myfile.close()  

guiクラス

OTRP v29_6より、guiクラス に以下の関数が追加されています。

  • static void jump (coord pos) ... 指定された座標に画面をジャンプします。
  • static void close_all_windows () ... 画面中のすべてのウィンドウを閉じます。
  • static void take_screenshot () ... スクリーンショットを撮ります。
  • static void set_zoom (int val) ... 画面の拡大率を指定します。拡大率(val)は0(最小)〜9(最大)の10段階です。

スクリプトジェネレーター

マップ内の線路や駅舎などを建設スクリプト化する機能です.スロープ(坂),way,wayobj,標識・信号,駅舎がSquirrel script化されます.
出力されるスクリプトの動作にはひめしツールキットが必要です.ダウンロードした上で,ライブラリファイルを同梱してお使いください.

使い方

  1. general_tool[44]を呼び出します.(menuconf.tabでキーを割り当ててください.例:general_tool[44]=,,,| で「|」キーが割り当てられます. )
  2. スクリプト化する範囲をドラッグで選択してください.ドラッグの起点が基準点になります.
  3. 保存ダイアログが出現するので,ファイル名を入力し保存してください.拡張子「.nut」は自動で付加されます.
  4. ファイルはsimutrans/generated-scripts/に出力されます.適当なdescription.tabを書いた上で,hm_toolkit_v1.nutと合わせてご利用ください.

その他

  • 運賃収受に伴う金額表示をON/OFFできるようになりました.表示設定ウィンドウから切り替えられるほか,simple_tool[38]にキーを割り当てることでも切り替えることができます.
  • 交差点でのスムーズな通行を実現するため,交差点タイルでは車両がタイルを予約しています.予約状況は鉄道の閉塞予約解除ツール(bキー)を使うことで確認できます.タイルをクリックすることで予約を手動で解除することもできます.
  • 駅/停留所の公共化ツールをshiftを押しながら使うと,現在有効なプレイヤー所属の停留所になります.ctrlキーを押しながら使うと,駅設備をもとのプレイヤー所有にしたまま公共化(公共駅だが建物を建設したプレイヤーが建物を撤去できる)できます.
  • 建築物建設ツールで範囲選択ができるようになりました.選択された範囲に現在有効な建築物を配置します.(shingoushori氏による実装)なお,市内建築物に限り複数種類を選択することが可能です.
  • 撤去ツールでも範囲選択が可能です.shiftキーを押すと選択された範囲の全オブジェクトを削除(立体的な選択も可能),shift+ctrlキーで選択された範囲から上の高度に対しても全オブジェクトを削除します.(shingoushori氏による実装)
  • ctrlキーを押しながら土地上げ下げツールを使うと,選択された範囲が始点と同じ高度になります.(shingoushori氏による実装)
  • ctrlキーを押しながらwayobj(架線)建設ツールを使うと,wayobjの設置間隔を設定できます.景観架線で架線柱を2マスごとに置く時などに便利です.
  • ctrlキーを押しながら高架建設ツールを使うと,高架の高度オフセットを指定できます.1高度だけ地面から浮いた高架や,高高度の高架を建設するときに便利です.
  • 起動時に出現するアドオン名重複警告はOTRPでは無効化されています.ただし,-showoverlay オプションをつけて起動したときはアドオン名重複警告が表示されます.
  • longblocksignal(多閉塞信号)は検査した範囲をすべて予約するようになっています.すなはち,停車駅をこえて次の信号まで予約するようになっています.これは本家フォーラムで議論中の機能の先行実装です.
  • 起動時に-snapshot x,y,z,fオプションで起動すると,スナップショットを撮影して終了します.x,y,zは中心座標,fはズーム率(0から9まで)です.異なるセーブファイルである固定地点のスクリーンショットを撮りたいときなどに便利です.
  • 車庫画面で「置換編成に登録」を押すと,車庫に到着した編成の組成をその編成と同じにします.
  • 路線ごとに駅間所要時間を表示できます.路線一覧ウィンドウから利用できます.時刻の単位は発車時間指定に使われているものです.
  • 駅一覧ウィンドウのオプションで,「公共駅を含める」を有効にすると,自社の乗り入れがある公共駅も駅一覧ウィンドウに表示されます.
  • 駅併合ツールは「設定」→「ライバル会社」画面にあります。ツールは公共事業プレイヤーで実行してください。
  • 専用アドオンを導入すると、斜めのタイルに停留所/駅を設置できるようになります。詳細は斜めタイル停留所についてを参照してください。
  • 旅客や貨物の経路探索において、ルートコスト法のかわりに所要時間実績による探索を利用できます。有効化の仕方や詳しい説明は、所要時間ベース旅客経路探索についてを参照してください。

設定項目

主にsimuconf.tabや「高度な設定」で編集する項目です.
ほとんどのパラメータはゲーム内に保存されます.

citycarについて

(この章で説明するパラメータは全て高度な設定の「経路」タブにあります.)

  • citycarは交差点ごとにランダムに進行方向を決めて進みます.citycar_max_look_forward はcitycarが何マス先まで予め経路を決めておくかを定義します.citycarが車線固定標識に従うには経路情報が必要なため,車線固定標識と対象交差点の距離がこのパラメータ以上だとcitycarは車線固定ができません.但しこの値を大きくすると交差点におけるルート選択のタイミングが早まるため交通状況がルート選択に反映されるタイミングが遅くなります.
  • citycarはルート決定をする時交差点に遭遇すると,各方向に対して重み付けをして確率的に方向を決定します.この際,citycar_route_weight_crowded, citycar_route_weight_vacant, citycar_route_weight_speed のパラメータ(以下それぞれcr, va, spと表記)を使用します.
    • 単一タイル上でUターンをするのは他に選択肢がない時のみです.
    • Uターンをする(鋭角に曲がる)方向 → 重みは1になります.
    • 道路上に停車している車があるとき,重みはcrになります.デフォルト値はcr=20です.
    • 道路が空いているときの重みはva + speed × sp となります.speedは道路の制限速度です.デフォルト値はva=100, sp=0です.
      例) cr=20, va=100, sp=1, 道路の制限速度が60km/hのとき,その道路上に車が存在していなければ選択の重みはva + speed × sp = 100 + 60 × 1 = 160 となります.
  • citycarは渋滞などにより交差点手前で停車している時,一定間隔(1倍速で約2秒おき)でルートの再検索を行います.適切に設定されたパラメータのもとでは,これによりデッドロックを予防することができます.

その他

  • advance_to_end(ルートタブにあります)のチェックを外すことで列車のホームでの停車位置が実際に指定した位置になります.(デフォルトではstandardと同じく指定位置にかかわらず列車は先頭まで進みます.)なお指定した位置で編成がおさまらないときは編成全体がおさまるまで前進します.(extendedと同じです.)
  • routecost_halt, routecost_wait (ルートタブにあります)を変更することで,旅客の乗り換え駅を制御することができます.routecost_haltは1駅ごとのルートコスト,routecost_waitは1回乗り換えするごとのルートコストです.デフォルト値はそれぞれ1と8です.
  • first_come_first_serve(ルートタブにあります)のチェックを入れることで,駅,停留所に先に来た乗客から車両に乗るようになります.デフォルトでは無効です.

データの互換性

アドオンの互換性

OTRPはsimutrans standard向けのアドオンであれば全て使えます. 斜めタイル停留所アドオンはOTRP専用です。

セーブデータの互換性

  • simutrans standardのデータは120.3を含めそのまま読み込めます.
  • extended版OTRPとの互換性はありません.
  • 一度セーブデータを読み込んでそれを保存した瞬間にそのデータはOTRP専用になります.既存のデータをOTRPに移行する場合はバックアップを取った上で別ファイルとして保存することを強く推奨します.
  • データセーブ時に「Readable by standard」ボタンを押して保存するとstandardで読み書きできる形式で保存されます.この形式ではOTRP固有の情報が失われるので注意してください.

使用状況の収集について

v24_4から皆さまの使用状況を収集させていただくこととしました.データは個人が特定できないもののみ収集し,統計的な使用状況解析に用います.

現時点での主な収集事項は以下のとおりです.

  • 使用バージョン
  • 言語設定
  • OS
  • 使用pak(名前だけ)
  • ネットワークモードか
  • 起動時間

ライセンス

OTRPはSimutrans Standardからの派生物ですので,StandardのライセンスであるArtistic License に従います.OTRPの再配布および改造したものの配布などについては以下の条件下で自由です.

  • Artistic Licenseに違反しない条件下で配布してください.
  • OTRPを不特定多数(NetSimutrans参加者に配布する等の用途は含まない)に再配布する際は,配布する場所をひめしにご一報ください. twitter: @OTRPatch

おねがい

バグ探しには皆さんのお力が必要です.バグと思われる挙動があればtwitter @OTRPatch に報告していただけるとありがたいです.
特に「ネットワークプレイ」が安定動作するかが確認取れてないので遊んでみて動作状況を教えていただけるとうれしいです.ぜひOTRPでNSを楽しんでみてください.
現在確認されているバグはこちらからご確認いただけます。