【MOD紹介】Node Controller Renewalのすゝめ

【MOD紹介】Node Controller Renewalのすゝめ

こんにちは。ケミカルです。

今回は、MOD「Node Controller Renewal」について解説します。本MODは、kian.zarrin氏のMOD「Node Controller」を元に、MOD「Intersection Marking Tool」「Building Spawn Point」などで知られるmacsergey氏によって改良・開発されたMODです。

本コラムでは、執筆時点(2021年8月13日)でオリジナル(Node Controller)と比較し、各MODの長所を研究していきます。なお、MODの使用は自己責任でお願い致します。

簡単な前説と用語の定義

シティーズスカイラインは街づくりシミュレーションゲームですから、理想的な都市交通設計が可能です。言わずもがな、道路も理想的な設計が可能で、公共の福祉(建物の立ち退き)はもはやシム系ゲームの風物詩です。しかし実際我々の住む街は、ラウンドアバウトが幾重にも重なる街でもなければ、京都や札幌のような計画都市でない限りには、垂直に交わる丁字路、十字路だけで街全体が構成されているはずもないですね。道路は曲がりくねってるし、斜めに交差するし、斜面になっているかもしれません。同じような交差をしている2つの交差点であっても、交差点の大きさが違ったり、微妙に角度が違ったり、完璧に同じ形状であることは稀なことでしょう。何が言いたいかというと、この世にある交差点の形状が一定であるはずがありませんね。むしろ一定であることが不自然でしょう。ところが、シティーズでは、接続する道路の幅や接続する角度から自動で交差点の形状を決定し、それをプレイヤーが操作することは出来ません。

あくまでこれは一例ですが、交差点の形状を変更する操作ができるようになるMODが、Node Controllerです。導入すれば、リアルな街づくりの手助けとなることでしょう。

Node Controller Renewalの解説に移る前に、用語の定義をしておきます。

道路・線路・歩道・フェンス・送電線など、始点と終点を決めて、曲線・直線で引いてマップ上に配置するものは総じてネットワークと呼ばれます。このネットワークの始点・終点に加えて、ネットワークの交点や中継点も含めて、これをノード(node)と呼び、これらノードに接続する直線・曲線のことをセグメント(segment)と呼びます。十字路で例えるなら、十字路の交差点そのものはノードの一種で、一つのノードに四つのセグメントが接続している、と解釈できます。

Node Controllerは、ノード・セグメントの変形操作をすることを目的としたMODです。冒頭にもあるように、以降これを「オリジナル」とも呼びます。

Node Controller Renewal(以降よりNCR)は、Node Controllerを踏襲し、改良したものですから、機能はほぼ変わりません。用語などもそのまま使用されています。

オリジナルの操作に関しては、本サイトコラム記事「【MOD紹介】NODE CONTROLLER」を参考にしてください。

洗練された操作デザイン

NCRがオリジナルと比べて秀でているのは、なんといっても、操作が直感的にできる点でしょう。

オリジナルとは操作のプロセスがそもそも違います。例えば十字路を好きな形に変形したい状況だったとします。これをそれぞれのMODで操作するとしましょう。

オリジナルの場合、Node Controller機能によってCorner OffsetやMake Sloped/Flatを操作し、さらに一度Node Controller機能を離れてから、Altキーを押して、Segment End Controller機能を起動させ、Segment End Point(セグメントの末端点)を移動させることで、詳細な十字路に変形させることができます。

大事なことは、Node Controllerは「Node Controller」と「Segment End Controller」という2つの機能を持つMODであること。2つの機能はそれぞれ、一つのノード/セグメントを対象にして操作を行う機能であること。そして、2つのSegment End Pointによってノードとセグメントの境界線を成していて、一つのノードに接続するセグメントが1増えるごとにSegment End Pointは2増えるということです。

オリジナルの「Segment End Controller」機能。1つのセグメントの末端に必ず2つあるSegment End Pointを操作できます。

 

ということで、オリジナルの場合、十字路の形状を思いのままに操作するためには、一つのノードをNode Controller機能で操作し、接続する4つのセグメントをSegment End Controllerで操作する、つまり、計5つの操作先で計8つのSegment End Pointを移動することで、思い通りの交差点を”一つ”作ることができます。しかしながら、一つの交差点ならまだしも、複数の交差点を思い通りに形状を変えようとすると、この操作は痺れるものがあります。(尚Node Controllerのない時代は遥かに壮絶でした)

それに対してNCRは、オリジナルのMODから操作方法を一新し、ノードを選択すると、選択したノードに接続する全てのセグメントとの接続部も操作できます。つまり、機能方法を切り替えることなく、交差点の変形操作が出来ます。また、Segment End Pointではなく、境界線の中心を基準に、境界線全体を動かす方式に変更されています。どの程度角度や幅、縦横方向が基準の境界線の中心点からズレているのかを操作します。

そして、主な操作を対象のノード・セグメント上にUIとして表示することで、マウスを動かしてノード・セグメントの操作ができます。

そのため、一つの操作先(十字路交差点)を選択すれば、画面上の表示に合わせてマウスを動かすだけで十字路の形を自由自在に変更できてしまうのです。これは、オリジナルよりもNCRが優れている大きなポイントの一つでしょう。

また、shg166氏によって、Intersection Marking Tool同様に、NCRには日本語訳が用意されており、シティーズの標準言語が日本語の場合は自動で、オプションから手動で日本語に切り替えられます。オリジナルは英語ですので、日本人に優しい設計にもなっています。

もちろんオリジナルに倣ってコントロールパネルを展開するので、マウスホイールや数字の入力でも値を変更できます。

 

「シフト」って何?

「シフト」とは、通常の境界線の中心の値を0として、中心からセグメントの横方向にどれだけ移動しているかを示しています。シフト値を動かす、つまり「道路をずらす」だけなら、Move Itでも代用できそうなものですが、これは特殊な移動です。Node Controllerのシフトにしかできないことがあります。実例を紹介します。

実例では、歩道を切り欠いたバス停(バスベイ・バスカット)を作っていきます。なにもMODを使わずに整備してみます。紺野つかささんの道路アセットを使ってみます。対向2車線の道路と2+3車線の道路を組み合わせてバス待避線付きの対向2車線道路を作るとします。

接続部分を境に、本線がずれてしまっていることがお分かりいただけるだろう。

 

おやおや。少々本線がズレてしまっていますね。教習所でも習うことだとは思いますが、道路の中央線は道路の真ん中を通るとは限りません。左右非対称な道路にしたり、時間帯によって中央線を切り替えることによって、交通容量を増加させたり、円滑な追い抜き・追い越し・右折のための車線変更をさせるためです。バス停もそうですし、交差点の右折専用レーンや登坂車線も”敢えて非対称な道路”の一種といえますね。しかしシティーズスカイラインでは、道路の真ん中がそのまま道路の中央の扱いになります。そのため、シティーズで非対称な道路を使うと、対称な道路と非対称な道路の境界で(中央線を含めて)大きなズレが生じてしまうのです。特に、この問題はMove Itなどによって解決できません。そこでNode Controllerの出番です。追加した車線分だけ全体の道路がズレていると考えられますから、道路の幅の半分、今回の場合は、紺野さんのこのタイプの道路アセットの一つの通行帯の幅は3.2mなので、2つのSegment Endをそれぞれ1.6mずつ横に移動させれば上手くズラすことができそうですね。

Node ControllerとIntersection Marking Toolを併用して制作したバスベイの一例。

 

NCRでも、オリジナルでも同様の移動をすることができますが、先述の通り、2つのMODは操作のプロセスが違います。

まずはオリジナルから。ズラしたいセグメントの末端ごとにSegment End Controllerを開き「セグメントの末端ごとに」移動させていきます。それに対してNCRは、ノードを選択して移動させていきます。NCRはオリジナルと違って、対象のノード全体に同じ操作ができるので、その分早く操作できます。

というわけで、左右非対称の道路にリアリティを持たせるときは特にシフト機能を使ってみてください。現状(2021年8月13日執筆)では、他のMODに置き換えられない機能かと思います。

便利なボタンとショートカットキー

NCRでは、境界線の角度を変えて操作する方式が採用されたことで、オリジナルと比べて、さまざまな機能を追加できるようになりました。目ぼしい物を選りすぐって紹介します。これらの機能は、コントロールパネル右上のアイコンからも使えます。ちなみに、IMTなどと同様に、これらの機能はキーコンフィグができます。自由なキーを登録してください。

セグメントの端を直線化

この機能を使うと、選択したノードに接続するすべてのセグメントとの境界線を0度とすることができます。例えば十字路に細い脇道を追加し五差路とすると、画像のように脇道とその左右のセグメントの境界線が斜めになっていることがおわかりいただけるでしょうか。残念ながらシティーズの交差点の形状の自動設定は時に雑です。これを修正する意味でもNode Controllerは使えます。で、オリジナルならば、例によって10個のSegment End Pointを一つ一つ操作していく訳ですが、NCRならこれをワンクリックで、あとは基準の角度になった境界線を適宜微調整すればいいだけです。ね?簡単でしょ?

十字路交差点に細い道路を追加し、5差路にした図。特に細い道路に側面がある道路のノードとセグメントの境界線が交差点に対して斜めになっている。

何差路であってもワンクリックで整うのが神。普段オリジナルを使っている方なら、これだけでNCRに乗り換る価値があるかと存じます。

交差点間のノードは、シフトの値を一括適用

「シフトって何?」の項の通り、先述の状況でのシフト移動に関しては、普通にオリジナルよりNCRは手早く簡単に操作ができるのですが、ここで対象のセグメントが2つ以上あるならば、使ってほしいコマンドがこれです。

例えば登坂車線を作りたいとする。この時作りたい区間が11個のノードと10個のセグメントによって構成されているとする。その場合、10個のセグメントの末端は20個で、20個のセグメントの末端のSegment End Pointは40個あることがわかりますね?もしこれら一つ一つにSegment End Point: Outward Position=1.6/-1.6などと入力していれば、すぐに日が暮れてしまう訳ですよ。残念ながらオリジナルではこれは簡単にすることは難しい(無理とは言ってない)ですが、NCRにはこれが一瞬で出来ます。初めにシフトさせたい対象のうち”端ではない”一つのノードを選択して、ノード全体をシフトさせます。その後「交差点間のノードは、シフトの値を一括適用」ショートカットを実行すると、シフトさせたい非対称な道路だけ自動で選んで、セグメントの数に関係なく一括でシフトできます。これは、違う種類の道路同士の接続(この場合は対称な道路と非対称な道路の接続)は交差点の扱いになるためです。ワンクリックで全部揃えられますよ。おススメです。

「…」のアイコンからショートカットを開きます。あ、紹介してないショートカットも全部便利なので、調べてみてはいかがでしょうか。

 

オリジナルにしかできないこと・NCRにしかできないこと(2021/8/13時点)

重ねてになりますが、操作の終わった最終形こそ似ているものの、オリジナルとNCRの操作のプロセスは全くの別物です。また、NCRはオリジナルを“踏襲”しているのは操作の終わった最終形であって、NCRがオリジナルの完全上位互換であるとは言っていません。そのため、今まで紹介してきたようなNCRの方が優位な機能があれば、オリジナルの方が優位な機能もあり、中にはそれぞれにしかできない機能などもありますので、紹介していきます。

オリジナルにしかできないこと、その中でも最たるものは、取り扱えるネットワークの種類です。NCRの場合、取り扱えるネットワークはMove itのフィルター機能でいう「道路」「線路」「歩道」の3種類ですが、オリジナルでは「フェンス」「送電線」「その他」を含めた全てのネットワークが取り扱えます。ストレッチさせて擁壁や屋根ネットワークの幅を拡大縮小することができます。筆者個人の意見としては、Slope Profilesのストレッチやシフトが出来て便利だなぁと思っております。

NCRにしかできないこと、中でも、今までの説明にないものであれば、「踏切」でしょう。

実は、オリジナルは、道路と線路とが交差するノードである踏切を操作することができません。ところがNCRはこの問題を解決しています。

例えば2本の複々線の踏切を作るとしましょう。この時、従来であれば複線ごとに踏切が必要でした。これでは踏切の開くタイミングがバラバラになり、1つ目の踏切を渡ろうとした車両が、2つ目の踏切に阻まれて1つ目の踏切内で立ち往生になることも考えられます。無論、現実的ではありませんね。2つ目の踏切が渡れない状態の時は、そもそも1つ目の踏切が開かなければ、つまり踏切が連動していればよいということでしょう。NCRは踏切を簡単に連動させることができます。詳しくはこの動画をご覧ください。

仕組みとしては、連動させるMODがあって…ということではなく、そもそもノードを一つにまとめて、“内部的に”一つの踏切にまとめています。しかしこれではノードに線路が集まってしまいますから、線路をそれぞれシフトさせることで、あたかも2つのノードがあるかのように見せかけているのです。これは補足ですが「NCR」の他に「TM:PE」「Hide TM:PE Unconnected Tracks」などのMODが必要ですので、やってみたい方はこちらもサブスクライブしておくとよいでしょう。

最後に、NCRよりオリジナルの方が優れている機能をまとめておきます。

  • Embankment(バンク)は、±30度を越えて、360度に傾けることができる。
  • Slope(スロープ)も、±30度を超えて、360度に傾けることができる。
  • Segment End Pointは、“理論上”際限なくマップ上を移動できる(NCRのシフトは、±32mまでの制限がある)。
  • ストレッチ値を0%にできる。(NCRは0%までは下げられないが、NCRでもできる1%と見た目上の差異はほとんどない)。

まとめ

NCRは4月の公開から未だにアップデートが絶えないMODで、コラム投稿4日前にも更新があったばかりです。本コラムの内容を鵜呑みにせず、ご自身で更新内容やバグ報告などの情報にアンテナを張って、よくご確認の上、導入することをお勧めします。ともかく、オリジナルでは難しい・時間のかかる操作も、NCRなら簡単に操作できるようになっています。Node Controllerなんて難しそうだと食わず嫌いしてた皆さま、是非サブスクしてみてはいかがでしょうか。

オマケ

「今自分のマップでオリジナルを使っていたんだけど、NCRも良さそうだと思ったから、この際乗り換えてみたい!!」と思われているそこのお方。ちょっと待っていただきたい。

オリジナルの機能を踏襲して開発されたNCRは、オリジナルを使用していたセーブデータから置き換えを行う際にそのまま引継ぎを行えず、NCRによるノードの再設定が必要であることが報告されている。そこで、何故MOD間の引継ぎが行えないかを対照実験するため、オリジナルで条件を変えたノードを380個程準備し、NCRで読み込みを行いました。

その結果、「NCRでは、“ノードレスタイプでない”ノードにバンクやスロープをつける際、スロープノードかフラットノードかスタイルを選択して設定するが、オリジナルでスロープ状であっても移行の際にフラットノードの設定になり(フラットノードではバンク・スロープの設定項目がないため)引継ぎが行えない」と結論を得ました。実験の過程は、後日追記予定です。

また注意事項として、NCRからオリジナルへの移行ができない、つまり、NCRでセーブしたマップはオリジナルで開くことができなくなってしまうそうです。

このことから、オリジナルを使いこなしていた民であればあるほど(セーブマップに前述の操作をしている可能性が高いと言えるので)、NCRへの置き換えは急がなくてよい、というのが筆者の見解です。まぁ、上記の結論の意味がわからないのであればそのまま移行して引き継げなかった部分を再設定する、でよいと思います。ご査収くださいませ。