ペルリ的な何かなブログ

Simutransとかいろいろ自由気ままに書き散らす

【Simutrans】隣町としてたまに使われる役場だけの都市についてあれこれ

はやいもので今年もあと少しとなりまして、アドベントカレンダーの受付も始まりましたね。

例年11月も末になるとそこそこ埋まってきてた印象がありますが、今年は埋まりが遅いような気がするのでここでも宣伝しておきます。

adventar.org

まぁ、例年の流れからもう1枠とってしょうもない記事でも書き散らして空いた穴を埋めるのもいいのですが、いろんな人がいろんな記事を投稿してこそのアドベントカレンダーだと思うので。

 

だいたい例年12月はアドカレの記事と気が向いたら書く記事と2つ書いてるのでそれをアドカレに転用すればいいだけのことなのですが、今年は少し何を書こうかななんて状態なもので急に枠が空いたから…なんてことになるとネタに困りそうですね。

 

さて、今月の記事はタイトルでわかるかと思いますが、マップ外接続として疑似的に役場を設置したときに関する記事です。

たまに見かけるマップ外接続を目的とした都市

昔はたまにこういう役場だけの都市を疑似的な旅客発生源としてマップ端に配置してマップ外との旅客流動を表現するなんてことをやってた人がいました。

今回はこれに関して少し検証してみました。

 

まず、「効果はあるのか」という点ですが、今年長々と続けてきた検証で、役場から発生する旅客は市内建築から発生する旅客と同じ性質である(=産業や特殊建築にも旅客が発生する)ことが判明しています。

pm1965.hatenadiary.jpということでマップ外からの旅客流動を表現する手法としてそれなりに適した手法ではないかと思います。

マップ外から来た客がマップ内に存在する観光地なんかに向けても旅客が発生するという点でもその効果が得られるので。

また、比較的旅客発生の高い役場を使うことで高い旅客度が期待できます。

なお、同一市内の市内建築が存在しないことから役場から発生した旅客はすべて別の都市へと向かうことになるのもメリットの一つだと思います。

しかしながら、欠点もいくつかあります。

・マップの両端にマップ外都市を設置してもlocality_factorの影響を受けるのでマップ外~[マップ内の幹線]~マップ外みたいな輸送を考えた時にもlocality_factorの影響を受けるのでマップ外都市からマップ内を通過してさらに外に出るような輸送需要が期待できない場合がります。特にlocality_factorの値がマップサイズに対して小さい場合などです。

・旅客度が役場の旅客度のみに依存するため役場が大きくならないとマップ外からの需要も変化しない。

 そのまんまですが、マップ内が発展してもマップ外都市も発展させないと役場が大きくならない。場合によっては旅客度が大きな役場のpakファイルがないpaksetなどではその効果が失われることになります。

 

だいたいこんな感じでしょうか。

 

ちなみに役場の旅客度はその役場のpakファイルで定義されている値とpassenger_factorの値のみで決まり、浮浪者や無職者の数とは無縁であることがわかっています。

pm1965.hatenadiary.jp

この二つの画像を見比べれば都市の人口や浮浪者、無職者が役場の旅客度に影響がないことが一目瞭然です。

 

この理論でいくならば、あまり使われない気候(砂漠あたり?)でしか建設されない役場を作って疑似隣町の役場としてどんどん人口増加に伴って役場を拡張していく…なんてこともできると思います。役場移転には十分な注意が必要ですが。

 

今月はそんな記事でした。

アドカレの記事も書かないとなぁ

【Simutrans】locality_factorの挙動について 総括

放置して時間が経つと何を書こうとしてたのか忘れるので放置はよくないですね。

 

最終回の総括としてこの1年くらいでやってきたことを書き残していきたいと思います。

まず旅客(郵便)は前提としてほぼ同じ条件で発生するようです。

また、各建築物の旅客発生条件は1月くらいに書いた記事で触れたとおりです。

pm1965.hatenadiary.jp

そして、前提として各市内建築、本社、モニュメントは役場が存在し、所属する都市が存在しないと旅客が発生しないようです。

 

その1およびその続きではlocality_factorが実際に都市間距離に応じて旅客の発生量に影響を及ぼし、同一都市内と対特殊建築ではlocality_factorの値関係なしに旅客が発生することを実証しました。

また同一都市内と都市外への旅客発生はその比率がlocality_factorの値によって変わることもわかりました。

pm1965.hatenadiary.jp

pm1965.hatenadiary.jp

その3とその5においてはより実践的な2次元の平面的な空間においての旅客発生を観察し、同心円状に旅客発生の分布が生じることを検証しました。

pm1965.hatenadiary.jp

pm1965.hatenadiary.jp

その4では1次元的なマップに戻ってより長距離における旅客発生の状況を確認しました。

pm1965.hatenadiary.jp

いろいろやってきましたが、locality_factorの値によって、都市間の旅客発生量の調整ができるということは実証されました。

どのくらいの値にするのが…というのはなかなか旅客をどのように発生させたいのかというのとマップサイズや都市の数によっても変わってくるので一概に言えない話ですが、概ね以下のようなことが言えると思います。

・locality_factor=1の場合は大半の旅客が同一都市内で完結し、特殊建築へのアクセス客は距離関係なしに発生するので最もローカル線などで遊ぶに適しているか長距離客の発生は少ない。

・locality_factorをマップ対角距離の10%くらいに設定するとローカル線と都市近郊の通勤の両立ができる範囲かもしれません。

・locality_factorをマップ対角距離の50%程度にするとそろそろ距離関係なしに旅客が発生するようになり、マップ端の都市同士では多少旅客発生が少なめになる。

そんな感じでしょうか。

【Simutrans】役場と浮浪者・無職者について

そういえばと思って、Simutransの役場だけの都市ってどういう挙動してるんだろうということで検証してみました。

役場だけの都市

昔は役場だけの都市をマップ外の都市に見立てて…なんてことをやってる人もいましたが、そもそも役場だけの都市ってどういう旅客の発生なんだろうということで調べてみました。

locality_factorの検証用に使ったマップを転用して、旅客発生用の都市を中心に
①純粋に役場だけの都市
②てきとうに人口を増やした役場のみの都市
③②の2倍の人口を持つ役場のみの都市
④②と同じ人口の市内建築を含む都市
の4都市を用意してそれぞれの旅客発生を観察しました。

その結果が以下の通りです。

結果

このようになりました。
ということで役場だけの都市でも人口に応じて旅客発生が変化することがわかりました。

そして概ね役場だけの都市は同じ人口を持つ市内建築のある都市の半分の旅客が発生するようです。

今回はそんな検証でした。

【Simutrans】locality_factorの挙動について 番外編

総括の前に一つやることを忘れていました。

旅客(128jpにおいては二等旅客)についての影響は調べていましたが、郵便(128jpにおいては一等旅客)はどうのよというところです。

軽く調べたところ、旅客も郵便もlocality_factorの設定における影響は同じと考えて差し支えなさそうです。

locality_factor=100の郵便の湧き

その1くらいで使ったマップでサクッとlocality_factor=100のときの郵便の発生数を調べたところ、旅客と同じような感じになっていたので。

そんな話を忘れかけてたので更新しておきます。
次回の更新は今度こそいよいよ総括したいと思います

【Simutrans】locality_factorの挙動について その5

なんやかんやでlocality_factorの挙動についていろいろ検証してきましたが、この記事含めてあと2記事で終わりにできると思います。

こういう検証を進めるといろいろ疑問が出てくるわけですが、ほどほどのところで切り上げないとキリがありません。

今回のデータ採取はその3で使ったマップでデータの採り直しです。

pm1965.hatenadiary.jp

1次元的なマップでの旅客発生の挙動と長距離の旅客発生については概ねその4で方向性が見えてきたので再度2次元的なマップにおいての正確なデータ採取ができたのでこの記事ではそのあたりを貼っていき、次の記事で総括したいと思います。

 

60マス間隔の格子に人口36000人の都市を13×13で配置しています。

結果は概ねその3と同じなので結果だけ貼っていきます。

まずは端の都市からの結果です。

https://twitter.com/omoshirochiri/status/1692475448205455582?s=20

続いてマップ中央の都市からの結果です。

ざっくりとこんな感じになりました。

 

ようやく旅客の異常発生の原因も特定でき、データ採取がうまくいきました。

これまでの記事、これからの記事に関してはカテゴリーに[locality_factorの挙動]を追加しておきますのでこれまでの記事に関してもそこからアクセスできるようにします。

次回は総括でこの3か月間の検証をまとめていきたいと思います。

【Simutrans】locality_factorの挙動について その4

まだこれ続くの?って感じかもしれませんがまだ続きます。

調べれば調べるほど旅客の発生というものがいろいろ謎な挙動なのでいろいろ試行錯誤してるので記事ばかりが増えていきますね。

前回までのあらすじは先の記事のリンクを貼りますのでそちらを参照してください。

pm1965.hatenadiary.jp

 

概ね今回が最終回ってところですが、今回は細長いマップを10000マスまで生成して10000マスのときの旅客発生を見てみました。

きょうのマップ

10000マス以上の細長いマップに50マス間隔で駅と都市を設置してという、おなじみのやり方です。
都市の数は201都市、端の都市だけ市内相互の移動を見るために同一都市となっているのも同じ手法です。

その結果がコレになります。

10000マスにおけるlocality_factorと距離別の旅客発生

で、このグラフを見るとわかると思うんですが、異常値が出ています。

異常値のみの抜粋版

一部の都市に対して旅客が発生してなかったり明らかに多く発生しています。

この原因なのですが、検証に使ってる都市の人口というか使った建物がとても高レベル(1棟で人口30万人)というところに起因するんじゃないかと思って、都市の人口を4万7千人まで減らしました。

その結果、異常値が出なくなりましたので、旅客度が極端に高い建物が存在した場合には偏った旅客発生が生じる場合があるということがわかりました。

 

その対策をした結果が以下のグラフです。

locality_factorと都市間距離による旅客発生率の関係(改良版)

これだけ貼られても見えにくいので、範囲を絞って掲載していきます。

500マス圏内の場合は今までの検証に近い形となるので割愛します。

500マスを超える範囲においてはlocality_factorの値をマップ距離の50%程度まで設定すると距離に応じて旅客発生の数をある程度絞れると思います。

ただし、マップ端からの検証なので中央付近の都市からは山なりの形状になると思います。

ちなみに平均値は0.5%程度を基準と考えるとわかりやすいかと思います。

 

この連載も次でおそらく最終回となりますが、次回はまた平面上で観察してこの連載のまとめをやって終わりにしたいと思います。

【Simutrans】locality_factorの挙動について その3

なんやかんや3記事目になりましたlocality_factorの挙動についてですが、ほんとうは今回で最後にするつもりだったのですが、まだ足りないためもう1回くらい続きそうです。

前回までの記事のリンクをとりあえず貼っておきますのでまだ見てない方はそちらから先に読むといいと思います。 

pm1965.hatenadiary.jp

pm1965.hatenadiary.jp

今回はより実践的に一直線上に都市を配置するのではなく平面上に都市を配置した場合にどうなるのかというのを中心に検証していきます。

 

恒例となりつつある今回のマップですが、これです。

今回は碁盤の目です

670四方くらいのマップに60×60の格子状の道路を作り、その交点付近におなじみの都市を建設してその旅客の湧き具合を観察していきます。

ちなみに都市の間隔は60マス、13×13の碁盤の目を作り、都市の総数は169都市です。

これを作るのが面倒くさくて時間がかかりました。

これでもふた昔前の大きいマップ程度のサイズ感ですが、これ以上大きな検証用のマップを作るのもまた酷なので。

今回の記事のグラフはマップ端の都市における客の湧き方と中央の都市における客の湧き方を観察する手前、グラフは座標系で作成しています。

今回も乗り物をルートなしにして駅に客を貯めてたまった客の量をグラフ化しました。

早速ですがグラフをぺたぺた貼っていきます。

locality_factor=1のとき、マップ端(0,0)の都市からの旅客発生

locality_factor=1のときは同一都市内での移動が圧倒的に多いのは前回の記事の通りですが、都市の数が多いのでその比率は下がっているように思えます。

locality_factor=1のとき、マップ中央の都市(座標6,6)からの旅客の湧き

この二つのグラフから見てわかるように、locality_factorが距離に与える影響はマンハッタン距離ではなく直線距離であることがわかると思います。

続いてlocality_factorを48(マップの対角距離の5%)に設定します。

端の都市から

中央の都市から

まぁ、こんな感じになっています。

続いて84(対角距離の10%)にします。

端から

中央から

基本的に多少のばらつきがあるものの概ね前回の記事のグラフを回転体にしたようなグラフとなっています。

さて、問題はここからでlocality_factor=210にしたときのグラフを見ればわかると思います。

locality_factor=210のときのマップ端の都市からの旅客発生

210に設定したとき、なぜか四隅の都市への旅客発生が異常に多くなりました。

またこのときのマップ中央の都市からの旅客発生ですが、特定の都市への旅客が発生しない状況となり、中央からの旅客発生のグラフが作成できない状態となりました。

中央の都市の場合、一部の都市にしか旅客が発生してない

いろいろ原因を調べたかったのですが、よくわかりません。

対角距離の15%~30%程度の値を入れると端からの旅客発生に対しては四隅の都市に集中する傾向にあり、中央都市からの旅客発生はそれ以上の値にすると同様の症状となりました。(たぶんマップ内全体の人口が多すぎるせいなんじゃないかと思いますが…)

参考としてlocality_factor=300のデータも載せておきます。

よくわかりませんが謎の壁になっています。

最後に420(対角距離の50%)です。

相変わらず壁はありますが、概ね前回の記事の旅客発生を0,0座標を軸に回転させたらこんな感じになるんじゃないでしょうか。

 

そんな感じで今回の検証をしましたが、わかったこととしてはlocality_factorが旅客発生に及ぼす距離としてはマンハッタン距離ではなく直線距離だということです。

あともう1回くらいはlocality_factorと戯れることになりそうです。