跳轉到內容

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 file.

基礎知識

[編輯 | 編輯原始碼]

所有資源都必須有一個 config.txt 檔案才能放置在 Trainz 中,否則它們就不是資源。也稱為“配置檔案'”或僅僅是“配置檔案'”,config.txt 檔案無論什麼名稱,都包含有關資源的基本資訊,最重要的是其型別 = <值>,包括其 使用者名稱kuid 號碼trainz-build類別-區域類別-時代區域 標籤等等(及其 <值>),以及一些可選的非必要的歷史標籤(原型鐵路、公司)、作者、許可和所有權資訊標籤,如建立者、組織、聯絡電子郵件、第三方網站 等等——所有這些“定義'”使資原始檔夾成為自定義和自我文件化的 Trainz 相容資源。好吧,除了配置檔案更改記錄或檢視連續更改的方法。  在上述內容中,我們多次封裝了標籤“<值>”以強調兩個重要要點。Trainz 中的所有資料都是透過關鍵字——合法值關係進行定義和操作的。在計算機科學中,<值>(或合法值)是受列舉資料型別成員資格約束的列表。
 • 例如,二進位制型別(也常稱為“布林值”)是具有兩個合法值的列舉型別:{ binary: 0, 1 },該符號 *'{'+term+':'+值列表+'}' 讀作二進位制集合具有成員零和一”。值列表也稱為列舉列表,在本例中長度為二,具有兩個允許值。列表中不存在的任何內容都是非法的,將生成 Trainz 錯誤,並顯示相關的錯誤訊息,還會阻止您將資源提交到資料庫中。防止將有故障的資源提交到資料庫的機制始於trainz-build,對應於 TS10 和 TS09 的 TBV(及其功能)重疊。[注 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 檔案的引用中 MUST NOT 包含 .txt 副檔名——資料庫只看到 .texture 檔案,並且檔案路徑引用需要正確引用它才能進行內部資料庫連結。
  • 類似地,LM 和 LOD 網格的網格引用會合並並壓縮。 Ø



技巧和竅門

[編輯 | 編輯原始碼]
  1. 由於配置檔案是自定義資源的核心,所以在首次修復和更新資源時,或者作為一種良好的實踐,即使在之後很長一段時間內,在 CM 中開啟資源進行編輯時
    1. 方法 1: (SHFT+CTRL+E 開啟資產,然後帶你進入資料夾)
      1. 在編輯配置檔案之前,使用“另存為”將其複製
      2. 或者先用 Windows 複製 (選擇,CTRL+C,選擇資料夾,CTRL+V)。使用 F2 重新命名檔案為 Config.org.txt... 或者保留檔名,在 Windows 新增的名稱中插入 (copy)。
      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. 只複製 kuid 列,將其帶到 Notepad++,並Search 從 '>' 到下一個 '<kuid'andReplace (SAR) 為 ">,<kuid",以快速獲得整個下載的 CSV。
    4. 但是,請注意您的過濾器已經只顯示了這些 kuids,來自下載 + 顯示在主檢視中,所以將其儲存到“上次下載”。
    5. 作為一種有用技術的練習,在“就地”過濾器中新增第二個 kuid 搜尋欄位,並用 AND NOT 過濾器修飾符分隔這兩個欄位。應用後,如果獲得了完整列表,則列表應該顯示為空!
    6. 由於您已經儲存了它,因此您現在可以解決任何錯誤,並透過使用 Faulty 與其進行 AND 操作來保持相同的顯示順序,只有該列表上的錯誤項才會出現
       • 其他不在列表中的錯誤不會出現—這使您可以專注於現在重要的內容,如果您貪得無厭,突然有很多錯誤的內容。透過查詢您最感興趣的 路線 + 會話,並使用 AND 操作技術來僅修復您需要用於該目標的內容,並參考其“組合依賴項”的 kuid CSV 檔案。
       • 注意:使用已儲存的過濾器,包含 **AND,**AND NOT 和 **OR,可以幫助您縮小範圍、選擇性檢視或以其他方式組織您的資產管理任務。
       • 多練習、多練習、多練習——一旦掌握了這種技巧,它將為您節省大量時間。
       • 所有消除混亂的過濾技巧(例如在 DLS 上不顯示內容可能是最有用的技巧),以及選擇篩選條件的技能將幫助您縮小範圍,找到您需要或正在尋找的內容,所有這些都能節省時間。
       • 另一種有用的技巧是反轉您的選擇... 假設您在想要嘗試的路線中顯示了 30 個過時的資產。突出顯示該組,**RMBh 並選擇 **顯示資產版本,顯示屏將僅顯示您突出顯示的資產及其相關資產。現在,**RMBh 並選擇 **反轉選擇,瞧!——所有更新都會突出顯示,您可以將所有內容以塊的形式拖放到下載助手(或... **RMBh** 並選擇 **下載**——這將為您新增它們並立即開始下載!
  4. 待續

 

文字編輯器

[編輯 | 編輯原始碼]

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

警告:  config.txt 檔案不能使用文字處理器程式進行編輯,例如微軟的 Works、Word、Wordpad、Magic Pencil 或 Open Office 的 Writer——任何所見即所得編輯器!
為什麼?它們都會在檔案中嵌入額外的非列印字元作為控制程式碼,並會破壞資產使其出現故障!。有關命名方面的見解和規則,請參閱 ACS 文字格式規範 部分(連結)。



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

本書中的許多示例都將使用 免費軟體 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++ 可以將以上內容(或 890 行類似內容)在不到 2 分 30 秒的時間內轉換為類似以下的 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

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

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

[edit | edit source]

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

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



 

大括號規則

[edit | edit source]

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

 

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技術,並對三個《Trainz Classics》版本(TC1-TC3,TBV's 2.7 & 2.8)的乏善可陳的釋出和銷售情況進行了改進。這些版本本質上是帶有大量內容的TRS2006-SP1,但捆綁的內容太少,難以吸引很多買家。
    但是,在TCs中,N3V Games也開始了加強載入或上傳時錯誤檢測的趨勢,並開始不斷加強對資料模型的嚴格遵守——這些列舉型別的資料使得對合法值的測試更加容易。REM(類似於BASIC計算機語言的關鍵字)之類的實踐和非官方標籤成為了錯誤生成器,儘管它們自Trainz 1.3和UTC時代以來一直被普遍使用。V3.3的某些程式碼構建版本開始阻止對已開啟以檢查和排查問題的資源進行重新提交,如果該資源仍然存在故障。(但是,該資源可以恢復,因此使用者可以獲取該資源的副本進行播放和實驗。)

    具有諷刺意味的是,到了TS10-SP2,Trainz社群意識到,即使是Auran自己的資源在開啟以供編輯後,也存在著類似的缺陷——許多Trainz玩家因開啟Auran模型以將其與產生錯誤訊息的資料集定義進行比較而被燒燬。

 

 

參考資料

[編輯 | 編輯原始碼]

 

華夏公益教科書