Phystam-S Studio

Simutransのことなど

Simutrans-Extendedで年代プレイNSをしよう!

この記事はSimutrans Advent Calender 2020 8日目の記事になります。
adventar.org

Simutrans-Extendedって?

弊ブログにて説明してるよー。ブログってかもはやアドカレ専用年次更新に成り下がってますが去年の記事にあります。
phystam.hatenablog.com

NSって?

NetSimutransの略で、やったことある人ない人含めて一度はその名前を聞いたことがあるはず。要はマルチプレイです。協力プレイするもよし、陣地争いをするもよし。ルールに則って他社と交渉して、といったフェアプレイだけは忘れないようにしましょうね。

Standard(OTRP版含む)との違いは?

Standardと基本的な操作は変わりません。ダイヤを組んだり、信号所を設置したりなどいろいろExtended固有の操作が追加されるだけです。ただ、旅客流動の違いは顕著にプレイングに効いてきます。
というわけで、本稿では年代プレイと旅客流動に焦点を当てていきます。
旅客流動に関しては下記Reti_Nさんのブログを参照してもらえると分かった気になると思います。
nomnet-nah-srats.cocolog-nifty.com

じゃあExtendedでの旅客ってどんななのよ

うん、れちさんのブログ読んだよ。なんだ簡単じゃんと思われた方甘い甘い。
旅客は「通勤客」と「旅行客」の2種類に分類され、それぞれ最貧クラスから富裕層までの5クラスに所得によって分類されているのです。合わせると10種類もの旅客分類があるわけですね!(通りでシミュレーションが重いわけだ…
通勤客は近距離・短時間の輸送を好み、移動時間は平均1時間程度になるように設定されます。旅客の移動も住居から職場(商業施設・工業施設)までの往復です。比較的発展した街では中心街に多く職場(商業施設扱い)が存在するため、主に市内交通によって輸送が行われます。
一方で旅行客は長時間の旅行にも耐えるため、急行・特急列車や船舶・飛行機等を用いた長距離・長時間の旅客も発生します。
さらに旅客クラスも考慮して車両を運行させなければなりませんね。万民のための市内交通は基本的には最低クラスに合わせるのが基本です。

Citycarのお話

上のれちさんのブログでもCitycarについて言及されていましたね。Citycarも旅客流動の一部となっていて、citycarが最速の手段であるならばそれが選ばれるという単純な話です。
あのですね、これがやばいんですね。年代設定を入れると、その年代・旅客クラスに応じて「自家用車所有率」なるものが設定されます。自家用車が一般庶民には無縁だった時代から、モータリゼーション後の誰もが所有する時代まで、しっかり入っています。そしてその自家用車、1台につき1人しか乗れないんですね…!

おわかりいただけただろうか…

f:id:Phystam:20201209175753p:plain
どうしようもないcitycarグリッドロック

というわけで、シミュレーションの粒度と比較して多量のcitycarが湧きます。どうしようもないですね。幸いなことにcitycarのルーティング機能が最近実装されまして、市庁舎から他の市庁舎までの最速道路ルートが道路に保存されるようになりました。というわけでいわゆる「citycarホイホイ」なるものもなかなか引っかかってくれません。まあ目的地に着くか予測される所要時間を超えれば消えるので、うまく高速道路を建設して目的地に行ってもらえば多額の利益を得ることができます。まあ、たいてい建設費を回収するのは難しいんですけどね。。。

年代プレイとNS

さて、年代プレイとNSのお話に戻りましょう。私7月から11月頃まで樺太マップを使って年代プレイNSを開催しまして、そこで実感したことを年代別に書き連ねたいと思います。

f:id:Phystam:20201209181053p:plain
1824x7616、リアルスケールサイズ樺太マップ

1800年

何を言ってるんだと思われるかと思いますが、このNSは1800年からスタートしています。町を手で置いただけなので、道路もなにも建設されていません。というわけで、最初は道路建設工事から始まりました。道路を建設したら次は輸送です。ここで注意したいのが、旅客輸送はほぼ不可能であるということです。時代が下ると多少増えますが、それでも数人~数十人乗りの馬車コーチしかありません。速度も遅いので、上述したように旅客の時間制限に引っかかり大きな輸送網も作れないですし、何しろ輸送容量が足りないので乗るようになるとすぐに逼迫します。逼迫するとお客さんが離れるため悪循環しかないです。
じゃあなにを輸送するのかと言ったら、はい、郵便ですね。この年代から始めるなら初手で郵便から始めるのが割と安牌でしょう。いわゆる「駅逓制」により運ぶのがこの時代では効率が良くておすすめです。無理してハブ&スポークをすると輸送時間が無駄に増えてしまうので、この時代ではおすすめできません。海域では船舶を使った輸送もおすすめです。東インド会社の帆船とか使えます。それから運河を掘って船で貨物を輸送するのも良いですね。

1810年代~50年代

道路交通についてはほとんど1800年代と変わりませんが、蒸気機関車が開発され産業革命により劇的な進歩を遂げる時代です。いわゆる「鉄道狂時代」というやつです。ただ、信号システムの考え方が貧弱で、時間間隔法しかありません。ダイヤを組むことである程度回避できますが、結構な頻度で追突事故を観察することになるでしょう。。。
最初は貨物メインだった鉄道も、だんだんと旅客輸送・郵便輸送も行えるようになっていきます。そして、この頃からスペック不足でプレイ不可能になる人が出てきます。は…早くない…?

f:id:Phystam:20201209182729p:plain
1830年代にはロケット号を始めとして有名な機関車が活躍。信号システムは手旗信号しか使えない

1860年代~

1860年代には鉄道がメインで活躍する時代が到来します。まだ信号システムは時間間隔法ですが、ベーン信号が開発されます。長距離輸送は船舶にお任せです。人口が結構増えてくるので、増発したりしながらうまく対処しましょう。また、市内交通としてトラムが使用できるようになるのもこの頃です。通勤客の輸送率向上に大きく貢献します。

f:id:Phystam:20201209183850p:plain
海岸線を走る列車。単純にエモいです。

1900年代~

閉塞システムが登場して安定した運行ができるようになります。余裕が出てきて長距離急行列車を走らせ始めるのもこの時代からかな?citycar依存度がまだ低いので旅客利用率は高めです。また、電気が利用できるようになるので、街の発展を促進するため電気を供給してやってもいいでしょう。

f:id:Phystam:20201209184843p:plain
拡大を続ける樺太最北端の奥端の町。急行列車が発着する。

1940年代~

戦争は技術水準を大きく向上させます。飛行機が登場し高速な輸送手段を富裕層が享受できるようになります。富裕層自体あまりいないので利用率は期待できませんがロマンで…
自動車もそれなりに使い物になるようになってくるので、バスや郵便バンを使って市内交通・郵便網の拡充も行っていきましょう。そして戦後になると一気にモータリゼーションの波が襲いかかります…

1960年代~

モータリゼーションにより各地で輸送障害が発生、踏切撤去、立体交差化等の工事が必要になります。無煙化も同時並行して行わないといけないのでダイヤ改正も間に合わず大変な時期です。こういった大変な時期だからこそ、多人数で同時並行して作業ができるNSというシステムが効いてきます。
またそうした投資にも関わらず、モータリゼーションによる旅客利用率の低下に喘ぐこととなるでしょう。飛行機との競争もあり長距離列車からもどんどん旅客が奪われていきます。飛行機との競争は、在来線では完敗ですが新幹線とはいい勝負のようで、新幹線の利用率は意外と高いようです。ただし、使用しているpakset(pak128.britain-ex)では高速鉄道が建設できるようになるのがかなり後のことになるので、この苦境はかなりの期間続きます。低頻度運行、旧型の車両を使用しているローカル線は場合によっては廃止もあり得るでしょう。また、高速バスを試験運用してみましたが、意外と高速バスに旅客が集中するようなことはなく、新幹線や飛行機を利用する客のほうが多かったのは意外でした。

f:id:Phystam:20201209203943p:plain
2000年代の樺太マップ輸送網。飛行機やら新幹線やら高速バスやらでマップが楽しいことになっていますね。

まとめ

というわけで、Extendedで 年代プレイNSする際は、

  • 旅客流動(所要時間)を気にしよう
  • 年代によるcitycar発生は大きな輸送障害の可能性があるので対処を怠らないようにしよう
  • 郵便は時間を気にしなくていいので序盤から主力になってくれる
  • 貨物は産業の廃止が起きるのでNSでのメンテナンス負担が大きい

くらいのことを気に留めて楽しくプレイしましょう。あれっ、「NSのススメ」にあるまじき結論に至っているって?

pak256-Exにおける信号システムとその応用(2)

この記事はSimutrans advent calendar 2019 18日目の記事の続編になります。
adventar.org

はじめに

Simutrans-Extended(以下、Ext)は、Simutrans(以下、Std)という交通・輸送を主眼においたフリーソフト(https://simutrans.com)の拡張版です。あえて違いを挙げるとするならば、

  • 物理演算に基づいた車両の挙動
  • より現実的な旅客流動
  • 高度な車両運行スケジュール機能

などが挙げられます。その中でも、

  • 現実的かつ高度な信号保安システム

については多くの方にとって難しく、とっつきにくいと感じる部分ではないでしょうか。StdとExtの信号における根本的な考え方の違いは、多くのStdプレイヤーにとって複雑で分かりにくいところだと思います。
九龍さん・五番星さん・そして私が中心となって開発しているパックセット Pak256-Ex においても、同様に現実的な信号配置ができるよう多種多様な信号機が実装されています。
www.pak256.simutrans.info

この記事では、そのようなStd勢の方のために「どのように信号が働くのか?」「どのように信号を扱ったらよいのか?」の2点について、Pak256-Exの信号機を例として説明し、その上で上手に使う方法を紹介します。もう知ってるよという方はお好きなところから斜め読みしてください。

続きを読む

pak256-Exにおける信号システムとその応用(1)

この記事はSimutrans advent calendar 2019 18日目の記事になります。
adventar.org

  • はじめに
  • Extにおける信号の概念
    • 信号保安システム (Working method) について
    • 信号保安システムと信号扱所

はじめに

Simutrans-Extended(以下、Ext)は、Simutrans(以下、Std)という交通・輸送を主眼においたフリーソフト(https://simutrans.com)の拡張版です。あえて違いを挙げるとするならば、

  • 物理演算に基づいた車両の挙動
  • より現実的な旅客流動
  • 高度な車両運行スケジュール機能

などが挙げられます。その中でも、

  • 現実的かつ高度な信号保安システム

については多くの方にとって難しく、とっつきにくいと感じる部分ではないでしょうか。StdとExtの信号における根本的な考え方の違いは、多くのStdプレイヤーにとって複雑で分かりにくいところだと思います。
九龍さん・五番星さん・そして私が中心となって開発しているパックセット Pak256-Ex においても、同様に現実的な信号配置ができるよう多種多様な信号機が実装されています。
www.pak256.simutrans.info

この記事では、そのようなStd勢の方のために「どのように信号が働くのか?」「どのように信号を扱ったらよいのか?」の2点について、Pak256-Exの信号機を例として説明し、その上で上手に使う方法を紹介します。もう知ってるよという方はお好きなところから斜め読みしてください。

続きを読む

Ŝvebante en amo la unua

ことのはアムリラート、いつかのメモラージョ。凛、ルカ、レイ、カナーコが織りなす純百合物語。尊いのでやってほしい。以下ネタバレになるので、未プレイ閲覧は非推奨。。。

続きを読む

つくってあそぼ ~Simutrans-Extendedの建物アドオンは世界を救う~

ご無沙汰しておりますふぃすたむです。本記事はSimutransアドベントカレンダー16日目の記事になります。

adventar.org

0. Simutrans-Extendedとは

Simutrans-Extended(以下Extended)はJamespetts氏らによって開発されている、Simutrans(以下Standard)の拡張版でございます。

ダイヤは組めるし信号はいっぱい種類があるし飛行機は高く飛ぶし、よりリアルにSimutransをやりたいという方は是非ともExtendedを体験してみてくれ!

といっても、現状ちゃんと遊べるのってpak128.Britain-Exだけなんですよね…

日本的な建物だったり車両ってないんですよね…

じゃあどうやってアドオンを作ればいいんでしょうかっ!?

続きを読む

Power revenue balancing

Simutrans-Extendedの機能改善を行いました。
大して難しいことはしていません。simuconf.tabに
power_revenue_factor_percentage (=100,default)
の項目を導入し、電力収入をスケールできるようにしました。というかなんで今までhard-codedだったんだろう…
まあ、Simutrans-Extendedでは都市に電力を供給して発展度を上げたりできるようになっているので、電力事業の需要はstandardより高まっています。都市のサイズによっては10MWの電力需要があったりして、場合によってはそれが主な収入源になる可能性もあるわけです。
現状使えるpaksetはBritain-exしかないですが、将来的に新しいextended用paksetが出現した場合にはここも重要な要素になると思います。国によってレート違いますからね…

そういえば、電力周りだと変電所はobj=miscで回転非対応だったり、送電線のdiagonal指定は鉄塔なし画像指定だったり、いろいろアレな実装が多いっぽいので、ゆくゆくは改善したいなあ、と思っています。

というわけで、パッチ開発報告でした。

f:id:Phystam:20180202021544p:plain
新規項目はGeneral Ex.タブに入っています。Standardに入れる気はないです…

Simutrans-ExtendedにおけるAFHPatchの開発

本稿は、Simutrans Advent calender の3日目の記事になります。詳細についてはこちらを参照してください。
adventar.org

背景

従来のSimutransでは、飛行機はその種類によらず常に一定の高度を飛行していました。その高度はお世辞にも高いとは言えず、少し高さがある建物や高架路線に対して頻繁に衝突するなど、景観を重視するプレイヤーにとって低空飛行は大きな課題となっていました。本研究は、すでに飛行機の挙動に関して最小滑走路長が設定されるなどの変更が加えられているSimutrans-Extendedを対象として、飛行高度および離着陸のアルゴリズムを変更することで、飛行機がより現実的な振る舞いをするよう改良することを目的として行ったものです。
f:id:Phystam:20171201222533p:plain
図1: 建物に衝突する飛行機。tile heightを単位として高さ3の位置を飛行するため、このような重大事故は非常に頻繁に発生していました。

開発

問題点

本研究では、飛行高度の変更に伴って、山越え時の飛行高度変更の挙動や、着陸態勢に入り滑走路を予約する地点や予約範囲に対して変更を行いました。
単純に飛行高度を上げるだけなら非常に簡単に実装することができますが、着陸態勢に入る位置は低空飛行時と同様に滑走路端から3マス手前であることは変わりません。つまり、高い高度から着陸態勢に入ると滑走路の中腹や、短い滑走路の場合は滑走路を超えた地点で着陸することになってしまいます。また、滑走路の長さの計算がうまく計算されず、実際には着陸には問題ない滑走路長であったとしても、"runway too short"、つまり滑走路が短すぎると警告が出て着陸できない場合がありました。これらの問題が見られた、開発当初の動画を御覧ください。
www.youtube.com
動画1: 滑走路長が極端に長いのは、runway too shortの問題を避けるためです。

改良

着陸態勢に入る位置を制御するためのパラメータとして"landing_distance"をタイル単位で、飛行高度をその飛行機の最高速度に依存させるため"altitude_level"をtile height単位で、それぞれ導入しました。これらの変数は、次のように計算されています。
 \mathrm{AltitudeLevel}=
\begin{cases}
5&(v<165\,\mathrm{km/h})\\
v/33&(165\,\mathrm{km/h} \leq v <990\,\mathrm{km/h})\\
30&(v\geq 990\,\mathrm{km/h})
\end{cases}
 \mathrm{LandingDistance}=\mathrm{AltitudeLevel}-1
この変数を着陸態勢に入る位置とすることによって、着陸時の挙動を現実的なものにできるようになりました。
www.youtube.com
また、飛行機の着陸時の速度は、その飛行機の最高速度の1/3と決められていましたが、低速な飛行機では40km/h程度となり、現実的な値ではありませんでした。例えば、120km/hから40km/hに減速し着陸、その後滑走路では60km/hが最高速度になるため60km/hまで加速する、といった不可解な速度調整が行われていました。そこで、こっそり着陸時の速度を最低でも60km/hとすることによってこのねじれを解消しました。

終結

その後、公式forumで、着陸後滑走路の終端まで予約し、終端で180°折り返すという動作の改善をするよう要望がありました。本研究ではこの要望に応え、滑走路の終端までではなく最短滑走路長分のみを予約し、予約範囲の終端まで行ったら近くの駐機場に向かうように変更しました。これにより滑走路のデッドタイムの短縮に成功しました。

まとめ

本研究の結果、AFHPatchは正式にSimutrans-Extendedのmasterブランチに統合され、Extendedの機能の一部となりました。開発者として、このことは非常に喜ばしいものであったことと同時に、私のような未熟な開発者でもExtendedの土壌では本家統合が比較的容易であるということが改めて感じられました。
最後にみなさんもSimutrans-Extendedをプレイし、より高い位置を飛行するようになった飛行機を、ご自身の目で確認してみてください。
f:id:Phystam:20171203003244p:plain
図2: まだ飛行機が飛ばない江戸の世。

謝辞

パッチゼミを開催しパッチ開発の指南をしてくださったひめしさん、そしてExtendedへの機能統合を快諾してくださったJamesさん、この場を借りてお礼申し上げます。