インフラアドオンを一新したはなし【Simutrans Advent Calendar 2022】

この記事はSimutrans Advent Calendar 2022の記事です

前日の記事でM_Kasumiが触れているとおり、あの時代遅れのAhozuraNSがとうとう緩急坂に移行したのですが、その時に何を狂ったのかインフラを全部作り直してしまったのでその時に思ったことを書き出しました。一人反省会や備忘録のようなものですが、参考になることも多々あると思いますので、よければ見ていってください。

なお、長らく急坂仕様で遊んでいたため本文ではダブルスロープを1段と呼んでいます。

やってよかったこと・勧めたいもの

最近では当たり前のことからめんどくてもやってよかったこと、奇をてらった解決策までいろいろ紹介します。

前中後パーツの標準実装

各速度で前中後の線路を実装して、どの速度帯でも同じ見栄えで引けるようにしました。
最近のアドオンだと実装するのが当たり前かな?とは思いますが…
初心者が多いNSだと逆にやりにくいかもしれないとは思います。界隈のオタクを取り込んだ初心者調教育成NSみたいなところでしたが、たいていのオタクを前期までに育成しきったので今期はなんとかこれを標準仕様として使ってもらっています。

軌道無しパーツの実装

廃線跡みたいなパーツを実装しました。前期まででなんとなく使いたいなと思って実装してみたら大好評だった。(将来の配線の下書きや場所取り、逆に合理化で減らされたホームなどに使われているようです)これも前中後のパーツを取り揃えています。
信号属性の車止めも実装したので3線時代の登戸を再現できます👍

初めは軌道を除いたような”跡”のパーツしか実装していなかったが、複雑な配線の穴埋めように砂利だけのパーツも用意しました。(むしろこっちのほうが必要だったのでは?)

分岐差分の実装

128na氏のそれなりにそれっぽいインフラアドオン集を丸パクリした仕様なのですが、丸パクリしたくなるくらいアドオン数削減にいい仕様だったのでそのまま実装しました。

OTRPやKU-TA環境だと分岐差分が設定されていると片開き分岐を適切に表示してくれることを利用して、分岐専用パーツを使わなくてもある程度適切に扱ってくれるようにしました。

ただし、画像を設定してしまうとかえって両渡り分岐が作れなくなってしまう(分岐器を曲がるたびに画像が切り替わってしまう)ので、

前・後に関しては差分画像を設定して片渡り分岐を自動で生成してくれるように。

中・単線に関しては差分画像を設定していないので両渡りとして利用できる。
また、最高速(400km/h)に片渡り固定の線路を実装したので前・後のパーツで自動生成してくれない(本線上の片渡り線のようなシチュエーション)においてはこちらを使うことで再現ができる

踏切

パーツに速度差(90km/hだったら、単線90・後91・中92・前93km/hという風に)をつけて踏切にも差分を実装しました。結局バスがつまるところは併用軌道にしてしまうのだが、普通の手をかけることなくまともな踏切を生成してくれます。
速い速度からダウングレードするような敷き替え(上の例だと前用から中用にしたりする)をすると踏切が描き変わらなかったりはするのが欠点。
130km/hとか別の速度でも同じものを一式作ってあげなきゃいけないが、踏切の設定項目が少ないのでほとんどコピペで済み、あまり面倒くさくはないのでコスパ(?)が良かったなぁと感じる。

どうでもいいけど遮断機・警報機の出来が良い。どうやって描いた?

+0.5段できるようにする足

Standardの環境だとやりにくいのですが、OTRP等の環境だと高架敷設時に高度のオフセットが設定でき、0.5段(ハーフスロープ分)単位で調節ができます。
しかし、アドオンは1段(ダブルスロープ分)でしか足パーツがないため浮いてしまうのを防止するために併用軌道属性で0.5段を埋めるようなパーツを用意しました。これでも残念ながら高架同士の交差が1.5段差とかだと埋める術がないが、ないよりはマシと実装しました。
上に重ねると隠れる部分を建設途中っぽい雰囲気にしたのでそういう使い方もできます。

ワザップ(正式名称不明)

ハーフスロープ*2で地上から高架に上がろうとすると発生するどうしようもないくぼみを隠すために用意したパーツで、誰かがワザップと呼び始めたのが始まり。

実装当初は坂を埋めるだけのパーツでしたが、地面から0.5段の位置に高架を敷けるようにするべく0.5地面+0.5橋桁の画像を設定して、0.5段掘ったところに埋めて上から高架をかぶせるとそれっぽく見えるようにしました。緩坂関連の裏技のようなパーツになった…。
掘った壁際にこれを敷くと描画がおかしくなるが上から高架をかぶせれば見えないということで放置中です。(壁から離すとちゃんと描画されるのでシムトラの描画順序が変?)

やらなきゃよかったこと・するべきだったこと

要するに失敗です。同じ轍は踏んでほしくない。

全体的な設計

身内NSなので見切り発車で作り始めてしまったため、一番おざなりにしてはいけないところがおざなりになってしまった。

最低限このような定義をしたかった。連続部分のちらつきって悲しい。たまになってる。

PNG・DAT関連

上の設計の話の一部ではありますが、別個で語りたいほどひどいのでここで紹介します。

分岐差分の画像が独立していないためいろんなアドオンが分岐差分の線路のPNGを参照していて保守性が著しく低下しています。またそれぞれの線路の画像に全く同じ分岐パーツの画像があるので1か所修正するのに全部のPNGを描き替えなければならず、これもまた保守性・効率を下げている。
ちゃんとどこのDATがどこのPNGを参照してるか把握しやすく整理して、同じPNGは1枚だけにするということを徹底すれば効率2倍になったのでは…。

線路のアドオンは道床(前・中・後・単線)*線路(各速度の枕木差分、枕木と線路を別にしたほうが楽かも)の組み合わせでなので、組み合わせてくれるプログラムを組んでやるべきだった。速度・コストもCSVあたりで見やすく管理してDATを自動生成すればよかったと後悔しているので、規則的な仕事はプログラムにやらせるべきである。そういうツールは模索中。

(PythonでExcelシートいじれるからCSVに拘らなくていいじゃんって言ったらVBAでやれよって言われてしまったが…)

線路の末端処理

良かれと思ってやったら地雷だった

悩みどころ

橋脚全体

基本脚無し

前と単線用だけ脚があるパーツを実装

並べたときに合うようにすべてのパーツの末端に脚を生やした

終点駅で箱積みできなくなってしまったので対策パーツを作った

付け焼き刃な実装をしてしまった。

高架はそんなに数がないし、いっそ全部脚あり・なしを実装したほうがわかりやすかったかもしれない。アドオンを減らすことが目的になってしまっていたが、整理することはわかりやすくするための手段であることをこの記事を書いていて再認識した。

Discordに貼ったやつの流用です

斜めのパーツも頭を抱えた。結局は画像の通りに落ち着いたのだが。

AGT全般

問題点が3個ある

  1. AGTってよく考えたらシーサスクロッシングないよね(=分岐差分が必須)
  2. 脚に前・後が必要(↑と合わせて4通り)
  3. 延長用の足が見にくいので変なつながり方をしたときに見分けがつかない

結局こういう風にした。これも急場しのぎで作ったのでちょっと線が出てるが継ぎ目っぽいということで見ないふりをしている。また、3つ目の問題が未解決である。

道路関連

壁と足を架線にした。
これのメリットは道路は1つで壁の配置に合わせて(特にナナメ方向の)あいだ埋めまでしてくれることだと思う。逆にそれぞれに脚の有無を作らなきゃいけないので、道路側で足の有無の差分を作ってあげるべきだった気がする。(足無しだと防音壁などは地上の道路にも使えるので)

直角パーツの有無があるのはいいのだが、それに合わせて架線パーツを分けなきゃいけないのが何とも言えない。高速道路向けは直角パーツ無し、一般道路向けはありという風に分けてみてはいる。

ちょっと実現できそうな表現として高速道路の分岐差分とかいうのを考えている。考えているだけ。

おわりに

設計をまともにしなかった結果…と言ってしまえばそれまでではありますが、逆に何を設計すればいいのかというのは一回触れてみないとわからないな、というのが率直な感想でした。この記事を読んで、アドオン設計・作成に生かしていただければ幸いです。

コメント

  1. […] 先日の記事で触れたアドオンを小出しで出せるだけ出していきたいと思います。 […]

タイトルとURLをコピーしました