Water Crown

第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 に基づき、 byidbyname のどちらかを指定します。

    属性 説明 必須 備考
    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), winter
    • night (夜間オーバーライド用)

    7.1.6 システム・ツール関連タグ

    <class>

    C#による独自拡張プログラムのクラスを指定します。

    属性 説明 必須 備考
    name 完全修飾クラス名 名前空間を含むクラス名。
    codebase DLLファイルパス plugin.xmlからの相対パス。

    メインメニューに独自の項目を追加します。

    属性 説明 必須 値の例
    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のサービス終了に伴い、現在は以下のミラーサイト等から取得する必要があります。

    開発資料・仕様解説

    アーカイブ・ソースコード

    ミラーサイトから取得できない古いリソースやソースコードの履歴については、以下のアーカイブプロジェクトを確認してください。

    • Software Heritage archive: 「freetrain-exav」で検索することで、過去のコミット履歴やソースコードを参照できます。

    7.5 ライセンス

    FreeTrain EX Av はオープンソースソフトウェアであり、そのソースコードおよびバイナリは GNU Lesser General Public License (LGPL) version 2.1 に基づいて公開・配布されています。