Simutrans(シムトランス)は多言語、多OS対応のシミュレーションゲーム。
概要
Simutransは交通機関を作って貨物や旅客を移送して収益を上げる経営シミュレーションゲームである。
登場するのは鉄道、自動車、船舶、飛行機と高速鉄道、モノレール、路面電車などで、主要な交通機関をほぼ網羅している(なお、この世界のリニアは、少なくともpak64では速いモノレール扱いである)。
「アドオン」と呼ばれる追加ファイルを導入する事で、様々な鉄道車輌や自動車、建造物等をゲーム内に登場させることが出来る。
噂によると、日本の鉄道車両は90%網羅されているとか。
標準では、旅客/郵便/貨物の3種類を運ぶことができ、交通の結節点となるターミナルで乗り換え(積み替え)ることができる。豊富な交通機関を組み合わせて効率のよいルートを敷くことは、このゲームの醍醐味である。
鉄道駅から末端までのバスを走らせたり、貨物を鉄道はもちろんトラックや船・飛行機で連携して運ばせたりするなど、リアルな交通体系が再現可能である。
元はドイツ語だったが今では15ヶ国語に対応し、WindowsだけでなくMac OS XやLinux版、そしてiPhone版アプリも存在する。
詳しくは素直にウィキペディア
を参照されたし。
導入
構成としては基本パッケージ(実行ファイル)+PAKセットになっており、PAKセットは64版と128版のメジャー2つから選ぶことをオススメする(2022年1月現在、ここ1年以内に更新されてるのはpak・pak.japan(以上64版)およびpak128.german・pak128.CS(以上128版)の4種類である)。
違いはビジュアルの解像度であり、64は荒く128は細かい。
他にもゲームバランスやアドオン、クライアントの重さなどが両方で異なるが、好みで決めてもらって構わないはずである。
PAKセットの一覧
- 32
- 48
- 64
- 96
- 128
- 192
マルチプレイ
大昔はセーブデータをやり取りしてマルチプレイをしていたが、2011年以降はネットワークを介したマルチプレイに対応している。サーバ側とクライアント側でPAKはすべて共通にすること。そうしないとうまく接続できない。
アドオンの自作
頑張れば産業チェーンなども自作可能である(編集者は昔、実際に自作したことがある)。
ただし、ドキュメントがあちこちに様々な言語で散らばっており、それを理解するのは一苦労である。普通使う大半のものは日本語Wikiを読めば書いてあるので、日本語Wikiを読むのが日本人にとっては楽である。
なお、pngファイルの画像サイズは、スプライトを用いる前提で、使用するPAKセットのサイズの倍数でなければならない(ただし、symbol.BigLogo.pakはpak128用でパックする必要がある。256×256の画像で、4分割のスプライトである)。
ちなみに、このアドオンはPAKとしてパッキングされるが、これをまとめたものがPAKセットである。
datファイルの書き方の例
例えば、pak128のあるPAKのdatファイルの一部分を抜粋したのがこれである。datファイルにおいて、先頭に#のついた行はコメント行であり、無視される。
obj=good
name=Passagiere
copyright=none
metric=
catg=0
value=14
#value=11
speed_bonus=18
weight_per_unit=85引用元: https://github.com/simutrans/pak128/blob/master/factories/goods-128.dat
これは、旅客の定義であるが、
- オブジェクトのタイプはgood(貨物タイプ)である
- 名前はPassagiereである(この名前は、旅客で用いる特別な名前で、PAKセットで定義すべきものである)
- 著作権者はnone
- 単位はなし
- カテゴリは特殊。専用の貨車に乗せて運ぶ必要がある。旅客は旅客車に乗せて運ぶ
- 基本運送料金はkmあたり14。実際に入ってくる金はこれを300で割ったものになる(つまり1kmあたり0.0467¢)。なお、輸送において1kmは1マスのことを指す
- スピードボーナスは18%。これは基準スピード(乗り物ごとに計算する、その時点で利用可能な乗り物の平均速度。詳細は調べてない)に対して10%上回ると18%の運送料金の増加、10%下回ると18%の運送料金の減少であるということである。ただし、ゲーム設定ファイルで規定されたbonus_basefactor(デフォルト値は128で、12.8%の意味)より運送料金が下回ることはない(つまり、この場合、基準スピードより48.4%を超えて下回る場合でも、12.8%の収入は確保できるということである)
- 1単位あたりの重さは85kg
という意味になる。
これが産業になるともっと複雑になる。
Obj=factory name=oilkraftwerk copyright=Patrick Location=Land DistributionWeight=1 Productivity=600 Range=400 Smoke=industry_smoke SmokeTile[0]=0,1 SmokeOffset[0]=27,-84 #SmokeUplift=0 Electricity_amount=800 Electricity_boost=0 Mail_demand=10 Mail_boost=500 Passenger_demand=20 Passenger_boost=800 InputGood[0]=Oel InputCapacity[0]=6000 InputSupplier[0]=0 #the input factor is a trick how to make powerplant produce more power than mines consume InputFactor[0]=50 MapColor=132 Dims=3,3 intro_year=1900 #This set of backimages is the one used to make the non-animated version. #Lights are lit on the stacks, but flame is at its smallest. BackImage[0][0][0][0][0]=oilkraftwerk.2.0 BackImage[0][1][0][0][0]=oilkraftwerk.0.4 BackImage[0][2][0][0][0]=oilkraftwerk.0.0 BackImage[0][0][1][0][0]=oilkraftwerk.2.1 BackImage[0][1][1][0][0]=oilkraftwerk.0.1 BackImage[0][2][1][0][0]=oilkraftwerk.0.2 BackImage[0][0][2][0][0]=oilkraftwerk.2.2 BackImage[0][1][2][0][0]=oilkraftwerk.1.2 BackImage[0][2][2][0][0]=oilkraftwerk.1.1 BackImage[0][1][0][1][0]=oilkraftwerk.1.0 #--- BackImage[0][1][0][0][1]=oilkraftwerk.0.3 BackImage[0][1][0][1][1]=oilkraftwerk.1.3 #--- BackImage[0][1][0][0][2]=oilkraftwerk.2.3 BackImage[0][1][0][1][2]=oilkraftwerk.1.3 #--- BackImage[0][1][0][0][3]=oilkraftwerk.2.4 BackImage[0][1][0][1][3]=oilkraftwerk.1.3 #--- BackImage[0][1][0][0][4]=oilkraftwerk.2.3 BackImage[0][1][0][1][4]=oilkraftwerk.1.3 #--- BackImage[0][1][0][0][5]=oilkraftwerk.0.3 BackImage[0][1][0][1][5]=oilkraftwerk.1.3 # EOF引用元: https://github.com/simutrans/pak128/blob/master/factories/powerplants/oilkraftwerk.dat
これの意味は以下の通りである。
- オブジェクトのタイプはfactory(産業)である
- 名前はoilkraftwerk(石油火力発電所)である。kraftwerkで名前が終わっているので、これは発電所である
- 著作権者はPatrickである
- 陸地に設置される
- 出現頻度は1である
- 最小出力は600である
- 最大出力は最小出力に400を加えたもの、1000である
- 煙はindustry_smokeを用いる
- 煙は上中央のマスから吐き出され、オフセットは(27, -84)である
- 1生産単位ごとに最大800まで電力を生産する
- 電力供給による生産量増幅はなし
- 郵便需要は10単位、完全に輸送すると500パーミル、つまり50%の生産量増強になる
- 旅客需要は20単位、完全に輸送すると800パーミル、つまり80%の生産増強になる
- 入力貨物の1番目はOel(原油)、6000単位まで貯蔵可能である。必要なだけ原油の生産拠点が生成され、必要に応じて産業が接続される。1生産単位の生産を行うために0.5単位の原油が必要である
- ミニマップ上で表示される四角の色番号は132(赤)である
- サイズは3×3である
- 1900年以降に作成される
- https://github.com/simutrans/pak128/blob/master/factories/powerplants/oilkraftwerk.png
の画像を用いるが、まず1番目の添字は建物の向きである。2番目と3番目はどの座標のタイルか、4番目はどの高さかを示す。5番目はアニメーションの2コマ目以降は1以上の数字になる。oilkraftwerk.2.0とは、oilkraftwerk.pngの(0,256)(127,256)(127,383)(0,383)で囲われた128×128のタイル画像を用いる、という意味になる(pak128なので1マス128px)
街に作られる住宅も、乗り物も、道路も、datファイルとpngファイルを作成してPAKにする。
PAKセットに必要なもの
- config/menuconf.tab - メニューの定義。これはパックとは独立して、テキストファイルとして作成する
- text/[言語コード].tab - 文字列の翻訳(なくてもよいが、基本入れる)
- sound/*.wav - ゲームで使う音声(なくてもよいが、基本入れる)
- sound/sound.tab - 音声の定義(上記で入れた音声をどう使うかの定義。音声なしなら入れなくてよい)
- config/simuconf.tab - PAKセットの基本設定(なくてもよい場合もあるが、基本入れる)
- config/forestrules.tab - 森林の生成ルール(なくてもよいが、基本入れる)
- config/cityrules.tab - 市街地の生成ルール(なくてもよいが、基本入れる)
- crossing.*.pak - 複数の種類の道(道路・線路・運河など)の交差。踏切など
- cursor.*.pak - カーソル(2022年1月時点で12種類ある)
- misc.Construction.pak - 建設中の建物
- misc.PowerDest.pak - 変電所(受電側)
- misc.PowerSource.pak - 変電所(発電所側)
- misc.Sidewalk.pak - 歩道
- symbol.*.pak - 各種シンボル(20種類以上ある)、特にsymbol.Builder.pakは重要な模様
- menu.*.pak - メニュー(GeneralTools・SimpleTools・DialogTools・BarToolsの4種類)
- ground.*.pak - 地面関係のオブジェクト(数種類ある)
- good.None.pak - 空荷
- good.Passagiere.pak - 旅客(pak128.Japanでは二等旅客)
- good.Post.pak - 郵便・手荷物(pak128.Japanでは一等旅客)
- building.*_CITY.pak - 村役場・町役場・市役所
- way.city_road.pak - 市道
- way.*_road.pak - 道路
- building.CarDepot.pak - 自動車用車庫
- building.TrainDepot.pak - 鉄道車庫
- way.*_rail.pak - 線路
- building.*Depot.pak - 車庫(対応する乗り物ごとに最低1種類)
- way.*.pak - 各種道(道路・線路・路面電車・モノレールなど。送電線もこれに属する)
逆に、これらさえ準備できれば独自のゲームバランスの、独自グラフィックのPAKセットを提供できる。
PAKの種類
PAKの種類は、大きく分けて22種類存在する。
- bridge - 橋
- building - 建物(産業を除く。駅や車庫などもこれ)
- citycar - 町の中を走る一般自動車
- crossing - 複数の種類の道の交差。踏切など
- cursor - カーソル。PAKセットで定義する
- factory - 産業。名前の末尾がkraftwerk(ドイツ語で発電所の意味)もしくはpowerplant(英語で発電所の意味)の場合は発電所になる
- field - 田畑
- good - 貨物(旅客、郵便・手荷物、空荷もこれで、これらはPAKセットで定義する。それ以外はPAKセットでもアドオンでも定義可能)
- ground - 地面関係。PAKセットで定義する
- ground_obj - 岩や池、鳥など
- menu - メニュー。PAKセットで定義する
- misc - その他雑多なもの。PAKセットで定義する
- pedestrian - 歩行者
- roadsign - 道路標識(鉄道信号機なども含む。要するに各種道に設置する、建物以外のものはこれ)
- smoke - 煙
- sound - 音声(大昔はsoundをpakしていたため(2006年よりも前)。現在は使用しない)
- tree - 木
- tunnel - トンネル
- vehicle - 乗り物。プレイヤーが購入し、旅客・郵便・貨物を輸送するために用いる
- way - 道
- way-object - 道の上の飾り(架線など)
旅客・郵便・貨物の乗り継ぎについて
Simutransの旅客・郵便・貨物は、現実からすれば奇妙な挙動をする。
まず、停車駅1ごとに1、乗り換え1回ごとに9というスコアが定義されており、このスコアが最小になるような経路を利用する(なお、スコアが同じ場合は乗り換え回数が少ない経路を優先する)(出典
)。そして、その乗換駅へ行く列車なら何でも利用する(出典
)。どういうことかというと、現実にのっとって、東京駅から北へ向かう以下のような系統が存在するとしよう。
- 山手線
- 京浜東北線 各駅停車
- 京浜東北線 快速(話を簡単にするために平日ダイヤとする)
- 宇都宮線 普通
- 宇都宮線 快速ラビット
- 高崎線 普通
- 高崎線 快速アーバン
- 常磐線 普通(快速)
- 常磐線 特別快速
- 常磐線 特急ときわ
- 常磐線 特急ひたち
- 東北・上越・北陸新幹線(上野停車)
- 東北・上越・北陸新幹線(上野通過)
ここで、東京駅からさいたま新都心駅へ向かうとしよう。何が起きるかというと、
- 京浜東北線 各駅停車経由のスコアは21点
- 京浜東北線 快速経由のスコアは17点
- 宇都宮線・高崎線 普通経由のスコアは5点
- 宇都宮線・高崎線 快速アーバン経由のスコアは13点(乗り継ぎ:浦和駅)
- 東北・上越・北陸新幹線(上野通過)のスコアは11点(乗り継ぎ:大宮駅)
なので、「宇都宮線・高崎線 普通」を使う経路が選択される。ということは東京駅から直行するわけなのだが、東京駅からさいたま新都心駅まで直行する列車なら何でも使うので、京浜東北線にも容赦なく乗ってくる。要するに、経由駅を経由する便なら何にでも乗り込んでくるし、直行で向かうなら直行便なら何にでも乗ってくる(当たり前だが、旅客は郵便車や貨車には乗らないし、石炭は旅客車や郵便車やばら荷貨車以外の貨車には乗らない。経由計算段階でそれは配慮される)、ということである。
これが東京駅から倉賀野駅へ向かうとなると、何が起きるかというと、
なので、経由としては高崎駅経由になる。だが、快速アーバンだろうが、普通列車だろうが、新幹線だろうが、とにかく最初に来た高崎駅に行く列車に乗って、高崎駅で乗り換えて向かうことになる。
なので、適切な経路・停車駅の列車を設定しないと、変な経由で旅客・郵便・貨物が移動することになる。
昔は乗り換え回数のみで判定していたが、どうやら今はロジックが変わってるらしい。
鉄道輸送における閉塞の概念
鉄道や路面電車などには閉塞の概念がある。閉塞は現実の鉄道の閉塞の概念と同じで、1閉塞内には1列車しか入ることができない。
閉塞と閉塞の間を区切るのは、鉄道信号機、もしくは停車駅である。Simutransにおける信号機には、以下の5種類がある。
- 通常の信号機
- これは、最低限の機能のみを備えている。まず、次の停車ホームまで信号機が1つもない場合、次の停車ホームまでの経路に列車がいないかを確認し、いるならば信号機の手前で列車を停止させ、いないならば青信号を出して列車を通す。一方、次の停車ホームまでに信号機がある場合、その信号機までの経路に列車がいないかを確認し、いるならば信号機の手前で列車を停止させ、いないならば青信号を出して列車を通す。その際、その区間をその列車のために予約する。複線区間において閉塞間を区切る場合、この信号機を用いることになる。また、単線区間でも、駅間に信号場を設置する場合で、停車駅が交換可能駅であるならば、この信号機を設置すればよい。
- プレシグナル
- これは、次の停車ホームまで信号機が1つもない場合の挙動は通常の信号機と同じである。一方、次の停車ホームまでに信号機が1つ以上ある場合、このプレシグナルの次の信号機までの経路に列車がいないかを確認し、いるならば信号機の手前で列車を停止させ、いないならば青信号を出して列車を通す。いずれの場合も、チェックした区間すべてをその列車のために予約する。この特性から、一般的に複線区間における待避線に使うことが多い。
- プライオリティシグナル
- これは、次の停車ホームまで信号機が1つもない場合の挙動は通常の信号機と同じである。一方、次の停車ホームまでに信号機が1つ以上ある場合、まず次の信号機までに列車がいる場合は信号機の手前で列車を停止させる。そうでない場合、次の信号機の挙動を模倣し、もしその際その区間に列車がいるならば次の信号機までの区間を予約し、列車がいなければ模倣した区間まですべて予約する。予約した後列車を通す。主に複線区間における優等列車を通す主本線に使うことが多い。
- 多閉塞信号
- チェック区間が他の信号機と異なり、常に次の信号機までである。チェック区間内に列車がいる場合は手前で列車を停止させる。いない場合、信号機の間に停車ホームがない場合は次の信号機まで、停車駅がある場合は次の停車駅までの経路を予約する。主に単線区間において、棒線駅を含む閉塞区間の入口で用いる。
- 入線振分信号
- これもチェック区間が他の信号機と異なる。まず、チェック区間は次の停車駅までである。最初にチェックするのは停車ホームまでで、停車ホームまでの経路がある場合、チェックした区間すべてを予約する。一方、停車ホームまでの経路が予約できなかった場合、同じ駅のその列車が停車可能なホーム(すなわちホーム有効長が編成長以上あり、かつ動力が電気の列車の場合、架線が張られているホーム)までの経路がある場合、そこまでの経路を予約する。いかなる経路も予約できなかった場合、その列車を手前で停車させる。一方、予約できた場合は列車を通す。全列車が停車するターミナル駅で使用することになる。通過列車がある場合、その通過列車が大量の閉塞を予約するまで立ち往生してしまうため、通過列車が通る線路にこれを置いてはならない。
いくつかのパターンがあるので、それを示す。
単線の場合
単線で、両端の駅を除きすべて交換可能駅とし、かつすべての列車が各駅停車の場合、信号機は必要ない。なぜならば、駅のホームから出る際に経路予約を行えるかチェックするため、問題なく列車交換が行えるためである。
- 駅間に信号場を設置する場合。この場合、信号場の出口に進行方向を向いた通常の信号機を設置する
- 両端の駅以外に棒線駅がある場合。この場合、棒線駅がある区間の入口手前に多閉塞信号機を設置し、そこを抜け交換可能地点に入る手前に通常の信号機を設置する
- 単線で一方通行の環状線を設置しており、その閉塞を分割したい場合。この場合、動かしたい向きに沿って通常の信号機を設置する
- 通過駅のある列車を走らせる場合。この場合、駅の出発信号機を設置する。通常の信号機で問題ない
複線の場合
複線の場合、編成ごとに両端の駅の入線番線を固定しない限り、両端の終着駅においては場内信号機として入線振分信号を用いる。駅間において、閉塞を分割したい場合は、通常の信号機を設置する。
待避線を設置し優等列車を通す場合、以下のような形をとる。
- 主本線の出発信号機にはプライオリティシグナルを設置する。また、次駅までの間に必ず信号機を設置する。その信号機は通常の信号機、もしくはプライオリティシグナルである必要がある
- 副本線(待避線)の出発信号機にはプレシグナルを設置する
複々線以上の場合
複々線以上の場合、線路別複々線であれば、単に系統が別の複線が並んでいるだけなので、複線と同様である。また、方向別複々線の場合も、道中での転線により緩行線と急行線の入れ替えがなければ線路別複々線と基本的には同じである。方向別複々線で、緩行線と急行線の入れ替えがある場合は、少し注意が必要である。
- 出発時に緩行線と急行線の入れ替えを行う場合は特に問題ない
- 進入時に緩行線と急行線の入れ替えを行う場合は、通常の信号機を用いるのが基本である。入線振分信号を用いる場合は、出発側にも転線可能なように線路を準備しておくことが必要である。また、この駅で上下の転線を行うことが可能な構造になっている場合、予期せず上下線の転線が発生し混乱を起こす可能性があるため、折り返しを意図しない場合には振分禁止標識を設置し、その経路を通らないように設定すること
関連動画
関連項目
外部リンク
- Simutrans日本語化・解説
- ファンサイト。 - 公式サイト
- Simutrans Extended
- より現実に近いシミュレーションを可能にした改造版
- 5
- 0pt

