第7部:付録
本章では、開発の参考となるXMLタグリファレンス、スキーマ定義、および標準ID一覧を掲載します。
7.1 XMLタグリファレンス
plugin.xmlで使用されるXMLタグの網羅的なリファレンスです。
7.1.1 全体構造と共通要素
<plug-in> (ルート要素)
プラグイン定義の起点となるタグです。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<title> |
プラグインのタイトル | ○ | |
<author> |
制作名 | 複数記述可 | |
<homepage> |
URL | 配布サイトなど | |
<depend> |
依存関係 | <depend on="plugin.id"/> |
|
<contribution> |
拡張機能の定義 | ○ | 複数記述可 |
<contribution>
個々の拡張機能(車両、建物など)を定義します。
| 属性 | 説明 | 必須 | 値の例 |
|---|---|---|---|
type |
コントリビューションの種類 | ○ | trainCar, GenericStructure |
id |
一意な識別子(GUID推奨) | ○ |
7.1.2 画像・グラフィックス関連タグ
<picture>
画像リソースを定義、または参照します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
src |
画像ファイルへのパス | 定義時に使用 | |
ref |
別の picture コントリビューションのID |
参照時に使用 |
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<override> |
条件付き画像の切り替え | 季節や時間帯による差し替え。<picture> が src 属性を持つときのみ有効。 |
<override>
季節や時間帯による画像の差し替えを定義します。
| 属性 | 説明 | 必須 | 値の例 |
|---|---|---|---|
when |
差し替え条件 | ○ | night, spring, summer, autumn (または fall), winter |
src |
差し替え画像のパス | ○ |
<sprite>
画像から特定の部分を切り出して配置します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
origin |
切り出し開始座標 | ○ | x,y 形式 |
offset |
垂直オフセット | 基準点からの高さ(px) | |
size |
切り出しサイズ | w,h 形式。通常自動計算 |
|
opposite |
反転/回転モード | true で反転・サイズ交換 |
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<picture> |
使用する画像 | ○ | ref または src を指定 |
<spriteType> |
色変換などの特殊効果 |
<spriteType>
画像に対する動的な色変換処理などを定義します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
name |
処理の種類 | ○ | colorMapped または hueTransform を指定 |
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<map> |
変換ルール | ○ | 複数記述可 |
<map>
色変換の具体的なルール(どの色をどの色に変えるか)を定義します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
from |
変換元の色 | ○ | R,G,B。* はワイルドカード |
to |
変換先の色 | ○ | R,G,B またはカラーライブラリID |
7.1.3 建物・構造物
共通パラメータ
多くの構造物系コントリビューションの子要素として記述します。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<name> |
建物の名称 | ○ | |
<group> |
メニューでの分類 | ||
<price> |
建設費用 | ○ | 数値(EX Av v2では現実の1/3を推奨) |
<size> |
建物のサイズ | ○ | x,y (ボクセル単位) |
<height> |
建物の高さ | △ | 固定高さ (ボクセル単位)。maxHeight 指定時は不要 |
<computerCannotBuild/> |
自動建設の禁止 | 記述があればCPUは建設しない |
<pictures> (高さ可変用)
高さ可変の建物 (GenericStructure, varHeightBuilding) で、パーツ分けされた画像を定義します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
opposite |
反転モード | true で反転 |
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<top> |
上層部分 | ○ | 複数記述可 |
<middle> |
中層部分 | ○ | 高さ16px単位。高さに応じて繰り返し描画されます。 |
<bottom> |
下層部分 | ○ | 複数記述可 |
<structure>
建物のカテゴリ分類を定義します。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<category> |
カテゴリ定義 | ○ | 複数記述可 |
<category>
plugins\jp.co.tripod.chiname.lib.generic\CategoryTree.xml に基づき、 byid か byname のどちらかを指定します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
byid |
カテゴリID | △ | |
byname |
カテゴリ名 | △ | 付録 7.3参照 |
hide |
メニュー非表示 | true でリストから隠す(内部的な属性付与のみ行う) |
<population>
建物の人口と利用客の挙動を定義します。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<class> |
人口クラス | △ | 省略時は ConstantPopulation (0) 等として扱われる場合があるが指定推奨 |
<base> |
基礎人口 | △ | 同上 |
<class>
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
name |
クラス名 | ○ | 完全修飾名(例: freetrain.contributions.population.ResidentialPopulation) |
codebase |
DLLパス | 独自実装時のみ |
7.1.4 車両・交通
<train>
列車編成を定義します。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<name> |
編成名 | ○ | |
<type> |
列車種別 | 「通勤形」「特急形」など自由な文字列 | |
<company> |
運行会社 | ||
<description> |
説明文 | ||
<fare> |
基礎運賃 | ○ | 数値。標準は 400 |
<price> |
1両あたりの価格 | ○ | 数値。 |
<amenity> |
魅力 | ○ | 50 ~ 200 の数値 |
<triprange> |
移動距離 | ○ | short, middle, long |
<speed> |
走行速度 | ○ | 数値またはキーワード |
<composition> |
編成構成 | ○ | 後述 |
<composition>
列車の編成構成を定義します。
| 子素 | 説明 | 必須 | 属性 |
|---|---|---|---|
<head> |
先頭車両 | carRef="{ID}" (指定したIDの trainCar を参照) |
|
<body> |
中間車両 | ○ | carRef="{ID}" |
<tail> |
後尾車両 | carRef="{ID}" |
<config> (PatternTrainImpl 専用)
固定編成のパターンを文字で定義します。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<car> |
車両の紐付け | ○ | char(文字)と ref(車両ID)を紐付けます。 |
<composition> |
編成パターン | ○ | 紐付けた文字(char)で編成を記述します(例: 先中中後)。 |
<road>
道路を定義します。
| 子要素 | 説明 | 必須 | 備考 |
|---|---|---|---|
<name> |
道路名 | ○ | |
<style> |
道路スタイル | ○ | 後述 |
<picture> |
画像定義 | ○ | 道路では size, offset 属性が必須 |
<style>
| 属性 | 説明 | 必須 | 値の例 |
|---|---|---|---|
name |
種別 | ○ | street, highway, footpath, railballast |
sidewalk |
歩道 | none, shoulder, pavement |
|
lanes |
車線数 | 数値 (1, 2, ...) |
7.1.5 データ型定義
属性値などで使用される基本的なデータ形式です。
座標・サイズ
- Point (
x,y): 2次元座標。例:0,0,32,16 - Size (
w,h): 幅と高さ。例:32,32 - Distance (
x,y,z): 3次元距離・サイズ(ボクセル単位)。例:1,1,2
色
- RGB (
r,g,b): 各成分 0-255 の整数。例:255,0,0(赤) - ワイルドカード:
*を使用可能(hueTransformなど)。例:*,0,0
速度
- キーワード:
superb(1),fast(2),medium(3),slow(4) - 数値: 1ボクセル走行にかかる分単位の時間(整数)。数値が小さいほど高速。
時間・季節
spring,summer,autumn(またはfall),winternight(夜間オーバーライド用)
7.1.6 システム・ツール関連タグ
<class>
C#による独自拡張プログラムのクラスを指定します。
| 属性 | 説明 | 必須 | 備考 |
|---|---|---|---|
name |
完全修飾クラス名 | ○ | 名前空間を含むクラス名。 |
codebase |
DLLファイルパス | plugin.xmlからの相対パス。 |
<menu>
メインメニューに独自の項目を追加します。
| 属性 | 説明 | 必須 | 値の例 |
|---|---|---|---|
name |
メニュー表示名 | ○ | |
location |
追加先のパス | ○ | view (表示), rail (鉄道), road (道路) など |
position |
挿入位置 | 整数値 |
<multiple/>
dockingContent において、同一種類のウィンドウを複数開くことを許可するフラグ。記述がない場合はシングルトン(1つのみ)として扱われます。
7.1.7 地形・システム関連
<landBuilder> (地形)
地表のランダム配置などを定義します。
| 子要素 | 説明 | 備考 |
|---|---|---|
<name> |
名称 | |
<lands> |
構成IDリスト | 他の land コントリビューションのIDを列挙 |
<stockMarket> / <bank> (金融)
金融システムの挙動をカスタマイズします。
| 子要素 | 説明 | 備考 |
|---|---|---|
<businessHour> |
営業時間 | open, close 属性で時間を指定 |
<eventSpans> |
イベント間隔 | 株式用。日(d), 月(m)等で指定 |
<debt> |
融資設定 | 銀行用。available, repayable 属性 |
<deposit> |
預金設定 | 銀行用。available, cancelable 属性 |
<terrainOnlyNewGame> (新規ゲーム)
地形生成ルールを追加します。
| 子要素 | 説明 | 備考 |
|---|---|---|
<image> |
高さマップ | href 属性で画像パスを指定 |
<size> |
マップサイズ | x,y 形式 |
<height> |
最大高さ | 数値 |
<waterLevel> |
水面高さ | 数値 |
7.2 スキーマ定義ファイル
FreeTrainのplugin.xmlの構造は、Relax NG Compact Syntax (RNC) によって定義されています。
ソースコードの core ディレクトリ内にある plugin.rnc がルート定義であり、そこから画像定義用の picture.rnc を読み込む (include) 構造になっています。
以下は、これらを統合して整理した定義の抜粋です。この定義を読むことで、「どのタグが必須か」「どの属性が使えるか」「親子関係はどうなっているか」を厳密に知ることができます。
RNC記法の読み方
element name { ... }:<name>タグの定義。attribute name { ... }:name属性の定義。text: テキストデータが入る。?: 省略可能(0回か1回)。*: 繰り返し可能(0回以上)。|: いずれかを選択 (OR)。
定義抜粋
# ルート要素 (plug-in)
start =
element plug-in {
element title {text}, # タイトル (必須)
element author {text}*, # 作者 (複数可)
element homepage {text}?, # ホームページ (省略可)
# コントリビューション定義 (繰り返し可)
element contribution {
attribute id{xs:token}, # ID属性 (必須)
contribution_content # 各タイプごとの定義
}*
}
# 画像定義 (picture) の構造
# type="picture" の場合、以下のいずれか (定義 または 参照)
contribution_content |=
attribute type {"picture"},
( pictureDef | pictureRef )
# 画像の実体定義
pictureDef =
element picture {
attribute src {xsd:anyURI}, # 画像パス
element override { # 条件付きオーバーライド (繰り返し可)
attribute when { "night"|"spring"|"summer"|"fall"|"winter" },
attribute src {xsd:anyURI}
}*
}
# 画像の参照
pictureRef =
element picture {
attribute ref {xs:token} # 参照ID
}
7.3 建物カテゴリ一覧
GenericStructureのcategoryタグでbyname属性に指定可能なカテゴリ名の一覧です。
階層構造になっていますが、通常は最下層(インデントが深いもの)の名称を指定します。
| 大分類 | サブ分類 | カテゴリ名 (byname) |
|---|---|---|
| 住宅 | ||
| 一戸建て | ||
| 賃貸集合住宅 | 賃貸アパート | |
| 寮 | 学生寮, 社員寮 | |
| 分譲集合住宅 | 分譲マンション | |
| 店舗 | ||
| 個人日用品店 | ||
| 個人専門店 | ||
| その他小売店 | 家電店, 自動車販売店 | |
| 地域チェーン日用品店 | ディスカウントショップ, コンビニ | |
| チェーン専門店 | ||
| スーパー | ||
| デパート | ||
| 都市型量販店 | ||
| 郊外型量販店 | ||
| ショッピングモール | ||
| 旅客向け小売店 | 土産物屋 | |
| 展示場 | ||
| サービス窓口 | ||
| 地域サービス店 | ||
| オフィス | ||
| 貸事務所 | ||
| 企業事務所 | ||
| 個人事務所 | ||
| 銀行 | ||
| 商業向けサービス | ||
| 官公庁 | ||
| 放送メディア | ||
| 研究施設 | ||
| 企業一般研究所 | ||
| 企業特殊研究所 | ||
| 公立一般研究所 | 工業試験場 | |
| 農林水産試験場 | ||
| 公立特殊研究所 | ||
| 量子研究所 | ||
| 観測所 | 気象観測所, 天体観測所 | |
| 工場 | ||
| 工場用パーツ | ||
| 食品工場 | ||
| 一般製品工場 | 製薬工場 | |
| 民生機械工場 | 家電工場 | |
| 自動車工場 | ||
| 造船所 | ||
| 工業機械工場 | 町工場 | |
| 精機工場 | ||
| 資材工場 | 製鉄所, 製材所 | |
| 軽工業工場 | ||
| 化学工場 | 製油所 | |
| ハイテク工場 | 半導体工場, ナノテク工場, バイオ工場 | |
| その他工業製品工場 | ||
| 燃料貯蔵所 | 石油タンク, ガスタンク | |
| 一般発電所 | 火力発電所, 太陽光発電所, 風力発電所 | |
| 原子力発電所 | ||
| 特殊発電所 | 水力発電所, 地熱発電所, 潮力発電所 | |
| その他電力通信施設 | 変電所, 送電線鉄塔 | |
| 航空機関連施設 | ||
| 空港 | 貨物ターミナル, 旅客ターミナル, 管制指令施設, 格納庫, 滑走路, その他空港設備 | |
| 船舶関連施設 | ||
| 港湾 | 貨物埠頭, 旅客埠頭, その他港湾設備 | |
| ドック | ||
| 灯台 | ||
| 物流 | ||
| 倉庫 | ||
| 集配所 | ||
| 食料産地 | ||
| 食料農場 | 水田, 野菜畑, 果樹園 | |
| 畜産場 | ||
| 漁港 | ||
| 養殖場 | ||
| 原材料産地 | ||
| 天然素材産地 | 伐採場 | |
| 農園 | ||
| 一般牧場 | ||
| 一般鉱山 | 炭坑, 採石場, 貴金属鉱山 | |
| 油田 | ||
| 飲食 | ||
| 一般飲食店 | ||
| チェーン飲食店 | ファーストフード, ファミレス | |
| 高級飲食店 | ||
| 有名飲食店 | ||
| 宿泊 | ||
| 一般宿泊施設 | 民宿, 旅館, ビジネスホテル, 観光ホテル | |
| 有名宿泊施設 | 高級ホテル | |
| 特殊宿泊施設 | 温泉旅館, キャンプ場 | |
| 別荘 | ||
| 娯楽 | ||
| 遊技場 | ゲームセンター | |
| 民営賭博場 | パチンコ店, 雀荘 | |
| 公営賭博場 | 競馬場 | |
| スポーツ観戦施設 | プロ野球場, プロサッカー場 | |
| スポーツ競技施設 | 陸上競技場, テニスコート, 一般球技場 | |
| 一般スポーツ遊技施設 | 屋外プール | |
| 特定スポーツ遊技施設 | ゴルフ場, スキー場, マリーナ, 野外遊泳場 | |
| 観覧施設 | 劇場, 映画館 | |
| 教養施設 | 美術館, 博物館, 歴史資料館, 図書館, 動植物園, 水族館 | |
| 児童公園 | ||
| 遊園地 | ||
| 複合レジャー施設 | スパリゾート | |
| イベント会場 | ||
| 緑地 | ||
| 自然公園 | ||
| 収穫場 | ||
| 酒場 | ||
| ナイトクラブ | ||
| 性風俗 | ||
| 観光 | ||
| 史跡 | 有名寺社, 城郭 | |
| 景勝地 | 国定公園 | |
| 天然温泉 | ||
| ランドマーク | ||
| 公共施設 | ||
| 養育施設 | 保育園, 幼稚園 | |
| 公立教育施設 | 公立小中学校, 公立高校, 公立大学, 公立文化センター | |
| 私立教育施設 | 私立小中学校, 私立高校, 私立大学, 私立専門学校, 学習塾 | |
| 病院 | ||
| 集会所 | ||
| その他福祉施設 | ||
| 結婚式場 | ||
| 宗教施設 | ||
| 役所 | ||
| 郵便局 | ||
| 警察署 | ||
| 消防署 | ||
| 上水施設 | 浄水場, 給水塔 | |
| 鉄道付属物 | ||
| 一般鉄道付属物 | ||
| 道路関連物 | ||
| 駐車場 | ||
| パーキングエリア | ||
| 料金所 | ||
| 土木 | ||
| 治水防波設備 | ||
| 治山設備 | ||
| 自然物 | ||
| 地表 | 森林, 草原, 不毛地 | |
| 水辺 | 海浜, 河川 | |
| 自然構造物 | ||
| 特殊 | ||
| 軍事施設 | ||
| 核施設 | ||
| 下水処理場 | ||
| 処理処分場 | ゴミ処理場, 埋め立て地 | |
| 産業廃棄物処理場 | ||
| 墓地斎場 | ||
| 刑務所 | ||
| 忌避物件 | カルト宗教施設, 暴力団事務所, 廃墟, 汚染地区 |
7.4 外部リソース・配布場所
FreeTrain EX Av 本体および関連リソースの主な配布場所とアーカイブのリストです。
本体・プラグインセット
SourceForge.JPのサービス終了に伴い、現在は以下のミラーサイト等から取得する必要があります。
- FreeTrain EX Av 本体 (ver.2.1.1.12): JAIST Mirror
- AdditionalPluginSetV2: JAIST Mirror
開発資料・仕様解説
- FreeTrain EX 仕様解説: C477氏によるEX(拡張パック)導入時の変更点や機能の解説です。
アーカイブ・ソースコード
ミラーサイトから取得できない古いリソースやソースコードの履歴については、以下のアーカイブプロジェクトを確認してください。
- Software Heritage archive: 「freetrain-exav」で検索することで、過去のコミット履歴やソースコードを参照できます。
7.5 ライセンス
FreeTrain EX Av はオープンソースソフトウェアであり、そのソースコードおよびバイナリは GNU Lesser General Public License (LGPL) version 2.1 に基づいて公開・配布されています。
- ライセンス原文: プロジェクトに含まれる
COPYING.txtを参照してください。 - 継承と利用: 本ライセンスの規定に従い、誰でも自由に本ソフトウェアの使用、改変、および再配布を行うことができます。プラグイン開発において本体のDLL(
FreeTrain.Core.dll等)をリンクする場合も、LGPLの規定が適用されます。
