SDK Manual - Map Editor 2

Last-modified: 2020-09-30 (水) 16:19:22

まえ

レッスン3: 新規マップの作成と地形の造形

今まではGrundorfマップをコピーしてレッスンしましたが、我々はここで完全に新しいマップを作ろうと思います。

3.1. 新しいマップを作る

新しいマップを作るには、マップをコピーした時と同じ方法で行います。唯一異なるのは、Templateディレクトリの「NewMap」をコピーして"オリジナル"なマップを作ることです。以下で簡単に説明しまよう。

 

OMSIのディレクトリを開き、「templete」サブディレクトリへ移動します。そこに「NewMap」サブディレクトリがあります。それを選択してコピーします([Ctrl]+[C])。OMSIディレクトリに戻り、「maps」へ入ります。そこには「Berlin-Spandau」や「Grundorf」や「My_Map」のサブディレクトリがあるはずです。ここに前にコピーした「NewMap」サブディレクトリをペーストします([Ctrl]+[V])。すると他のマップディレクトリと並んで「NewMap」が見えるはずです。

 

ではディレクトリの名前をあなたの好きな名前にリネームしましょう(例えば「Podunk」=田舎町)。レッスン1で説明したようにディレクトリの中の「global.cfg」を開き、[name]と[friendlyname]の下の名前を例えば「Podunk」に変更してください。

 

ではエディターを起動し、問いかけられたら「Nein」を押し、「Podunk」サブディレクトリの「global.cfg」を選択します。

 

このマップは空のテンプレートからコピーしてきたので、オブジェクトが何もないタイルが1つだけ見えます。

 

Manual_SDK_1_EN_60.jpg

 

ではタイルと地形の機能を最初に試してみましょう。

3.2. タイル

OMSIのあらゆるマップは300x300メートルのタイルがパズルのようにいくつか組み合わさっています。それぞれのタイルはそれ自身がファイルになります。分かりやすいように、メニューから「Helpers」=>「Show Grid」をクリックしましょう。

 

Manual_SDK_1_EN_61.jpg

 

ご覧のように、あなたはまさに1枚のタイルを持っています。このタイルはマップの原点である"null tile"という特別なプロパティを持っているので座標は"0/0"となります。

3.3. 背景画像

ここで背景画像の機能についてお話しましょう。(これはそれほど難しくないので実例はありません。もし質問があればフォーラムで尋ねてみてください!)

 

背景画像について以下の情報は知っておくべきです: 高さと幅(南北/東西)はメートルです。nullタイルは高さと幅を北西の角からパーセンテージで測り画像を置きます。

 

「tile」タブを開き、「Backgroud Image」の「Load...」ボタンをクリックしてあなたの画像を選んでください。そして前述の数値を入力します。画像はマップエディターだけに表示されることに注意してください。

3.4. タイルの追加

ではレッスンに戻りましょう。一つのタイルでは非常に狭いですね。我々は他のタイルを追加しましょう。

 

既存のタイルの隣の"空のエリア"で右クリックしてください。するとマップカメラの中心がそこに移動します(もしなにも起こらなかったら、一度「Objects」タブに切り替えてから「Tile」タブに戻します)。

 

Manual_SDK_1_EN_62.jpg

 

タブの一番上に「Tile x=1, y=0」と表示されています。これはマップカメラの中心があるタイルの座標です。では「Create New Tile Here」をクリックしてください。

 

Manual_SDK_1_EN_63.jpg

 

これがタイルの追加でした!今「x = 1, y = 0, No. 1」と表示されていますが、これはタイル番号が1なわけです。

 

重要: タイルの削除はまだ実装されていません…今のところ必要ないですし!:) 「Delete this Tile」ボタンはまだ有効ではないのです。マップエディターのメジャーアップデートを期待したいところです…(お分かりのようにバグはこれだけではないですし…)。

3.5. 地形の編集

では「Terrain」タブを開いてください。「Size」は50、「Speed」は200、「Terrain/Water」は「Terrain」、そして「Higher」のままにします。地形の上で"ペイント"すると、その場所が持ち上がります!

 

Manual_SDK_1_EN_64.jpg

 

地面を掘るには「Lower」を使います。

 

Manual_SDK_1_EN_65.jpg

 

「Set Height to:」を選択すると特定の高さを入力できます。例えば10m。

 

Manual_SDK_1_EN_66.jpg

 

これはまたナイスな穴ですね...水でいっぱいにしてみましょう。マップカメラの中央が右のタイルにある時に、「Tile」タブの「Add Water」ボタンを押します。

 

Manual_SDK_1_EN_67.jpg

 

では我々が上で使ったようにあなたも同じ地形編集機能を使えます。しかし「Water」モードは、ぞれぞれのタイルの四隅にだけ成形ポイントがあります!タイルの中心でクリックしても水面の高さは変更できません。「Set Height to:」を -1 にすると水面の高さを -1 に設定できます。

 

Manual_SDK_1_EN_68.jpg

3.6. 地形ペイント

「Terrain」タブには地形にペイント可能なものがあります。これのために我々はレイヤーシステムを追加しました。

 

石畳道路をペイントしてみよう:

 

マップカメラを空いている地形の部分に移動します。「Paint on Layer」を選択し、「Size」を 2 に、「Ground Layers:」で「1: str_k_kopfstein.bmp」を選択します。では地形の上でペイントしましょう。

 

Manual_SDK_1_EN_69.jpg

 

「Rubber on Layer」を選択すると、ペイントしたエリアを消しゴムで消すことができます ―― しかし現在のレイヤーのみです!

 

もちろんレイヤーを更に追加することや、既存のレイヤーを編集することや、消去することができます(しかしレイヤー0はだめです)。

 

「1: str_kopfstein.bmp」レイヤーを選択した状態で「Edit Act. Layer...」をクリックしてください。

 

Manual_SDK_1_EN_70.jpg

 

選択したレイヤーのプロパティが表示されます。1列目にメインテクスチャーのファイル名と300mのタイルの境界間の反復数があります。

 

2列目には詳細テクスチャーの同じ項目があります(この場合、反復は無しで大きなオーバーレイとして使われます)。

 

下はマスクテクスチャーの解像度です。これらのテクスチャー(石畳道路やアスファルトなど)は512x512などの大きな解像度を持ち、そうでないとボヤケてしまうでしょう。その他の未舗装路などのテクスチャーは小さな解像度です。

 

重要: レイヤーを作成してから解像度の変更はできません!その前に決めておかないといけません。

 

では「Cancel」をクリックして、次に「Create New Layer...」をクリックします!

 

Manual_SDK_1_EN_71.jpg

 

「Main Texture:」の隣の「Search...」をクリックして、OMSIの「Texture」ディレクトリで「str_asphdrk.bmp」ファイルを選択し、「Repeating:」に20と入力します。

 

次にDetail Textureで「noise_low.bmp」を選択し、Repeatingを 1 にします。

 

解像度は「64x64」のままにします。

 

Manual_SDK_1_EN_72.jpg

 

OKをクリックして ―― それではマップにペイントしましょう。
(※訳注: ここでタイル全面がアスファルトで塗りつぶされてしまうかもしれませんが、ペイントを始めると解消されるはずです)

 

Manual_SDK_1_EN_73.jpg

 

ずいぶん解像度の低いアスファルトがレイヤー1の上に重ねられましたね!

 

重要: レイヤーの順序は変更できません(まだ)!マップを作成する前に、レイヤーとその順序を考慮しておく必要があります。

 

重要: 理論上は多数のレイヤーを持つことができます。しかし、全てがそのようなタイルだとパフォーマンスコストが掛かることに注意してください。ですので、レイヤーを少なく抑える、または、タイル一つ一つのレイヤーを単に少なくし、高い解像度を使用しないようにします。

レッスン4: 新規バス路線の作成

では早速要点に参りましょう、カスタム路線を作ろう!

 

前のチャプターであなたは重要な機能、シーナリーの作成を学びました。今度はそれを用いてあなたの最初の短いバス路線を作ることとしましょう。

4.1. 道路と交差点の設置

最初に「Objects」タブに変更し、「Load all!」をクリックし、問いかけられたら「Yes」をクリックします。その後OMSIにインストールされた全てのオブジェクトがリストに表示されます。
(※訳注: バージョン2.2.032では「Load Directory!」をクリックして、どれかのファイルを読み込むとそのファイルのディレクトリ全てのオブジェクトが読み込まれる)

 

リストは前に比べてちょっと大きいですが、今後はこのように作成を進めるのです :)

 

Spandauのマップは様々な交差点が大量にあります。いくつかの交差点や道路には建設現場などが組み合わされます。どの道路がどの交差点に合うかは末巻のAppendixを参照してください。

 

メインストリートは「Seeburger Str. with a width of 11m」になります。残念ながら、このタイプの道路はバスループに合いません。しかし他の既存の道路から作り出し、その後、非スケジュールのトラフィックを禁止してバスループにします。

 

「Crossings \ Junction Seeburger Str./Johannastr.」を探してスクリーンショットのように置きましょう。(※訳注: Kreuz_MCフォルダ)

 

Manual_SDK_1_EN_74.jpg

 

同じ種類の交差点を隣に隣接して置きます。

 

Manual_SDK_1_EN_74_2.jpg

 

そして200mの道路を追加しましょう。「Splines」タブで「Load...」をクリックし、「Marcel \ str_2spur_11m_SeeburgerStr1.sli」ファイルを読み込んでください。

 

このスプラインを左へ200m伸ばします。

 

Manual_SDK_1_EN_75.jpg

 

そうしたらもう一つ交差点を置きましょう。後でレイアウトを拡張することができますからね! ;-) 「Junction Seeburger Str./Päwesiner Weg」を使いましょう。このタイプなら信号機を設置するのにふさわしい。

 

Manual_SDK_1_EN_76.jpg

 

そしてカーブを作るために別の道路セクションを設置しましょう。先に-150mの半径を設定します。あなたのマップで収まらなければ値を変えるか新しいタイルを追加しましょう。ここで長さを入力する代わりに「Angle」へ「90」を入力します。完璧な90°ターンの完成です!

 

Manual_SDK_1_EN_77.jpg

 

最後に2つの別の交差点「Johannastr.」を追加します。

 

Manual_SDK_1_EN_78.jpg

 

それでは2つのループを作成しましょう。

 

前述した「Complete to」の機能でOMSIに自動で繋げさせることが可能でした。しかし、179°を超えると繋がらないので、手動で最初のピースを置く必要があります。

 

この場合は非常に簡単。私達の交差点は普通同じ長さを持つので、あなたは正しい半径を"推測"することができ、アングルには180°を入力できます。

 

スプラインで「Marcel \ str_2spur_8m_borkumer1.sli」を選択し新しくセグメントを挿入します。(「str_2spur_8m_altonaer1.sli」はアスファルト、「str_2spur_8m_sedan1.sli」は石畳、こちらもお薦めです。)

 

Manual_SDK_1_EN_79.jpg

 

半径(Radius)に「15」を入力し(この交差点の長さは正確に15mなのです)、[Enter]を押して適用し、アングル(Angel)に180°を入力します。

 

Manual_SDK_1_EN_80.jpg

 

以上!反対側で同様にやってみましょう。別のスプラインの種類で試すのもいいですね。

 

Manual_SDK_1_EN_81.jpg

 

これでルート作成の準備が整いました。
Manual_SDK_1_EN_82.jpg

4.2. 地形Lightmapsと「Envir」タブ

ここで2つの表題について少し寄り道しましょう。

 

先に道路に沿って街灯を並べてください。多彩な街灯から選べますが、例えば「Large Sodium on large whip pole」などはいかがでしょう。「German Street Side \ Lights」から選びましょう。(※訳注: Streetobjects_RUEフォルダ)

 

Manual_SDK_1_EN_83.jpg

 

樹木もいくつか置きましょう。(※訳注: RuedeフォルダとTrees_MSフォルダ)

 

Manual_SDK_1_EN_84.jpg

 

では「Envir」タブに切り替えてください。

 

ここにはマップの環境を様々に変えて見るためのパラメーターがいくつかあります。

 

一番上のスライダーは時刻を設定し、1つ下のスライダーは日付を設定します。下のスライダーを左端へ移動してください。

 

Manual_SDK_1_EN_85.jpg

 

我々のマップは冬の間このように見えるのです!下の「Snow」チェックボックスで雪を追加しましょう。

 

Manual_SDK_1_EN_86.jpg

 

重要: これらのパラメーターはもちろんセーブされません。これはただのデモンストレーションなのです。

 

(※訳注: 以下ライトマップ作成の解説ですがOMSI2.2.032では自動で作られるようです。)

 

雪を止めて一番上のスライダーを左端に移動してください(夜)。

 

Manual_SDK_1_EN_87.jpg

 

ご覧のように街灯が灯りますが道路は真っ暗なままです!

 

これはOMSIの機能に期待するところで、それがLightmapです!これはエディターが要求に応じてそれぞれのタイルごとに自動的に作成される夜間テクスチャーです。このテクスチャーは実際の光源に基づいて道路やオブジェクトや地形を照らします。

 

完璧な表示を達成するため、街灯を追加、移動、削除した後に地形のライトマップが作られないといけません。大きなマップではより時間が掛かるかもしれません。ですので一つのタイルごとにライトマップを作成できます(「Tile」タブにボタンがあります)。

 

我々の場合は全てのタイルで一気にライトマップを作りましょう。「Map」メニューから「Create lightmap」をクリックしてください。ダイアログが立ち上がりライトマップを作成する前に自動保存しますかと尋ねられます。「Yes」をクリックして続けます。
(※訳注: 現バージョンでは、Mapメニューから「Do with whole map...」をクリックし、開いたダイアログから「Create TerrainLightMap」にチェックし、「Start」を押します。)

 

ライトマップを適用する前にマップをリロードしなければなりません。エディターを閉じて再起動するか、「Map」メニューの「Change」をクリックして同じマップを再読み込みします。

 

その後、「Envir」タブで時刻のスライダーを再び夜に設定します。

 

Manual_SDK_1_EN_88.jpg

 

いい感じになりましたよね?:)

4.3. 交通ルールの調整

次に、ループでは一般車を通行禁止にする必要があります。「No unscheduled traffic」でマークするのがいい方法でしょう。他の選択肢では非スケジュール・トラフィックがループを通ってしまう恐れがあります。さらにいくつかの歩行者のパスも無効にしましょう。(※訳注: 筆者の環境では歩行者の通行禁止が反映されませんでした。特別なやり方があるのですかね?)

 

Manual_SDK_1_EN_89.jpg

 

反対側も同様に適用します。

 

Manual_SDK_1_EN_90.jpg

 

さらに、バスがここに駐車している間にループの出口が塞がれてしまうのを防ぎたいので、ループの交差点の優先度を下げることにしましょう。「Lower priority」を選択し、両方のループに入るパスをマークします。
Manual_SDK_1_EN_91.jpg

4.4. バス停の設置

バス停の支柱にラインカードをアタッチする方法を以前解説しました。今回はそれを実際に使ってみましょう!

 

オブジェクトのタイプから「Utilities \ Bus Stop」を選択します(※訳注: Genericフォルダ)。赤いキューブに「Bus Stop」とラベルが貼ってあります。これはヘルパーオブジェクトで、内部的にバス停の位置をマークするためのエディターだけに見えるものです。北側のループへ図のようにキューブを置いてください。矢印の方向の向きにも注意を払いましょう!

 

Manual_SDK_1_EN_92.jpg

 

次に、バス停のプロパティを編集しましょう。「Options...」をクリックします。

 

Manual_SDK_1_EN_93.jpg

 

最初に名前を入力します。デフォルトでは、「NewMap」のテンプレートに基づいた全てのAIトラフィックにSpandau Depotが割り当てられていて、バスに目的地を表示させるためにターミナルの名前はSpandau depotファイル(Spandau.hof)で定義された名前から使う必要があります。後ほどあなた自身のdepotファイルを作成する方法を学びましょう。

 

名前に「Harzer Str」と入力します。つづりが正確に合っているか確認してください。(rollsign No. 13, IBIS-code 165).

 

続いて2つの値は、バス停で待機している乗客の数の上限と下限を設定できます。ここは終着点なので二つとも「0」を入力します。

 

「Exiting Pass」(乗客の降りる数)は空のままでも結構ですし(待機している乗客の平均となる)、ここでは数値を入力することもできます(バスの乗客数にも依存します)。今回は「10」を入力しましょう。

 

「Docking distance/platform length」はバス停の着車位置をメートルで設定します。通常は初期値を使います。しかしReimerwegのような停留所でAIバスの到着と出発経路を最適化するために値で微調整することができます。

 

Manual_SDK_1_EN_94.jpg

 

2つ目のキューブを置きますが、こちらは乗客を乗せるように設定します。

 

Manual_SDK_1_EN_95.jpg

 

このバス停の名前も同じにします。ここでは待機している乗客数の下限を2、上限を10にします。降りる乗客数は0にします。

 

中程の交差点では2つのバス停を置いてみましょう。名前を「Goethestr」、待機している乗客の下限を0、上限を10、降車数を10にします。

 

Manual_SDK_1_EN_96.jpg

 

最後に南側ループに残り2つのキューブを置きましょう。方向が違うため、始発点の位置が変わります。

 

Manual_SDK_1_EN_97.jpg

 

ループの中のバス停は待機乗客数は0(minとmax両方共)、降車数を10にします。残りの北側のバス停は、下限を2、上限を10、降りる乗客数は0です。このバス停の名前は「Brixpl」です。(rollsign No. 16, IBIS-code 168)

 

次に、バス停のサインを置きましょう。「Bus Stop with name plate and 1 timetable」(※Streetobjects_RUE フォルダ)を通常のバス停に使い、ループ中の2つのバス停には「Bus Stop Terminus」を使います。すでに習ったようにラベルを書きましょう。もし欲しければ新しい路線「104」のためにラインカードを取付けましょう。この番号は3桁なので、「Bus Stop Lineplate yellow 3-digit」(※Streetobjects_RUE フォルダ)を使う必要があります。

 

Manual_SDK_1_EN_98.jpg

 

注意: 赤いキューブに入力したラベルは"正式な"バス停の名前です!これらは時刻表やdopotファイルや終着点の識別として使われます。一方、目に見えるバス停に何を書くかは重要ではありません。もちろん、人が運転するには名前が適当じゃ困りますね。

 

乗客の待機場所がまだ足りません。オブジェクトの中から「Utilities \ People Standing 1x3」を全てのバス停の隣に配置すると乗客はバスに乗ることができます。ラベルの向きをスクリーンショットで確認してください!待機している乗客が到着するバスの方向を見れるようにボックスの向きを正しく調整する必要があります。

 

Manual_SDK_1_EN_99.jpg

 

さらに屋根付きの待合室を置きましょう。これにはベンチが付いています!(「German Street Side \ BVG \ Bus Stop Hut」※Kreuz_MCフォルダ)。これにもラベルを付け、高さを歩道に合わせるのを忘れないように(0.25m)。

 

Manual_SDK_1_EN_100.jpg

 

全ての必要なバス停に待合室を置いてください。

 

注意: マップに時刻表がない限り(現時点ではそうなっています)、乗客はバス停に常に居続けます。一旦時刻表を定義したら乗客は次の出発時間の数分間にだけバス待ちします。

 

最初のテスト運転を始める前に、エントリーポイント(※Genericフォルダ)を北側ループに置いてラベルを「Harzer Str」としましょう。

 

Manual_SDK_1_EN_101.jpg

 

それではOMSIを起動してあなたの最初のバス路線をテストしてみましょう!バスに行先を表示させると乗客はそれに反応するのが分かるでしょう。
(メモ: Brisplatz = 方向幕 No.16、IBISコード 168、Harzer Str. = 方向幕 No.13、IBISコード 165)

 

Manual_SDK_1_EN_102.jpg

 

※訳注: 「Template\NewMap」フォルダからコピーした「ailists.cfg」は古い形式なので、そのままでは読み込みに非常に時間がかかり、さらに出現するAI車両はバスだけなど不具合がありますが、AIバスを減らして強引に動かせるようにしてみましょう。「maps\Podunk」の「ailists.cfg」を開き、以下のように書き換えてチュートリアルを進めてみてください。

[ailist]
0
-1
13
vehicles\MAN_SD200\MAN_SD85.bus
vehicles\MAN_SD202\MAN_D92.bus
vehicles\MAN_F90\AI_MAN_F90_Wechselbruecke.bus
vehicles\MB_W123_230E\AI_mb_w123_230e_cab.bus
vehicles\VW_Golf_2\AI_VW_Golf_2.bus
vehicles\VW_Golf_2\AI_VW_Golf_2.bus
vehicles\VW_Golf_2\AI_VW_Golf_2.bus
vehicles\MB_W123_230E\AI_mb_w123_230e.bus
vehicles\MB_W123_230E\AI_mb_w123_230e.bus
vehicles\MB_W123_230E\AI_mb_w123_230e.bus
vehicles\VW_T3\VW_T3_Van.ovh
vehicles\Opel_Manta_B\ai_opel_manta_b.ovh
vehicles\Citr_BX\BX.ovh
[aigroup]
Busses
12
0
1
2
3
4
5
6
7
8
9
10
11
Spandau

※訳注: ここではまだHofファイルというものに路線を設定していないので、IBISに入力できるのは系統番号と行先表示だけです。Linie/Kurs番号はありません。

レッスン5: スケジュールを持つAIトラフィック

マップエディターの最後のレッスンは、我々が作成したバス路線に時刻表を作り、AI車両にも走らせてみましょう。

 

しかし先に、車両の種類を適用させる「ailists.cfg」ファイルの詳細を見てみることにします。

 

(※訳注: この項目は古い形式のailists.cfgの解説です。現行のバージョン2.2.032について詳しくはailists.cfgを参照してください)

5.1. コンフィグファイル序説

テキストエディターで「maps \ Podunk」の「ailists.cfg」ファイルを開いてください。開き方は最初に「MyMap」を作成したときに習いましたね。

 

Manual_SDK_1_EN_103.png

 

コンフィグファイルとは、マップやバスや天候、シナリオなど、それらを記述している全ての設定ファイルです。一般にコンフィグファイルの拡張子は「*.cfg」となっており、時には車両ファイルに「*.ovh」や「*.bus」、シーナリーオブジェクトには「*.sco」、スプラインには「*.sli」と様々ですがこれら全てがコンフィグファイルになります。

 

まずはOMSIで使われるコンフィグファイル全てに当てはまるいくつかの基本を:

 

いわゆる"キーワード"というものが重要です!これらのキーワードで様々なコンフィグファイル間で連携させます。以前開いた「global.cfg」に比べ「ailists.cfg」にはまた別のキーワードがありますね。

 

OMSIがそういったキーワードを見つけた時にだけ、その後の数行が読み込まれます(そのデータセットに期待される構造に依存します)。OMSIがそのキーワードに属するデータの行をすべて読んだら再び新しいキーワードを探し始めます。

 

OMSIが次のキーワードを探している間はその他すべての行は無視されコメント行として扱われます。

 

重要: キーワードのスペルは正確であること!

 
  • 大文字小文字は厳密に区別される
  • キーワードの前後や中にスペースは厳禁
  • キーワード行に別の何かが書かれてはいけない!キーワードの後ろだとしてもいけない

それでは「ailists.cfg」の内容を見てみましょう。それぞれのマップはこのようなファイルを持つことができます。このファイルは車両をAIトラフィックとして定義させます。さらにこのファイルに含まれるリストを基に、「Random bus」や「Show only numbers fitting to the map's depot」が機能します。

 

最初に"[ailist]"と書かれた行を探しましょう。これがキーワードです!それに続いて以下パラメーターの行が並んでいます:

0
車両クラス。この値は使われず常に0である必要があります。
-1
非スケジュールの一般車両として使われる車両グループ。これが"-1"であれば、車両グループに属さないすべての車両が、非スケジュールの一般車両に使われます。
13
車両エントリーの数

その後に車両ファイルのリストが並びます。

 

次のキーワードの"[aigroup]"でAI車両のグループを定義します。

"Busses"
グループ名
12
グループ中の車両数
0...11
[ailist]からのインデックス番号。例えば、0 = MAN_SD85.bus、1 =MAN_D92.bus など。
"Spandau"
これらの車両に使われるDepotファイル(Hofファイル)

Golf や Mercedes や Van のようなその他全ての車両はどのグループにも記載されていませんね。つまり自動的にグループ"-1"に所属して、一般車両に使われます。(※訳注: ailists.cfgを編集済みならここは無視しましょう)

5.2. 新規AIグループを追加する

既存のD92バスを使って新しいAIグループを作ろう!

 

ファイル最終行の"Spandau"の次に改行を挟んで、次のエントリーを追加しましょう。

 
[aigroup]
Hof Kleckersdorf
1
1
Spandau
 

このグループ名は「Hof Kleckersdorf」(Podunk Depot)となり、唯一の車両を持ちます(インデックス番号1 = MAN_D92.bus)。

 

Manual_SDK_1_EN_104.png

5.3. 最初のスケジュールAIを作る

まず第一に、時刻表を作る際にマップエディターには別の問題点があり、改善の余地がまだ残されています。

 

重要: 時刻表は一旦道路を完成させてから作成しなければなりません!時刻表を作った後から道路のレイアウトを変えると全ての時刻表のデータは削除され再作成する必要があります。もう存在しない道路を使って時刻表を編集しようとすると、OMSIエディターはクラッシュしてしまいます!

 

ですからあなたは先に道路と交差点を作っておく必要があります。巨大な時刻表を作成する前に、削除されても構わないような簡単な時刻表を作ってレイアウトをテストするといいでしょう。

 

そして2つ目の不満点:

 

重要: エディターでLineやTackやTrip(これらが何かはすぐに分かります)の削除はできません!現在のマップのディレクトリの"TTDdata"ディレクトリからファイルを探し、それを手動で削除します。しかし不確かなままそのディレクトリのファイル全てを削除するときは気をつけてください。エディターが既に削除されたTackやTripのLineにアクセスしようとするとクラッシュする場合があります。

 

では時刻表関係の作成に使われる「Tracks & Trips」タブに変更してください。このタブでは再びパスが表示されます。

 

最初に「track」(経路)を作る必要があります。これは一つのターミナルから他へと向かうセクションです。終着点では復路の経路と少なくとも一つのセグメントでお互いを重ね合わせる必要があり、それによってバスは往路から復路へ切り替わることができます。

 

それでは新しい経路を作成しましょう。「Tracks」セクションの頭の「Create...」をクリックし、名前を今回は「104_Harzer_Brix」と入力してください。

 

Manual_SDK_1_EN_105.jpg

 

Modeが「Add TrackEntory」になっているのを確認したのち、「< - >」をクリックします。

 

Manual_SDK_1_EN_106.jpg

 

そして最初のセグメンをクリックします。

 

Manual_SDK_1_EN_107.jpg

 

ご覧のようにそのセグメントが黄色く色付けされました。では続けて次のセグメントをクリックしましょう。

 

Manual_SDK_1_EN_108.jpg

 

前のセグメントが赤くなり、現在のセグメント(リストにマークされる)が黄色くなります。

 

重要: 当然セグメントをクリックする順番が大切です!

 

始発点まで全てのセグメントをクリックしてください。セグメントをクリックする順番に気をつけて。リストの真下にある「Delete act. Track Entry」をクリックすると現在のセグメント(黄色)をリストから削除できます。

 

Manual_SDK_1_EN_109.jpg
Manual_SDK_1_EN_110.jpg
Manual_SDK_1_EN_111.jpg
Manual_SDK_1_EN_112.jpg
Manual_SDK_1_EN_113.jpg
Manual_SDK_1_EN_114.jpg

 

そのままBrixplatzターミナルの最後のセグメントまで続けます。

 

Manual_SDK_1_EN_115.jpg

 

すべて正しく繋がっているかチェックしましょう!「Find errors on loaded tiles」をクリックします。以下のリポートが表示されるのが理想です。

 

Manual_SDK_1_EN_116.jpg

 

しかし例えばセグメントに隙間が空いていたりすると、このダイアログボックスが開きます。

 

Manual_SDK_1_EN_117.jpg

 

この場合、途切れたセグメントの前のセグメントが自動的に選択状態になるので、単に途切れたパスをクリックするだけで繋がります(この方法は途切れたセグメントが一個の場合)。セグメントの順番を間違えていたり重なっているなどの場合は、リストから該当のセグメントを選択して「Delete act. Track Entry」ボタンをクリックして削除する必要があります。

 
復路のTrack作成(元)

では復路の経路を「104_Brix_Harzer」と名づけて同じ方法で作成してください。

 

Manual_SDK_1_EN_127.jpg
Manual_SDK_1_EN_128.jpg

次に、いわゆるTrip(片道の行路)を作成しなければいけません。Tripは常にTrackで構成され、バス停や行先表示、路線やその他のプロファイルを持ちます。プロファイルにはバス停間の経過時間がリストされます。例えばラッシュアワー時のプロファイルや深夜などの(経過時間が短い)プロファイルを作ることができます。

 

Tripを作成するにはTracksのドロップダウンリストから「104_Harzer_Brix」を選択し、「Trips」欄の「Create New (type1) with act. Track...」ボタンをクリックして、この片道便の名前を「104_Harzer_Brix」と入力してください。

 

Manual_SDK_1_EN_118.jpg

 

「Terminus:」(行先/ターミナル)に「Brixpl」(スペルに注意!)と入力し、「Line:」に「104」と入力し、[Enter]キーを押して確定します。ではバス停を追加していきましょう。

 

一番上にあるモード選択を「Add Station」にします。そしてTracksのリストから始発点になるバス停の真横のセグメントを選びます。そこが黄色に変わりましたね。

 

Manual_SDK_1_EN_119.jpg

 

ではバス停のキューブをクリックしてください。常に隣接した経路のセグメントが黄色であることを確認します。そうでないとAIトラフィックがエラーを起こします!下側のリストにバス停が追加されました。

 

Manual_SDK_1_EN_120.jpg

 

では次のバス停「Goethestr」の隣のセグメントを選択してバス停キューブをクリックします。

 

Manual_SDK_1_EN_121.jpg

 

重要: 適切なセグメントの順番によってバス停の順番は自動的に並べ替えられます。なので順番を気にする必要はなく、あとからでもバス停を挿入できます。

 

南側ループの終着点でも同様に行います。

 

Manual_SDK_1_EN_122.jpg

 

割り当てた3つのバス停のうち1つを選択してみてください。すると選択されたバス停のキューブが赤くなります(オーケー、キューブはもともと赤い。だがラベルも赤くなるのだ!:) )。さらにまた、適切な経路のセグメントも同様に選択されるので、そのバス停に適切なセグメントが"接続"されているかチェックすることができます。どこかで合わない事態があれば、"間違った"バス停を割当から削除して改めて挿入しましょう!

 

次にプロファイルを作る必要があります。「Edit Profiles...」をクリックします。次のウインドウが表示されます。

 

Manual_SDK_1_EN_123.jpg

 

今のところプロファイルは何もありません。「New」をクリックして新しいプロファイルを作成しましょう。名前はなんでも好きなものを付けましょう(おそらく「standard」となってるはず)。画面は次のようになります。

 

Manual_SDK_1_EN_124.jpg

 

そこに「Time form start to terminus:」(始発点から終着点までの時間)があります。つまりこれは最初のセグメントから最後のセグメントまでの所要時間です。最初は1分と仮に入力されています。その下にはバス停のリストがあります。全てのチェックボックスがチェックされていて、全てのArrival(到着時間)とDeparture(出発時間)が自動的に計算されています。では所要時間を5分としましょう。

 

Manual_SDK_1_EN_125.jpg

 

一旦[Enter]キーを押して確定するとバス停の時間が再計算されます。

 

いつでもチェックボックスのチェックを外して手動で時間を入力できます。その他の時間はそれに応じて調整されるでしょう。これはちょっとしたテクニックではありますが自動的に計算された時間で充分なのであまりこれを必要とはしません。

 

「Close」をクリックしてウインドウを閉じてください。これで片道行路のTripが完成!

 
復路のTrip作成(元)

では復路の便のTripを「104_Brix_Harzer」と名づけて作成してください。Terminusに「Harzer Str」と入力してあとは前述の通りに作成します(プロファイルも同様に)。この場合ちょっとした例外がありますね。「Brixplatz」と「Goethestr」が同じ経路のセグメント上にあります!しかし心配ご無用なのでそのまま続けましょう。

 

Manual_SDK_1_EN_126.jpg

※訳注: 往路は「Create New (type 1)」のボタンでTripを作成しました。これは古い形式のシステムで後方互換性のために残されたものです。チュートリアルは復路も同じ方法で作成するようになっていますが、ここで復路をOMSI2で新しく導入されたType2を使う方法で解説してみようと思います。参考: OMSI Wiki - Station-Links(ドイツ語)

新しいStation-LinksでTripを作成

この新しいシステムはStation-Links、または略してStnLinksと呼びます。さまざまな利点があり、例えば後から道路の修正が容易になる、並行した路線はStnLinksを共有できるのでコンパイルが非常に速い、Tripの作成が簡単、年代設定で路線が切り替わる機能に対応、などがあります。

 

その代わり、StnLinksは隣り合ったバス停間に最低二つのパスセグメントが必要終着点のターミナルから始発点の間にも独立したリンクが必要、などの制約も存在します。

 

では作成していきましょう。「StaionLinks」タブに切り替えて「New」ボタンをクリックしてください。下の「Set Start Starion」が選択されているのを確認したら南側ループの"Brixpl"ターミナルのバス停キューブをクリックします。自動的に「Add Path Segments」モードに切り替わります。

 

StnLinks_01.jpg

 

バス停キューブに隣接したパスセグメントをクリックし、次のバス停のセグメントまで繋げていきます。

 

StnLinks_02.jpg
StnLinks_03.jpg

 

モードを「Set End Station」に切り替えて次のバス停キューブ(Brixplの乗車場所)をクリックします。これで「Brixpl => Brixpl (inv.)」という一つの区間が出来上がりました。

 

StnLinks_04.jpg

 

次の区間"Brixpl => Goethestr"ですがここでちょっと問題に突き当たります。StnLinksの場合バス停間には最低二つのパスセグメントが必要でした。このカーブは一つのセグメントしか無いので、道路を分割して作りなおすかバス停を移動するかしなければいけません。交差点の先にバス停を移動するのが一番楽なのではないでしょうか。泣きながら移動しましょう。

 

StnLinks_05.jpg

 

道路がうねってるのはちょっと遊んでいたので気にしないでください。

 

同じように終着点までの区間を作ります。

 

StnLinks_06.jpg

 

ところでパスを選択する時OMSIは自動的に次の分岐点まで認識してくれます。分岐の先は認識されませんが、[Shift]キーを併用することで強制的に選択することができます。これは車線変更させる際に使えます(例えばSpandauのStadtrandstr付近の例)。

 

StnLinks_07.jpg
StnLinks_08.jpg

 

それではStnLinksが出来上がったのでTripを作成しましょう。

 

「Tracks & Trips」タブに切り換え、「Create New (tyep 2)」を押してください。名前を「104_Brix_Harzer」と入力してOKを押します。「Terminus:」は「Harzer Str」とし、「Line:」は104です。赤いエラー情報が出ますがこれからセクションを追加していきます。

 

モードが「Add Station」なのを確認し、バス停キューブをBrixターミナル(始発点ではなく)からHarzer Strの終着点まで順番に全てクリックしていくとTripsが完成して緑の文字で「すべてOK」となります。

 

StnLinks_09.jpg

 

忘れてはいけません、最後にプロファイルも作成してください。

 

StnLinks_10.png

 

先ほどとは違い、Brixplのターミナルと始発点の両方が含まれているのがStnLinksを使ったTripの特徴です。Type1のTripをType2に変換することもできますが("change into Type 2"ボタン)、その際はHarzer Strでターミナルと始発点間をStnLinksで繋げておくのを忘れないでください。

マニュアル日本語訳再開

これで準備が全て整ったので、ようやく時刻表を実際に作ることができます!「Edit Timetable...」をクリックしてください。

 

Manual_SDK_1_EN_129.jpg

 

それぞれのTrip(片道便)のスケジュールはTour(往復便)に属します。TourはLine(路線)へ次々と結合されます。LineとはTourの集団なわけです。複数のTourを一つのLineに入れることはできません。Line全体で一度に指定できるのは「User is allowed to drive this line(ユーザーはこの路線を運行できる)」と「Priority(優先度)」のみです。

 

では「Create」ボタンをクリックして新しい路線を「104」系統と名づけましょう。ドロップダウンリストから104を選択し、あなたが自分自身で運転できるように「User is allowd to drive this line」にチェックを入れます。「Priory」はそのまま1にします。

 

次にTourを作成する必要があります。Tourは特定の行路を往復して走る"一台のバス"です。「Tour」欄で「Create」ボタンをクリックして名前を「1」にしましょう。

 

Manual_SDK_1_EN_130.jpg

 

大きなチャートのX軸に1日の時間帯が表示され、他のTourはTour1の下に追加されていきます。今はただ一つのTourがあり、まだ完全に空のままです。

 

「Create」ボタンの下で以前作成したVehicleグループを選択でき、これがTourで使われます。「AI-Veh-Group」から「Hof Kleckersdorf」(Podunk depot)を選択しましょう。

 

個別の車両グループをTourそれぞれに割り当てることができるので、車両の割当には大きな柔軟性があるわけです。全てのバスが全てのTourにランダムに割り当てられるか、あらゆるTourは特定の車両グループに属して特定のバスだけが含まれるのどちらかです(我々は後者を選択します)。

 

車両グループの真下で平日の特定の日や祝日(祝日は平日には含まれません)などのTourの運行期間を設定できます。学校の祝日だけ運行させることや(Hols)、学校の祝日以外に運行させることや(No Hols)、それらを両方適用させることができます。

 

その下は個々のTripに適用できる設定項目があります。「New」をクリックしてください。新しいTripが午前0時に挿入されます。しかし我々は始発を午前4時02分にしたいので、「4:2:0」と入力してエンターを押してください。細かく見るにはグラフが狭いですね。チャートの下のスライダーで拡大縮小できます。

 

Manual_SDK_1_EN_131.jpg

 

「Trip:」で「104_Harzer_Brix」を選択します ―― すでに選択されていますね。「Time Profile:」には「standard」しかないですがプロファイルの項目がそれしかないからです。その下に始発点と行先、さらに終着点の到着時刻が表示されています。

 

復路を追加するには再び「New」をクリックし、「Tip:」の横の小さなボタンを押すとドロップダウンリストが更新されるので「104_Brix_Harzer」を選択します。出発時刻が前回の到着時刻の1分後になっていますね。しかし我々は5分の休憩が欲しいので、復路の出発時刻を4:12にしましょう。

 

Manual_SDK_1_EN_132.jpg

 

往路の出発から20分後に(休憩含む)このサイクルを再びスタートさせましょう。一番下にとても実用的な機能があります。この機能は、最後の X 個のエントリーを Y 回 T 分の間隔で繰り返す、というものです。デフォルトではX=2、Y=1、T=60となっています。

 

我々の場合は間隔に20分を設定します。そして「Do it!」をクリック。

 

Manual_SDK_1_EN_133.jpg

 

Tripを間に挿入することはできません。いずれにしろ普段は必要ないでしょう。その特定のケースでは以下に続くエントリーを削除することになります。しかし通常は繰り返し機能を使って簡単に作りなおすことができます。

 

一日をすべて表示できるようにズームアウトしましょう。

 

Manual_SDK_1_EN_134.jpg

 

繰り返し機能を使ってさらにTripを追加していきます。

 

Manual_SDK_1_EN_135.jpg

 

重要: 出発時刻と到着時刻は24時を過ぎても構いません。例えば夜中を過ぎても運行を続ける路線があります。Spandauもそのようになっています。Tourも24時間以上続けることもできます。その場合、「昨日」のバスは「今日」のバスに出会うことになります。

 

これで「Close」をクリックしてウインドウを閉じることができます。

 

マップを保存してOMSIを起動しましょう!

 

全て正しくできたなら、D92のAIバスが路線にそって走り回っていることでしょう!

 

Manual_SDK_1_EN_136.jpg

 

残念なことに、このバスはバス停サインや乗客に注意を払おうとしません。

 

Manual_SDK_1_EN_137.jpg

 

バス停キューブを道路の中央寄りに少し移動してやると直すことができます!

 

スケジュールトラフィックは全体的に首尾よく動いているはずです。そしてまた、あなたがあなた自身のバスで運行することもできるはずです。

5.4. あなた自身のバスのリペイントを追加

必ずしもこのマニュアルに必要ではないですが、ついでにリペイントの作成方法を解説しましょう。その後に特定のAI車両の数とペイントをどのように用意できるか示すことができますし。

 

SDKの一部であるRepaint Toolのおかげでリペイントを作るのは非常に簡単です。

 

SD200とSD202の2階建てバスは外装のテクスチャーがそれぞれ二つ、「_1」と「_2」で分かれています。「_1」はバスの側面と前面と後面で、屋根のパーツが「_2」になります。

 

あなたがもしバスの側面だけペイントしたかったら「_1」のテクスチャーの編集だけで十分です。

 

SDKディレクトリに移動して「RepaintTool \ MAN D」を開いてください。ここにはリペイントファイル一式があります。D92_1.rpcをメモ帳などのテキストエディターで開いてください。

 

Manual_SDK_1_EN_138.jpg

 

このファイルはリペイントする時に使われ、例えばD92のリペイントで「_1」のテクスチャー(側面や正面・後面)を使うとして、Templatesフォルダのどのファイルが実際に用いられるかを決定します。

 

ずいぶん難しそうですって?レッツ・トライ!

 

Templatesフォルダから「D92_01_BS.bmp」を「RepaintTool \ MAN D」フォルダへコピーし、「D92_01_Testbus.bmp」とリネームしてください!それを例えばペイントツールなどで開いてください。

 

Manual_SDK_1_EN_139.jpg

 

このファイルはバックグラウンド(Base, BS)として使用されます。rpcファイルに記述されているその他のファイルは、加算オーバーレイと乗算オーバーレイに用いられます。

 

あなたの最初のテストリペイントにこのテクスチャーを使いましょう!「貼り付け」られたくないエリアにはピュアマゼンタで塗る必要があります。
RGB (255, 0, 255)
16進表記 #FF00FF

 

Manual_SDK_1_EN_140.jpg

 

最初のテクスチャーが何も残らないように塗りつぶしてください。

 

Manual_SDK_1_EN_141.jpg

 

では「RepaintTool.exe」を起動します。(※訳注: ここで"qtintf70.dll が無い"とのエラーが出ると思います。qtintf70.dll は、OMSI2のメインフォルダにありますので、コピーして RepaintTool フォルダに貼り付けてやりましょう。)

 

Manual_SDK_1_EN_142.jpg

 

「Convert」ボタンをクリックし、最初に適切なリペイント用のrpcファイルを選択します(Appendixで他のSD202やSD200で使われるrpcファイルを探すことができます)。ここでは「D92_1.rpc」を選択し、次に「D92_01_Testbus.bmp」を選択します。

 

Manual_SDK_1_EN_143.jpg

 

「Ja」をクリックして確定します。これでRepaintToolは「D92_01_Testbus.dds」ファイルを生成します。

 

「Omsi \ Vehicles \ MAN_SD202 \ Texture」ディレクトリを見てください!ここにはSD202それぞれの「Werbung」(広告)があります。それでは「Werbung_D87」フォルダの「werbungen1_zugelassen.cti」ファイルを「Werbung_D92」フォルダにコピーして名前を「repainttest.cti」にリネームしてください。

 

重要: このファイルにはOMSIのリペイントに必要な情報が含まれています。OMSIは常に特定のフォルダで全てのctiファイルを探します。あなたは必ず自身のリペイントのために既存のctiファイルは編集せずに作らなければなりません。

 

ではテキストエディターを使ってそのファイルを開いてください。

 

Manual_SDK_1_EN_144.jpg

 

コンフィグファイルの一つであるこのファイルでは、ヘッダの「*** Veltins ***」はコメントと解釈されます。実際の情報は [item] から始まります。

  • Veltins = 名前(ailists.cfgと車両選択ダイアログで使われる)
  • farbschema_tex1 = 内部識別子。OMSIがこのテクスチャーをどう扱うか知らされる。
  • D87_01_Veltins.dds = テクスチャーの指定

リペイントのテクスチャーごとに常に一つの[item]エントリーがあります。屋根も含めたリペイントを作成するには2つのエントリーが必要になります。

 

ファイルを以下のように編集しましょう。

 

Manual_SDK_1_EN_145.jpg

***************************************
SDK-Repainttest
***************************************
[item]
SDK-Repainttest
farbschema_tex1
D92_01_Testbus.dds
 

さらにまた、「D92_01_Testbus.dds」テクスチャーファイルを「Werbung_D92」ディレクトリにコピーしてください。

 

するとOMSIの車両選択画面にそのリペイントが表れるようになります。

 

Manual_SDK_1_EN_146.jpg

 

もし屋根の上にもリペイントしたい場合は、「D90_02_BS.bmp」を用いて屋根のテクスチャーを作る必要があります(Appendixで対応表を見てください ※訳注: ここはOMSI2に完全には対応してないので各自判断しましょう)。このテクスチャーを「D92_02_Testbus.bmp」とリネームし、D92_2.rpcを使って変換すると「D92_02_Testbus.dds」が作成されます。

 

そしてふたつ目の[item]エントリーを追加します。

[item]
SDK-Repainttest
farbschema_tex2
D92_02_Testbus.dds

5.5. 車体番号とAIグループ

(※訳注: OMSI2の"ailists.cfg"はこちらを御覧ください)

 

我々は既にAIグループを学びました。今度はその既存のAIグループを特別に定義されたバスの車体番号やペイントのグループに変えてみようと思います。

 

「Podunk」マップディレクトリのailist.cfgを開いてください。

 

「Hof Kleckersdorf」の [aigroup]を[aigroup_depot]と書き換え、二つの数値を削除します。

 

Manual_SDK_1_EN_147.jpg

 

するとOMSIは車両番号のリストがあることを期待します。

 

次のようになります: [aigroup_depot_typgroup]のエントリーで始まり、次の行に車両タイプのインデックスが来ます(「MAN_D92.bus」の1が再び登場する)。

 

その後に「車体番号とペイント」の組からなるリストが挿入されて、最終行に[end]と記入しリストを閉じます。

 

Manual_SDK_1_EN_148.png

 
[aigroup_depot]
Hof Kleckersdorf
Spandau
[aigroup_depot_typgroup]
1
3960
3961
SDK-Repainttest
3962
[end]

これの意味は、グループ内に3つのバスがあり、3960号車は広告無し、3961号車には先ほど作成したペイントを適用し、3962号車は広告無し、となります。

 

重要: 広告のスペルはctiファイル(または車両選択画面)のものと完全に同一である必要があります!

 

これを保存してOMSIを起動すると、定義した3台のバスのうち常に一台があなたの路線を運行しているはずです!

 

Manual_SDK_1_EN_149.jpg

 

[aigroup_depot_typgroup]のリストは好きなように多数追加することができます。例えば、2つ目のリストとしてLFGの広告をまとった2台のSD85を作成できます。

[aigroup_depot_typgroup]
0
3413
LFH (Pop)
3434
LFH (Pop)
[end]
 

Manual_SDK_1_EN_150.jpg

 

※訳注:
OMSI2の機能をまんべんなく使えるようにするため、実際にはailists.cfgを例えばGrundorfマップからコピーしてきて、以下のように編集することになります。

[aigroup_2]
NormalCars
vehicles\VW_Golf_2\AI_VW_Golf_2.bus	70
vehicles\MB_W123_230E\AI_mb_w123_230e.bus	50
vehicles\MAN_F90\AI_MAN_F90_Wechselbruecke.bus	30
vehicles\MB_W123_230E\AI_mb_w123_230e_cab.bus	10
vehicles\VW_T3\VW_T3_Van.ovh	10
vehicles\VW_T3\VW_T3_Transporter.ovh	10
vehicles\Opel_Manta_B\ai_opel_manta_b.ovh	10
vehicles\Citr_BX\BX.ovh	40
vehicles\MB_T1\ai_mb_t1_kasten.ovh	10
vehicles\MB_T1\ai_mb_t1_rtw.ovh	1
[end]
[aigroup_depot]
Hof Kleckersdorf
Spandau
[aigroup_depot_typgroup_2]
vehicles\MAN_SD202\MAN_D92.bus
3960	GRN-V 60
3961	GRN-V 61	SDK-Repainttest
3962	GRN-V 62
[end]
[aigroup_depot_typgroup_2]
vehicles\MAN_SD200\MAN_SD85.bus
3413	GRN-V 13	LFH (Pop)
3434	GRN-V 34	LFH (Pop)
[end]

SD85もAIバスとして運行させるには"Spandau.hof"を「MAN_SD202」フォルダから「MAN_SD200」フォルダへコピーしましょう。

5.6. depotファイルの作成(hofファイル)

(※訳注: 以下は古い形式のHofファイルの解説ですが、OMSI2と互換性があるので特に問題ありません。Hofファイルについて詳しくは.hof?を参照してください)

 

最後に、SD202を用いてdopotファイルをどう作成するのか見ていきます。

 

「MAN_SD202」ディレクトリに移動し、「Grundorf.hof」ファイルのコピーを作って「Podunk.hof」とリネームしてください。

 

テキストエディターでファイルを開いてください。

 

コメント行の多さに惑わされないように。いつもの通り重要なのはキーワードだけです。

 

最初のエントリーは[name]で次の行に名前を設定します。名前を「Podunk」に変更しましょう!

 

次のエントリー[servicetrip]は、回送時に何を表示するかOMSIが知るのに必要です。このエントリーはこのまま残して構いません。

 

次に「stringcount_terminus」のキーワードが来て(今回はブラケット無し!)、そのバスの行先表示に必要な文字列のエントリー数を指定します。真下にはコメントとして「addterminus」の解説が記載されています。

 
String_0: IBIS1ディスプレイ (最大16文字、大文字のみ)
String_1: Matrixディスプレイ、正面、1段目 (最大16文字、大文字のみ)
String_2: Matrixディスプレイ、正面、2段目 (最大16文字、大文字のみ)
String_3: Matrixディスプレイ、側面、SD200用 (最大16文字、大文字のみ)
String_4: 方向幕テクスチャー
String_5: IBIS2ディスプレイ (最大20文字、大文字小文字含む)
 

その後に「stringcount_busstop」のキーワードがあり、バス停の定義に必要な文字列のエントリー数が4に指定されています。以下のように「addbusstop」でコーディングされます。

 
String_0: IBIS1ディスプレイ (最大16文字、大文字のみ)
String_1: 車内ディスプレイ、1行目 (大文字小文字含む)
String_2: 車内ディスプレイ、2行目 (1行目の後2行目に切り替わる。空行にすれば切り替わらない)
String_3: IBIS2ディスプレイ (最大20文字、大文字小文字含む)
 

全てのターミナルのエントリーリストが次に続きます。このリストの順番が幕式方向幕の順番にも影響します。

 

これには二つのタイプのエントリーがあります。[addterminus]は通常の行先表示で、[addterminus_allexit]は乗車中の乗客を降ろすか、乗車しないように伝えるものです(例、「Betriebsfahrt」= 回送)。

 

キーワードの後に、IBIS行先コードと停留所名(赤いバス停キューブやTripsに設定されたもの)を指定し、続いて「stringcount_***」で定義された数だけ文字列のエントリーが続きます。

 

例:

[addterminus]キーワード
102IBISコードナンバー
Saganoallee停留所名
SAGANOALLEEIBISディスプレイ(IBIS 1)
正面マトリクス1行目
SAGANOALLEE正面マトリクス2行目
SAGANOALLEE側面マトリクス(SD200)
Gru_Saganoallee.tga方向幕テクスチャー(SD200)
SaganoalleeIBIS2ディスプレイ
................マトリクスとIBISディスプレイの最大幅16文字に合わせたガイド(つまりコメント行)
 

SD200の方向幕を用いてdepotファイルを作成する場合:
方向幕のテクスチャーは「Vehicles \ Anzeigen \ Rollband_SD79」フォルダにあります。ここにあなた自身のテクスチャーを追加できます。

 

これらのテクスチャーはアルファチャンネル付きフォーマットで保存しなければなりません(tgaファイルなど)。テクスチャー全体にアルファ値を255で設定してはいけません。少なくとも1ピクセルが254以下のアルファ値を持っている必要があり、そうでないとグラフィックにエラーが起こります!

 

terminuseのリストの後に、停留所のリストが続きます。次のエントリーで構成されます。

 
[addbusstop]キーワード
Einsteindorf Ausbau停留所名
D.DORF AUSBAUIBISディスプレイ(IBIS 1)キャッシャーにも表示される
Einsteindorf車内ディスプレイ1行目
Ausbau車内ディスプレイ1行目切り替わり
EinsteindorfAusbau IBIS2
....................20文字幅のガイド
................16文字幅のガイド
 

最後にルート設定です。これらは常に[infosystem_trip]と[infosystem_busstop_list]の2つのパートで構成されます。

 
[infosystem_trip]キーワード
7602Line + Route (Line 76、Route 02)
KRANKENHAUS-BAUERNHOF(使われない)
107Zielコード
76(使われない)
 

"[infosystem_busstop_list]"はそのルートを構成するバス停の、そのエントリー数の定義とそのエントリーだけで構成されます。前述のとおり、停留所名は前に[addbusstop]でも使ったバス停キューブに設定している名前と完全に一致させる必要があります。

 

あなた自身の行先表示やバス停やRouteを追加する方法やを細かくチュートリアルで説明するにはあまりに膨大になってしまいます。しかし今やあなた自身でそれを行う充分な経験があることを我々は望みます。質問などがあれば遠慮せずフォーラムで我々にコンタクトしてください!

 

Appendix 1: 交差点とそれに適合するスプラインタイプ

交差点:適合するスプライン:
bue_falks_ohe.scoBahnübergang über
str_6spur_falkenseer1.sli
Einm_Altonaer.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_Blasew_Obst_Sand.scostr_2spur_12m_Sandstr.sli
str_2spur_12m_SeeburgerWeg1.sli
Einm_Blasew_Reclam.scostr_2spur_12m_Sandstr.sli
str_2spur_9m_Reclamweg1.sli
Einm_Borkumer.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_Brunb_Whv.scostr_2spur_10m_brunsbuetteler1.sli
str_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_erzgebirgs.scostr_2spur_6m_erzgebirgs.sli
str_2spur_6m_freud1.sli
Einm_falks_remscheider.scostr_6spur_falkenseer1.sli
str_2spur_6m_erzgebirgs.sli
Einm_falks_steigerwald.scostr_6spur_falkenseer1.sli
str_2spur_6m_erzgebirgs.sli
Einm_frankenwald_erzgebirgs.scostr_2spur_9m_westerwald1.sli
str_2spur_9m_frankenwald1.sli
str_2spur_6m_erzgebirgs.sli
Einm_freud_kraepelin.scostr_2spur_6m_freud1.sli
Einm_Sedan.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_See.scostr_2spur_11m_SeeburgerStr1.sli
Einm_see_johanna.scostr_2spur_11m_SeeburgerStr1.sli
str_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_See_Paewesiner.scostr_2spur_11m_SeeburgerStr1.sli
str_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_see_seeckt.scostr_2spur_11m_SeeburgerStr1.sli
str_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Einm_westerwald_erzgebirgs.scostr_2spur_9m_westerwald1.sli
str_2spur_9m_frankenwald1.sli
str_2spur_6m_erzgebirgs.sli
Extra_002_Wende1.scostr_2spur_6m_freud1.sli
str_2spur_6m_erzgebirgs.sli
Kreuz_Altonaer.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Kreuz_Borkumer.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Kreuz_erzgebirgs.scostr_2spur_6m_erzgebirgs.sli
str_2spur_6m_freud1.sli
Kreuz_falks_frankenwald.scostr_6spur_falkenseer1.sli
str_2spur_6m_erzgebirgs.sli
str_2spur_6m_freud1.sli
str_2spur_9m_westerwald1.sli
str_2spur_9m_frankenwald1.sli
Kreuz_falks_kiesteich.scostr_6spur_falkenseer1.sli
str_2spur_9m_westerwald1.sli
str_2spur_9m_frankenwald1.sli
str_2spur_12m_kiesteich1.sli
Kreuz_falks_westerwald.scostr_6spur_falkenseer1.sli
str_2spur_9m_westerwald1.sli
str_2spur_9m_frankenwald1.sli
Kreuz_Sedan.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Kreuz_See_Elsflether.scostr_2spur_11m_SeeburgerStr1.sli
str_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Kreuz_see_schmknob_lutoner.scostr_2spur_11m_SeeburgerStr1.sli
str_2spur_12m_SeeburgerWeg1.sli
Kreuz_westerwald_erzgebirgs.scostr_2spur_9m_westerwald1.sli
str_2spur_9m_frankenwald1.sli
str_2spur_6m_erzgebirgs.sli
Verzieh_falks_zepp1.scostr_6spur_falkenseer1.sli
Verzieh_falks_zepp2.scostr_6spur_falkenseer1.sli
Wende_Borkumer_R.scostr_2spur_8m_altonaer1.sli
str_2spur_8m_borkumer1.sli
str_2spur_8m_sedan1.sli
Wende_Erzgebirgs_L.scostr_2spur_6m_erzgebirgs.sli
str_2spur_6m_freud1.sli
Wende_Erzgebirgs_R.scostr_2spur_6m_erzgebirgs.sli
str_2spur_6m_freud1.sli

Appendix 2: SD200とSD202のリペイントファイル

SD200:

Front/side/backRoof
SD77SD77_01.rpcSD77_02.rpc
SD80SD80_01.rpcSD80_02.rpc
SD81SD81_01.rpcSD81-82_02.rpc
SD82SD82_01.rpc
SD83SD83_01.rpcSD83_02.rpc
SD83_RLBSD83_RLB_01.rpc
SD84SD84_01.rpcSD85_02.rpc
SD85SD85_01.rpc
 

SD202:

Front/side/backRoof
D86D86_1.rpcD86_2.rpc
D87D87_1.rpc
D88D88_1.rpcD88_2.rpc
D89D89_1.rpc
D92D92_1.rpcD92_2.rpc

OMSI 1.00
Technical Manual – Software Development Kit (SDK)
Part 1: Map Editor
State: Feburary, 13th, 2011
© 2011 Marcel Kuhnt

コメント