跳转到内容

Trainz/refs/TrainzBaseSpec

来自 Wikibooks,开放世界中的开放书籍
logo
Trainz 注解参考页面

Trainz 资源维护和创建
TOC | 开始乐趣 | AM&C | 创建 | 书内参考文献 ORP 参考文献:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本
[e]
KIND(资源类型组)
容器


KIND 层级结构简介

[编辑 | 编辑源代码]

KIND TrainzBaseSpec 为所有 Trainz 资源类型在所有 config.txt ini 文件 中提供了基础定义。TBS 提供了许多“标准标签”,这些标签对(或者至少,可以合法地定义)任何和所有 Trainz 资源[1] 都是通用的。

  • 其中一些是强制性的,因为它们决定了资源的进一步处理以及 config.txt 文件和其文件夹中资源数据的解释。
  • 但是,大多数是可选的,并且在大多数子资源中可以省略使用该标签的定义行。
  • 无,有效且大部分对于由实际父容器定义的所有内容都是必要的,即所有 Trainz 数字模型都需要config.txt 文件。KIND TrainzBaseSpecTBS)是一个根类,其他 Trainz 资源类都派生自它。
  • 之所以说它们是派生自它,是因为它们继承了其中列出的参数定义的处理属性(指令)和值,其中最关键的是 kind 标签的值。该枚举词决定了资源的特定种类声明和要求,这些要求会添加到该资源配置文件中 TBS 的定义中。其他关键的 TBS 定义数据也具有明显的意义和实用性,例如资源的名称、Kuid 标识符和版本、Trainz 版本值(TBV)以及其他定义、适用性和范围变化很大的数据,例如字符串表、过时表、kuid 表和缩略图图像都是具体情况而定的。即使是资源名称和描述之类的字符串值,在实践中也往往完全没有必要,并且可以完全省略。
  • 当声明一种种类时,该种类就成为父类,除了 TBS 中列出的那些数据外,还需要并规定必须在类中满足必要的成对数据。
  • 某些参数可以在资源种类的特定情况下保持未定义,尤其是在旧版 Trainz 版本标签值中很常见,对于这些参数,内容管理器或Content Creator PlusCCP)实用程序会分配一个默认值,但在处理时会显示警告消息。TrainzOnline 维基、此处或旧版TC3 时代内容创建者指南CCG)中的许多标签会提到一个默认值。
  • 从 TRS2006 和 Trainz Classics(TC1&2)开始,每个版本的 Content Manager 模块都强加了越来越多的预提交错误测试[注释 1],并且每个版本都变得越来越坚持在期望这样的标签-数据对时警告尚未定义这样的标签。

在 TANE 之后的版本中,许多这些“昨天是默认值”的定义行今天反而会更常生成错误,要求在过去加载时是默认值时提供明确的值定义。[注释 2]与过去资源定义错误有时会导致臭名昭著的“蓝屏死机”或更常见的情况是,使运行时软件崩溃回桌面,导致编辑内容丢失,并可能需要重建数据库相比,这是一种更好的恼人情况。

所有 Trainz 定义的数据(内容)都包含三个必需元素:一个config.txt 文件 用于组织数据,一个标识,即kuid(仅用户名是不够的,但是可以创建合法的资源而无需名称!)以及最后,一个合法定义的 kind 标签。kind 负责指挥,是乐队的指挥,是排长或 CEO 指示——为后续处理的所有内容设置要求。简而言之,kind 的值,一个小型、精选、严格定义的仅限成员的组——告诉 Trainz 软件在创建的虚拟世界中渲染和显示什么,以及如何在(或在哪里)找到在该 config.txt 文件中将资源的这些部分链接在一起所需的其他部分。
以下每个子类都被认为具有TrainzBaseSpec 作为其数据“父类”。[注释 3]下面列出的一些种类,带下划线的那些是过时的种类,早于TS2009 版本中对Trainz 数据模型的更改(即 2008 年后期以来),N3V 程序员自那以后只强加了渐进的(增量的)更改。
目前,有关基于这些过时种类修复资源的详细信息可以在 N3V Trainz 维基TrainzOnline 网站此处内容创建者指南部分找到,并提供了有启发性的过时种类的示例此处。强烈建议Trainz 下载站的任何用户或任何考虑创建内容的用户仔细阅读 CCG。可以将对旧内容定义方式的背景历史的理解与 TrainzOnline 对相同数据类型的当前覆盖范围进行对比和比较,因为这种过去与现在的对比通常可以提供有价值的见解,用于修复、更改和自定义资源。更重要的是,CCG 中的文字是专业制作的,并且更具同义反复性——它通常会让你了解如果更改这一点或那一点会导致的扩展影响,而 Trainz 维基则没有提供这些信息。TrainzOnline 上提供的 CCG 是TC1&2/TC3 版本——这是自 1999 年Trainz以来的几本印刷小册子的最后一个出版版本;TC3 CCG 包含来自 TRS2004/TRS2006 和UTC数据模型的已更改的 Enginespecs 机车资源,需要正确更新。

TrainzBaseSpec 子类 KIND(资源类型组)

 


表 I,TBS 标准定义

[编辑 | 编辑源代码]

TBS 标准定义

[编辑源代码]

这些标签和容器是标准定义,几乎所有资源中都可能找到。某些标签是可选的,内容创建者可以根据自己的选择不定义它们。标签是关键字,并分配单个键值或容器,例如字符串数组'{' ... '}' 绑定封闭的标签值对或子容器。(Trainz 配置文件中声明的所有内容都是成对的,即使 '{' ... '}' 也被视为一个“键值

  • 容器是“键”和“键值”对的集合以及TBS 中的“上层容器”(与缩略图容器内的子容器相对)通常以“-table”作为后缀
 kind    "'字符串值'"
 trainz-build 'float',一位小数
 kuid  <Kuid 编码值>
 username    username "'字符串值'"
 username-XX    username-XX "'字符串值'"
 description    description "'字符串值'"
 description-XX    description-XX "'字符串值'"
 kuid-table (容器)

  { 依赖项列表
 按 kuid 划分}

 一个键值表,列出此资源依赖的所有资源。
 obsolete-table (容器)
    {
    }
 此资源替换(使之过时)的 kuid 列表
 通常为空(空)[注释 5]
 string-table (容器)
    {
    }
 资源中使用的字符串和消息的键值列表
通常为空,仅在路线和场景中较大。
 string-table (容器[s])
    {  非英语
   语言文本}
 翻译字符串列表匹配到强制的英语string-table
 category-region 标签 枚举代码  category-region "'字符串数组'"  
 category-class 标签  category-class "'枚举 字符串值'
 category-era 标签  category-era "'受约束的字符串数组'"  年代
 category-keyword "'字符串数组'" 最大长度为 64 字节    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    "作者/组网站网址 '字符串值'"
 member-of-groups (容器)
    {
    }
 此资源所属的KIND 资源组资源列表。

 



支持的标签

[编辑 | 编辑源代码]

TrainzBaseSpecconfig.txt 文件中支持以下标签。:  

kind 标签

[编辑 | 编辑源代码]
类型:字符串。
字段定义:config.txt 文件表示的资源类型。请参阅索引种类和列表:此处(上面)

 

kuid 标签

[编辑 | 编辑源代码]
类型:KUID(简写),主要:KUIDs
字段定义:引用此资源的唯一资源 ID。
KUID
'Koolthingz Unique IDentifier'Trainz 系统软件的唯一数据库参考号,用于资源,也扩展到以 KUID2 形式跟踪多个版本。Trainz 可升级性和资源模块化设计的核心,因为每个资源都有其自己的唯一 kuid 代码,因此可以指定组件(转向架)或来自另一个的整个火车车厢,并在新资源中选择性地替换两者(重新蒙皮或修改卡车)。
  • 基本 KUID 格式:'<kuid:wwwwww:xxxxxx>',其中 wwwwww 是作者的“唯一 Trainz 身份”,xxxxxx 代表作者分配的模型识别代码
编辑注释: 请注意,尽管许多在线站点需要使用单独的数据字段(作者和序列号)进行搜索,但内容管理器将需要三个或四个冒号分隔的数据字段,但不需要括号——尽管逗号是搜索 API 窗口中多个 kuid 的必需分隔符。通常,在完整的 kuid 标签结束括号中聚合数据更容易,并且通常更易于阅读。对于剪切和粘贴一个巨大的列表,缓冲区大小限制可能会中断列表的末尾,在这种情况下,在文本编辑器中修剪两个结束括号可能会允许将整个列表放入 API 中。



  • 大多数 Trainz 资源在其kuid-table中指定依赖项列表——其他组件资源,由软件套件的各个部分组装而成,以构成在kuid-table 容器中可渲染和可使用的资源。
  • 在许多资源的核心,特定的标签可以通过kuid 引用定义,并将引用的资源用作一部分。实际上,这就是重新蒙皮的实现方式,并且可以使用资源中的网格,尽管更现代的做法建议此类引用指向网格库资源。
KUID2
KUID 格式的更新和更新跟踪修改版本,允许指定版本号。<kuid:xxx:yyy> 等同于 <kuid2:xxx:yyy:0>(零修订或版本零,表示原始版本
  • 这允许数据项(Trainz 资源)携带资源的固有版本代码。这通常与CM Trainz-build 代码(标识软件技术级别)不匹配,但指示以前的版本历史记录。
  • 如果数据库中同时存在这两个资源,则具有较高后缀代码的 KUID2 资源将覆盖或替换旧资源。拥有早期版本不是必需的,但CM 会将缺少的修订链列为缺少的依赖项,对于那些讨厌 CM 中该功能被污染的人来说,这是一个软件错误,或者程序员保留了该功能,无论如何都会降低使用 CM 来识别用户缺少什么的效用,并导致用户花费时间手动找出什么是真正的什么。

 

trainz-build 标签

[编辑 | 编辑源代码]

主要涵盖范围:trainz-build 标签,缩写:TB & TBV (TB 值)
类型:一位小数浮点数,由 N3V[2]枚举,用于跟踪和识别与软件演进的技术水平相对应的数据类型。
范围:1.0–4.3,直接对应('映射3rd' Trainz 1.0—TANE-SP1+hf2;此值预计会随着每次新的主要软件升级而逐步增加 0.1。

每个合法值必须完全匹配已发布的 Trainz 版本号,但以下情况除外

  • 分配 V1.4 的TBV 或版本值为 Auran 的Paintshed 发布版,这是一种也适用于Microsoft Trainz Simulator (MSTS) 的重制工具,并且也作为 TRS2004 辅助软件模块的构建值出现;具体来说,它是ContentManager.exe 实用程序。
  • 1.7 和 2.0 之间的差距可能是外语版本,或者正如在经过数小时的挖掘和研究后更有可能的那样,Auran 未使用,因为在构建原始 Trainz 的程序员团队看来,无论前台如何炒作营销名称(例如 Trainz UTC,是最终的任何东西……真的吗?。拜托!真的!!?),TRS2004 版本都是第二个 Trainz 产品。
Trainz 版本系列和相应的Trainz-build 标签值为 Trainz 1.0=v1.0,Trainz 1+SP1 ⇒ V1.1,Trainz 1.0+SP2 ⇒ V1.2,Trainz 1+SP3 ⇒ V1.3 等(但跳过 1.4 和 1.7–1.9),因此 TRS2004-SP0 = v2.0 然后递增,其中每个版本从 2.0(TRS2004 无 Service Pack)到当前版本(v3.7 = TS12-SP1,v3.8 = Mac2,3.9=TANE-CE,4.0—4.3 及以后?从 2016 年 3 月起,4.3 及以上版本为 TANE SPs TBDL)递增 0.1。
  • 从 v2.0(TRS2004)开始,Trainz-build 标签数值已通过 23 个步骤增加,这些步骤虽然不是单调的,但却是连续的,因为 Trainz TS09-sp3—TS09-sp4 共享一些Trainz-build[2]值;也就是说,在 TS2009 和 TS2010 的联合开发和发布时代,有一些共同的 TBV 重叠。
  • 此外,N3V 进军 Macintosh 计算机领域打断了基于 Windows 的 Trainz 版本 TBV 的平滑递增,TBV 3.4、3.5、3.6、3.7 和 3.8 在基于 Windows 和 Mac 的操作系统之间交织。
    注意:热修复不会更改版本号。
字段定义:此资源构建(和存档)到的文件格式版本,不一定与资源使用的技术级别有任何关系,但对应于在Content Creator Plus中创建资源时分配的资源级别——与在CM的标题栏中找到的级别相同。
  • 程序员建议此数字通常应设置为正在创建和测试资源的 Trainz 安装的 Trainz 版本号。相比之下,内容创建者社区试图将此数字设置得尽可能低,以便在下载时为新资源提供尽可能广泛的受众/用户范围。更好的内容创建者会将其在相应版本的裸机安装(无附加内容)上进行测试,并验证生成的 cdp 是否包含所有相关材料。
  • 某些资源类型根据其trainz-build版本标签的解析方式存在显著差异。注意:trainz-build 标签是强制性的。如果未指定,Trainz 将基于config.txt 文件的内容尝试进行基本猜测以确定旧版 Trainz 版本,这通常会将 TBV 解析为 1.3 的值。

 

用户名标签

[编辑 | 编辑源代码]
类型:UTF-8 字符串,资源的用户名强制性规范。
字段定义:此资源的英文人类可视名称。

在 TC1&2(v2.7)之后的 trainz-build 中,当编辑资源时,用户名也成为操作系统文件夹名称,并且忽略资源文件名,而在 v2-6 配置文件中,它具有优先级。根据 N3V 游戏的 TBS 标准,此字段绝不应包含非英文文本,除非资源名称是专有名词(例如地名)且没有英文本地化变体。此值是每个人通常搜索和记住的数据,因此建议保留清晰的名称。

创建资源时,强烈建议在 CM 搜索中针对多个试用部分名称验证新建议的名称,并根据这些知识采用与现有可用内容合理匹配的名称。
我们需要容忍多少个“house 2”或“road”资源来进一步混淆我们?好吧,在实践中,我们都会搜索 house 并从图像中进行选择,但能够指定唯一的名称并获得预期结果确实很不错!


 
 

username-XX 标签

[编辑 | 编辑源代码]
类型:UTF-8 字符串,用户名标签的替代语言版本。
字段定义:(其中XX替换为代表语言的相应本地化代码。)此资源的本地化人类可视名称。此字段类似于用户名字段,但表示非英语语言环境。一个资源中可能存在多个username-XX标签,每个支持的语言环境一个。如果不存在相应的“username-XX”标签来在给定的最终用户系统上表示此资源,则改为使用英文用户名标签。

 

描述标签

[编辑 | 编辑源代码]
类型:UTF-8 多行字符串,提供资源的清晰语言描述。
字段定义:此资源的英文人类可视描述性摘要。

描述在内容管理器“资源详细信息”窗格中可见,用于阐明资源名称,提供规格,并且通常还提供一些历史信息。

N3V 的 Chris Bergmann 表示,此字段应保持简短(1-2 段),描述资源并通过info-url页面提供扩展详细信息,但可以容忍相当长的文本块。有些人使用块的底部作为版本更改记录。

此字段必须英文描述性文本组成,尽管文本可以参考其他地方解释的非英文专有名词。其他语言翻译或源文本应放置在许多可能的替代语言本地化标签之一中(请参阅description-xx 标签)。 

description-XX 标签

[编辑 | 编辑源代码]
类型:UTF-8 多行字符串,描述标签
字段定义:(其中XX替换为代表语言的相应本地化代码。)此资源的本地化人类可视描述性摘要。此字段类似于描述字段,但表示非英语语言环境。一个资源中可能存在多个description-XX标签,每个支持的语言环境一个。如果不存在相应的“description-XX”标签来在给定的最终用户系统上表示此资源,则改为使用英文描述标签。

 

字符串表容器

[编辑 | 编辑源代码]
类型:UTF-8 字符串列表容器,字符串表容器
字段定义:一个英文字符串的键值对列表。每个键都是一个有意义的脚本标识符,映射到二进制数据并由其引用。每个值都是一个英文字符串。英文字符串可以包含或引用非英文专有名词作为标识符。非英语母语作者编写的资源,如果需要,仍然必须创建一个没有后缀的字符串表容器。软件仅链接到字符串表容器中没有后缀的名称和值,并引用它们,这会让西班牙语、法语、德语、捷克语、荷兰语……日语作者感到恼火。换句话说,带后缀的字符串表仅用于翻译目的,这在使用非英语编写地图时会带来问题——没有 string-table-en 可以提供反向翻译的表格。同样,username-en 和 description-en 也是如此。所有这三者都缺乏表现出一种过时且漫不经心的傲慢和对世界动态的漠不关心。

 其他语言由类似的字符串表(例如 string-table-XX)支持,带有一个本地化代码后缀 (XX),该后缀与描述和用户名关键字/标签的国际化后缀匹配,但这些语言键控字符串表容器的左侧条目始终具有相同的键值。 

  • 这些左侧的键或标签既用作“本地索引关键字”,也用作“语言之间的等价表”。
  • 左侧列始终包含内容创建者赋予“特殊”名称的对象,例如信号、轨道标记和行业、连接点等的名称,这些名称可能会被引用,并显示在驾驶员和测量员模块的“查找公用设施”(CTRL+F ) 功能小程序中。
  • 相反,索引侧也不会列出默认的名称,例如在构建路线图时由随机数字自动索引的大量连接点(即无意义的杂乱。如果重要,路线构建 CC 将命名它!),但会自动包含潜在的临时资产,例如火车车的默认名称。如果重命名,这些名称将取代其相应的默认名称。
  • 其主要用途是针对那些旨在与脚本引用交互并采用可变属性的对象,例如火车站或行业所需或准备发货的产品数量,或交互式火车车(对脚本而言是移动的行业)和其他可配置资产,例如简单的通用广告牌样式标志,通过稍微调整高度和角度,可以放置在库存建筑或行业的正面,以便在建筑物上放置不同的商业名称。换句话说,这是一种可配置的场景。
  • 总体而言,在路线图或布局中,这些左侧的名称对应于地图资产上的命名对象,并且大多数字符串表都在这里可见(从字面上看,由大型路线种类地图中的数千个条目填充)。
  • 在某些资产中,该默认名称已连接到软件脚本,因此字符串表变得特别重要,而不是枯燥乏味。(见下文)
  • 在任何类型的资产中使用字符串表类型始终是合法的,就像描述标签和 trainz-build 和 kind 标签一样。与这些不同,它不必存在或定义,并且绝不是强制性的。除非代码期望它们的结合,否则封装在字符串表容器中的值没有任何功能或效果。
  • 在其他资产中,再次以那个假设的可编程商业标志为例,如果该字符串表要与软件交互,则必须为其提供默认名称。所有地图可放置资产都可以命名或重命名,但“特殊名称”必须与脚本和字符串表索引值匹配。大多数可配置资产定义了一个接口变量,该变量用于替换默认名称作为索引或查找表引用的脚本以及资产的二进制数据。其他变量也可能在可编程资产中定义。脚本可以引用这些变量中的每一个,但正是索引值使它进入地图或会话字符串表,从而使所有内容在需要驾驶员或会话创建者可变性时协同工作。
  • 相反,如果系统软件不知道索引中命名的项目的位置,则对象的脚本可能不会触发、进行条件检查或能够更新。这是 2000 年代Trainz 1.0中对象的特征,而不是 2003 年发布的TRS2004之后的更现代的 Trainz 铁路模拟器。(从那时起,我们已经走了很长一段路了!)
  • 有一些资产只能作为一个组一起工作。在这种情况下,在映射或会话层中命名每个资产可以使它们一起工作。例如,考虑一个有五条轨道的公路平交道,其中两条轨道位于连接点之外,并与直通轨道形成所谓的“菱形交叉”。如何设置信号以使任何铁路交通关闭公路闸门,或者如何使用菱形交叉禁止其他火车通过正在穿越交叉的火车?道路和铁路信号以及道岔和闸门都必须协调工作。某些“ATLS 系统”资产及其脚本与字符串表的结合可以使该复杂系统发挥作用。
  • 请参阅字符串表-XX 以获取更多信息。

 

字符串表-XX 容器

[编辑 | 编辑源代码]
类型:UTF-8 字符串列表容器,本地化的字符串表,每个后缀对应于英语以外的语言。
字段定义:(其中XX替换为表示的语言的相应本地化代码。)此字段类似于字符串表字段,但表示非英语语言环境。

英语字符串表(无后缀)是强制性的,其他本地化语言是资产作者的可选内容。许多提交到 DLS 然后也用于与 Trainz 版本捆绑的路线的资产通常会被翻译,并具有描述-XX 和字符串表的一整套本地化翻译。特别是,与版本捆绑的路线和会话在每次零售版本发布时都会进行专业翻译成多种语言。

请注意,字符串表的左侧列是相同的,因为它是一个映射的符号表,并索引到二进制数据(例如网格、会话或路线文件)。只有使用名称,即两个元素的右侧或数据元素才是本地化的,并由运行时本地化软件替换。如果需要,可以手动编辑这些名称以获得更友好的名称,即使是在英语字符串表中也是如此。索引或左侧引用列语法不得以任何方式更改,因此在数据列中更改名称时,请注意全局 SAR 规范。

资产中可能存在多个字符串表-XX标签,每个支持的语言一个。每个都应包含一个字符串列表,该列表与字符串表列表中的键相同,但值不同。如果不存在相应的“字符串表-XX”标签来表示给定最终用户系统上的此资产,或者该列表中缺少相应的字符串,则改为引用英语字符串表容器。 

kuid-table 容器

[编辑 | 编辑源代码]

kuid-table   {
 numberit_library                      <kuid2:75134:99003:7>
 0                                     <kuid:-3:10164>
 1                                     <kuid:-1:42004201>
 2                                     <kuid2:50567:11155:1>
 3                                     <kuid2:58422:50120:1>
 4                                     <kuid:-3:10003>
 5                                     <kuid2:30671:94407101:1>
 6                                     <kuid2:87907:94407101:1>
 7                                     <kuid2:87907:94407103:1>
 8                                     <kuid2:87907:94407105:1>
 9                                     <kuid2:30671:9870190:1>
 10                                    <kuid2:30671:94407100:1>
 11                                    <kuid2:87907:94407100:1>
 12                                    <kuid2:87907:94407102:1>
 13                                    <kuid2:87907:94407104:1>
 14                                    <kuid:-3:10013>
 15                                    <kuid2:60318:10008:1>
 16                                    <kuid2:60318:10010:2>
 17                                    <kuid2:189041:301:1>
 18                                    <kuid2:50567:11121:1>
 19                                    <kuid2:30671:9840820:1>
 20                                    <kuid2:30671:9870899:1>
 21                                    <kuid2:50567:12646:3>
 22                                    <kuid2:124017:30000:2>
 23                                    <kuid2:124017:30001:2>
 24                                    <kuid2:124017:30002:2>
 25                                    <kuid2:124017:30003:2>
 lodi_icon                             <kuid2:124017:35000:1>
 lodi_lib                              <kuid2:124017:40000:1>
 26                                    <kuid2:30671:69006:1>
 27                                    <kuid2:124017:35000:1>
 28                                    <kuid2:30671:90810901:1>
 29                                    <kuid2:30671:9081290:1>
 30                                    <kuid2:60318:10009:1>
}
类型:KUID 列表容器,与已弃用表容器(下文)的格式相同。一个虚拟参数+一个(依赖项)kuid
字段定义:描述此资产依赖的资产列表的键值对。

 

通常
只有具有子组件或替代选择(货物)的资产才会具有长度可观的 kuid-table。大多数具有子组件的资产只有几个。
  • 其次,存在一个约定,因为它有时内部关键字是“自动定义”的——仅作为没有名称的数字列出,作为占位符参数,伪关键字可以是任何唯一值(通常是零索引的顺序整数。[注释 1])用户或作者可以根据需要为其命名或不命名。
  • 此表中的条目有两个用途
    首先:确保游戏系统知道依赖关系,以便安装和加载此资产将成功安装和加载任何依赖关系,以及
    其次:允许脚本定位相关的子资产。
  • kuid-table 中仅应包含第一级依赖项——具有自身依赖项的子级或部件资产将在该子资产的验证和数据库提交中进行处理。
  • 循环依赖关系是非法的。
  • 如果资产也标记为此资产的已弃用版本,则不能将其列为依赖项。(Trainz 资产索引(历史上是 assets.tdx 文件)中的 kuid 只有一个替换 kuid 插槽,这将创建一个需要自身旧版本的循环定义!)
  • 同样,资产不能列为其自身的依赖项。[另一方面,这已经发生过(即在 TSxx CM 中作为成功无故障提交的资产被见证过)在安装之间使用 GSARS 移植地图和会话以更改 kuid,以便重叠不会覆盖在目标安装上已经使用相同 kuid 的资产而不会看到错误消息。]它是否也起作用需要比我更勇敢或更愚蠢的人!——Fabartus,编者。
格式(所有值均为<kuid:aaaaa.bbbbb>格式)
kuid-table {
 0            Kuid-1
 1            Kuid-2
 3            Kuid-3
 ...          kuid-ii
 N-1          Kuid-N
 }
大多数用户的第一个内容将是自动克隆内置路线及其关联的会话。通常是因为想要修改某些内容。检查路线或会话的 kuid-table 将使新手或老手 Trainzer 拥有路线中资产的可编辑列表。这些可以轻松地转换为样式表“过滤器”(选择列表),让用户使用与原始作者相同的资产添加和更改路线……或在您自己的扩展中复制其样式。


  • 这些参数是虚拟参数的一个非常有用的利用方式是将复杂车辆资产中的产品kuid配对。一辆货车可能包含各种各样的产品……获得权限将你的作者ID分配到自己的系列中,并使用不同的载荷集,这可能是你第一次进行有意义的内容创作!考虑一辆货车,允许的产品容器,以及kuid列表可能包含以下条目
...  {
Animal_chickens <kuid:-25:230>
Animal_Horses <kuid:-25:236>
Animal_Cows <kuid:-25:239>
Animal_Piggies <kuid:-25:238>
Animal_Sheep_Flock <kuid:-25:240>
} ...

注意连接单词的下划线……两个符号,键和值!我们将如何将kuid添加到载荷和允许的产品队列表条目中留给学生去解决。(不客气,但这是一个更改名称的好理由!理清思路几乎是制作资产的全部战斗!)  

obsolete-table 容器

[编辑 | 编辑源代码]
类型:KUID 列表容器,与Kuid-table 容器格式相同。
字段定义:一个“占位符键-键-值”资产列表,这些资产被此资产淘汰。任何尝试加载此列表中的任何资产都将导致此资产被加载
  • 此外:两个资产都不能都将第三个资产标记为已淘汰,除非这两个资产中的一个也将其标记为已淘汰。[注释 6]
  • 循环淘汰引用是非法的。
  • 此资产的所有较低编号的KUID2版本都隐含为已淘汰,无需包含在此列表中。同时,较新的改进资产(具有较高的Kuid2)及其前身绝不应该将相同的前身(例如原始的!)列入“中间”的中间前身——因为这些值用作替换条目表,并且只有一个资产可以替换为早期版本。(数组只保存一个值,不能用两个替换一个!)
  • 将此资产的较高编号的KUID2版本标记为已淘汰是非法的,因为这会创建一个隐式的循环引用。
  • 此列表中引用的资产必须与此资产具有相同的创建者,才能由DLS上传过程验证和接受,此限制不适用于您的本地版本,例如,它可能用于将一大组火车车的旧纸轮kuid替换为一个图形更美观且更新的kuid。

 

category-region 标签

[编辑 | 编辑源代码]
用途:CM和Surveyor中的过滤器(搜索条件)
类型:枚举字符串或字符串数组。
字段定义:以分号(';')分隔的两个字符category-region 标签代码列表。字符串中不应存在其他字符(包括空格等)。此资产被认为与每个指定的区域相关——这对于kind 火车kind mosignal资产最相关,但可以为任何资产提供。
示例
category-region "CA;US"
category-region "CA;MX;US"(北美国家,加拿大、墨西哥、美国)
category-region "CA;CS;DE;MX;US;VE;AU;FR;IN;IT;JP;KR;ES;AR;AT;BE;CH;DK;IE;EE;NL; NO;NZ;PA;PL;PR;PT;RO;RU;SE;SK;UA;UK"(大多数第一世界国家)

 

category-class 标签

[编辑 | 编辑源代码]
用途:CM和Surveyor中的过滤器(搜索条件);确定CM软件如何根据KIND声明处理资产,以及Surveyor在何处列出它。
类型:枚举字符串。
字段定义:一个描述此内容项目的单一2-3个字符的category-class代码。category-class标签用于提供超出资产种类隐含内容的其他人工子分类。每个Trainz资产的category-class标签有助于描述资产在游戏中的“意图”,而不是资产的内部结构。
TRS2006的内容创建者指南(CCG)和Trainz Classics的CCG解释了这些类别代表了一种标准化的系统,用于引用各种类型的机车、车辆、风景、样条线和工业资产。当搜索和/或过滤合适的资产以在会话或路线(布局)中制作成内容时,Category-class分类代码对所有Trainz用户变得很重要。


 

请注意,许多category-class代码仅与特定资产种类相关——category-class代码不得应用于不适当种类的资产。

示例
    category-class "XBG" 敞篷货车 - 来自PRR 60'
    category-class "BR" 铁路(非功能性风景)——可能是建筑物
    category-class "BIN" 具有产品处理功能的工业资产

 

category-era 标签

[编辑 | 编辑源代码]
用途:CM和Surveyor中的过滤器(搜索条件)
类型:枚举格式字符串数组。
字段定义:分号';')分隔的五个字符时代代码列表。
  • 每个时代代码代表一个十年,由一个四位数的整数组成,然后必须以's'结尾 (例如“1990s;2000s;2010s”),从而创建一个枚举软件标记(值),该标记必须与指定的合法时代代码之一完全匹配。
  • 字符串中不应存在其他字符(包括空格等),包括(尤其是在字符串末尾)在终止双引号字符之前。
  • 允许的年份范围是1800-2010s[注释 7]
  • 此资产的唯一含义是针对其他人,即此资产被认为在指定的时代范围内有效且相关,并且内容管理器将接受指定适用年份的搜索过滤器。

 

示例
category-era              "1920s;1930s;1940s;1950s"

 

缩略图容器

[编辑 | 编辑源代码]
用途:CM和Surveyor中的过滤器(搜索条件)
类型:缩略图容器
字段定义:在整个游戏环境中(包括游戏内、内容管理器下载站)用于以2D预览框、列表和图标形式表示此资产的缩略图。每个数据集都包含在一个子容器中(通常)使用占位符参数作为键名或标签。[注释 8]约定将这些设置为0索引的整数,但该值可以是任何非空文本值,可以将其评估为字符串。(参见下面的第二个示例)
一个实际的例子
(来自资产修复编辑[3]
thumbnails {
	0 {
		width					240
		height					180
		image					"$Screenshot (240)(kuid 68787 25222).jpg"
	}
	1 {
		width					512
		height					512
		image					"$Screenshot (512)(kuid 68787 25222).jpg"
	}
}

另一个常见的大小是火车站和测量员资产选择API中使用的128x64“图标”,它应该具有Alpha蒙版或非常浅的背景。许多较旧的没有使用jpg文件,而是在'_art'子文件夹中列出了.tga文件(Targa真彩色)(Trainz 1.0-TC3约定:'_art'、'_body'和'_shadow'是早期Trainz数据模型要求指定的三个子文件夹,名为'asset-filename_suffix'(已淘汰的标签-值对),如下所示[注释 9]

thumbnails
{
  Icons
  {
    width 128
    height 64
    image "40ft_boxcar_art\40ft_boxcar_art_icon.texture"
  }
 CM
 {
   width 240
   height 180
   image "$screenshot PRR 40ft_boxcar (240).jpg"
 }
 DLS1
 {
   width 512
   height 512
   image "40ft_boxcar_art\40ft_boxcar_art_512.texture"
 }
 DLS2
 {
   width 512
   height 512
   image "$screenshot PRR 40ft_boxcar (512).jpg"
 }
}

在TS2009和TS2010的早期版本中,没有适当的缩略图容器上传的资产将被标记为有故障。补丁后来将这些变成了警告。[注释 10]这种做法在TS12的一个修复程序中被取消,原因是在用户社区中收到了许多投诉。
• 如果缺少缩略图容器的资产(即使使用过时的thumb标签)后来在新的内置路线或会话中被选中,该资产通常将作为没有图像的项目分发——如果texture.txt或config.txt缩略图容器没有正确引用,它们将被剥离[注释 11]

软件链接

[编辑 | 编辑源代码]

info-url 标签

[编辑 | 编辑源代码]
类型:URL 字符串。
字段定义:指向资产在线描述、资产说明(帮助)或TrainzOnline wiki上的其他帮助页面的链接,旨在从嵌入式特殊用途N3V浏览器中使用。URL必须解析到Trainz 在线安全区域内的站点。目前,嵌入式浏览器可接受三个域名

     auran.com
    ts2009.com
    ts2010.com 

此外,建议使用自定义的Trainz短网址格式,而不是直接链接到这些域名,以使URL免受未来网站布局可能发生的变化的影响。“短网址”是Trainz专用的URL,通过允许内容创建者引用N3V网站上的特定页面,而无需依赖特定的网页布局,从而帮助保护内容免受未来变化的影响。短网址旨在用于游戏内,例如信息URL链接,并且仅在嵌入式网页浏览器中有效,在任何外部网页浏览器中均无效。在出现此标签的地方,游戏内会提供按钮,允许用户在不离开游戏环境的情况下查看资源描述或帮助。

这对于在Driver中访问路线地图、指南或关卡说明或澄清可能非常有价值。

建议在任何情况下,如果资源提供类似的功能但外观略有不同,都使用通用组页面来表示整类资源。这减少了创建、维护和本地化此类文档的时间成本。

 

must-have-product-rights标签

[编辑 | 编辑源代码]
类型:ASCII字符串。
字段定义:必需的产品权限列表,以分号 (;) 分隔。如果本地安装没有所需的产权,则某些游戏系统可能无法加载资源。

 

must-not-have-product-rights标签

[编辑 | 编辑源代码]
类型:ASCII字符串。
字段定义:冲突的产品权限列表,以分号 (;) 分隔。如果本地安装具有列出的产品权限之一,则某些游戏系统可能无法加载资源。

 

权限容器

[编辑 | 编辑源代码]
类型:权限容器是某些作者使用的DRM(数字版权管理)和复制保护实现,也可以称为权限DRM容器。DRM表示数字版权管理,这就是它实现的功能。如果已定义,某些参数将阻止查看资源的config.txt文件
字段定义:由资源创建者设置的一组权限,用于控制如何操作此资源。
privileges {
  is-payware-content 0 
  permit-listing 1
  permit-edit 1
  permit-commit 1
}

  上述容器使用默认值设置,这意味着

0)这不是付费资源,因此其他字段具有相关性[当付费资源编辑和提交为零时,但可能允许列出];

允许

1)查看资源的config.txt文件
2)编辑资源,包括查看其主文件夹中组件文件的内容,
3)重新保存对资源的任何更改(将重新验证的资源提交到数据库)。

 

脚本标签

[编辑 | 编辑源代码]
类型:字符串文件名。
字段定义:指示此资源的主要脚本文件的文件路径(如果有)。此文件路径应始终以“.gs”扩展名结尾 - 如果文件路径具有其他扩展名,则运行时将尝试添加或替换“.gs”扩展名。

 

类标签

[编辑 | 编辑源代码]
类型:字符串。
字段定义:指示要加载为此资源的主要类的脚本类名称(如果有)。此类从此资源的主要脚本文件加载。

 

脚本包含表容器

[编辑 | 编辑源代码]
类型:KUID-参数列表以及相应的名称作为键。
字段定义:脚本资源的键值表,在编译此资源的脚本文件时搜索脚本包含。键(一个变量,因此不是标签)目前未使用,但必须唯一;值指示要包含的资源的KUID。

脚本包含表容器是任何派生自KIND TrainzBaseSpec的资源(简而言之,所有资源)都可以使用的顶级config.txt文件条目。此容器允许资源使用N3V TrainzScript的Script_Include_Directive直接包含另一个资源的脚本,这些脚本来自父资源的脚本文件。

相关

扩展容器是具有特定命名约定的自定义标签或子容器列表。

S-I-T容器支持的标签

[编辑 | 编辑源代码]

此容器是脚本资源名称及其KUID的简单键值表,在编译资源的脚本文件时搜索脚本包含。键或标签名称目前未使用(即为占位符参数)进行搜索;值指示要包含的资源的KUID。能够搜索和识别键名是内容创建者请求的功能,因此建议将脚本文件名用作最佳实践,而不是使用数字虚拟标签名,因为它比KUID引用传达的信息更多。

S-I-T容器验证

[编辑 | 编辑源代码]

通常最好将此类引用限制为KIND库资源,但这并非强制性要求,可以引用任何资源。

S-I-T容器示例

[编辑 | 编辑源代码]
script-include-table {
                       a-key        <kuid:nnnn:nnnnn>
                       enginespec   <kuid2:www:xxxxx:yy>
                       anim-doors   <kuid:tttt:uuuuuu>
                     }

 

扩展容器

[编辑 | 编辑源代码]
类型:扩展容器
字段定义:一组扩展属性,除了为此资源类型定义的Config.txt文件规范外,还为脚本提供其他信息。在创建新的扩展时,应注意遵守扩展命名指南,并在为现有扩展提供数据时遵守扩展创建者的指南。Auran保留日后根据扩展创建者的指南为扩展容器中的特定条目添加验证的权利。

 


更新且较少见

[编辑 | 编辑源代码]

以下关键词是相对较新的发展,在旧的资源中不会有类似物或存在。 

类别关键词标签

[编辑 | 编辑源代码]
类型:UTF-8字符串。
字段定义:自然语言关键词列表,以分号 (;) 分隔。字符串中不应存在其他字符(包括空格或无关的标点符号)。这些关键词构成了资源关键词搜索的基础。资源的用户名无需在类别关键词列表中重复。
  • 根据资源类型(KIND+类别-类)自动提供各种默认搜索关键词,因此无需重复,并且可能不应该重复。Ø
  • 标签不能以空字符串("")或空白作为结尾——这些情况会导致错误。

  • 明显的用途:例如ATSF、圣达菲和AT&SF、B&O、切西、CSX、NS、PRR或NYC等公司,而平板车、箱车、漏斗车等基本类型应该是自动的。诸如下陷车、井式车和侧卸车(换句话说,修饰符)之类的桥接关键字可能应该用于增强自动关键字生成的有限智能。自动生成的术语重复不应令人担忧。

 

{{anchor|custom-category-list container|自定义类别列表容器|custom-category-list tag|自定义类别列表标签|custom-category-list string|自定义类别列表字符串|Custom-category-list Container|custom-category-list container

custom-category-list

[编辑 | 编辑源代码]
类型:ASCII字符串数组容器。
字段定义:自定义类别标识符列表,用分号(;)分隔。每个自定义类别标识符应为一个短的(例如3-6个字符)字母数字标记。字符串中不应包含其他字符(包括空格)。
  • 这些自定义类别用于使脚本能够快速定位某些类别的资产。强烈建议谨慎引入新的自定义类别标识符。
  • custom-category-list标签值总共不得超过64个字符。除非存在只能通过custom-category-list方法满足的特定脚本需求,否则应将此标签留空。

 

member-of-groups容器

[编辑 | 编辑源代码]
最低版本:V3.5及以上
类型:Member-of-groups容器配对的占位符参数资产组kuid。
字段定义:此资产所属的KIND_Asset-group资产列表。有关如何以及何时使用此功能的详细信息,请参阅kind KIND Asset-group文档。

该容器包含KIND Asset-group KUID的常规列表。此包含声明,此后,尤其是在搜索操作(包括脚本接口和TrainzUtil)中,此资产将被视为每个列出的资产组的成员。

如果未为给定的“member-of-groups”容器指定任何条目,或者如果资产省略了“member-of-groups”容器,则模拟器软件可能会根据资产的Config.txt文件指定一些默认资产组。不同版本的模拟器的确切行为可能会发生变化,但是当前逻辑在此处进行了描述。

可选的已弃用标签

[编辑 | 编辑源代码]
以下标签对于任何资产都不是强制性的,并且许多资产将其留空。
从历史上看,识别和许可标签始于Trainz 0.9(Beta)。

 

类型:UTF-8多行字符串。(程序员自行弃用。)
字段定义:许可证描述了资产创建者希望如何使用此资产。最常见的是许可证声明禁止在任何付费路线、依赖资产(例如转向架、联结器等火车部件)或重制皮肤中使用受版权保护的资产,包括在任何付费运营的网站上分发资产。(这在理论上即使对于DLS也是正确的。FCT费用是为了更快地访问和无限下载,而不是为了访问资产。)
license标签的含义模棱两可,N3V不建议使用它,但它的出现早于N3V的管理6-7年。
上传到下载站或提供用于包含到游戏中的内容可能受特定再分发合同或许可协议的约束,该协议优先于此字段中的任何文本。license字段不提供本地化支持。Auran或N3V不会验证或执行license字段的文本,并且可能对最终用户具有或不具有法律约束力。
另一方面,Planet Auran的历史表明,有人通过将其他人的内容作为自己的内容来侵犯版权,可能会导致迅速被禁止访问Auran网站并失去下载站权限等,并永久封禁。此外,社区将严厉打击其他用户侵犯他人版权的行为,并回避违规者并忽略允许保留在DLS上的任何资产。
总之,对于试图攀登陡峭的内容创作学习曲线的Trainzer来说,实验和修改资产是一种被接受甚至被认可的生活方式(每个人都希望有更多内容创作者!),但是如果资产有依赖部件,尤其是网格、脚本、纹理,这些是知识产权——在上传您的创作之前,请获得使用属于他人的这些部件的许可。
通过“kuid引用指定的资产部件不应包含在本声明中——使用普通的联结器、转向架或基本火车车厢网格(Auran铸造了几种标准类型,许多作者默认使用它们,例如检查货车的依赖项(英国:有盖货车或厢式货车)——超过一半可能正在使用对Auran在Trainz 1.0中发布的基本网格的kuid引用!)


 

author标签

[编辑 | 编辑源代码]
类型:UTF-8字符串。(已弃用,支持可更新的Planet Auran数据库。)
字段定义:作者的姓名或标记。不建议使用此字段,因为可以通过编程方式确定归属。

 

organisation标签

[编辑 | 编辑源代码]
请注意英国拼写,北美拼写“organization”也适用!
类型:UTF-8字符串。(已弃用,支持可更新的Planet Auran数据库。)
字段定义:负责创建此资产的组织的名称或标记。不建议使用此字段,因为可以通过编程方式确定归属。

 

contact-email标签

[编辑 | 编辑源代码]
类型:字符串,电子邮件地址。(已弃用,支持可更新的Planet Auran数据库。)
字段定义:此资产创建者的联系电子邮件地址。不建议使用此字段,因为可以通过编程方式确定归属,并且可以在创建者的Auran账户Planet Auran账户中注册联系信息,并在必要时对其进行限制或更新。

 

contact-website标签

[编辑 | 编辑源代码]
类型:URL字符串。(已弃用,支持可更新的Planet Auran数据库。)
字段定义:此资产创建者的联系网站。不建议使用此字段,因为可以通过编程方式确定归属,并且[联系信息]可以在创建者的Auran账户Planet Auran账户中注册,并在必要时对其进行限制或更新。

 

已弃用标签

[编辑 | 编辑源代码]
以下“标签列表”是“事实上的”,因为它们的“使用惯例”早于上述列出的TBS标签的正式编制,但不早于使用它们的规范,实际上,也早于TrainzBaseSpec一词的创造(于2008-2009年随TrainzOnline Wiki引入),或其在N3V Wiki页面 2009年5月12日11:32的正式定义[4]


 

  • 在初始编制后,一些在旧版数据模型中常见但现已过时的标签已添加在下方,例如在许多桥梁资源中发现的bendy及其下面的朋友

 

编者注: 在某些情况下,这些“TrainzBaseSpec标签”因程序员决定而已过时,例如TB V2.7(主要是与机车KIND相关的标签),并且在TS2009-SP0及之后的所有N3V Games版本中都已过时(尽管许多用户发现其中一些标签很有用,但它会给内容创建者带来时间损失,以及预处理操作中忽略不再有用的标签的能力)并且如果资源被打开以进行编辑并通过将trainz-build标签提升到V2.9及更高版本数据模型进行部分升级,则会生成错误(错误消息):
  • 资源可以本地升级到V2.8及之前版本,并且通常可以使其工作,即使在经过几代数据模型元素改进后,也能正常运行。通过这种方式,许多资源可以使其与TRS2004或TRS2006数据建模一起工作,同时又与TS版本中的处理和渲染相符。
  • 例如,大多数TRS时代之前的资源数据模型(v1.0–v2.3)可以通过添加一个网格表来替换自TS版本以来被忽略的“资源文件名”的以前效果,以使用原始Trainz数据模型的文件夹分组使用子文件夹和带有后缀'_art'、'_body'和'_shadow'的名称来定义路径(其中由资源名称加上后缀定义的字符串设置了资源组件的路径。
  • 相反,通常具有TBs v2.9及更高版本的TS版本资源可以通过了解其中一些标签的效果和用途,以及一些明智的修改来消除texture.txt修饰符行(例如,需要注释掉AlphaHint等),使其可以向后兼容早期数据模型,这些修饰符行不被早期版本理解。


  • asset-namenamename-XX — V1.3–v2.8 —在几乎所有v1.3-v2.0资源的历史记录中发现。虽然'asset-name'在v2.8中一直保留着而没有引起投诉,但在v2.5之后不鼓励使用;因此,在v1.5之后,资源的config.txt文件中唯一需要、想要或认可的名称是username-XX变体。

 

Asset-name

[编辑 | 编辑源代码]

在Trainz 1.x--TRS2004 Trainz时代,Asset-name是资源的主要文件夹名称,并且通常是CM打开文件进行编辑时打开的文件夹的名称;在当今此类早期数据模型资源中,通常会发现asset-name也用于早期Trainz时代的数据子文件夹系统,从而为子文件夹命名为'asset-name_art'、'asset-name_body'、'asset-name_shadow'(在火车车厢资源中)。在修复此类资源时,大多数情况下,该值可以用SAR替换,该SAR是从资源文件复制并粘贴下来的样板代码。此替换通常会正确定义和链接资源的子文件夹(用于主体、阴影和图稿),因为早期方案中的文件名基于asset-name标签。 

bendy标签

[编辑 | 编辑源代码]
范围:在v2.9标准之前的轨道或桥梁资源中发现,当时样条线对象经历了很大的变化,转向统一的数据模型定义,放弃了混合中的一些以前的KIND,有利于所有样条线对象在kind track下统一。

 

casts-shadow标签

[编辑 | 编辑源代码]
见上文bendy,已弃用/过时的TS2009之前的旧版kind track标签。

 

name和name-XX标签

[编辑 | 编辑源代码]
  • 'name'和'name-XX'是较早数据模型中较长的usernameusername-XX标签的早期形式,XX代表英文“name标签”(或今天的“username”标签)的非英语语言翻译的ISO双字母后缀;'XX'形式与description-XX一样,是其他语言用户友好值“本地化”支持的一部分。
  • 在最旧的Trainz时代(v1.0-v2.4)的资源中,用username和username-XX替换name和name-XX,或者如果存在username,则直接删除。
    • 如果资源的trainz-build版本为v2.7以上,则name-XX会导致错误。有趣的是,即使在TS12后期,name-XX标签也作为资源名称出现在Surveyor工具的搜索列表中,如果不存在TrainzBaseSpec,则会显示TrainzBaseSpec

 

注意:Username(英文)是DLS上的官方资源名称,不应使用外语;在TB v2.5(TRS2006-SP0)之后,当CM打开文件夹进行编辑时,它还会取代并替换'asset-name'。

按照惯例,子文件夹名称将具有以username/asset-name字段开头的pathspec名称,并使用_art、_body和_shadow作为正常命名约定的一部分。这可能是3ds Maxgmax约定延续到Trainz中,Trainz与该图形开发软件存在历史联系。(Gmax与Trainz版本V0.9–v2.4捆绑在一起)


 

category-era-nn标签

[编辑 | 编辑源代码]
category-era标签取代
  • category-era-nn — V1.3–v2.8 s.a. {tag: category-era-0, category-era-1, category-era-2, ...} —以前带数字后缀的日期系统—在几乎所有值得注明日期的资源的历史记录中发现,直到TBV 2.0(甚至之后直到TBV 2.8构建的资源!),当时引入了当前的category-era字符串数组以将这些标签组合到config.txt的一行上[注释12]。虽然在Surveyor中无法直接访问,但在TR06和CMP之后,可以定义一个过滤器来选择日期范围,并将该过滤器与区域和类型一起在Surveyor中使用,以筛选在Surveyor的放置和选择工具中可列出的资源。在TS09及之后版本中已过时,TS09使用较短的category-era标签字符串数组在一行中代替使用多个'-nn'后缀的标签值对。
  • 字符串数组中的空格会导致错误;所有值必须以's'结尾,并具有四位数字,例如1880s;1950s;2010s(对于某些类型的进出时尚的女性服装来说,这可能是完全合适的!)。遗憾的是,目前无法定义范围,但用户社区已提出此请求。
  • 使用无空格且日期代码之间用分号分隔的字符串数组类型的category-era标签替换;这些标签以完整的四位数十年数字后跟's'(小写s)后缀的形式给出。

 

category-region-nn标签

[编辑 | 编辑源代码]
category-region标签取代
  • 类型category-region-nn — V1.3–v2.8 —在几乎所有值得注明位置的资源的历史记录中发现。这些已被category-region标签中的“两个字母枚举的ISO国家代码的字符串数组”取代。
  • 将字符串数组类型的 category-region 替换为不包含空格和分号的两个字符国家代码枚举,这些代码在引用的标签部分中列出;这些代码以两个大写字母的形式给出,构成 枚举 代码,代码之间用分号“;”分隔,但最后一个代码前不使用分号,直到末尾的结束引号。
  • 字符串数组中的任何 空格 都会导致读取错误和故障消息,包括末尾引号前的空格。

 

  • region —TBS V1.3–v2.8 版本中有效的部分,用作内置过滤器和地图资产自定义本地化标识符 (kuid);现在唯一合法的标签用途是在 kind map(布局)资产中。
作为以前的过滤器修饰符,该标签在历史上几乎所有资产中都存在,但在滚动库存、风景、样条线资产、轨道类型(包括隧道和桥梁)以及具有一定程度本地化的轨道旁资产中尤为普遍。
  • 地图资产仍然保留关键字 Region,该关键字在 Map 配置文件中定义,用途相反——成为 kind region kuid 引用。因此,Region 在 Maps 中是必需的,并且从 TS2012 开始,与标签类型一样,在大量曾经用作 TRS 系列版本 Surveyor 工具窗口的“分组数据” “快速过滤器” 的资产中是非法的。
  • TRS2009 之后,任何将 region 标签应用于文本字符串的操作都已过时,因为在程序员看来,他们用 Pick List 替换了 Surveyor 工具中“类型和区域”字符串值的粗略过滤组选择器。这两个标签都有一些优点和缺点,并且都追溯到 Trainz 0.9 Beta 版本。

 

shadows 标签

[编辑 | 编辑源代码]
参见上面的 bendy,已弃用/过时的 TS2009 之前的 kind track 资产模式控制标签。

 

thumbnail 标签

[编辑 | 编辑源代码]

thumbnail 标签是 thumbnails 容器 的早期单视图实现(上面也简要介绍过)。Trainz 的早期 N3V 之前的程序员版本会在主资产根文件夹或 asset-name_art 或 asset-name_body 文件夹中查找 .jpg 文件,最好大小为 240x180 像素,并将其用于在 CMP 和 DLS 中显示资产(如果已上传)。该标签在 TRS2006 期间被弃用,因为 thumbnails 容器是在 v2.0(TRS2004-SP0)中引入的。在 TBV 保持在 v2.4 以下的旧修复资产中,如果缩略图位于 _art 子文件夹中并且资产名称与用户名匹配,则缩略图通常仍会在更新的 CM 中工作。 

type 标签

[编辑 | 编辑源代码]
  • type — V1.3–v2.8 —以前的过滤器修饰符,历史上几乎存在于所有资产中,但在滚动库存、风景、样条线、轨道类型(包括隧道和桥梁)以及轨道旁资产中尤为普遍。
  • type 标签与“region 标签”一样,在 Trainz 0.9—TC3 版本中用作“Surveyor 中的组过滤器”,它与 region 结合,提供了更小的资产选择(工具组)。从 TS2009 开始,取消了这些本地可点击过滤器,取而代之的是一个新的、更繁琐的过滤器。这些使工具选择变得快速简单,而不是在工具选项卡之间切换时变得缓慢和暂停——如今的 TANE 之前的版本在工具选项卡之间来回切换时,经常会因重新加载整个选择列表而不堪重负。
  • type 和 region 都默认为“全部”,提供了与 TS09 及其后版本中的工具相同的超大型列表。
  • TRS2006 的衍生版本(即 TC3)之后,每个 type 标签都已过时,因为在程序员看来,他们用 TS09Pick List 和过滤器替换了 Surveyor 工具中“类型和区域”的粗略过滤组选择器——而没有赋予用户保存多个 Pick List 或轻松加载在 CM 中定义和细化的过滤器的功能。

 

  1. 资产 提交(TANE 的提交)是将内容整合到数据库并将其在 DB 索引中交叉引用以便可以在运行时模块中访问它的过程和步骤。
  2. 验证资产的一种方法是除了这些值之外还可以正常工作,方法是将 TBV 降低到 2.5-3.7 范围,看看这些消息是否消失。您可能需要分几次尝试降低它,直到足够低,反之亦然,在较旧的 TBV 中无法识别的较新的关键字可能会给出不同的错误消息。但不要害怕尝试——即使这样失败也会产生知识和经验,而且您不会破坏任何东西!如果是这样,您可以确信仅仅提供一个值就是问题的解决方案。通常,一些现代需求仅仅需要关键字对,因此在标签后面添加一个空行或在容器后面的标签后面添加一组空的卷曲括号将满足需求,而错误测试过于严格。
  3. 注意:此列表在 N3V TrainzOnline Wiki 上进行了“维基化”,这意味着在“KIND”一词之后首字母已大写,而 config.txt 文件中的实际数据标签名称为全部小写文本。该维基还使用双引号来表示很多术语,这种做法我们将在本文中避免。
  4. “kind consist” 并不经常直接看到,它某种程度上只存在于菜单和内容管理器列表中。
  5. 必须谨慎使用过时表,它最常出现在 Auran 编写的资产中。该表用更新的 kuid 替换旧的 kuid,大多数内容创建者正确地使用 kuid 的 Kuid2 形式来取代旧版本。相比之下,N3V 过度使用过时表来更新新发布的内置资产,这会导致很多混淆,并且无法获得预期看到的内容。(例如,许多漂亮的 'Flip-trees' 在 TS10 和 TS12 中被弃用,转而使用 Speedtrees,这影响了许多创建者不希望也不需要的 Speedtrees 的路线。在安装过程中,这也会导致依赖项丢失,直到可以找到包含过时表的资产。
     • 此外,Assets.tdx 数据库索引中每个 kuid 只支持一个过时条目,并且用 Kuid2 版本替换 kuid 会导致问题(即您会看到哪个?)。
     • 过时表的一个很好的用途是使用特定部件(尤其是转向架)升级一系列资产。添加要替换为更新的良好转向架的 kuid 组合可以显着改善路线或会话的外观(前提是转向架(例如)兼容且尺寸正确!)
  6. 最近使用导入到 TANE 的已弃用资产的经验表明,至少有五个备用 kuid 使该可怜的 Flip-tree 资产 过时。看来,随着 speedtrees 引入造成的混淆以及 TANE 及其对最新适当资产的积极追求所带来的全面改革,现在内容管理器流程中容忍了多个不同 kuid 的资产使同一 kuid 过时。作为一种良好的实践,仅在绝对必要时才使用过时表……例如,在您要上传到 DLS 或在网站上自行发布的依赖资产中取代不需要的付费资产。
  7. 关于 category 时代的标签范围:安全的操作,已知有效。其他“未来十年”的值应在依赖此类值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性单词,只要它们不包含空格字符即可。在短语构造的名称中使用下划线或句点可以极大地提高可读性和清晰度。例如,一辆货运火车车厢可能承载 45 种合法产品类型。这些将在依赖项容器中列出。使用 Coal、granite、crushed_limestone 等可以更容易地维护和更改表。自 76 年起担任程序员的 Jes Sayin
  9. 在第二个 thumbnails 容器示例中,还有一个 512x512 大小的图像,一个额外的图像。DLS 将使用哪个是未知的。还可以包含更大的图像尺寸,并且通过电子邮件聊天,T:ANE 可能会支持一个大的图像尺寸,该尺寸将在预览操作或 DLS 列表中找到用途。N3V Games 通常不会发布此类信息。
  10. 追溯到 Trainz 1.x 的先前做法是使用关键字/标签“thumb”以及带引号的路径规范引用到 240x180 缩略图图像以供运行时菜单使用。art 文件夹包含一个带有 alpha 遮罩的 512x512 tga(通常为 bmp 文件,但正确格式的 tga 可以用作自 alpha 遮罩)以及 64x128 菜单图标图像及其控制的 texture.txt 文件。
  11. 在 2014 年至 2015 年冬季与前版本经理 James Moody 进行的私人电子邮件对话中,关于此主题的要点是,自那时起,DLS 上传审查软件可能已更改为强制执行正确的 thumbnails 容器。
  12. 关于 category-era-nn 与 category-era 标签值: TRS 可以接受这两种形式的 category-era 数据;但是 TS2009-SP0 及其以上版本会从之前合法的关键词-值对中产生错误,并试图强制内容创作者更改程序员故意破坏的所有资源。后来,DLS 上传软件强制进行了转换,但这要更容易接受,因为第一个操作导致许多人花费了大量时间来修复那些不必要的错误,这些错误应该在软件预过滤过程中,在审查旧版 Trainz 资源时自动实现。这些操作实际上保证了旧版资源下载会出现错误。这是 N3V 程序员做过的最愚蠢、最傲慢的事情之一,而 Auran 更经验丰富的软件人员绝不会如此轻率地对待社区的时间成本。

参考文献

[编辑 | 编辑源代码]
  • 此页面主体内容摘自 N3V TrainzOnline Wiki 的 KIND_TrainzBaseSpec。增强信息由 Yesterdayz-Trainz 用户组成员添加。
  1. N3V 的 KIND_TrainzBaseSpec,作为未经增强的源页面,缺少此处找到的历史信息(标签);访问日期=2014 年夏季
  2. a b "Trainz-build" 标签 直接链接
  3. 根据 fabartus,2014 年夏季;很可能是在添加此示例的同一天。
  4. Christoph Bergman,N3V Games 首席程序员,又名“Windwalkr”,KIND TrainzBaseSpec 历史 页面。



华夏公益教科书