跳轉到內容

Trainz/AM&C/config.txt 檔案

來自華夏公益教科書,開放的世界,開放的書籍
logo
Trainz 資產維護與建立

Trainz 註釋參考頁
TOC | 開始娛樂 | AM&C | 建立 | 書中參考資料 ORP 參考資料:  • 索引 • 容器 • 種類 • 標籤 | 附錄  • 版本
 詞彙表
 HKeys-CM
 HKeys-DVR
 HKeys-SUR
 HKeys-WIN
 滑鼠使用
 符號
有關 config.txt 檔案的介紹性文章,請參見 Trainz/Config.txt 檔案。有關該主題的參考資訊,請參見 Trainz/references/config.txt 檔案

基礎知識

[編輯 | 編輯原始碼]

所有資產必須有一個 config.txt 檔案才能放入 Trainz,否則它們就不是資產。也稱為“配置檔案”或簡稱“配置”,config.txt 檔案無論以何種名稱存在,都包含有關資產的基本資訊,最重要的是它的種類 = <值>,包括它的 使用者名稱KUID 編號Trainz 版本類別區域類別年代區域 標籤等(以及它們的 <值>),以及一些可選的但非必要的歷史標籤(原型鐵路、公司)、作者、許可和所有權資訊標籤,如建立者、組織、聯絡電子郵件、第三方網站 等 - 所有允許資產資料夾成為自定義和自文件 Trainz 相容資產的“定義”。好吧,除了配置更改記錄,或檢視連續更改的方法。  在上述內容中,我們多次封裝標籤“<值>”以強調兩個重要點。Trainz 中的所有資料都是透過關鍵字 - 合法值關係來定義和操作的。在計算機科學中,<值>(或合法值)是一個由列舉資料型別成員資格約束的列表。
 • 例如,型別 Binary(也經常稱為“Boolean”)是一個列舉型別,只有兩個合法值:{ binary: 0, 1 },該符號“{”+術語+“:”+值列表+“}”讀作集合 Binary 具有成員零和一”。值列表也稱為列舉列表,在此長度為 2 的示例中,有兩個允許的值。任何不在列表中的內容都是非法的,將生成 Trainz 錯誤,以及相關的錯誤訊息,並阻止您將資產提交到資料庫中。阻止將有缺陷的資產提交到資料庫始於與 TS10 和 TS09 的 TBW(以及功能)重疊的 Trainz 版本 中。[註釋 1]

 • 瞭解什麼是什麼,什麼做什麼,何時合適,何時不合適是主題 - 本頁面致力於消除 N3V Wiki 中更正式的介紹中所有“定義”帶來的神秘感,即使是經驗豐富的軟體專業人士也會感到困惑,更不用說新手了。讓我們讓您走上掌握 Trainz 基本知識 (TBK) 的正確道路。

在本頁面中,我們將深入瞭解資產的一些基本原理,並幫助您輕鬆學習一些人花了數年時間才掌握的東西!真是太划算了!

 

關於 config.txt 檔案的一些一般性要點

[編輯 | 編輯原始碼]

有缺陷資產的許多問題都是由 config.txt 檔案中的簡單鍵入、巢狀或拼寫錯誤造成的。當引號的巢狀不正確時,這種型別的一個衍生效應,通常是因為缺少或多餘的引號。當這是真的時,CM/CMP 在開啟檔案時將嘗試修復它找到的內容,並且當它嘗試將文字段落解析為關鍵字和值時,這會建立一系列錯誤的標籤名稱錯誤。這會導致一系列錯誤(載入!20 多個),通常會插入空格,並且生成的文字被引號引用的方式更糟糕 - 該文字看起來像是世界末日擊中了該頁面的一部分。這通常發生在較大的文字塊內,例如 許可證描述。幸運的是,這些“無用的幫助”可以在幾分鐘內手動編輯以進行更正。(這種“爆炸式自動修復”比 TRS2004 和更早的 Trainz 好 - 在這種型別錯誤以下的所有內容都消失了!幽靈軟體!)

使用搜索"在對大型文字欄位進行任何編輯時檢查引號巢狀是一個很好的軟體實踐,可以避免這種小麻煩,而是有一個正常修復的資產。



其他錯誤,特別是在 V3.3 之後,是由於 資料模型定義 的更改以及對自 V2.8 以來一直存在的,現在稱為 TrainzBaseSpec 的內容執行造成的 - 該資料集始終初始化所有 config.txt 檔案的主體,並設定自定義資產系統。基於這些 TBS 值中的某些值,其他資料隨後被新增進來以配置資產,包括對其他包含的資產 元件檔案 的引用,例如影像、指令碼檔案texture.txt 檔案 和細節級別 (LOD) *.LM 檔案。該自定義的起點是 TBS 的作用,而資產中所有元素的定義和引用則是它 config.txt 檔案的作用。底線是,幾乎所有資產修復都需要更改 config.txt 檔案 - 這是一種罕見的錯誤,它需要另一種不需要的修復!

術語紋理檔案 或 LOD 檔案在上下文中容易混淆。如果程式設計師在論壇上提到其中一個,他們可能指的是一個壓縮的最終檔案。如果該術語被使用者或內容建立者使用,他們可能指的是影像檔案,或者指的是影像檔案和適用的 texture.txt 檔案 - 這兩個都是 CM 在提交資產時建立的二進位制 .texture 檔案 的未壓縮形式。這就是為什麼 config.txt 檔案對 texture.txt 檔案的引用不能包含 .txt 副檔名 - 資料庫只看到 .texture 檔案,並且檔案路徑引用需要正確引用它以進行內部資料庫連結。
  • 類似地,LM 和 LOD 網格的網格引用會被合併和壓縮。Ø



技巧和竅門

[編輯 | 編輯原始碼]
  1. 由於配置檔案是自定義資源的核心,因此在使用 CM 開啟資源進行編輯時,無論是新手還是經驗豐富的使用者,都應該養成良好的習慣。
    1. 方法 1: (SHFT+CTRL+E 開啟資源,然後進入資料夾)
      1. 在編輯配置檔案之前,使用“另存為”功能進行復制。
      2. 或者,先使用 Windows 複製檔案(選擇,CTRL+C,選擇資料夾,CTRL+V)。使用F2 重新命名檔案為 Config.org.txt... 或者保留檔名,並在檔名中新增由 Windows 新增的“(副本)”。
      3. 然後,且僅然後開啟原始配置檔案進行編輯。
    2. 方法 2: (最快: 可能取決於您的文字編輯器)
      從資料夾中開啟 config.txt 檔案,然後立即ALT+Tab ↹ 返回資料夾。
      1. config.txt 檔案應該仍然處於高亮狀態(選中狀態),因此接下來按F2並在 .txt 副檔名前新增 .org.v2-4 等。(Trainz 在驗證和提交資源時不會容忍未知的資料檔案型別,因此只能使用合法的基於文字的檔案型別,例如 .txt 副檔名或 .htm。)
      2. 完成編輯後,ALT+Tab ↹ 返回編輯器。
         • Notepad++ 會抱怨(通知您)檔案丟失,並詢問是否應該將檔案保留在記憶體中。選擇“是”。Windows 記事本不會注意到檔案丟失。 您的編輯器...???
  2. 強烈建議使用具有多個選項卡的程式設計師編輯器,該編輯器能夠開啟多個檔案;在正則表示式中進行搜尋和替換,在多個檔案中進行替換,以及/或比較檔案的能力。 Notepad++Programmer's NotepadCrimson Editor 都可作為免費軟體使用(以及可用時間,將在 本華夏公益教科書 中介紹),並且它們都具有大多數這些有用的功能。
     • 至少,Notepad++——它還可以在行尾字元之間進行搜尋和替換,這對於將多個 kuids 合併成 CM 可接受的逗號分隔列表(CSV)非常有用,將在許多 Trainz 螢幕截圖中出現。
  3. 有針對性地下載並少量下載!在 Trainz 體驗的早期下載過程中,請有針對性地下載少量資源,不要超過兩屏。
    1. 下載完成後,在主檢視中檢視資源組,全部複製,並將 CSV 列表轉移到類似 Open Office Calc 的電子表格中。如果標題中有逗號 (使用者名稱),您可能需要清理一些單元格,但您將有兩個可排序資料列作為日誌檔案。
       • 養成在輸入資料後立即儲存的習慣,並在離開應用程式之前整理資料。您可能會斷電或更糟的是忘記!
    2. 如果您將作為執行日誌,並不斷追加,在另一個列中新增一些型別資料,它會為 特殊選擇過濾器 建立一個方便的列表,以便根據下一段進行構建路線。
       • 當然,您無需將這些副本限制在下載的內容中,任何主檢視中列出的專案都可以高亮顯示並新增!
    3. 僅複製 kuids 列,將其帶到 Notepad++ 中,並Search 從 '>' 到下一個 '<kuid' and Replace (SAR) 為 ">,<kuid",以快速獲取包含整個下載的 CSV 檔案。
    4. 但是,請注意,您的過濾器已經顯示了僅這些 kuids,來自下載+顯示在主檢視中,因此將這些 kuids 儲存到“上次下載”中。
    5. 作為一項實用技巧的實踐,在“就地”過濾器中新增第二個 KUID 搜尋欄位,並將這兩個欄位用 **AND NOT** 過濾器修飾符隔開。應用後,如果獲得了整個列表,列表應該顯示為空。
    6. 由於你已經儲存了它,你現在可以透過與 **Faulty** 進行 AND 操作來解決任何故障並保持相同的顯示順序,並且只有該列表中的錯誤項 *將出現*。
       • 不在列表中的其他錯誤不會出現——如果你貪心並突然擁有大量錯誤內容,這將讓你專注於現在最重要的事情。透過查詢你最感興趣的 路線+會話 來逐步解決它們,並使用 AND 操作技術來修復你針對其 *組合依賴項* 的 KUID CSV 檔案所需的目標。
       • 注意:使用帶 **AND**,**AND NOT** 和 **OR** 的已儲存過濾器在縮小範圍、選擇性檢視或以其他方式組織你的資產管理任務方面可以提供很大幫助。
       • 練習、練習、練習——一旦掌握這項技巧,它將為你節省大量時間。
       • 所有消除雜亂的過濾技術(在 DLS 上不顯示內容可能是最有用的),以及選擇篩選條件的技巧,都可以縮小你的搜尋範圍,找到你需要的或正在尋找的內容,從而節省時間。
       • 另一種有用的技巧是反轉你的選擇……假設你在你想要嘗試的那條路線中顯示了 30 個資產為已過時。突出顯示該組,**RMBh** 並選擇 **Show asset Versions**,顯示將只顯示你突出顯示的資產及其相關資產。現在,**RMBh** 並選擇 **Invert Selections**,瞧——所有更新都被突出顯示,你可以將它們全部拖放到下載助手中的一個塊中(或者……**RMBh** 並選擇 **Download**——這將為你新增它們並立即開始下載!
  4. 待續

 

文字編輯器

[edit | edit source]

config.txt 檔案是 純文字 (ASCII) 檔案,儘管最舊的資產的第 1 行可能包含 BOM(位元組順序標記)程式碼。它們應該使用非格式化程式進行編輯,例如 Windows 記事本、ConTEXT、Notepad++、Programmer's Notepad 或其他非字處理器的 文字編輯器——其中許多也被稱為程式設計師編輯器。

警告:  config.txt 檔案 *不能* 使用文字處理器程式進行編輯,例如微軟的 Works、Word、Wordpad、Magic Pencil 或 Open Office 的 Writer——任何 WYSIWYG 編輯器!
為什麼? 它們都會在檔案裡嵌入額外的非列印字元作為控制程式碼,並破壞資產 *使它變成錯誤的*!為了瞭解命名方面的見解和規則,**請參閱連結的 ACS 文字格式規範** 部分



其中一個文字程式是 ConTEXT,它在與 Wulf/Wulf9 的 TPR 的語法檔案帖子 語法檔案一起使用時,會提供語法高亮顯示。你需要在上面的連結(TrainzProRoutes)註冊才能下載語法檔案。ConTEXT 還會顯示匹配的括號,這在故障排除時非常有用,需要注意的是,N3V Games 在 TrainzOnline Wiki 的幾篇文章中也提到了這個文字編輯器。

本書中的許多示例將使用 免費軟體 Notepad++ 程式設計師編輯器,它具有多個選項卡(檔案處理)、搜尋和替換 (SAR) 功能,可以在檔案和開啟的檔案中進行搜尋和替換,以及正則表示式 (REGEX) 搜尋和 SAR 處理、跨行斷點 (換行符或換行符) SAR 等功能。這些功能在克服來自 內容管理器 的笨拙輸出或在 修復錯誤內容 方面大有幫助。

示例 1A
2014-0417-1 List of 982 DAVESNOW assets crossloaded new TS12 to old F~TS12

Anhaen,<kuid2:95148:10182:1>
AnhaengerLeer,<kuid2:68787:25265:9>
Anhaen 1,<kuid2:95148:10183:1>
Appliances Industry Corp,<kuid:58223:26098>
Arcon Mk V,<kuid:225064:4010965>
ATLS CONTROLLER,<kuid2:76656:500010:8>

Notepad++ 可以用不到 2 分鐘 30 秒的時間將上面的內容(或類似的 890 行)轉換成類似下面的 CSV KUID 列表,這需要使用 REGEX SARS 進行練習。

示例 1B

<kuid2:95148:10182:1>,<kuid2:68787:25265:9>,<kuid2:95148:10183:1>,<kuid:58223:26098>,<kuid:225064:4010965>,<kuid2:76656:500010:8>

示例 2

使用開啟的電子表格和一個草稿檔案(在 Notepad++ 中 **CTRL+N**)可以在 30-60 秒內獲得相同的 CSV 檔案。另一個 Notepad++ 選項卡可用於儲存此類組的執行列表,以備將來過濾使用。
 • (集中你 Trainz 文件的儲存位置,只放在一個主目錄中——幾個月後找東西非常煩人!)
 • kuid 欄位可以包含數千個 CSV kuid,因此,如果儲存帶有標題,此類捆綁包具有很大的價值。建議“ZZZ-nn 下載說明,在 9-12 個月內仍有意義”加上 - YYYY-MMDD,這樣CTRL+F+ZZZ- 可以導航儲存以向上或向下儲存! 

拼寫正確是一個精確的需要

[edit | edit source]

標籤關鍵字必須拼寫正確,並且在指定每個 標籤容器 值的引數時必須使用正確的語法。由於計算機程式將解釋其內容,因此需要精確的準確性。

  • 請注意,某些術語對於北美英語使用者來說拼寫似乎很奇怪,而對於那些接受過前大英帝國所產生的社會教育的人來說,其他術語拼寫也很奇怪。澳大利亞鐵路文化借鑑了這兩個國家的裝置和培訓師,他們引入了各自的傳統,因此鐵路術語有一些混合,因此術語的拼寫也有一些混合。



 

大括號規則

[edit | edit source]

大括號 {} 用於指定那些需要多行的相關資料對的標籤對或組的內容的起始和結束點。這些被稱為 容器,一種特殊的容器型別,KIND 在很大程度上決定了 config.txt 檔案中資料的處理方式(以及如果指定錯誤會發生哪些錯誤)。每個左大括號都必須有一個相應的右大括號,並且 所有“左大括號”都必須始終空格空格Tab ↹ 字首。換句話說)。某些標籤可以巢狀,在這種情況下允許結構如 { { } },並帶有前面提到的空格條件。

 

Kuids 和 Kuid2s

[edit | edit source]

kuid 必須使用以下格式之一指定

  • <kuid:nnnn:nnnn>
  • <kuid2:nnnn:nnnn:nn>,(其中數字位數可能有所不同)
注意,根據定義,<kuid:nnnn:nnnn> 等於 <kuid2:nnnn:nnnn:0>

kuid 或 config.txt 檔案中任何實際上不是文字雙引號引起來的規範,可以選擇用一對雙引號括起來,例如:"<kuid:nnnn:nnnn>",trainz-build "2.9"

 

標籤、種類和容器名稱

[edit | edit source]
Trainz 中的每個值都是一個數據對的一部分 - 稱為 標籤引用 的金鑰程式碼和資料
  1. 容器 包含多個定義,包括資料型別(如小數、整數和字串)的混合,但它們彼此相關。
  2. 種類是特定型別資產獨有的容器,而容器是多種 KIND 所需的相關資料元素的集合。

以下標籤是必需的

  • kind
  • kuid
  • username
  • category-class
  • category-era
  • category-region


config.txt 檔案中的一些常見錯誤

[edit | edit source]
  • 不匹配的大括號。
  • 任何緊跟左大括號的非空格字元。
  • 任何緊跟左尖括號的非空格字元,除了在允許使用 HTML 的地方。

對於下表中的專案,如果該專案用作關鍵字,則只會發生錯誤。在文字字串(如描述)中,可以使用任何拼寫、空格和標點符號。

不正確 正確
behaviour behavior
colour color
discription description —Jcitron 最喜歡的愚蠢錯誤
independent independant(即澳式英語!與正確的美國英語拼寫相反)
kuid { kuid-table {
kuid{ kuid-table {
kuid<kuid:... kuid <kuid:...
kuid table kuid-table
kuidtable kuid-table
對於任何帶連字元的關鍵字 keyword-table {
obsolete obsolete-table {
obsolete{ obsolete-table {
obsolete table obsolete-table
obsoletetable obsolete-table
table{ table {
trainz-build "utc" trainz-build 1.5
trainz-build "1.5"

TRS 2004 和 TRS 2006

[edit | edit source]
特殊情況...

在 TRS2004 及更早版本的 Trainz 中,在編輯 config.txt 檔案後,需要刪除 Cache\world_cache_Dispatcher.chump 檔案,否則 Trainz 將使用該檔案的舊版本。這僅在修改的 config.txt 檔案位於 World\Dispacher\ 層次結構中時才需要。如果您正在編輯 World\Custom\ 層次結構中的檔案,則無需刪除 .chump 檔案。

對於 TRS2004 使用者,Trainz Objectz 免費的第三方實用程式可用於掃描已安裝的資產以查詢其 config.txt 檔案 中的常見錯誤,並選擇性地自動更正其中的一些錯誤。這啟發了 內容管理器 的開發。

對於 TRS2006-SP1 和 TC 使用者,CMP 提供了良好的錯誤檢查,但要小心,如果弄亂了括號,您可能會發現後面的任何內容都消失了。因此建議在編輯之前進行備份。

在更新的版本(約 2010 年)中,額外的 PEVtools 應該在 TR 中不起作用,但是將安裝程式放在 ..\bin\...\Openwith 中的批處理檔案的副本放在更新的版本中,可以使它們正常工作。與 TS09 及更高版本不同,它們不能從 CMP 內部啟動。
  • 可能還需要在某些 texture.txt 檔案 中進行額外的更正,以使用 hack-hack(“//”)風格的行開頭註釋來註釋掉任何存在的“AlphaHint”行。
  • 在執行 PM2IM 和 Images2TGA PEVtools 後,對於較舊的資產,將 [[Trainz/refs/TrainzBaseSpec#

trainz-build| trainz-build]] 更新到 v2.5 或更高版本,甚至 PEV 的 Mesh Viewer 2 實用程式也能正常執行,並允許您探索紋理的應用位置(如果缺少紋理,這將很有用!),擷取螢幕截圖等。



 

註釋

[edit | edit source]
  1. N3V Games,當時是與Auran相關的較小合作伙伴,從Auran Holdings和Auran Development手中接管了Trainz的管理和開發。Auran Holdings和Auran Development過度擴充套件了另一種型別的電腦遊戲,這些遊戲利用了他們擁有的專有JET I和JET II遊戲引擎。在遭受了巨大的財務損失後,Auran尋求法院保護,而N3VRFail,現在稱為N3V Games,做出了安排,在法院監督下,以接管控制權的方式投資,從而挽救了運營,代價是接管了許多業務職能。
    N3V立即採取行動以產生現金流,釋出了Trainz TCC合集包(Trainz:The Complete Collection),然後重新開始開發TRS2004/TRS2006技術,並對三個spiffy-looking-but-content-light Trainz Classics releases, TC1-TC3 (TBV's 2.7 & 2.8)—這些版本只是對TRS2006-SP1進行了升級(重新設計),但捆綁的內容太少,無法吸引許多買家。
    但在TC中,N3V Games也開始了加強載入或上傳時錯誤檢測的趨勢,and so began an ongoing spiral of increasingly enforcing tighter data model adherence to the definitions—這些列舉型別的資料可以簡化對合法值的測試。 以前稱為REM(類似於BASIC計算機語言的關鍵字)的做法和非正式標籤變成了錯誤生成器,儘管它們在Trainz 1.3和UTC時代很常見。 一些code build version從V3.3版本開始,一旦開啟資產進行檢查和故障排除,即使資產仍然有故障,也會阻止再次提交資產。(但是,可以恢復資產,因此使用者可以獲得資產副本以進行遊戲和實驗。)

    具有諷刺意味的是,到TS10-SP2,Trainz社群發現,即使Auran自己的資產在opened-for-editing後,也存在相同型別的缺陷——許多Trainz玩家在開啟Auran模型以將良好的資料集定義與生成錯誤訊息的資料集進行比較時被燒燬了。

 

 

參考資料

[編輯 | 編輯原始碼]

 

華夏公益教科書