跳轉到內容

Trainz/refs/config.txt 檔案

來自華夏公益教科書,開放世界開放書籍
logo
中級和高階內容創作

Trainz 資產維護和創作
TOC | BeginningsFun | AM&C | Creation | InBook Refs ORP Refs:  • Index • Containers • Kinds • Tags | Appendixes  • Vers

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

要了解主題的介紹,請參閱:Trainz/Config.txt files,要了解一般基礎知識,請參閱 Trainz/AM&C/config.txt files

無論 Trainz 版本如何,特定版本 Trainz 資料模型 一直都有 KIND 資料容器,它位於 config.txt 檔案中,並使用 kuid 識別符號程式碼 作為 Trainz 內容項的最少中心描述需求。這使得特定資產資料夾中的 config.txt 檔案成為任何給定資產的中心描述;為了使模型更緊密,配置檔案在資料位於資料庫內且不可編輯時定義了其所在資料夾的名稱。

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


config.txt 檔案在很大程度上所有格式化為文字的 Trainz 檔案型別)儲存在 ACS 文字格式 中,簡而言之,它定義了關鍵字和值對。某些關鍵字是聚合值,在 Trainz 中,它們對應於 容器,該容器儲存著此類資料對和其他容器的列表。

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

TBS 標準標籤

[編輯 | 編輯原始碼]
主要文章:TrainzBaseSpec

Trainz 數字模型基於資料定義,所有資料定義都遵循一種格式,其中 列舉的 標籤關鍵字 位於一行首,後面緊跟著同一行上的資料對。在某些更復雜的資料允許的情況下,資料元素只是開始——一個引號標記資料或一個開括號 '{',它標記其他特定關鍵字——資料對。即使是複雜的容器,其中一些包含子容器,也遵循這種強制格式。從這個意義上講,容器和子容器都包含一個標籤和一個值,這些標籤和值被匹配的括號括起來,這是一種從 C 程式語言借來的約定。 

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

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

容器 是關鍵字和鍵值對以及可能的子容器的集合。上層容器(與子容器相反,例如縮圖容器中的子容器)是 KIND 規範(包括 KIND TBS)的一部分,並且是高使用容器,尤其是那些可能接受可變數量的子容器元素的容器,例如 mesh-table 容器 通常以“-table”結尾。

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

表 1 中找到的任何 config.txt 中的鍵

[編輯 | 編輯原始碼]
下表正式稱為'Trainz 基本規範' 或 TrainzBaseSpec (TBS). TBS 包含 Trainz 資料模型規範的關鍵字和鍵值對,這些規範可能在任何資產中找到。其他標籤和值由種類標籤的值定義,該值列在種類表中。
  1. 在缺少此類標籤的 config.txt 檔案中新增任何一個此類標籤,只要您的語法(鍵入和拼寫)正確,就不會出現問題。
  2. 字尾為 -XX 的標籤是支援多種語言的非英語語言支援。字尾源於 ISO 標準縮寫列表,但通常很簡單。例如:-it 代表義大利語,-fr 代表法語,-cz 代表捷克語,-de 代表德語,-es 代表西班牙語等等。
  kind     "'字串值'"
  trainz-build 'float', 1 位小數
  kuid   <Kuid 編碼值>
  username     username "'字串值'"
  username-XX     username-XX "'非英語語言字串值'"
  description     description "'字串值'"
  description-XX     description-XX "'非英語語言描述字串值'"[註釋 1]
  kuid-table 按 kuid 列出的依賴項(容器)

  {
  }

  該資產所依賴的資產的鍵值列表。
  obsolete-table (容器)
    {
    }
  此資產取代的 kuid 列表(使其過時)
通常為無(空)
  string-table (容器)
    {
    }
  資產中使用的字串和訊息的鍵值列表
通常為空,但是!
在路線和場景中可能非常大。(地圖上的命名資產列在此處,從軌道標記和觸發器到訊號,命名建築物和產業,到路標。
 string-table-XX 按每種非英語語言(容器)
    {
    }
  翻譯後的字串列表匹配到必填的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 資產組資產列表。

 

種類的種類

[編輯 | 編輯原始碼]

所有 Trainz 定義的資料(內容)都有三個必填元素:一個config.txt 檔案 用於組織資料,一個表示kuid 的身份(僅使用者名稱對你沒有用,但是可以建立合法的資產,而無需名稱!),最後,一個合法定義的型別標籤。型別負責,它是樂隊的指揮,排長或 CEO 指揮——為之後處理的所有內容設定要求。簡而言之,型別的價值,一小部分嚴格定義的成員組——告訴 Trainz 軟體在虛擬世界中渲染和顯示什麼,以及如何(或在哪裡)找到其他部分,以使 config.txt 檔案中連結的資產部分組合在一起。
  下面的每個子類都被認為具有TrainzBaseSpec 作為它們的資料 '父類'。[註釋 2] 下面列出的幾個型別,那些帶下劃線的型別是早於Trainz 資料模型TS2009 釋出(即 2008 年後期)中更改的舊型別,自那以後 N3V 程式設計師只實施了漸進的(增量)更改。
  目前可以在 N3V Trainz Wiki 的內容建立者指南 部分找到基於這些舊型別修復資產的詳細資訊TrainzOnline 網站在這裡,並提供發人深省的舊型別示例在這裡。強烈建議Trainz 下載站 的所有使用者或任何打算建立內容的使用者仔細閱讀 CCG。瞭解舊內容定義方式的背景歷史可以與當前 TrainzOnline 對相同資料型別的報道進行對比和比較,因為這種過去與現在的對比往往會為修復、更改和定製資產提供寶貴的見解。更重要的是,CCG 在 TrainzOnline 上釋出的是TC1&2/TC3 版本——這是自 1999 年Trainz 以來出版的幾本小冊子中的最新版本;TC3 CCG 包含來自 TRS2004/TRS2006 和UTC 資料模型的已更改的 Enginespecs 機車資產,需要適當更新。

TrainzBaseSpec 子類 KIND(型別資產組)

 


本地化

[編輯 | 編輯原始碼]
  • 本地化是 '學術界的說法' 用於“國際化”,或資料翻譯成其他語言...

由於 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. 'kind consist' 並不經常直接出現,它只是存在於選單和內容管理器列表中。

 

 

參考文獻

[編輯 | 編輯原始碼]

 

華夏公益教科書