跳转到内容

Trainz/refs/TrainzBaseSpec

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

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


KIND 层次结构简介

[编辑 | 编辑源代码]

KIND TrainzBaseSpec 为所有 Trainz 资产类型的所有 config.txt ini 文件 提供基本定义。TBS 为各种“标准标签”提供了支持,这些标签对(至少在合法定义的情况下)任何和所有 Trainz 资产都是通用的[1]

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

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

子类

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需元素:一个config.txt 文件 用于组织数据,一个身份,意思是kuid(仅用户名对您没有用处,但可以创建合法的资产,而无需名称!),最后,一个合法定义的 kind 标签。kind 负责,是管弦乐队的指挥,是排长或 CEO 给出指示——设置在之后处理的所有内容的要求。简而言之,kind 的值,一个紧密定义的成员限定的小组——告诉 Trainz 软件在虚拟世界中要渲染和显示什么,以及如何(或在哪里)找到在该 config.txt 文件中将资产的这些部分链接在一起所需的其他部分。
  以下每个子类都被认为具有TrainzBaseSpec 作为其数据“父类”。[note 3]下面列出的少数 kind,那些带下划线的,是早于Trainz 数据模型TS2009 发布(即自 2008 年后期以来)更改的旧 kind,N3V 程序员自那时起只施加了逐渐(增量)的更改。
  目前可以在 N3V Trainz Wiki 的内容创作者指南 部分找到基于这些旧 kind 修复资产的详细信息TrainzOnline 站点此处,其中包含具有启发性的旧 kind 示例此处。强烈建议Trainz 下载站 的任何用户或任何考虑创建内容的人仔细阅读 CCG。通过了解旧内容定义方式的历史背景而获得的见解,可以与 TrainzOnline 对相同数据类型的当前覆盖范围进行对比和比较,因为这种过去与现在的对比通常会为修复、更改和自定义资产提供宝贵的见解。更重要的是,CCG 中的写作是专业制作的,并且更具同义性——它通常会让你了解如果改变这一点或那一点的扩展效果,而 Trainz Wiki 却没有提供。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', 1 位小数
 kuid  <Kuid 编码值>
 username    username "'字符串值'"
 username-XX    username-XX "'字符串值'"
 description    description "'字符串值'"
 description-XX    description-XX "'字符串值'"
 kuid-table (容器)

  { 依赖项列表
 按 kuids }

 一个键值表,列出此资产依赖的所有资产。
 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 窗口中多个 kuids 的必需分隔符。 在完整的 kuid 标签结束括号中聚合数据通常更容易,并且阅读起来通常更清晰。 对于剪切和粘贴一个巨大的列表,缓冲区大小限制可能会中断列表的末尾,在这种情况下,在文本编辑器中修剪掉两个结束括号可能允许将整个列表放入 API。



  • 大多数 Trainz 资产在其 kuid-table 中指定依赖项列表——其他组件资产,由软件套件的各个部分组装起来,以在 kuid-table 容器 中组成可渲染和可使用的资产。
  • 在许多资产的核心,特定的标签可以由kuid 引用定义,并使用引用的资产作为一部分。 事实上,这就是重新贴皮的实现方式,也可以在资产中使用网格,尽管更现代的做法建议这种引用应指向网格库资产。
KUID2
KUID 格式的更新和更新跟踪修改版本,允许指定版本号。 A <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,直接对应(映射onto3rd' 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-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 无服务包) 到现在的版本增加 0.1 (v3.7 = TS12-SP1,v3.8 = Mac2,3.9=TANE-CE,4.0—4.3,之后呢?从 2016 年 3 月开始,4.3 及以上版本是 TANE SP,TBDL)。
  • 从 v2.0 (TRS2004) 开始,Trainz-build 标签数字值已经增加了 23 步,这些步骤虽然连续但并非单调,因为 Trainz TS09-sp3—TS09-sp4 共享一些 Trainz-build[2] 值;也就是说,在 TS2009 和 TS2010 的联合开发和发布时期,有一些 TBV 是重叠的。
  • 此外,N3V 进军 Mac 电脑,打断了基于 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 版本,通常解析为 1.3 作为 TBV。

 

用户名标签

[编辑 | 编辑源代码]
类型: UTF-8 字符串,资源的用户名必须指定。
字段定义: 此资源的英文人机可读名称。

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

在创建资源时,强烈建议对新的提议名称进行验证,方法是在 CM 搜索中针对多个试用部分名称进行测试,并根据这些信息采用与现有可用内容合理匹配的名称。
我们需要忍受多少个 'house 2' 或 'road' 资源才能让我们更加困惑?!好吧,实际上,我们都搜索 house 并从图片中选择,但能够指定一个唯一的名称并获得你期望的结果真是太棒了!


 
 

用户名-XX 标签

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

 

描述标签

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

该描述在 Content Manager 的 '资源详细信息' 窗格中可见,用于澄清资源名称、提供规格,以及通常的一些历史信息。

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

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

description-XX 标签

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

 

字符串表容器

[编辑 | 编辑源代码]
类型: UTF-8 字符串列表容器,字符串表容器
字段定义: 一个英文字符串的键值列表。每个键都是一个有意义的脚本标识符,映射到二进制数据并由二进制数据引用。每个值都是一个英文字符串。英文字符串可以包含或引用非英文专有名词作为标识符。非英语母语编写的资源必须在需要时仍然创建一个没有后缀的字符串表容器。软件只链接到和引用没有后缀的字符串表容器中的名称和值,这会让西班牙语、法语、德语、捷克语、荷兰语……日语作者感到非常困扰。换句话说,带后缀的字符串表只是为了翻译目的,当地图用非英语编写时就会产生问题——没有字符串表-en 来提供反向翻译的表。同样,用户名-en 和描述-en。所有三个缺乏的东西都证明了过时的和傲慢无礼的傲慢,以及对世界动态的漠不关心。

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

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

 

string-table-XX 容器

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

英语字符串表(没有后缀)是强制性的,其他本地化语言是可选的,由资产作者决定。许多提交到 DLS 然后也在与 Trainz 版本捆绑的路线中使用的资产通常会被翻译,并且有一套完整的本地化翻译,用于 description-XX 和 string-table。特别是,与发布捆绑在一起的路线和会话会收到专业的翻译,涵盖多个语言,并且每个零售版本都会进行翻译。

请注意,字符串表的左侧列是相同的,因为它是一个映射符号表,并且索引到二进制数据中,例如网格、会话或路线文件。只有使用名称,即两个元素中的右侧或数据元素才是本地化的,并且由运行时本地化软件替换。如果需要,这些名称可以手动编辑,以获得更友好的名称,即使在英语字符串表中也是如此。索引或左侧引用列语法在任何方面都不允许更改,因此在更改数据列中的名称时,请谨慎使用全局 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 列表容器,与obsolete-table 容器(下文)格式相同。一个虚拟参数+ 一个(依赖项)kuid
字段定义:定义依赖于该资产的资产列表的键值。

 

通常
只有具有子组件或具有备选选择(货物)的资产才会有长度可观的 kuid-table。大多数具有子组件的资产只有几个。
  • 其次,由于有时内部关键字是“自动定义”的,仅仅作为没有名称的数字列出,作为占位符参数,假关键字可以是任何唯一值(通常是零索引的连续整数。[注释 1])它们可以被命名,也可以不被命名,由用户或作者决定。
  • 此表中的条目有两个用途
    首先:确保游戏系统了解依赖项,以便安装和加载此资产将成功安装和加载任何依赖项,以及
    其次:允许脚本定位相关的子资产。
  • 只能在 kuid-table 中包含第一级依赖项——具有自身依赖项的子资产或部分资产将在该子资产的验证和数据库提交中处理。
  • 循环依赖项是非法的。
  • 如果一个资产被标记为该资产的过时版本,则不能将其列为依赖项。(Trainz 资产索引(历史上是 assets.tdx 文件)中的 kuid 只有一个替换 kuid 槽,这将创建一个循环定义,要求它自己的旧版本!)
  • 同样,一个资产不能被列为它自己的依赖项。[另一方面,这在 TSxx CMs 中被体验过(即,被证明是成功提交的无故障资产),将地图和会话从安装中移植到安装中,使用 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 添加到装载和允许的产品队列表条目中留给学生去思考。(您应该感到高兴,但这确实是一个更改名称的充分理由!保持事物清晰几乎是制作资产的全部战役!) 

过时表容器

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

 

类别-区域标签

[编辑 | 编辑源代码]
用途:在 CM 和 Surveyor 中筛选(搜索条件)
类型: 枚举字符串或字符串数组。
字段定义: 一个由分号 (;) 分隔的双字符 类别-区域标签 代码列表。字符串中不应包含其他字符(包括空格等)。此资产被认为与每个指定区域相关 - 这对于 火车车厢类型移动信号类型 资产最相关,但可以为任何资产提供。
示例
类别-区域 "CA;US"
类别-区域 "CA;MX;US"(北美国家,加拿大、墨西哥、美国)
类别-区域 "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 字符 类别-类别 代码,用于描述此内容项。类别-类别 标签用于提供超出资产 KIND 隐含内容的额外人类子分类。每个 Trainz 资产的类别-类别标签有助于描述资产在游戏中的“意图”,而不是资产的内部结构。
内容创作者指南 (CCG) 针对 TRS2006 和 Trainz Classics CCG 解释了这些类别代表了用于引用各种类型的机车、滚动车厢、场景、样条线和工业资产的标准化系统。类别-类别分类代码对于所有 Trainz 用户在搜索和/或筛选合适的资产以将其添加到某个会话或路线(布局)中非常重要。


 

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

示例
    类别-类别 "XBG" 货车 - 来自 PRR 60'
    类别-类别 "BR" 铁路(非功能性场景) - 可能是一栋建筑
    类别-类别 "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"
	}
}

另一个常见的大小是 调车场 和 Surveyor 资产选择 API 中使用的 128x64“图标”,它应该具有 Alpha 遮罩 或非常浅的背景。许多较旧的资产没有使用 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 在线安全区 内的网站。目前,嵌入式浏览器接受三个域
     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) 将对资源的任何更改重新保存(将重新验证的资源提交(提交)到数据库)。

 

script 标签

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

 

class 标签

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

 

script-include-table 容器

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

script-include-table 容器 是任何从 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

自定义类别列表

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

 

成员组容器

[编辑 | 编辑源代码]
最小版本: V3.5 及更高版本
类型: 成员组容器 配对的 占位符参数资产组 KUID 列表。
字段定义: KIND_资产组 资产列表,此资产属于这些资产。有关如何以及何时使用此功能的详细信息,请参阅 kind KIND 资产组 文档。

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

如果在给定的“成员组”容器中未指定任何条目,或者如果资产省略了“成员组”容器,则模拟器软件可能会根据资产的 Config.txt 文件指定一些默认资产组。确切的行为可能在模拟器的不同版本之间有所不同,但是当前逻辑在 这里 描述。 

可选的已弃用的标记

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

 

许可证

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


 

作者标记

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

 

组织标记

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

 

联系邮箱标记

[编辑 | 编辑源代码]
类型: 字符串,电子邮件地址。(已弃用,转而使用可更新的 Planet Auran 数据库。)
字段定义: 此资产创建者的联系电子邮件地址。不建议使用此字段,因为属性可以通过编程方式确定,并且联系详细信息可以注册到创建者的 Auran 账户 Planet Auran 账户,在那里可以根据需要限制或更新。

 

contact-website 标签

[编辑 | 编辑源代码]
类型: URL 字符串。 (已弃用,取而代之的是可更新的 Planet Auran 数据库。)
字段定义: 此资产创建者的联系网站。不建议使用此字段,因为属性可以通过编程方式确定,并且 [联系详细信息] 可以注册到创建者的 Auran 账户 Planet Auran 账户,在那里可以根据需要限制或更新。

 

已弃用标签

[编辑 | 编辑源代码]
以下“标签列表”是“事实上的”,因为它们的“使用惯例”早于上面列出的 TBS 标签的正式汇编,但并不早于使用它们的规范,事实上,它也早于 TrainzBaseSpec 这一术语的创造(在 2008-2009 年的 TrainzOnline Wiki 中引入),或者它在 N3V Wiki 页面 11:32, 2009 年 5 月 12 日的正式定义[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 发行版一起使用,以替换自 TS 版本以来被忽略的“资产文件名”的先前效果,以使用原始 Trainz data model 的文件夹分组定义路径,使用带有后缀“_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

[编辑 | 编辑源代码]

Asset-name 是 Trainz 1.x--TRS2004 Trainz 时代的主要文件夹名称,并且通常是 CM 打开文件以编辑时打开的文件夹的名称;在当今的早期数据模型资产中,人们通常会发现 asset-name 也用于早期 Trainz 时代的子文件夹系统,在火车车厢资产中给出子文件夹名称“asset-name_art'”,“asset-name_body'”,“asset-name_shadow'”。在修复此类资产时,大多数情况下,该值可以用从资源文件复制并粘贴下来的 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 两字母后缀;与 description-XX 一样,“XX”形式是“本地化”支持其他语言的友好值的组成部分。
  • 在最古老的 Trainz 时代(v1.0-v2.4)资产中用 username 和 username-XX 替换 name 和 name-XX,或者如果存在 username,只需删除。
    • 如果资产的 trainz-build v2.7 及更高版本,name-XX 会导致错误。有趣的是,即使在 TS12 这样晚的版本中,name-XX 标签也会在 Surveyor 工具的搜索列表中显示为资产名称,如果不存在,则会出现 TrainzBaseSpec

 

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

根据惯例,子文件夹名称将具有以 username/asset-name 字段开头的路径规范名称,并使用 _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 —历史上几乎所有值得本地化的资源中都有发现。这些已被两个字母的枚举式 ISO 国家代码的“字符串数组”category-region 标签中取代。
  • 用字符串数组类型 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 标签

[edit | edit source]
参见上面的 bendy,已过时/废弃的 pre-TS2009 遗留kind track 资源模式控制标签。

 

thumbnail 标签

[edit | edit source]

thumbnail 标签是thumbnails container 的早期单视图实现(在上面也简要记录过)。Trainz 的早期 pre-N3V 程序员版本会找到一个 .jpg 文件,最好是大小为 240x180 像素,位于主资源根文件夹、资源名称_art 文件夹或资源名称_body 文件夹中,并使用它在 CMP 和 DLS 中显示资源,如果它被上传。该标签在 TRS2006 期间被弃用,因为 thumbnails container 是随 v2.0(TRS2004-SP0)引入的。在TBV 保持在 v2.4 以下的旧修复资源中,缩略图通常仍会在较新的 CM 中正常工作,前提是它位于 _art 子文件夹中,并且资源名称与用户名匹配。 

type 标签

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

 

注释

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



华夏公益教科书