Trainz/refs/config.txt 檔案
這是 Trainz ini 檔案 型別的更技術性覆蓋,稱為 config.txt 檔案。
- 有關主題的介紹,請參見:Trainz/Config.txt 檔案,有關一般基礎知識的構建,請參見 Trainz/AM&C/config.txt 檔案。
無論 Trainz 版本如何,特定版本的 Trainz 資料模型 一直都有一個名為 KIND 資料容器 的 config.txt 檔案,其中包含一個作為 Trainz 內容專案的最小中心描述需求的 kuid 識別符號程式碼。這使得特定資原始檔夾中的 config.txt 檔案成為任何給定資源的中心描述;為了加強模型,當資料位於資料庫內且不開放編輯時,配置檔案定義了其所在的資料夾名稱。
| 每個內容專案在其資料夾中都有一個名為 config.txt 的定義檔案,該檔案確定資源的名稱,識別其 種類,並指定專案的 KUID ID 程式碼,唯一地允許從資源到資源或到執行時軟體的資料合併和引用。每個配置檔案,取決於資源 KIND,也將包含定義該資源的各種特定於 KIND 的詳細資訊,以及允許在執行使用同一資源的多個例項的 GUI 時出現多次的鍵 (例項)。(樹木、火車車廂、房屋等——其中許多都經過指令碼影響的半定製,例如隨機車廂號碼、替代皮膚、標籤和其他會話編寫者定義的特性。) |
config.txt 檔案(在大多數情況下,所有文字格式的 Trainz 檔案型別)儲存在 ACS 文字格式 中,簡而言之,它定義了一個關鍵字和一個值對。在 Trainz 中,一些關鍵字是聚合值,對應於一個 容器,它包含此類資料對和其他容器的列表。
- 在手工編輯檔案時,必須注意使用正確的語法,否則檔案的一部分或全部意義可能會永久丟失。當內容安裝到 Trainz 中,或者當它被存檔(以 CDP 格式 或類似的 .cdpa 檔案格式)時,config.txt 檔案以機器最佳化的二進位制格式儲存。如果內容隨後使用 內容管理器 提取,config.txt 檔案將被轉換回文字格式,但是任何自定義格式或錯誤語法都已經丟失,無法恢復。
- 主條目:TrainzBaseSpec
Trainz 數字模型基於資料定義,所有這些資料定義都遵循一種格式,其中一個 列舉的 標籤關鍵字 引導一行,隨後在同一行上由資料配對。在一些更復雜的資料允許的情況下,資料元素僅僅是開始——一個引號設定了資料或一個開括號 '{' ,它設定了其他特定的關鍵字——資料配對。即使是複雜的容器,其中一些包含子容器,也遵循這種要求的格式。從這個意義上講,容器和子容器都包含一個標籤和一個值,用匹配的括號括起來,這是一種借鑑自 C 程式語言的約定。
請注意,這種複雜的資料定義在子程式資料處理級別非常有意義,因為標籤一旦被識別,就會被用來選擇適當的處理子程式(在計算中,一個 處理程式 例程),它輸入行的其餘部分(或多行)知道如何解釋在第一個 '{'(或引號標記符號)之後包含的資料,直到它遇到 匹配的閉括號 '}'(或結束引號 '")。 種類 資料子型別定義了該資源在遊戲引擎內正確渲染所需的獨特配對。 相反,各種標籤和容器在法律上可用於所有 Trainz 內容定義種類,在該種類資源的 config.txt 檔案中是合法的,無論具體的資源型別如何。為了方便起見,由於 TS2009 的釋出和 TrainzOnline Wiki 的誕生,這組資料關鍵字和通常強制性資料定義被稱為Trainz 基本規範 (TBS),在程式設計師的 (駝峰式命名法) 行話 中成為TrainzBaseSpec 規範——一個始終合法的標籤、容器及其必需定義的列表。
• 合法性不涉及您當地的法律機構,而是內容管理器核心和 DLS 錯誤檢查軟體例程中的“警察”。如果標籤-值對不在上下文中,例如在容器邊界之外放置子容器標籤,或者不合適,那麼“警察”將生成故障訊息和投訴(“起訴書!”)以及將資源標記為故障... 使其無法使用,直到修復為止(至少在後來的 Trainz 版本中——早期的版本更寬容)。因此,各種配置檔案標籤,包括必需標籤和可選標籤,都繼承自 kind trainzbasespec 基本資源型別,並在其中進行了詳細描述。這些值型別是
標籤 或單獨的行首詞是 '關鍵字',並具有一個 單個分配的 '鍵值' ,一個正確格式的容器資料結構,或者有時該鍵值需要被組織成一個引號字串陣列(實際上是該特定標籤型別定義的引數的容器),通常是受限的編碼值(列舉列表成員),用分號分隔,分號位於定義單個字串(一個 字串值)的引號符號之間,用於該標籤。(示例:"CA;MX;US" 是一個 類別區域 定義,涵蓋了整個北美——加拿大、墨西哥和美國。)
容器 是關鍵字和鍵值對以及可能的子容器的集合。上層容器(與子容器相反,例如縮圖容器內的子容器)作為 KIND 規範的一部分是必需的(包括 KIND TBS),並且是高使用容器,特別是那些可能包含可變數量的子容器元素的容器,例如 網格表容器,通常以 '-table' 為字尾。
最後,但最重要的是,有 各種種類(見下面的第二個表格或 TBS 中的列表),每個 config.txt 檔案都需要一個,它定義了那些其他關鍵字,包括強制性的和可選的 這些關鍵字是滿足該型別資源的任何定義所必需的。每個 KIND 資料組因此擴充套件了必需和可選引數,這些標籤和容器必須在該 config.txt 檔案中詳細定義,以正確地將用於建立數字模型的所有元素組合在一起——Trainz 資源。請注意,種類是一個容器,它定義了其他容器和其他特定標籤,這些標籤必須得到令人滿意的定義,才能使 內容管理器 的錯誤檢查接受(並 提交)資源到資料庫中。如果數字模型不在資料庫中,它就不能被內容創作者用來製作會話或地圖。
- 下表被稱為'Trainz 基礎規範' 或 TrainzBaseSpec (TBS). TBS 包含 Trainz 資料模型規範中的關鍵字和鍵值對,這些規範可能存在於任何資產中。其他標籤和值由 Kinds 標籤的值定義,這些值列在 Kinds of KINDS 表格 中。
- 在缺少這些標籤的 config.txt 檔案中新增任何一個標籤都不會導致問題,前提是您的語法(鍵入和拼寫)完全正確。
- 帶有後綴“-XX”的標籤表示多語言非英語語言支援。這些字尾源自 ISO 標準縮寫列表,但通常很簡單。例如:-it 表示義大利語,-fr 表示法語,-cz 表示捷克語,-de 表示德語,-es 表示西班牙語(Español),等等。
| kind | "'string-value'" |
| trainz-build | 'float',一位小數 |
| kuid | <Kuid 編碼值> |
| username | username "'string-value'" |
| username-XX | username-XX "'非英語語言字串值'" |
| description | description "'string-value'" |
| description-XX | description-XX "'非英語語言描述字串值'"[注 1] |
| kuid-table 按 kuids 列出的依賴項(容器) { |
此資產依賴的資產的鍵值對列表。 |
| obsolete-table (容器) { } |
kuids 列表,此資產替換(使其過時) 通常為無(空) |
| string-table (容器) { } |
資產中使用的字串和訊息的鍵值對列表 通常為空,但是! 在路線和場景中可能非常大。(地圖上的命名資產列在這裡,從軌道標記和觸發器到訊號,命名建築物和工業,到路標。 |
| string-table-XX 按每種非英語語言(容器[s]) { } |
翻譯後的字串列表 匹配到 強制性的 string-table |
| category-region "'string-array'" | category-region 標籤 |
| category-class "'列舉字串值'" | category-class 標籤 |
| category-era "'string-array'" | category-era 標籤 |
| category-keyword "'string-array'" | 自然語言關鍵字 (替換 type、region) |
| custom-category-list "'string-array'" |
指令碼介面功能 |
| must-have-product-rights "'string-value'" |
DRM 字串陣列 |
| must-not-have-product-rights "'string-value'" |
DRM 字串陣列 |
| privileges (容器) { } |
更多 DRM |
| thumbnails (容器) { } |
縮圖容器 |
| script (檔名) | "'string-value'" |
| class (指令碼資產類) | "'string-value'",必須與 script 規範類同步。 |
| script-include-table { } |
(列出庫指令碼的容器) |
| extensions (容器) { } |
資產也使用的正式指令碼擴充套件 |
| license "'string-value'" | 資產建立者的版權宣告 |
| author | "身份 'string-value'" |
| organisation | "第三方組身份 'string-value'" |
| contact-email | "電子郵件地址 'string-value'" |
| contact-website | "作者/組的網站 URL 'string-value'" |
| member-of-groups (容器) { } |
此資產所屬的 KIND Asset-group 資產列表。 |
所有 Trainz 定義的資料(內容)都包含三個必備元素:一個 config.txt 檔案 用於組織資料,一個身份,即一個 kuid(僅使用者名稱是不夠的,但可以建立一個沒有名稱的合法資產!)最後,一個合法定義的 kind 標籤。kind 負責,它是樂團的指揮,排長或 CEO 負責指揮——為 config.txt 檔案中處理的之後所有內容設定要求。簡而言之,kind 的值是一個小而緊密的定義良好的成員組——它告訴 Trainz 軟體應該在虛擬世界中渲染和顯示什麼,以及如何在虛擬世界中渲染和顯示(或在虛擬世界中尋找)構成資產的各個部分。
下面的每個子類都被視為具有 TrainzBaseSpec 作為其資料的“父類”。[注 2] 下面列出的一些 kind,那些帶下劃線的 kind 是在 TS2009 版本(即 2008 年後期至今)中對 Trainz 資料模型 進行更改之前存在的 legacy kind,N3V 程式設計師只對這些 legacy kind 進行了逐漸的(增量的)更改。
目前可以在 N3V Trainz Wiki 的 內容建立者指南 部分找到修復基於這些 legacy kind 的資產的詳細資訊。 TrainzOnline 網站的此處 具有啟發性的 此處 的 legacy Kinds 例子。強烈建議 Trainz 下載站 的任何使用者或任何考慮建立內容的人仔細閱讀 CCG。通過了解舊內容的定義方式的歷史背景,可以將其與 TrainzOnline 對相同資料型別的當前覆蓋範圍進行對比,因為這種過去與現在的對比通常能為修復、更改和自定義資產提供寶貴的見解。更重要的是,CCG 在 TrainzOnline 上釋出,是 TC1&2/TC3 版本——是幾本小冊子中的最新版本,這些小冊子可以追溯到 1999 年的 Trainz;TC3 CCG 包含 TRS2004/TRS2006 和 UTC 資料模型中需要更新的更改後的 Enginespecs 機車資產。
- 本地化 是學術界對“國際化”的說法,指的是將資料翻譯成其他語言…
由於 ACS 文字格式 使用 UTF-8 編碼,因此非英語文字字串條目可能出現在 config.txt 檔案中的任何字串欄位中,除非另有規定。(例如,使用者名稱標籤 應該始終為英語,但語言字尾形式也允許在地區語言中支援多種語言環境 - 為了避免混淆,需要本地化支援的標準字串標籤實際上允許使用多個條目,因為執行時軟體使用以下約定
- username - 內容的人類可讀名稱,用美式英語表示。資產的英語名稱必須存在,並且應該用英語定義。(不幸的是,一些資產在上傳時沒有對該標準進行審查,因此在 DLS 上發現了一些非英語名稱。
- username-cz - 內容的人類可讀名稱,用捷克語表示。
- username-de - 內容的人類可讀名稱,用德語表示。
- username-es - 內容的人類可讀名稱,用西班牙語 (Espanol) 表示。
- 等等。
以下標準標籤支援這種本地化形式
其中 XX 是語言的 ISO 兩字母縮寫。(例如,de=德語,fr=法語,it=義大利語,等等)。
- attached-track 容器
- extensions 容器
- kuid-table 容器
- mesh-table 容器
- obsolete-table 容器
- string-table 容器
- textures 容器
- 縮圖容器
- … 待補充
Config.txt 檔案在 Trainz 資產中是普遍存在的,因為沒有資產可以在沒有這種型別的 計算機科學容器 的情況下被定義。
- Trainz 印刷版或 pdf 檔案 手冊,適用版本 - 通常位於 ..\extras 或 ..\extras\manuals 資料夾
- TrainzOnline Wiki Config.txt 檔案頁面 以及其他頁面
- TrainzOnline Wiki 內容創作者指南頁面 (各種)
- 各種 CCG 和 Auran 網站
| 本參考資料頁面改編自 TrainzOnline Wiki,根據 CC-BY-SA 3.0 許可證 使用。本頁面可能包含比 [online.ts2009.com/mediaWiki/index.php/Config.txt_file 相同主題的源頁面] 更詳細的文字解釋、闡述、歷史和/或示例。 TrainzOnline Wiki 主要由程式設計師或瞭解 內容建立者 維護,可能包含有關當前 trainz-build 程式碼 標準的更新資訊,這些標準隨著軟體功能的新增而不斷變化。 |

