跳轉到內容

Trainz/refs/config.txt 檔案

來自華夏公益教科書
logo
中級和高階內容創作

Trainz 資產維護和建立
TOC | 開始樂趣 | AM&C | 創作 | 書內參考文獻 ORP 參考文獻:  • 索引 • 容器 • 種類 • 標籤 | 附錄  • 版本

這是對 Trainz ini 檔案 型別的更技術性的介紹,被稱為 config.txt 檔案。

有關該主題的介紹,請參閱:Trainz/Config.txt 檔案,有關一般基礎知識構建,請參閱 Trainz/AM&C/config.txt 檔案

無論 Trainz 版本如何,特定版本的 Trainz 資料模型 一直都有 KIND 資料容器 在一個 config.txt 檔案中,帶有 kuid 標識程式碼 作為 Trainz 內容專案的 最小中心描述需求。這使得 特定資產資料夾 中的 config.txt 檔案成為任何給定資產的中心描述;為了使模型更緊湊,配置檔案定義了資料位於資料庫中時所在的資料夾名稱,而不是開放編輯。

每個內容專案在其資料夾中都有一個名為 config.txt 的 定義檔案,它確定資產的名稱,識別其 種類 並指定專案的 KUID ID 程式碼,唯一 地允許資產與資產之間或與執行時軟體之間的關聯和引用。每個配置檔案都取決於資產的 KIND,還將儲存各種特定於種類的細節,這些細節定義了該資產以及任何允許在使用同一資產的多倍例項執行 GUI 時多次出現 (例項) 的鍵。(樹木、火車車廂、房屋等,其中許多都透過指令碼影響而半定製,例如隨機車號、替代皮膚、標籤和其他會話編寫者定義的特性。)


config.txt 檔案在大多數情況下所有 文字格式的 Trainz 檔案型別)儲存在 ACS 文字格式 中,它簡要定義了一個關鍵字和一個值對。某些關鍵字是聚合值,在 Trainz 中,對應於一個 容器,它儲存著此類資料對和其他容器的列表。

  • 在手動編輯檔案時,必須注意使用正確的語法,否則檔案部分或全部的含義可能會永久丟失。當內容安裝到 Trainz 中,或者當它被歸檔(在 CDP 格式 或類似的 .cdpa 檔案格式中)時,config.txt 檔案儲存在機器最佳化的二進位制格式中。如果內容隨後使用 內容管理器 提取,config.txt 檔案將被轉換回文字格式,但是任何自定義格式或錯誤語法都已丟失,無法恢復。

TBS 標準標籤

[編輯 | 編輯原始碼]
主條目:TrainzBaseSpec

Trainz 數字模型基於資料定義,所有這些資料定義都遵循一種格式,其中一個 列舉標籤關鍵字 領導一行,並在同一行中跟隨資料對。在一些更復雜的資料允許的情況下,資料元素只是開始 - 引號設定了資料或一個 開始花括號 '{' 設定了其他特定關鍵字 - 資料對。即使是複雜的容器,其中一些帶有子容器,也遵循這種要求的格式。從這個意義上說,容器和子容器分別由一個標籤和一個用匹配的花括號分隔和包含的值組成,這是一個從 C 程式語言借來的約定。 

注意,這種複雜的資料定義在子程式資料處理級別上是有意義的,因為標籤一旦被識別,就會被用來選擇適當的處理 子程式(在計算中,處理程式 例程),它輸入行的其餘部分(或行),知道如何解釋在第一個 '{'(或引號標記字元)之後包含的資料,直到遇到 匹配的結束花括號 '}'(或結束引號 '")。該 種類 資料子型別定義了該資產在遊戲引擎內部正確呈現所需的唯一配對。  相反,各種標籤和容器在法律上可供所有 Trainz 內容定義種類使用,在該種類資產的 config.txt 檔案中是合法的,與特定資產型別無關。為了方便起見,自 TS2009 釋出和 TrainzOnline Wiki 的誕生以來,這組資料關鍵字和通常 強制性資料定義 被稱為 Trainz 基礎規範 (TBS),在程式設計師的 (駱駝大小寫) 行話 中成為 TrainzBaseSpec 規範 - 一個始終合法的標籤、容器及其所需定義的列表。
 • 合法性不涉及您的當地法律機構,而是內容管理器和 DLS 錯誤檢查軟體例程的核心居民。如果標籤-值對超出上下文,例如放置在容器邊界之外的子容器標籤,或者是不合適的,那麼“警官”將生成錯誤訊息和投訴(“起訴書!”),並將資產標記為有缺陷... 使其無法使用,直到修復(至少在後來的 Trainz 版本中 - 早期版本更寬容)。因此,各種配置標籤,包括必需標籤和可選標籤,都繼承自 kind trainzbasespec 基礎資產型別,並在那裡詳細描述。這些值型別是

標籤 或單個行開頭單詞是 '關鍵字',並且具有 單個分配的 '鍵-值' 、正確格式的容器資料結構,或者有時鍵-值 需要被組織成一個帶引號的字串陣列(實際上是該特定標籤型別定義的引數的容器),通常是受限的編碼值(列舉列表成員),用分號分隔,引號標記定義該標籤的單個字串(字串值)。(示例:"CA;MX;US" 是一個 類別-區域 定義,涵蓋北美所有地區 - 加拿大、墨西哥和美國

容器 是關鍵字和鍵-值 對以及可能的子容器的集合。上層容器(與子容器不同,例如縮圖容器內的子容器)是 KIND 規範(包括 KIND TBS)的一部分,並且是高度使用的容器,特別是那些可能接受可變數量的子容器元素的容器,例如 網格表容器 通常以“-table”結尾。

最後,也是最重要的一點,有 各種 型別(參見下方第二個表格中的列表或 TBS),每個配置 .txt 檔案都需要一個,並且定義了其他關鍵字,包括強制性和可選的 滿足該型別資產任何定義所需的關鍵字。因此,每個型別資料組擴充套件了必需和可選的引數,必須在該配置 .txt 檔案中詳細定義的標籤和容器,以正確地將用於建立數字模型(Trainz 資產)的所有元素組合在一起。請注意,型別是定義其他容器和其他特定標籤的容器,這些容器和標籤必須定義完整,以便 內容管理器 的錯誤檢查接受(以及 提交)資產到資料庫。如果數字模型不在資料庫中,則內容創作者在製作會話或地圖時無法顯示和使用它。

表 1 鍵,存在於任何 config.txt 檔案中

[edit | edit source]
以下表格被 正式地 稱為'Trainz 基礎規範' 或 TrainzBaseSpec (TBS). TBS 包含 Trainz 資料模型規範的 關鍵字和鍵值對,這些規範可能存在於任何資產中。其他標籤和值由 型別 標籤的值定義,列在 型別表 中。
  1. 將任何一個這些標籤新增到缺少此類標籤的 config.txt 檔案中,只要語法(鍵入和拼寫)正確,就不會出現問題。
  2. 字尾為“-XX”的標籤是多語言非英語語言支援。字尾源於 ISO 標準縮寫列表,但通常很直觀。例如:-it 代表義大利語,-fr 代表法語,-cz 代表捷克語,-de 代表德語,-es 代表 Espanol(西班牙語)等等。
  型別     "'字串值'"
  trainz-build '浮點數',1 位小數
  kuid   <Kuid 編碼值>
  使用者名稱     使用者名稱 "'字串值'"
  使用者名稱-XX     使用者名稱-XX "'非英語語言字串值'"
  描述     描述 "'字串值'"
  描述-XX     描述-XX "'非英語語言描述字串值'"[註釋 1]
  kuid-table 依賴項列表,按 kuids(容器)

  {
  }

  此資產依賴的資產的鍵值列表。
  obsolete-table (容器)
    {
    }
  此資產替換(使之過時的)的 kuids 列表
通常為無(空)
  string-table (容器)
    {
    }
  資產中使用的字串和訊息的鍵值列表
通常為空,但是!
在路線和會話中可能非常大。(地圖上命名的資產列在這裡,從軌道標記和觸發器到訊號,命名的建築物和產業,到路標。
 string-table-XX 按每種非英語語言(容器[s])
    {
    }
  翻譯後的字串列表,對應於 強制性的 string-table
  category-region "'字串陣列'"     category-region 標籤
  category-class "'列舉字串值'   category-class 標籤
  category-era "'字串陣列'"     category-era 標籤
  category-keyword "'字串陣列'"     自然語言關鍵字
  (替換型別、區域)
  custom-category-list 
 "'字串陣列'"
  指令碼介面功能
  must-have-product-rights 
 "'字串值'"  
  DRM 字串陣列
  must-not-have-product-rights 
 "'字串值'"  
  DRM 字串陣列
  privileges (容器)
    {
    }
  更多 DRM
  thumbnails (容器)
    {
    }
  縮圖容器
  script (檔名)     "'字串值'"
  class (指令碼資產類)     "'字串值'",必須與 script 規範類同步。
  script-include-table
    {
    }
  (列出庫指令碼的容器)
  extensions (容器)
    {
    }
  資產也使用的正式指令碼擴充套件
  license "'字串值'"   資產建立者的版權宣告
  author     "身份 '字串值'"
  organisation     "第三方組身份 '字串值'"
  contact-email     "電子郵件地址 '字串值'"
  contact-website     "作者/組的網站 URL '字串值'"
  member-of-groups (容器)
    {
    }
  此資產所屬的 KIND 資產組 資產列表。

 

型別表

[edit | edit source]

所有 Trainz 定義的資料(內容)都包含三個必需元素:一個用於組織資料的 config.txt 檔案、一個表示 kuid 的身份(僅使用者名稱對你沒有用,但是可以建立一個沒有名稱的合法資產!)以及最後,一個合法定義的型別標籤。型別負責,它是樂隊的指揮,排長或 CEO 指揮 - 設定了在處理完所有內容後需要處理的每件事的要求。簡而言之,型別的 value,一個小而緊密的定義好的會員制群體 - 告訴 Trainz 軟體在虛擬世界中要渲染和顯示什麼,以及如何在該配置 .txt 檔案中找到將這些資產部分連結在一起的其他部分。
  以下每個子類都被認為具有 TrainzBaseSpec 作為他們的資料的“父類”。[註釋 2] 下面列出的一些型別,那些帶有下劃線的型別是遺留型別,它們早於 TS2009 釋出時 Trainz 資料模型 的更改(即自 2008 年後期以來),N3V 程式設計師只對它們進行逐步(增量)更改。
  目前可以在 N3V Trainz Wiki 的 內容建立者指南 部分 TrainzOnline 網站 中找到有關修復基於這些遺留型別的資產的詳細資訊,其中有說明性的 遺留型別示例。強烈建議 Trainz 下載站 的任何使用者或任何考慮建立內容的人仔細閱讀 CCG。從理解舊內容定義方式的背景歷史中獲得的見解可以與 TrainzOnline 對相同資料型別的當前覆蓋範圍進行對比和比較,因為這種過去與現在的比較通常可以提供修復、更改和自定義資產的寶貴見解。更重要的是,CCG 在 TrainzOnline 上釋出,它是 TC1&2/TC3 版本 - 從 1999 年的 Trainz 開始出版的幾本小冊子的最後一本出版物;TC3 CCG 包含來自 TRS2004/TRS2006 和 UTC 資料模型的已更改的 Enginespecs 機車資產,需要進行適當更新。

TrainzBaseSpec 子類型別(型別資產組)

 


本地化

[編輯 | 編輯原始碼]
  • 本地化學術上的說法,指的是國際化,或者將資料翻譯成其他語言...

由於ACS 文字格式使用 UTF-8 編碼,因此非英語文字字串條目可能會出現在 config.txt 檔案中任何字串欄位內,除了禁止的地方。(例如,使用者名稱標籤應該始終是英文,但語言字尾形式也允許在區域語言中支援多種語言環境——為了避免混淆,需要本地化支援的標準字串標籤實際上允許多個條目,因為執行時軟體使用以下約定

  • username - 內容的可讀名稱,用美式英語。資產的英文名稱必須存在,並且應該用英語定義。(不幸的是,一小部分資產在上傳時沒有進行這種標準的檢查,因此在DLS上會發現一些非英語名稱。
  • username-cz - 內容的可讀名稱,用捷克語。
  • username-de - 內容的可讀名稱,用德語。
  • username-es - 內容的可讀名稱,用西班牙語(Espanol)。
  • 等等。

以下標準標籤支援這種本地化形式
其中 XX 是語言的 ISO 雙字元縮寫。(例如 de=德語,fr=法語,it=義大利語,等等)。

常用容器

[編輯 | 編輯原始碼]
[編輯 | 編輯原始碼]

 

註釋、腳註和參考文獻

[編輯 | 編輯原始碼]

Config.txt 檔案在 Trainz 資產中是無處不在的,因為沒有一個資產可以沒有這種型別的計算機科學容器。 

  1. 大多數內容建立者對用英語提供清晰、經過深思熟慮的描述文字並不重視。在非英語地區的資產中,這些標籤的使用很少。
  2. 注意: 此列表在 N3V TrainzOnline Wiki 上進行了“維基化”,這意味著在“KIND”一詞後第一個字母已大寫,而 config.txt 檔案中的實際資料標籤名稱則為全小寫文字。該維基百科還在許多術語中使用了雙引號,我們在這裡會免除你經歷這種做法。
  3. “組合型別”並不經常直接出現,它只存在於選單和內容管理器列表中。

 

 

參考文獻

[編輯 | 編輯原始碼]

 

華夏公益教科書