跳转到内容

Trainz/refs/TrainzBaseSpec

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

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


KIND 层级结构简介

[编辑 | 编辑源代码]

KIND TrainzBaseSpec 为所有 Trainz 资产类型提供基础定义,适用于所有 config.txt ini 文件TBS 提供了一些“标准标签”,这些标签对(或至少,可以合法地定义)所有 Trainz 资产都适用,包括所有 Trainz 资产[1]

  • 其中一些是强制性的,因为它们决定了资产的进一步处理以及对 config.txt 文件和其文件夹中资产数据的解释。
  • 但是大多数是可选的,并且大多数子资产可能会省略使用该标签的定义行。
  • 所有由事实上的父容器定义的内容,包括 config.txt 文件,都是必需的,该文件是所有 Trainz 数字模型所必需的。 KIND TrainzBaseSpec (TBS) 是一个 根类,其他 Trainz 资源类都是由此派生的。
  • 之所以说它们是派生的,是因为它们继承了其中列出的参数定义的处理属性(指令)和值,其中关键的是 kind 标签的值。该枚举词决定了资源的特定 类型声明和要求,这些声明和要求将添加到该资源的配置文件中的 TBS 定义中。其他关键的 TBS 定义数据也很重要且实用,例如资源的名称、Kuid 标识符和版本、Trainz 构建值 (TBV) 以及其他具有广泛可变定义、适用性和范围的定义,例如 string-table、obsolete-table、kuid-table 和缩略图图像,每个都是偶然的。即使是资源名称和描述的字符串值,在实践中通常也是完全不必要且可省略的。
  • 当声明一种类型时,该类型将成为父类,除了 TBS 中列出的那些,它还要求并指定类中必须满足的必要的成对数据。
  • 某些参数在资源类型的某个案例中可能未定义,特别是针对较旧的历史 Trainz 构建标签值而言,对于这些值,内容管理器或 内容创建者 Plus (CCP) 实用程序将分配默认值,但在处理它时列出警告消息。TrainzOnline wiki、此处或较旧的 TC3 时代 内容创建者指南 (CCG) 中的许多标签会提到一个默认值。
  • 从 TRS2006 和 Trainz Classics (TC1&2) 开始,每个版本的 内容管理器 模块都实施了越来越多的事前承诺错误测试[note 1],并且每个模块在警告此类标签未定义时变得越来越坚决,因为它期望此类标签 - 数据对。

在 TANE 发布后的版本中,许多这些“昨天默认”的定义行今天更有可能生成一个错误,要求明确的定义值,而过去在加载时这些值是默认的[note 2]。与旧时代相比,这是一个更可取的烦人之处,在旧时代,有缺陷的资源定义有时会导致臭名昭著的“蓝屏死机”,或者更常见的是,将运行时软件崩溃到桌面,导致编辑丢失,并可能需要重建数据库。

子类

[edit | edit source]

所有 Trainz 定义的数据(内容)都包含三个必需的元素:一个用于组织数据的 config.txt 文件、一个表示 kuid 的身份(仅用户名对你没有用,但可以创建合法资源,而无需名称!)以及最后,一个合法定义的类型标签。类型负责,是管弦乐队的指挥,是排长或 CEO 指挥——为在之后处理的所有事物设置要求。简而言之,类型的价值——一个很小的、精心挑选的、严格定义的成员专用组——告诉 Trainz 软件在虚拟世界中要渲染和显示什么,以及在哪里(或如何)找到构成该配置文件中该资源这些部分的其他部分。
  下面的每个子类都被认为具有 TrainzBaseSpec 作为它们的“父类”数据[note 3]。下面列出的一些类型,那些带下划线的类型,是早于 Trainz 数据模型TS2009 发布(即从 2008 年后期开始)的更改之前的遗留类型,此后 N3V 程序员只实施了逐渐的(增量的)更改。
  目前可以在 N3V Trainz Wiki 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 标准定义

[编辑源代码]

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

  • 容器是'键' 和 '键值' 对的集合以及 TBS 中的 '上层容器' (与缩略图容器中的子容器相反)通常以 '-table' 为后缀。
 种类    "'字符串值'"
 trainz-build '浮点数', 1 位小数
 kuid  <Kuid 编码值>
 用户名    用户名 "'字符串值'"
 用户名-XX    用户名-XX "'字符串值'"
 描述    描述 "'字符串值'"
 描述-XX    描述-XX "'字符串值'"
 kuid-table (容器)

  { 依赖项列表
  按 kuid }

 一个键值表,列出了此资源所依赖的所有资源。
 obsolete-table (容器)
    {
    }
 kuids 列表,此资源替换(使之过时)
 通常为无(空)[注释 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    "作者/组的网站 URL '字符串值'"
 member-of-groups (容器)
    {
    }
 此资源所属的 KIND 资源组 资源列表。

 



支持的标签

[编辑 | 编辑源代码]

TrainzBaseSpec 支持 config.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-value)
类型:一位小数浮点数 枚举 由 N3V[2] 追踪和识别与演化软件的技术水平相对应的数据类型。
范围:1.0–4.3 直接对应('映射onto3rd' Trainz 1.0—TANE-SP1+hf2;此值预计会随着每次新的主要软件升级而增加 0.1。

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

  • 分配给 TBV 或版本值的 V1.4 是 Auran 的 Paintshed 版本,这是一个重制工具,也适用于 Microsoft Trainz Simulator (MSTS),并且也作为 TRS2004 辅助软件模块的构建值出现;特别是它的 ContentManager.exe 实用程序。
  • 1.7 和 2.0 之间的差距要么是外语版本,要么是 Auran 在经过数小时的挖掘和研究后认为更可能是未使用的,因为在构建最初的 Trainz 的程序员团队看来,TRS2004 版本是第二个 Trainz 产品,无论前台如何炒作营销名称(比如 Trainz UTC,是终极的任何东西……真的吗?来吧,伙计!真的吗?!)
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 无服务包)到当前版本(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 进军苹果电脑领域打断了 Windows 版本的 Trainz 版本中 TBV 3.4、3.5、3.6、3.7 和 3.8 的平滑递增,这些 TBV 在 Windows 和 Mac 操作系统之间相互交织。
    注意: 热修复 不会改变版本号。
字段定义: 此资源构建(和存档)到的文件格式版本(不一定与资源使用的技术级别有关),但与在 Content Creator Plus 中创建资源时分配给资源的级别相对应——与在 CM 的标题栏中找到的级别相同。
  • 程序员建议此数字通常应该设置为正在创建和测试资源的 Trainz 安装的 Trainz 版本号。相比之下,Content Creator 社区试图将此数字设置得尽可能低,以便在下载时为新资源提供尽可能广泛的受众/用户范围。优秀的资源创作者会在对应版本的裸机安装(无添加内容)上进行测试,并验证生成的 cdp 是否包含所有相关材料。
  • 某些资源类型根据其trainz-build 版本标签的解析方式显著不同。注意:trainz-build 标签 是强制性的。如果没有指定,Trainz 将根据 config.txt_file 的内容尝试以原始的方式猜测 Trainz 版本,这通常会将 TBV 解析为 1.3。

 

用户名标签

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

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

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


 
 

用户名-XX 标签

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

 

描述标签

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

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

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

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

description-XX 标签

[edit | edit source]
类型: UTF-8 多行字符串,描述标签
字段定义:(其中XX 被替换为代表该语言的适当 本地化代码。)此资源的本地化人可见描述性摘要。此字段类似于description 字段,但代表非英语区域设置。一个资源中可能存在多个description-XX 标签,每个支持的区域设置一个。如果在给定的最终用户系统上没有适当的“description-XX”标签来表示此资源,则改为使用英文description 标签。

 

字符串表容器

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

  其他语言通过类似的字符串表(例如 string-table-XX)得到支持,这些字符串表带有与 description 和 username 关键字/标签的国际化后缀相匹配的本地化代码后缀(XX),但这些语言键控的字符串表容器总是会在左侧条目中拥有相同的键值。 

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

 

string-table-XX 容器

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

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

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

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

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 列表容器,与obsolete-table 容器(在下文)格式相同。一个虚拟参数+ 一个(依赖)kuid
字段定义:区分此资产所依赖的资产列表的键值。

 

一般来说
只有具有子组件或具有备选选择(货物)的资产才会具有具有任何可观长度的 kuid-table。大多数具有子组件的资产只有几个。
  • 其次,存在一个约定,它源于有时内部关键字是“自动定义”的事实——仅仅列出为一个没有名称的数字,作为占位符参数,伪关键字可以是任何唯一值(通常是零索引的顺序整数。[注释 1])它们可以根据用户或作者的喜好被命名或不命名。
  • 此表中的条目有两个目的
    首先:确保游戏系统知道该依赖关系,以便安装和加载此资产将成功安装和加载任何依赖关系,以及
    其次:允许脚本找到相关的子资产。
  • 只有第一级依赖关系应包含在 kuid-table 中——具有自身依赖关系的子级或部件资产将在该子资产的验证和数据库提交过程中处理。
  • 循环依赖关系是非法的。
  • 如果资产也被标记为此资产的过时版本,则不能将其列为依赖关系。(Trainz 资产索引(历史上是 assets.tdx 文件)中只有一个替换 kuid 插槽,这将创建一个需要自身较早版本的循环定义!)
  • 同样,资产不能被列为它自身的依赖关系。[OTOH,这已在 TSxx CMs 中作为成功提交的无故障资产被体验(即见证)过,将地图和会话移植到安装之间,并使用 GSARS 更改 kuids,以便重叠不会覆盖已经在目标安装上使用相同 kuids 的资产,而不会看到错误消息。] 是否运行得也需要比我更勇敢或更愚蠢的人!——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 拥有路线中资产的可编辑列表。这些可以轻松地变成一个样式表“过滤器”(一个选择列表),它允许一个人使用与原始作者相同的资产来添加和更改路线……或者在自己的扩展中复制他的样式。


  • 利用这些是虚拟参数这一事实的一个非常有用的方法是将复杂滚动库存资产中产品的 kuids 配对。一个箱车可能包含各种各样的产品……获得许可将你自己的作者 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>
} ...

请注意连接单词的下划线……两个符号,键和值!我们让学生弄清楚在哪里将 kuids 添加到装载和允许的产品队列表条目中。(欢迎使用,但这是更改名称的充分理由!使事情井井有条几乎是制作资产的整个战斗!) 

obsolete-table 容器

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

 

category-region 标签

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


 

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

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

 

category-era 标签

[编辑 | 编辑源代码]
目的: 在 CM 和 Surveyor 中过滤 (搜索条件)
类型: 枚举格式字符串数组。
字段定义:分号 (';') 分隔的五字符 era 代码 列表。
  • 每个时代代码代表一个十年,由一个四位数字整数组成,然后 必须 以 '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 True Color)(Trainz 1.0-TC3 惯例:_art、_body 和 _shadow 是早期 Trainz 数据模型需求指定的三个子文件夹,名为 'asset-filename_suffix'(过时的 tag-<value> 对),如下所示[注释 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 Online 安全区 中的站点。目前,嵌入式浏览器可以接受三个域
     auran.com
    ts2009.com
    ts2010.com 

此外,建议使用自定义 Trainz 短 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) 重新保存对资产的任何更改(将重新验证的资产提交(提交)到数据库)。

 

脚本标签

[编辑 | 编辑源代码]
类型: 字符串文件名。
字段定义: 指示此资产的主脚本文件的路径,如果有。此路径应始终以“.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、Santa Fe 和 AT&SF、B&O、Chessie、CSX、NS、PRR 或 NYC 等,而基本类型,如平板车、箱车、料斗车应该自动生成。桥接键,如低位、井车和侧卸(换句话说,修饰符)可能应该被用来增强自动关键字生成的有限智能。重复自动生成的术语不应引起关注。

 

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

custom-category-list

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

 

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 年。
上传到 Download Station 或提供用于包含在游戏中的内容可能受特定再分发合同或许可协议的约束,该协议取代该字段中的任何文本。license 字段不提供本地化支持。license 字段的文本未经 Auran 或 N3V 验证或强制执行,并且可能对最终用户具有法律约束力,也可能没有法律约束力。
另一方面,Planet Auran 的历史表明,有人通过使用他人的内容冒充自己来侵犯版权,可能会导致其迅速被禁止访问 Auran 网站并失去下载站特权,等等,并永久封禁。此外,社区将严厉打击其他用户侵犯他人的版权行为,并排斥违规者,并忽略任何允许保留在 DLS 上的资产。
总而言之,实验和修改资产是 Trainzer 尝试攀登陡峭的内容创作学习曲线的一种被接受甚至被认可的生活方式(每个人都希望有更多内容创作者!),但如果资产具有依赖部分,尤其是网格、脚本、纹理等,这些是知识产权——在上传您的作品之前,请获得使用他人作品的许可。
kuid 引用指定的资产部分不应包含在本声明中——使用常见的联轴器、转向架或基本的火车车厢网格(Auran 铸造了几种标准类型,许多作者默认使用它们,通过对网格进行 kuid 引用,例如检查箱车的依赖项(英国:覆盖货车或厢式货车)——超过一半可能使用对 Auran 在 Trainz 1.0 中发布的基本网格进行 kuid 引用!)


 

作者标签

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

 

组织标签

[编辑 | 编辑源代码]
注意英国拼写,北美拼写“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 中被弃用主要是那些与机车 KIND 相关的标签),并且在所有情况下,在 TS2009-SP0 及其后的所有N3V Games 版本中都是如此(尽管许多用户发现它们有用,但它们会给内容创建者带来时间上的损失,也没有能够在 预处理操作 中忽略那些不再有用的标签)并将生成错误(错误消息),如果资产被打开以进行编辑并通过将 trainz-build 标签 提升到 V2.9 和更高的 数据模型 来进行部分升级:
  • 资产可以升级到 V2.8 及之前的本地版本,并且通常可以使其工作,即使在进行了几代数据模型元素改进之后,它们仍然可以正常运行。这样,许多资产可以使其在 TRS2004 或 TRS2006 数据建模中运行,但仍可在 TS 版本中进行处理和渲染。
  • 例如,大多数 TRS 时代之前的 data model 资产(v1.0–v2.3)可以通过添加一个 mesh-table 来使其在 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 开始就不鼓励使用它;因此,在 v1.5 之后,资产的 config.txt 文件中唯一需要、想要或认可的名称是 username-XX 变体。

 

Asset-name

[编辑 | 编辑源代码]

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 track 下统一。

 

casts-shadow 标签

[edit | edit source]
请参阅上面的 bendy,已弃用/过时的 TS2009 之前的遗留 kind track 标签。

 

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 及更高版本中已弃用,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 map(布局)资产中。
作为以前的过滤器修饰符,该标签在历史上几乎所有资产中都能找到,但它在车辆、场景、样条线资产、轨道类型(包括隧道和桥梁)以及具有本地化程度的轨道旁资产中尤其常见。
  • 地图资产仍然保留了在 Map 配置文件中定义的关键词 Region,其使用方式相反——作为 kind region kuid 引用。因此,Region 在 Map 中是必需的,并且自 TS2012 起,就像标签类型一样,它在曾经作为 TRS 系列版本 Surveyor 工具窗口的 '分组数据' '快速过滤器' 出现的众多资产中是非法的。
  • 在 TRS2009 之后,任何指向文本字符串的 region 标签都已过时,因为在程序员的意识中,他们用 Pick List 取代了 Surveyor 工具中的 '类型和区域' 字符串值的 粗略过滤 分组选择器。这两个标签都有一些优点和缺点,并且都追溯到 Trainz 0.9 Beta 版本。

 

shadows 标签

[edit | edit source]
请参阅上面的 bendy,已弃用/过时的 TS2009 之前的遗留 kind track 资产模式控制标签。

 

thumbnail 标签

[edit | edit source]

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

类型标签

[编辑 | 编辑源代码]
  • 类型 — V1.3–v2.8 — 以前的一种过滤器修饰符,在几乎所有资产的历史记录中都可以找到,但在滚动库存、场景、脊柱、轨道类型(包括隧道和桥梁)和路边资产中尤其普遍。
  • 类型标签,就像“区域标签”一样,在 Trainz 0.9—TC3 版本中用作“Surveyor 组内过滤器”,它与区域结合使用,可以提供更小的资产选择(工具组)。自 TS2009 移除这些局部可点击过滤器,转而采用一种新的、更繁琐的过滤器。这些工具选择变得快速而简单,而不是在工具选项卡之间切换时缓慢和暂停 - 如今的 TANE 之前的版本在工具选项卡之间来回切换时,通常会因重新加载整个选择列表而不堪重负。
  • 类型和区域都默认设置为“全部”,从而提供与 TS09 及其后的工具相同的超大型列表。
  • TRS2006 分支版本(即 TC3)之后,所有类型标签都已过时,因为在程序员的脑海中,他们用 TS09 Pick 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 的 Kuid2 形式来取代旧版本。相比之下,N3V 过度使用了过时表来表示新发布的“升级”内置资产,这会导致很多混淆,并且无法获得人们期望看到的资产。(例如,许多漂亮的 'Flip-trees' 在 TS10 和 TS12 中被 Speedtrees 取代,这影响了许多路线,因为创建者并不希望或需要 Speedtrees。在安装过程中,这还会导致缺少依赖项,直到找到包含过时表的资产。
     • 此外,在 Assets.tdx 数据库索引中,每个 kuid 只支持一个过时条目,并且用 Kuid2 版本来使 kuid 过时会导致问题(即,您将看到哪个?)。
     • 过时表的一个极好的用途是使用特定部件(尤其是转向架)升级一系列资产。添加要被更新的良好转向架取代的一组 kuid 可以显着改善路线或会话的外观(前提是转向架例如兼容且尺寸合适!)
  6. 最近将过时资产引入 TANE 的经验表明,有不止 5 种替代 kuid 使那个可怜的 Flip-tree 资产 过时。在 Speedtrees 引入和 TANE 大修(其积极寻求最更新的适当资产)所造成的混乱之下,看来现在在 ContentManager 进程中容忍多个具有不同 kuid 的资产使同一个 kuid 过时。作为一种良好的实践,只有在绝对必要时才使用过时表... 例如,在您要上传到 DLS 或在网站上自行发布的依赖资产中,用它来取代不想要的付费资产。
  7. 关于类别时代标签范围:安全起见,已知有效。其他“未来十年”值应在依赖这些值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词语,只要它们不包含空格字符。在短语构造的名称中使用下划线或句点可以保持可读性,并显着提高清晰度。例如,货运车厢可以装载 45 种合法产品类型。这些将列在依赖项容器中。使用 Coal、granite、crushed_limestone 等可以使维护和更改表格变得更容易。从 76 年开始做程序员的 Jes Sayin'
  9. 在第二个缩略图容器示例中,有一个第二个 512x512 尺寸的图像,即额外的图像。DLS 将使用哪一个尚不清楚。也可以包含更大的图像尺寸,并且通过电子邮件聊天,T:ANE 可能会支持一个较大的图像尺寸,该尺寸将在预览操作或 DLS 列表中找到用途。N3V Games 通常不会发布此类信息。
  10. 早期的做法可以追溯到 Trainz 1.x,即使用关键字/标签“thumb”以及带引号的路径规范引用,来引用运行时菜单的 240x180 缩略图图像。艺术文件夹包含一个带有 alpha 遮罩(通常为 bmp 文件,但格式正确的 tga 可以用作自遮罩)的 512x512 tga 和 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 历史记录 页面。



华夏公益教科书