跳轉到內容

Trainz/refs/config.txt 檔案

來自華夏公益教科書,開放世界開放書籍
(重定向自 Trainz/config.txt)
logo
中級和高階內容創作

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

這是 Trainz 的 ini 檔案 型別的更技術性的覆蓋範圍,稱為 config.txt 檔案。

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

無論 Trainz 版本如何,版本特定的 Trainz 資料模型 始終具有 KIND 資料容器,它位於一個帶有 kuid 識別符號程式碼config.txt 檔案中,作為 Trainz 內容專案的 最小中心描述需求。這使得 特定資產資料夾 中的 config.txt 檔案成為任何給定資產的中心描述;為了收緊模型,當資料位於資料庫中且未開啟以供編輯時,配置檔案定義了其所在資料夾的名稱。

每個內容專案在其資料夾中都有一個名為 config.txt 的 定義檔案,它確定資產的名稱,標識其 種類 並指定專案的 KUID ID 程式碼,唯一地允許從資產到資產或到執行時軟體的資料匹配和引用。每個 config 檔案都依賴於資產 KIND,它還會儲存定義該資產的各種特定於 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 版本中——早期版本更寬容)。因此,各種 config 標籤,包括必需的標籤和可選的標籤,都從 kind trainzbasespec 基礎資產型別繼承,並在那裡詳細描述。這些值型別是

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

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

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

任何 config.txt 檔案中都存在的表 1 金鑰

[編輯 | 編輯原始碼]
下表正式稱為'Trainz 基礎規範' 或 TrainzBaseSpec (TBS). TBS 包含了 Trainz 資料模型規範中可能出現在任何資產中的 _關鍵詞和鍵值對_。其他標籤和值由 Kinds 標籤的值定義,列在 Kinds of KINDS 表格 中。
  1. 在缺少這些標籤的 config.txt 檔案中新增任何一個標籤都不會造成問題,只要您的語法(輸入和拼寫)正確。
  2. 帶有後綴“ -XX”的標籤是多語言非英語語言支援。字尾源於 ISO 標準縮寫列表,但通常很簡單。例如:-it 代表義大利語,-fr 代表法語,-cz 代表捷克語,-de 代表德語,-es 代表 Espanol(西班牙語)等等。
  kind     "'字串值'"
  trainz-build '浮點數', 1 位小數
  kuid   <Kuid 編碼值>
  username     username "'字串值'"
  username-XX     username-XX "'非英語語言字串值'"
  description     description "'字串值'"
  description-XX     description-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 Asset-group 資產列表。

 

Kinds of KINDs

[編輯 | 編輯原始碼]

所有 Trainz 定義的資料(內容)都有三個必備元素:一個 config.txt 檔案 來組織資料,一個身份,即一個 kuid(僅使用者名稱沒有用,但一個合法的資產可以在沒有名字的情況下建立!),最後,一個合法定義的 kind 標籤。kind 負責一切,就像樂團的指揮、排長或 CEO 指揮一切一樣——它為 config.txt 檔案中處理的所有內容設定了要求。簡而言之,kind 的值,一個小而精密的、成員只有少數的團體,告訴 Trainz 軟體在虛擬世界中渲染和顯示什麼,以及如何(或在何處)找到其他部分,以便在該 config.txt 檔案中將資產的這些部分連結在一起。
  以下每個子類都被認為具有 TrainzBaseSpec 作為其資料的“父類”。[註釋 2] 下面列出的一些 kinds,那些帶下劃線的,是過時的 kinds,早於 TS2009 釋出時對 Trainz 資料模型 的更改(即從 2008 年末開始),自那以後 N3V 程式設計師只對模型進行了逐步(增量)的更改。
  目前,在 N3V Trainz Wiki TrainzOnline 站點Content Creator's Guide 部分,可以找到有關基於這些過時 kinds 修復資產的詳細資訊,其中有 過時 Kinds 的示例。強烈建議 Trainz 下載站 的任何使用者或任何考慮建立內容的使用者仔細閱讀 CCG。瞭解舊內容是如何定義的背景歷史可以與 TrainzOnline 對同一種資料型別的當前覆蓋進行對比和比較,因為這種“過去與現在”的對比通常可以提供寶貴的見解,幫助修復、更改和定製資產。更重要的是,CCG 中的文字是由專業人士撰寫的,而且更具啟發性——它通常會讓你瞭解如果修改了這一點或那一點的擴充套件效果,而 Trainz Wiki 卻沒有提供這些資訊。釋出在 TrainzOnline 上的 CCG 是 TC1&2/TC3 版本——這是幾本小冊子的最後一個出版版本,可以追溯到 1999 年的 Trainz;TC3 CCG 包含了 TRS2004/TRS2006 和 UTC 資料模型中更改的 Enginespecs 機車資產,需要進行適當的更新。

TrainzBaseSpec 子類 KINDs(型別資產組)

 


本地化

[edit | edit source]
  • 本地化是 '學術說法' 指的是“國際化”,即資料翻譯成其他語言...

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

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

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

通用容器

[edit | edit source]
[edit | edit source]

 

註釋、腳註和參考文獻

[edit | edit source]

Config.txt 檔案在 Trainz 資產中是普遍存在的,因為沒有資產可以在沒有這種型別的 計算機科學容器 的情況下進行定義。 

註釋

[edit | edit source]
  1. 大多數內容創作者對提供清晰、經過深思熟慮的英語描述文字關注度不夠。這些標籤的使用在非英語地區的資產中很少。
  2. 注意: 此列表在 N3V TrainzOnline Wiki 上是“維基化”的,這意味著在“KIND”這個詞之後首字母大寫,而 config.txt 檔案中的實際資料標籤名稱是全部小寫文字。該維基也使用雙引號表示相當多的術語,我們將免除你在本文中體驗這種做法。
  3. ‘kind consist’ 並不常直接看到,它只存在於選單和內容管理器列表中。

 

腳註

[edit | edit source]

 

參考文獻

[edit | edit source]

 

華夏公益教科書