跳转到内容

Trainz/refs/TrainzBaseSpec

来自维基教科书,开放世界中的开放书籍
logo
Trainz 注释参考页

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


KIND 层级结构简介

[编辑 | 编辑源代码]

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

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

许多这些在 TANE 发布版本中“昨天默认”的定义行,今天会更经常地生成错误,要求明确的数值定义,而这些数值在过去加载时是默认的。[note 2] 与过去那些不正确的资产定义有时会导致臭名昭著的“蓝屏死机”,或者更常见的是使运行时软件崩溃回桌面,导致编辑内容丢失,并且可能需要重建数据库相比,这是一种比较好的麻烦。

子类

[edit | edit source]

所有 Trainz 定义数据(内容)都包含三个必不可少的元素:一个config.txt 文件 用于组织数据,一个身份标识,即一个kuid(仅仅用户名是不够的,一个合法的资产可以没有名称创建!),最后是一个合法定义的种类标签。种类是负责的,是乐队的指挥,是排长或 CEO,给出指令 - 为所有在之后处理的内容设置要求。简而言之,种类的值 - 一个小型、精选、严格定义的成员专用组 - 告诉 Trainz 软件在虚拟世界中渲染和显示什么内容,以及如何在 (或在哪里) 找到该配置文件中链接在一起的资产的其他部分。
  下面的所有子类都被视为以TrainzBaseSpec 作为其数据“父类”。[note 3] 下面列出的一些种类,那些带下划线的,是早于Trainz 数据模型TS2009 发布版本(即从 2008 年后期开始)中发生变化的遗留种类,自那时以来,N3V 程序员仅施加了渐进的(增量的)更改。
  目前可以在 N3V Trainz Wiki 的Content Creator's Guide 部分找到有关基于这些遗留种类的资产修复的详细信息TrainzOnline 网站在此处,其中包含此处遗留种类的示例。强烈建议所有Trainz 下载站 用户或任何正在考虑创建内容的人员仔细阅读 CCG。通过了解旧内容是如何定义的背景历史所获得的见解,可以与当前 TrainzOnline 对同类数据的报道进行对比,因为这种过去与现在的对比通常可以提供有关修复、修改和自定义资产的有价值的见解。更重要的是,CCG 中的写作是专业制作的,并且更加冗长 - 它通常会给你提供一些见解,说明如果更改了某件事或另一件事,会产生什么扩展效应,而 Trainz Wiki 却没有提供这些见解。TrainzOnline 上发布的 CCG 是TC1&2/TC3 版本 - 从 1999 年的Trainz 开始,出版的几本小册子的最后一版;TC3 CCG 包含 TRS2004/TRS2006 和UTC 数据模型中更改的 Enginespecs 机车资产,需要进行适当的更新。

TrainzBaseSpec 子类 KIND(类型资产组)

 


表 I,TBS 标准定义

[edit | edit source]

TBS 标准定义

[edit source]

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

  • 容器是'键' 和 '键值' 对的集合,并且 TBS 中的 '上层容器'(与缩略图容器中的子容器相反)通常以 '-table' 结尾。
 kind    "'字符串值'"
 trainz-build '浮点数', 1 位小数的值
 kuid  <Kuid 编码值>
 username    username "'字符串值'"
 username-XX    username-XX "'字符串值'"
 description    description "'字符串值'"
 description-XX    description-XX "'字符串值'"
 kuid-table (容器)

  { 依赖项列表
  按 kuids }

 一个键值表,列出此资源所依赖的所有资源。
 obsolete-table (容器)
    {
    }
 kuids 列出此资源替换的资源(使其过时)
 通常为空(空)[note 5]
 string-table (容器)
    {
    }
 字符串和消息的键值列表,用于资源中
通常为空,仅在路线和会话中很大。
 string-table (容器[s])
    {  非英语
    语言文本 }
 翻译后的字符串列表,匹配到强制性的英文 string-table
 category-region tag 枚举 代码  category-region "'字符串数组'"  
 category-class 标签  category-class "'枚举 字符串值'
 category-era 标签  category-era "'约束字符串数组'"  年代
 category-keyword "'字符串数组'" 最大长度为 64 字节    category-keyword tag 自然语言搜索关键字
  (替换类型、区域)
 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 资源列表。

 



支持的标签

[edit | edit source]

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

kind 标签

[edit | edit source]
类型: 字符串。
字段定义:config.txt 文件 所代表的资源类型。请参阅索引 Kinds 和列表: 这里(上面)

 

kuid 标签

[edit | edit source]
类型: KUID (简短),主要: KUIDs
字段定义: 引用此资源的唯一资源 ID。
KUID
'Koolthingz Unique IDentifier'. Trainz 系统软件的唯一数据库引用号,用于资源,也扩展到 KUID2 形式的跟踪多个版本。Trainz 可升级性和资源模块化设计的核心和灵魂,因为每个资源都有自己的唯一 kuid 代码,因此人们可以指定一个组件(转向架)或从另一个组件中获取整个车厢,并在新资源中选择性地替换它们(重新蒙皮或修改的转向架)。
  • 基本 KUID 格式: '<kuid:wwwwww:xxxxxx>',其中 wwwwww 是作者的 '唯一 Trainz 身份',xxxxxx 代表作者分配的模型标识代码
编辑者注: 请注意,许多在线网站将需要使用独立的数据字段(作者和序列)进行搜索,内容管理器将需要三个或四个冒号分隔的数据字段,但不包括括号——尽管逗号是搜索 API 窗口中多个 kuids 的必填分隔符。通常情况下,将数据聚合到完整的 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 标签

[edit | edit source]
主要内容: trainz-build tags,缩写: TB & TBV (TB-value)
类型: 一个小数点浮点数,由 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 的程序员团队的心目中,TRS2004 版本是第二款 Trainz 产品,无论前台如何炒作营销名称(比如 Trainz UTC,是终极的任何东西……真的吗?拜托!真的!!?)
Trainz 版本和相应的 Trainz 构建标签 值系列为 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 无服务包)到当前版本(v3.7 = TS12-SP1,v3.8 = Mac2,3.9=TANE-CE,4.0—4.3 等等?从 2016 年 3 月开始,4.3 及更高版本是 TANE SPs TBDL)。
  • 从 v2.0(TRS2004)开始,Trainz 构建标签编号值已经通过 23 个步骤递增,这些步骤是连续的,尽管不是单调的,因为 Trainz TS09-sp3—TS09-sp4 共享一些 Trainz-build[2] 值;也就是说,有一些共同的 TBV 在 TS2009 和 TS2010 的联合开发时代和版本中重叠。
  • 此外,N3V 进军 Macintosh 电脑打断了 Windows 版本 Trainz 版本的 TBV 3.4、3.5、3.6、3.7 和 3.8 在 Windows 和 Mac 操作系统之间的平滑递增。
    注意: 热修复 不会更改版本号。
字段定义: 此资产构建(并存档)到的文件格式版本,不一定与资产使用的技术级别有关,但对应于在 Content Creator Plus 中创建资产时分配的资产级别 - 与在 CM 标题栏中找到的一样。
  • 程序员建议此编号通常应设置为正在创建和测试资产的 Trainz 安装的 Trainz 版本号。相比之下,Content Creator 社区试图将该编号设置为尽可能低的数字,以便新资产在下载时拥有尽可能广泛的受众/用户范围。更好的内容创建者将在相应的版本上进行裸机安装(无额外内容)测试,并验证生成的 cdp 是否包含所有相关材料。
  • 某些资产类型根据其trainz-build 版本标签的解析方式有很大不同。注意:trainz-build 标签 是强制性的。如果未指定,Trainz 将根据 config.txt_file 的内容尝试通过传统方式猜测 Trainz 版本,通常解析为 1.3 作为 TBV。

 

用户名标签

[edit | edit source]
类型: UTF-8 字符串,资产的用户名强制规范。
字段定义: 此资产的英文人类可见名称。

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

在创建资产时,强烈建议您在 CM 搜索中针对几个试用部分名称验证新提出的名称,并从这些知识中采用与现有可用内容合理匹配的名称。
我们需要容忍多少个 'house 2' 或 'road' 资产才能让我们更加困惑!?好吧,在实践中,我们都会搜索 house 并从图像中选择,但能够指定一个唯一的名称并获得你期望的结果真是太棒了!


 
 

用户名-XX 标签

[edit | edit source]
类型: UTF-8 字符串,用户名标签 的替代语言版本。
字段定义:(其中XX 被替换为代表语言的适当 本地化代码。)此资产的本地化人类可见名称。此字段类似于用户名字段,但代表非英语语言环境。资产中可能存在多个用户名-XX 标签,每个支持的语言环境一个。如果不存在适当的 '用户名-XX' 标签来在给定终端用户系统上代表此资产,则使用英文用户名标签。

 

描述标签

[edit | edit source]
类型: UTF-8 多行字符串,提供资产的清晰语言描述。
字段定义: 此资产的英文人类可见描述性摘要。

描述在 Content Manager 的“资产详细信息”窗格中可见,用于阐明资产名称,提供规格,以及通常的历史记录。

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

此字段必须英文描述性文本组成,尽管该文本可能引用非英文专有名词,如其他地方所述。其他语言翻译或源文本应放置在众多可能的替代语言本地化标签之一中(参见 描述-xx 标签)。 

描述-XX 标签

[edit | edit source]
类型: UTF-8 多行字符串,描述标签
字段定义:(其中XX 被替换为代表语言的适当 本地化代码。)此资产的本地化人类可见描述性摘要。此字段类似于描述字段,但代表非英语语言环境。资产中可能存在多个描述-XX 标签,每个支持的语言环境一个。如果不存在适当的 '描述-XX' 标签来在给定终端用户系统上代表此资产,则使用英文描述标签。

 

字符串表容器

[edit | edit source]
类型: UTF-8 字符串列表容器,字符串表容器(s)
字段定义: 英文字符串的键值列表。每个键都是一个有意义的脚本标识符,映射到二进制数据并由其引用。每个值都是一个英文字符串。英文字符串可以包含或引用非英文专有名词作为标识符。由非英语母语人士创作的资产仍然需要创建没有后缀的字符串表容器,如果有需要的话。软件只链接到没有后缀的字符串表容器中的名称和值,并引用它们,这将使西班牙语、法语、德语、捷克语、荷兰语……日语作者不胜其烦。换句话说,带后缀的字符串表仅用于翻译目的,当地图用非英语编写时会产生问题 - 没有 string-table-en 来提供反向翻译的表格。同样,username-en 和 description-en。所有三个缺乏都表明了一种过时的、轻率的傲慢和对世界动态的麻木不仁。

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

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

 

字符串表-XX 容器

[edit | edit source]
类型:UTF-8 字符串列表容器,即本地化的字符串表,每个后缀对应于除英语以外的语言。
字段定义:(其中 *XX* 被替换为表示的语言的适当 本地化代码。)此字段类似于 *string-table* 字段,但表示非英语语言环境。

英语字符串表(无后缀)是强制性的,其他本地化语言是可选的,由资产作者决定。提交到 DLS 的许多资产,以及捆绑在 Trainz 版本中的路线,通常会进行翻译,并具有描述-XX 和字符串表的完整本地化翻译集。特别是,与版本捆绑在一起的路线和会话会接受专业翻译成多种语言,并随每个零售版本发布。

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

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

kuid-table 容器

[edit | edit source]

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。大多数具有子组件的资产只有几个。
  • 其次,存在一个约定,这是由于有时内部关键字是“自动定义”的——仅仅列出为一个没有名称的数字,作为 占位符参数,伪关键字可以是任何唯一值(通常是零索引的顺序整数。[notes 1])用户或作者可以根据自己的喜好为其命名或不命名。
  • 此表中的条目有两个目的
    首先:确保游戏系统知道依赖关系,以便安装和加载此资产将成功安装和加载任何依赖关系,并且
    其次:允许脚本定位相关的子资产。
  • 只有第一级依赖项应包含在 kuid-table 中——具有自身依赖关系的子级或零件资产将在该子级资产的验证和数据库提交中进行处理。
  • 循环依赖关系是非法的。
  • 如果资产也被标记为此资产的过时版本,则该资产不能被列为依赖项。(Trainz 资产索引(历史上为 assets.tdx 文件)中只有一个替换 kuid 槽,这将创建一个循环定义,要求其自身的老版本!)
  • 同样,资产不能被列为其自身依赖项。[另一方面,这已经被体验过(即在 TSxx CMs 中见证为成功提交的无错误资产),将地图和会话在安装之间进行移植,并使用 GSARS 更改 kuid,以便重叠不会覆盖在目标安装上使用相同 kuid 的资产,而不会看到错误消息。] 它是否也发挥了作用,需要比我更勇敢或更愚蠢的人!--Fabartus, ed.
格式 (所有值都为 <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 添加到货物和允许的产品队列表条目中。(不客气,但这是更改名称的一个很好的理由!保持井井有条几乎是制作资产的全部战斗!)  

废弃表容器

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

 

类别-区域标签

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中过滤 (搜索条件)
类型: 枚举字符串或字符串数组。
字段定义: 一个由分号 (;) 分隔的两位 类别-区域标签 代码列表。字符串中不应存在其他字符(包括空格等)。此资产被认为与每个指定的区域相关 - 这对于 kind 火车车kind 移动信号 资产最相关,但可以为任何资产提供。
示例
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 中过滤 (搜索条件);根据 KIND 声明确定 CM 软件如何处理资产,以及 Surveyor 在哪里列出它。
类型: 枚举字符串。
字段定义: 一个描述此内容项的单个 2-3 字符 类别-类别 代码。类别-类别 标签用于提供超出资产种类隐含内容的额外人类子分类。每个 Trainz 资产的类别-类别标签有助于描述资产在游戏中的“意图”,而不是资产的内部结构。
内容创建者指南 (CCG) (TRS2006) 和 Trainz Classics 的 CCG 解释了这些类别代表一个标准化系统,用于引用各种类型的机车、机车车辆、景观、样条线和工业资产。类别-类别分类代码在所有 Trainz 用户在搜索和/或过滤合适的资产以将其制作成会话或路线 (布局) 中的内容时变得很重要。


 

请注意,许多类别-类别代码只与特定资产种类相关 - 类别-类别代码不得应用于不合适的种类资产。

示例
    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“图标”,它应该具有 AlphaMask 或非常浅的背景。许多较旧的资产没有使用 jpg 文件,而是将 .tga 文件 (Targa True Color) 列在一个“_art”子文件夹中 (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 的一个修复程序中被放弃,因为用户社区对此有很多抱怨。
 • 如果缺乏缩略图容器的资源(即使使用过时的缩略图标签)后来在一个新的内置路线或会话中被选中,该资源通常会被分发为一个没有图片的项目——如果 texture.txt 或 config.txt 缩略图容器没有正确引用它们,它们会被剥离。[注 11] 

软件链接

[编辑 | 编辑源代码]

info-url 标签

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

此外,建议使用自定义 Trainz 短 URL 格式,而不是直接链接到这些域名,以使 URL 面对未来可能的网站布局更改。‘短 URL’ 是 Trainz 特定的 URL,通过允许内容创建者引用 N3V 网站上的特定页面,而无需依赖特定的网站布局,从而帮助未来保护内容。短 URL 旨在用于游戏内用途,如 info-url 链接,它们只会在嵌入式网页浏览器中起作用,而不会在任何外部网页浏览器中起作用。当此标签存在时,游戏内按钮将提供给用户,允许用户查看资源描述或帮助,而无需离开游戏环境。

这在驾驶员中非常有价值,可以用来访问路线图、指南或会话说明或澄清。

建议在任何情况下都使用通用的组页面来表示整个类别的资源,只要这些资源提供类似的功能,但在外观上只有细微的差别。这减少了创建、维护和本地化此类文档的时间成本。

 

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) 重新保存对资源的任何更改(将重新验证的资源提交(提交)到数据库)。

 

script 标签

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

 

class 标签

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

 

script-include-table 容器

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

The script-include-table 容器 是 KIND TrainzBaseSpec 派生的任何资源(简而言之,所有资源)可用的顶级 config.txt 文件 条目。此容器允许资源从父资源的脚本文件使用 N3V TrainzScriptScript_Include_Directive 直接 包含另一个资源的脚本

相关

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

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

[编辑 | 编辑源代码]

此容器是脚本资源名称及其 kuids 的简单键值表,在编译资源的脚本文件时,会搜索这些脚本资源的脚本包含。键或标签名称当前未被使用(即是一个 占位符参数)在搜索中;值指示要包含的资源的 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>
                     }

 

extensions 容器

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

 


更新且不常出现的

[编辑 | 编辑源代码]

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

category-keyword 标签

[编辑 | 编辑源代码]
类型: UTF-8 字符串。
字段定义: 一个用分号 (;) 分隔的自然语言关键词列表。字符串中不应该包含其他字符(包括空格或无关的标点符号)。这些关键词构成了资产关键词搜索的基础。资产的 用户名 不需要在 category-keyword 列表中重复。
  • 各种 默认搜索关键词 会根据资产类型 (KIND+category-class) 自动提供,因此不需要,可能也不应该重复。 Ø
  • 标签不能以空字符串 ("") 或空白形式出现,这些情况会导致错误。
  • 明显的用途:公司,例如 ATSF、Santa Fe 和 AT&SF、B&O、Chessie、CSX、NS、PRR 或 NYC 等,而基本类型,例如平板车、箱式车、料斗车应该是自动的。桥接键,例如凹陷式、井式车和侧卸式(换句话说,是修饰符)应该被用来增强自动关键词生成的有限智能。自动生成的词语的重复不应引起关注。

 

{{anchor|custom-category-list container|Custom-category-list 容器|custom-category-list 标签|Custom-category-list 标签|custom-category-list 字符串|Custom-category-list 字符串|Custom-category-list 容器|custom-category-list 容器

custom-category-list

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

 

member-of-groups 容器

[编辑 | 编辑源代码]
最小版本: V3.5 及以上
类型: Member-of-groups 容器 配对列表 占位符参数资产组 kuids。
字段定义: 一个 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 年。
上传到 Download Station 或提供用于包含到游戏中的内容可能在特定再分发协议或许可协议下,该协议会取代此字段中的任何文本。license 字段不提供本地化支持。license 字段的文本未经 Auran 或 N3V 验证或强制执行,并且可能对最终用户具有法律约束力,也可能不具有法律约束力。
另一方面,Planet Auran 的历史表明,有人通过将他人的内容作为自己的内容来侵犯版权,可能会导致从 Auran 网站上快速封禁,并永久性地失去下载站权限等。此外,社区会对违反他人版权的其他用户采取严厉措施,并回避违规者,并忽略任何允许保留在 DLS 上的资产。
总之,对 Trainzer 来说,试验和改变资产是一种 被接受甚至被认可的生活方式,他们试图克服内容创建学习曲线的陡峭程度(每个人都希望有更多内容创建者!),但是如果资产具有依赖的部分,尤其是网格、脚本、纹理,这些都是知识产权——在上传你的作品之前,请获得使用这些属于他人的部分的许可。
通过 'kuid 引用' 指定的资产部件不属于本声明的范围——使用常见的联轴器、转向架或基本货车网格(Auran 发布了一些标准类型,许多作者默认使用它们,方法是创建对网格的 kuid 引用,例如检查箱式车(英国:覆盖的货车或厢式货车)的依赖项——很可能超过一半使用的是对 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 页面 中的正式定义,11:32, 12 May 2009[4]


 

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

 

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


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

 

Asset-name

[edit | edit source]

Asset-name 是 Trainz 1.x--TRS2004 Trainz 时代资产的主要文件夹名称,通常也是 CM 打开文件进行编辑时打开的文件夹的名称;在当前的早期数据模型资产中,通常会发现 asset-name 也被用于早期 Trainz 时代的子文件夹系统,从而产生了子文件夹名称“asset-name_art”、“asset-name_body”、“asset-name_shadow”,在火车车厢资产中。在修复此类资产时,通常可以用从资源文件复制并粘贴下来的模板中的 SAR 来替换该值。这种替换通常会正确地定义和链接资产子文件夹,以便创建车身、阴影和图形,因为早期方案中的文件名是基于 asset-name 标签的。

bendy 标签

[edit | edit source]
范围:在 v2.9 标准之前,在 轨道或桥梁资产 中发现,当时样条对象经历了重大变化,以统一数据模型定义,取消了混合中的一些先前 KIND,转而将所有样条对象统一到 kind 轨道 下。

 

casts-shadow 标签

[edit | edit source]
参见上面的 bendy,在 TS2009 之前的遗留 kind 轨道 标签,已弃用/过时。

 

name 和 name-XX 标签

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

 

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

根据惯例,子文件夹名称将具有以 username/asset-name 字段开头的路径规范名称,并使用 _art、_body 和 _shadow 后缀作为正常命名惯例的一部分。这可能是将 3ds Maxgmax 惯例引入 Trainz 的原因,而 Trainz 与该图形开发软件有着历史渊源。(Gmax 与 Trainz 版本 V0.9—v2.4 一同捆绑提供)


 

category-era-nn 标签

[edit | edit source]
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 文件中的一行上[note 12]。虽然在 Surveyor 中无法直接访问,但在 TR06 和 CMP 之后,可以定义一个过滤器来选择一个日期范围,并在 Surveyor 中使用该过滤器,再加上区域和类型,来筛选 Surveyor 放置和选择工具中可列出的资产。在 TS09 及其以后版本中已过时,这些版本使用较短的 category-era 标签 字符串数组,在一行中表示,而不是使用多个带“ -nn”后缀的标签-值对。
  • 字符串数组中的空格会导致错误;所有值必须以“s”结尾,并具有四位数字,例如 1880s;1950s;2010s(这可能完全适用于某些类型的女性服装,这些服装流行起来又过时)。遗憾的是,目前无法定义范围,但用户社区已经提出了这个要求。
  • 替换为字符串数组类型的 category-era 标签,没有空格,日期代码之间用分号隔开;这些代码以完整的四位数字表示年代,并在后面加上“s”(小写 s)后缀。

 

category-region-nn 标签

[edit | edit source]
category-region 标签 取代
  • 类型 category-region-nn — V1.3–v2.8 —在几乎所有适合当地化的资产中都有发现。这些标签已被 category-region 标签中由两个字母组成的 ISO 国家代码的“字符串数组” 取代。
  • 替换为字符串数组类型的 category-region,没有空格,国家代码之间用分号隔开;这些代码使用完整的两个大写字母,代表 枚举 代码,代码之间用分号“;”隔开,但最后一个代码之前没有分号,直到最后一个引号。
  • 字符串数组中的任何 空格,包括最后一个引号之前的空格,都会导致读取错误和错误消息。

 

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

 

阴影标签

[编辑 | 编辑源代码]
见上面的弯曲,已弃用/过时的 TS2009 之前的遗留 轨道 资源模式控制标签。

 

缩略图标签

[编辑 | 编辑源代码]

缩略图标签是 缩略图容器 早期的单视图实现(上面也简要记录)。早期 Trainz 的预 N3V 程序员版本会在主资源根文件夹或资源名称_art 或资源名称_body 文件夹中查找 .jpg 文件(最好尺寸为 240x180 像素),并将其用于在 CMP 和 DLS 中显示资源(如果上传)。自 v2.0(TRS2004-SP0)引入缩略图容器以来,该标签在 TRS2006 期间已被弃用。在旧的已修复资源中,如果 TBV 保持在 v2.4 以下,只要缩略图位于 _art 子文件夹中并且资源名称与用户名匹配,缩略图通常仍然会在较新的 CM 中工作。 

类型标签

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

 

  1. 资源 提交(TANE 的提交)是将内容整合到数据库中并将其在 DB 索引中交叉引用,以便可以在运行时模块中访问它的过程和步骤。
  2. 验证资源的一种方法是,除了这些值以外,其他一切正常,就是将 TBV 降至 2.5-3.7 范围,看看这些消息是否消失。您可能需要尝试几次才能降低到足够低的程度,并且相反的情况也可能发生,在旧的 TBV 中无法识别的较新的关键字可能会显示不同的错误消息。不要害怕尝试——即使失败,也会积累知识和经验,而且您不会破坏任何东西!如果是这样,您可以确信,仅仅提供一个值就是解决问题的办法。通常,一些现代需求只需要关键字对,因此在标签后面加上一个空行或在标签后面加上一个空的括号对,就可以满足需求,而错误测试则过于严格。
  3. 注意: 此列表在 N3V TrainzOnline Wiki 上是“维基化的”,这意味着“KIND”后面的第一个字母已大写,而 config.txt 文件中实际的数据标签名称全部为小写文本。该维基还对很多术语使用了双引号,我们将在本文中避免这种做法。
  4. “编组类型”通常不会直接看到,它只存在于菜单和内容管理器列表中。
  5. 必须谨慎使用过时表,它最常出现在 Auran 编写的资源中。该表用更新的版本替换了旧的 KUID,大多数内容创建者正确地使用 KUID2 格式的 kuid 来取代旧版本。相比之下,N3V 过度使用过时表来更新新版本“升级”的内置资源,这会导致很多混淆,并且无法获得人们期望看到的内容。(例如,许多不错的 '翻转树' 在 TS10 和 TS12 中被速度树取代,影响了许多路线,而创建者在这些路线中并不需要或想要速度树。在不同的安装中,这也会导致依赖关系缺失,直到找到包含过时表的资源。
     • 此外,在 Assets.tdx 数据库索引中,每个 KUID 仅支持一个过时条目,用 KUID2 版本替换 KUID 会导致问题(即,您会看到哪个?)。
     • 过时表的一个很好的用途是使用特定部件升级一系列资源,尤其是转向架。添加要由较新的良好转向架替换的 KUID 组合,可以通过单次编辑显著改善路线或会话的外观(前提是转向架兼容且尺寸合适!)。
  6. 最近,将过时的资源引入 TANE 的经历表明,有不下 5 个替代的 KUID 替换了那个可怜的 翻转树资源。似乎由于速度树的引入和 TANE 的大修(它积极地追求最合适的更新资源)造成的混淆,内容管理器流程现在容忍多个不同 KUID 的资源替换相同的 KUID。作为良好的做法,仅在绝对必要时使用过时表……例如,用您要上传到 DLS 或自行发布到网站上的依赖资源中的不想要的付费资源来取代该资源。
  7. 关于类别时代标签范围:安全的选择,已知有效。其他“未来十年”的值应在依赖于这些值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词语,只要它们不包含空格字符即可。在短语构造的名称中使用下划线或句点可以保留可读性并显著提高清晰度。例如,一个货运车厢可以承载 45 种合法产品类型。这些将在依赖项容器中列出。使用 Coal、granite、crushed_limestone 等可以更容易地维护和更改表格。Jes Sayin,从 76 年开始担任程序员
  9. 在第二个缩略图容器示例中,还有一个第二个 512x512 大小的图像,即 extra。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 上传验证软件可能已经更改,以强制执行正确的缩略图容器。
  12. 关于类别时代 nn 与类别时代标签值: TRS 接受类别时代数据这两种形式;但 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 历史记录 页面。



华夏公益教科书