跳转到内容

Trainz/refs/TrainzBaseSpec

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

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


KIND 继承体系介绍

[编辑 | 编辑源代码]

KIND TrainzBaseSpec 为所有 Trainz 资源类型在所有 config.txt ini 文件 中提供基础定义。TBS 提供了许多“标准标签”,这些标签对(至少,在法律上可以被定义)所有 Trainz 资源都适用,无论其类型[1]

  • 其中一些是强制性的,因为它们决定了资产的进一步处理以及 config.txt 文件和其文件夹中资产数据的解释。
  • 但是,大多数是可选的,在大多数子资产中可以省略使用该标签的定义行。

父类

[edit | edit source]
  • 无。对于所有由事实上的父容器定义的内容(即所有 Trainz 数字模型所需的 config.txt 文件)来说,它是有效的,并且大多数情况下都是必要的。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) 开始,每个版本的 Content Manager 模块都越来越多地强加了预提交错误测试[note 1],并且每个模块都越来越坚决地提醒用户,当它期望存在这样一个标签-数据对时,它还没有定义过这样一个标签。

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

子类

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需的元素:一个 config.txt 文件 用于组织数据,一个标识,即一个 kuid(只有用户名是没用的,但一个合法的资产可以在没有名称的情况下创建!),最后,一个合法定义的种类标签。种类是负责人,是乐队的指挥,是排长或 CEO 指挥方向——为所有后续处理的内容设置要求。简而言之,种类的值,一个小而紧密的成员制群体——告诉 Trainz 软件在虚拟世界中要渲染和显示什么,以及如何(或在哪里)找到将这些资产部分链接在一起的配置文件中需要的其他部分。
  下面列出的每个子类都被认为拥有 TrainzBaseSpec 作为它们的“父类”数据。[note 3]下面列出的一些种类(带下划线的那些)是遗留种类,早于 TS2009 版本中对 Trainz 数据模型 的更改(即自 2008 年后期以来),N3V 程序员只对这些更改进行了逐步(增量)的更改。
  目前,可以在 N3V Trainz Wiki 的 内容创建者指南 部分找到有关修复基于这些遗留种类的资产的详细信息,该网站的地址是 TrainzOnline 网站,并提供一些具有启发性的 遗留种类示例。强烈建议 Trainz 下载站 的所有用户或任何考虑创建内容的用户阅读 CCG。通过了解旧内容是如何定义的背景历史,可以将其与 TrainzOnline 对相同数据类型的当前覆盖范围进行对比和比较,因为这种过去与现在的对比往往可以为修复、更改和定制资产提供宝贵的见解。更重要的是,CCG 在 TrainzOnline 上发布的内容是 TC1&2/TC3 版本——是自 1999 年的 Trainz 以来印刷的几本小册子中的最后一个版本;TC3 CCG 包含来自 TRS2004/TRS2006 和 UTC 数据模型的已更改的 Enginespecs 机车资产,需要进行适当更新。

TrainzBaseSpec 子类 KINDs(类型资产组)

 


表格 I,TBS 标准定义

[edit | edit source]

TBS 标准定义

[edit source]

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

  • 容器是 _'key' 和 'key-value' 对的集合_ 以及 _TBS 中的 '上层容器'(与子容器相对,例如缩略图容器中的子容器)通常以 '-table' 结尾。_
 kind    "_'string-value'_"
 trainz-build 'float',一位小数
 kuid  <Kuid 编码值>
 username    username "_'string-value'_"
 username-XX    username-XX "_'string-value'_"
 description    description "_'string-value'_"
 description-XX    description-XX "_'string-value'_"
 kuid-table (容器)

  { 依赖项列表
  按 kuids }

 一个键值表,列出该资产所依赖的所有资产。
 obsolete-table (容器)
    {
    }
 kuids 列出此资产替换(使过时)的资产
 通常没有(空)[note 5]
 string-table (容器)
    {
    }
 资产中使用的字符串和消息的键值列表
通常为空,仅在路线和场景中很大。
 string-table (容器[s])
    {  非英语
    语言文本 }
 翻译字符串列表,匹配 onto 强制性英语 string-table
 category-region tag 枚举 代码  category-region "_'string-array'_"  
 category-class tag  category-class "_'枚举 string-value'_" 
 category-era tag  category-era "_'constrained string-array'_"  年代
 category-keyword "_'string-array'_" 最大长度为 64 字节    category-keyword tag 自然语言搜索关键词
  (替换类型,区域)
 custom-category-list 
 "_'string-array'_"
 脚本接口功能
 must-have-product-rights 
 "_'string-value'_"  
 DRM 字符串数组
 must-not-have-product-rights 
 "_'string-value'_"  
 DRM 字符串数组
 privileges (容器)
    {
    }
 更多 DRM
 thumbnails (容器)
    {
    }
 缩略图容器
 script (文件名)    "_'string-value'_"
 class (脚本资产类)    "_'string-value'_",必须与 script 规范类同步。
 script-include-table
    {
    }
 (列出库脚本的容器)
 extensions (容器)
    {
    }
 资产使用的正式脚本扩展
 license "_'string-value'_"  资产创建者的版权声明
 author    "身份 _'string-value'_"
 organisation    "第三方组身份 _'string-value'_"
 contact-email    "电子邮件地址 _'string-value'_"
 contact-website    "作者/组的网站网址 _'string-value'_"
 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 格式的更新和更新跟踪修改版本,它允许指定版本号。 A <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 版本号 严格匹配,但以下情况除外:

  • 分配给 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 无服务包)到当前版本(v3.7 = TS12-SP1,v3.8 = Mac2,3.9=TANE-CE,4.0—4.3 以及之后?从 2016 年 3 月开始,4.3 及以上版本为 TANE SP,待定)递增 0.1。
  • 从 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 在基于 Windows 和 Mac 的操作系统之间平滑递增的过程。
    注意:热修复 不会更改版本号。
字段定义:此资产构建(和存档)到的文件格式版本(不一定与资产使用技术水平有关),而是对应于通过在 Content Creator Plus 中创建资产分配的资产级别,与在 CM 的标题栏中找到的级别相同。
  • 程序员建议此数字通常应设置为正在创建和测试资产的 Trainz 安装的 Trainz 版本号。Content Creator 社区则试图将此数字设置为尽可能低的数字,以便在新资产下载时提供尽可能广泛的用户范围。优秀的 内容创建者 会在对应版本的裸机安装(无添加内容)上进行测试,并验证生成的 cdp 是否包含所有相关材料。
  • 某些资产种类根据其trainz-build 版本标签的解析方式会有很大的不同。注意:trainz-build 标签 是必须的。如果未指定,Trainz 将根据 config.txt_file 的内容尝试以原始方式猜测旧版本 Trainz,这通常会解析为 TBV 的 1.3 值。

 

用户名标签

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

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

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


 
 

username-XX 标签

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

 

描述标签

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

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

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

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

description-XX 标签

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

 

string-table 容器

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

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

  • 这些左侧键或标签既用作“本地索引关键词”,也用作“语言之间的等效表”
  • 左侧列将始终包含内容创建者赋予“特殊”名称的对象,例如信号、轨道标记和工业、交叉口等的名称,这些对象可能被引用,并将在驾驶员和测量员模块的“查找工具”(CTRL+F ) 函数小程序中出现。
  • 相反,索引侧也不会列出默认的名称,例如无数的交叉口,在构建路线地图时,它们会自动通过随机数索引(即毫无意义的杂乱。如果重要,路线构建 CC 将命名它!),但会自动包括潜在的临时资产,例如火车车的默认名称。如果重命名,这些名称将取代其对应的默认名称。
  • 它的主要用途是用于那些旨在与脚本引用交互并接受可变属性的对象,例如火车站、工业所需的或准备运出的产品数量,或者由交互式火车车(滚动工业到脚本)和其他可配置资产(如通用广告牌风格的标志)携带的,该标志通过少量的高度调整和角度扭转可以放置在库存建筑或工业的正面,以在建筑物上放置不同的商业名称。换句话说,这是一种可配置的场景。
  • 总的来说,在路线地图或布局中,这些 LHS 名称对应于地图资产上命名的对象,这也是大多数字符串表出现的地方(从字面上看,在一个大型路线kind 地图中,成千上万的条目被填充)。
  • 在某些资产中,该默认名称连接到软件脚本,因此字符串表变得特别重要,而不是平淡无奇。(见下文)
  • 在每种类型的资产中,使用字符串表类型始终是合法的,就像 description 标签、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 和字符串表。特别是,与版本捆绑在一起的路线和会话在每次零售版本中都会被专业翻译成多种语言。

请注意,字符串表的左侧列是相同的,因为它是一个映射的符号表,并索引到二进制数据中,例如网格、会话或路线文件。只有使用名称,即两个元素中的右侧或数据元素,才是本地化的,并由运行时本地化软件替换。如果需要,这些名称可以手动编辑,以便更易于用户理解,即使在英文字符串表中也是如此。索引或左侧引用列语法在任何情况下都不能更改,因此在更改数据列中的名称时要小心使用全局 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 中只有一个替换 kuid 槽位,这将创建一个循环定义,要求自身较旧的版本!)
  • 类似地,一个资源不能被列为它自己的依赖项。[OTOH,这已经经历过(即在 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 表格,新老 Trainz 用户都可以获得路线中资源的可编辑列表。这些可以很容易地转换为样式表“过滤器”(选择列表),它允许使用与原始作者相同的资源添加和更改路线... 或者在自己的扩展中复制他的样式。


  • 对这些是虚拟参数这一事实的非常有用的利用是将复杂机车车辆资源中产品的 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 container

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

 

category-region 标签

[edit | edit source]
目的:在 CM 和 Surveyor 中进行过滤(搜索条件)
类型: 枚举字符串或字符串数组。
字段定义:用分号 (';') 分隔的两位 类别区域标签 代码列表。字符串中不应包含其他字符(包括空格等)。该资源被认为与每个指定区域相关—这对于 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 tag

[edit | edit source]
目的:在 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 tag

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

 

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

 

缩略图容器

[edit | edit source]
目的:在 CM 和 Surveyor 中进行过滤(搜索条件)
类型: 缩略图容器.
字段定义:在整个游戏环境(包括在游戏内、在 内容管理器 中以及在 下载站 上)中用于在二维预览框、列表和图标形式中表示该资源的缩略图。每个数据集都包含在子容器中(通常)使用 占位符参数 作为键名称或标签。[注释 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 文件,而是将 .tga 文件(Targa True Color)列在一个名为 _art 的子文件夹中(Trainz 1.0-TC3 约定:_art、_body 和 _shadow 是由早期 Trainz 数据模型要求指定的三个子文件夹,称为“资源文件名后缀”(过时的标签-<值> 对),看起来像下面的[注释 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 的一个热修复程序中被放弃,因为用户社区中有很多抱怨。
 • 如果缺少缩略图容器的资源(即使具有过时的缩略图标签)后来在新构建的内置路线或会话中被选中,该资源通常将作为没有图像的项目进行分发——如果纹理.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" 扩展名,如果路径具有其他扩展名。

 

类标签

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

 

script-include-table 容器

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

script-include-table 容器 是任何从 KIND TrainzBaseSpec 派生的资源(简而言之,所有资源)都可用的顶层 config.txt 文件 条目。此容器允许资源直接 包含另一个资源的脚本,方法是在父资源的脚本文件使用 N3V TrainzScriptScript_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 保留根据扩展创建者的指南,在日后对 扩展容器 中特定条目的添加验证的权利。

 


较新且较少见

[编辑 | 编辑源代码]

以下关键词是比较新的发展,在较旧的资产中没有类似物或存在。 

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 tag|Custom-category-list 标签|custom-category-list string|Custom-category-list 字符串|Custom-category-list 容器|custom-category-list 容器

custom-category-list

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

 

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 年。
上传到 下载站 或提供用于包含到游戏中的内容可能受特定再分发合同或许可协议的约束,该协议优先于此字段中的任何文本。许可证字段不提供本地化支持。许可证字段的文本未经 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, 2009 年 5 月 12 日中的正式定义[4]


 

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

 

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


  • resource-namenamename-XX — V1.3–v2.8 — 历史上在几乎所有 v1.3-v2.0 资源中都有发现。虽然 “resource-name” 在 v2.8 之前一直被保留,并且没有引起任何抱怨,但在 v2.5 之后便不再建议使用;因此,在 v1.5 之后,资源的 config.txt 文件中唯一需要的、想要的或被认可的名称是 username-XX 变量。

 

资源名称

[编辑 | 编辑源代码]

资源名称是 Trainz 1.x--TRS2004 Trainz 时代的主要文件夹名称,并且在打开文件进行编辑时,CM 通常会打开的文件夹名称;在今天这样的早期数据模型资源中,通常会发现资源名称也用于早期 Trainz 时代的子文件夹系统,为火车车厢资源提供子文件夹名称“resource-name_art”、“resource-name_body”、“resource-name_shadow”。在修复此类资源时,通常可以使用从资源文件复制和粘贴的模板中的 SAR 来替换该值。此替换通常可以正确定义和链接资源的子文件夹,以包含主体、阴影和艺术作品,因为在早期方案中,文件名是基于资源名称标签的。 

bendy 标签

[编辑 | 编辑源代码]
范围:轨道或桥梁资源 中发现,在 v2.9 标准之前,样条对象经历了重大更改,统一了数据模型定义,放弃了混合中的一些先前类型,转而将所有样条对象统一到 kind 轨道 下。

 

casts-shadow 标签

[编辑 | 编辑源代码]
请参见上面的 bendy,已过时的 TS2009 之前的遗留 kind 轨道 标签。

 

name 和 name-XX 标签

[编辑 | 编辑源代码]
  • '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

 

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

按照惯例,子文件夹名称的路径规范名称将以 username/resource-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 的放置和选择工具中列出的资源。在 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,它具有相反的用途——作为 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 container (上面也简要介绍过) 的早期单视图实现。Trainz 的早期 N3V 之前的程序员版本会在主资源根文件夹或资源名称_art 或资源名称_body 文件夹中找到一个 .jpg 文件,最好大小为 240x180 像素,并将其用于在 CMP 和 DLS 中显示资源,如果资源已上传。该标签在 TRS2006 期间被废弃,因为 thumbnails container 在 v2.0 (TRS2004-SP0) 中被引入。在旧的修复后的资源中,如果 TBV 保持在 v2.4 以下,那么缩略图通常仍然可以在更新的 CMs 中工作,前提是它位于 _art 子文件夹中,并且资源名称与用户名匹配。 

type 标签

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

 

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

参考文献

[edit | edit source]
  • 本页面的主要内容取自 N3V TrainzOnline Wiki 的 KIND_TrainzBaseSpec。增强信息由 Yesterdayz-Trainz 用户组成员添加。

脚注

[edit | edit source]
  1. N3V 的 KIND_TrainzBaseSpec,作为未经增强的源页面,缺少历史信息(标签),此处可以找到;访问日期=2014 年夏季
  2. a b "Trainz-build" 标签 直连
  3. 来自 fabartus,2014 年夏季;可能与添加此示例的日期相同。
  4. Christoph Bergman,N3V Games 首席程序员,又名 'Windwalkr',KIND TrainzBaseSpec 历史 页面。



华夏公益教科书