2019年10月16日水曜日

【ゲーム】simutrans OTRP はとても良いので報告

simutransの改良版OTRPを使ってみました。ので報告です。
  • OTRP とは
  • 道路で片側二車線走行とか出来て、市道化防止や、範囲整地等も出来るようになる、本家simutransの改良版です。詳しくはココに書いてあります。
  • OTRP の置いてある場所、インストール
  • ココに書いてある場所にあります。インストール方法も書いてあります。
  • OTRP についてのメモ
  • ココに書いてある通りに行えば簡単にインストールでき使って幸せになれますが、一応 僕なりのメモや感想を書くと、、、
  1. 最初にribi-arrowアドオンを入れますが、これはOTRPを入れてから動作確認します。(書いてある通り、「menuconf.tabにsimple_tool[37]=,:と追記」して、OTRP起動後に":"キーの押下で道路上にカラフルな矢印が表示されます。)

  2. 公開されているバイナリはWindowsのGDI版とMac版とLinux版です。
    ソースも公開されています。

  3. OTRPはちゃんと起動しますが、現状で素のsimutransのWindows-GDI版の最大の欠点は、『Windows 10 のアップデートバージョンよっては、Simutransが起動直後に終了してしまう』です、解決方法は『起動はショートカットから行い、その際に最小化で起動する』です。詳しくはココに書いてあります。尚、この不具合はOTRPでは発生しません。(初めてGDI-simutransとOTRPの両方を同時にインストールした方が、素のGDI版simutransを起動した時にアレレとなるかもしれないので一応書いときました。OTRPはちゃんと起動します。)

  4. OTRPインストール後も元のsimutransは起動でき使えます。同時起動するとなにかマズイ事が起こるかもなので、同時起動はやめて、片方だけ起動しましょう。ちなみにOTRP自体はGDI版ですが、インストール先のsimutransはGDIでもSDLでもどっちでもOKです。

  5. ひめしさん創設のOTRPの二車線化やスケジュール機能強化はとても素晴らしいです。さらに範囲整地機能(shingoushoriさん謹製)もすごく便利です。OTRPを使わない理由がみつかりません。
    OTRPを詳しく知るために下記webを読むことをお勧めします
       -OTRP(One way Tow lanes Road Project)
       -OTRP 更新情報
       -std版OTRPの方針について
       -OTRPの跡継ぎをしてくださる方へ

  6. OTRPの公共駅民営化(shingoushoriさん謹製)はとても便利です。使い方は[特別建築別]の[Make way or stop public]を使う時にshiftキーかctrlキーを押しながら駅をクリックします。詳しい説明は、ココのその他の所の三番目あたりココ にあります。

  7. OTRPにも実装されている駅統合機能(HyperSimuさん謹製)はとても便利です。使い方は、
    0.「menuconf.tabにgeneral_tool[41]=,,,^Tと追記」します
         (この駅統合=TOOL_MERGE_STOPはsimmenu.hにて41番に定義)
         (ctrl-Tが空いていたので使いましたが、適切なキーにして下さい)
    1.高度な設定の経路タブのallow_merge_distant_halt に駅統合を許す距離を設定します
    2.統合したい駅(統合されて駅名が無くなる方)をクリックして
         統合先の駅(統合の結果この駅になる)をクリックします。
         離れた位置にある駅を統合できます
    詳しくは[TOPIC: MERGE STATION TOOL]を見て下さい。英語ですが内容は読みごたえがあります、google翻訳でも読めます。動作している動画はココにあります。

OTRPの皆様に感謝いたします。


2019年10月15日火曜日

【ゲーム】simutrans セーブデータの編集 SaveDataEdit

さて、simutransです。

堀割の苦労から解放されてうれしい日々を送っています。

自動で堀割する方法なんて100通りだってあるさ、
幸せになるのは簡単(Easy to be happy)
とても簡単、自由になるのは簡単さ(It's so easy,easy to be free)

セーブデータの簡単な編集方法を書きますね。

  1. セーブデータをxml形式で出力するようにする。
    • simuconf_new.tabのsaveformatを変更します
      saveformat = xml
  2. テキストエディタの用意
  3. 差分ツールの用意
  4. セーブデータの中身の意味を知る
  5. 編集してセーブ
    • 編集前のセーブファイルのバックアップ保存は忘れずに、間違った編集をすると二度と開けなくなります。
参考に自動堀割のために解析した時のメモ的画像を貼っておきますね。
test16_高さ3に2の堀割テスト_X6に高さ4の堰堤_説明
test16_高さ3に2の堀割テスト_X6に高さ4の堰堤_説明
Enjoy!





【ゲーム】simutrans 連続堀割の検討

I want to build a continuous artificial slope to create a city with a street grid.
連続堀割をしたいです、井桁シティ(碁盤目状の街)を作るために。

さて、simutransです。
前の投稿で書いたように僕は井桁シティ派です。バス、トラック、市電、列車、船すべてを含む複合駅を駅範囲の漏洩なく井桁に並べて悦に浸ってます。

井桁シティの作成には手間がかかるのですが、井桁でキレイに並べるために好みのマップも用意できるようになり、下準備の整地がかなり楽になりました。さらに楽にしたいです。

今一番作成に手間がかかるのは、堀割に運河を作成する作業です、運河は連続で引けるのですが、その前段階の堀割に多大な手間がかかります。タルくてダルいです。ソースいじって始点と終点ダダァと堀割するようにしようかと思ったり、ソース見てもピンとせずやる気が出なかったり、しかし一つ一つ堀割するのも大変だし、、、どうしましょう、方法を考えてみました。

【連続堀割の方法の考察】
  1. simutransの画面操作
    • 一つ一つ手で堀割する
      可能だが、そもそもこれがメンドクサイ
      個々人の状況によっては、他人にやってもらう事も可能ではある
    • マウス自動化ツールを使う
      可能、しかし問題あり、単純マウス操作再現では脱調が心配、画像認識系では画面の多様さの対応が面倒
  2. simutransの現状正規の機能で可能か?
    • 設定ファイルの変更
      不可、現状では連続堀割を可能にする設定はない
    • アドオンとして追加
      不可、現状では連続堀割を可能にする設定はない
    • シナリオとして追加
      不可、現状では連続堀割を可能にする設定はない
      Squirrel-APIにも地形変更の口は用意されていない
      仮に可能であっても、普通のゲームの開始後に堀割し井桁シティを作りたい目的に合わない
    • 「町の発展」にやらせる
      不可、現状では連続堀割を可能にする設定はないし、cityrules.tabの設定でも出来ない
      仮に可能であっても、ゲーム内時間がかかり、ゲーム開始の初めの頃に堀割し井桁シティを作りたい目的に合わない
    • 他社AIにやらせる
      不可、現状では連続堀割を可能にする設定はない
      Squirrel-APIにも地形変更の口は用意されていない
      仮に可能であっても、ゲーム内時間がかかり、ゲーム開始の初めの頃に堀割し井桁シティを作りたい目的に合わない
  3. simutransの入出力ファイルの変更
    • マップデータの変更
      無理、ソース変更すれば可能
    • セーブデータの変更
      可能、形式(バイナリ、xml)、圧縮解凍(zip、bzip2)の、情報もソースも公開されているため可能
      編集を汎用のエディタ(テキストエディタ、バイナリエディタ)で行うか、専用の編集ツールを作成するか検討が必要
  4. simutrans本体の変更(ソースコード変更)
    • Squirrel-APIの追加
      可能、地形変更を可能にすることによって、シナリオや他社AIにやらせることが可能、しかし、ゲーム開始の初めの頃に堀割し井桁シティを作りたい目的に合わない
    • 「町の発展」の動作の変更
      可能、地形変更を可能にすることによって、「町の発展」にやらせることが可能
      cityrules.tabの拡張も含めた変更が好ましい
      しかし、ゲーム内時間がかかり、ゲーム開始の初めの頃に堀割し井桁シティを作りたい目的に合わない
    • マップファイル読み込み時の動作の変更
      可能、画像ファイルからゲームデータへの変更時に、特定の条件の高度差1の場合堀割とするとか、別ファイルで堀割箇所指定とか、いろいろ変更はできるが、不自然かな
    • 運河ツールに追加
      可能だが、他の道路や線路ではそのような機能がないため不自然
    • スロープツールに追加
      可能、まあ変更するならここが無難かな

さて、どの方法で対応しますかね。
ぼくはC/C++系のプログラマーだったりするので、ここはスロープツールへの連続堀割機能の追加と行きたいところですが、グータラなのでやめにします。セーブデータをテキストエディタで編集する方法で対応しようと思います、楽だしね。

次回は、セーブデータの中身の説明とか書こうと思ってます。