跳转到内容

Trainz/refs/TrainzBaseSpec

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

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


KIND 层级结构介绍

[编辑 | 编辑源代码]

KIND TrainzBaseSpec 为所有 Trainz 资产类型提供所有 config.txt ini 文件 的基础定义。TBS 为所有 Trainz 资产提供了一些“标准标签”,这些标签对所有 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 Manager 或 Content Creator Plus (CCP) 工具将分配一个默认值,但在处理它时会列出警告消息。TrainzOnline 维基、这里或较旧的 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] 下面列出的一些种类,那些带下划线的种类,是早于对 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 标准定义

[编辑 | 编辑源代码]

TBS 标准定义

[编辑源代码]

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

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

  { 依赖项列表
 按 kuids 分组}

 一个键值表,列出了此资源依赖的所有资源。
 已弃用-table (容器)
    {
    }
 kuids 列出了此资源取代的资源(已弃用)
 通常为空(空)[注释 5]
 字符串-table (容器)
    {
    }
 资源中使用的字符串和消息的键值列表
通常为空,在路线和场景中很大。
 字符串-table (容器)
    {  非英语
    语言文本 }
 翻译字符串列表,匹配到强制性的英语字符串-table
 类别-地区标签 枚举 代码  类别-地区 "'字符串数组'"  
 类别-分类标签  类别-分类 "'枚举 字符串值'
 类别-年代标签  类别-年代 "'受限字符串数组'"  年代
 类别-关键词 "'字符串数组'" 最大长度为 64 字节    类别-关键词标签 自然语言搜索关键词
  (取代类型、地区)
 自定义-类别-列表 
 "'字符串数组'"
 脚本接口功能
 必须拥有产品权利 
 "'字符串值'"  
 DRM 字符串数组
 不能拥有产品权利 
 "'字符串值'"  
 DRM 字符串数组
 权限 (容器)
    {
    }
 更多 DRM
 缩略图 (容器)
    {
    }
 缩略图容器
 脚本 (文件名)    "'字符串值'"
  (脚本资源类)    "'字符串值'", 必须与脚本规范类同步。
 脚本-包含-table
    {
    }
 (列出库脚本的容器)
 扩展 (容器)
    {
    }
 资源也使用的正式脚本扩展
 许可证 "'字符串值'"  资源创建者的版权声明
 作者    "身份 '字符串值'"
 组织    "第三方组标识 '字符串值'"
 联系-电子邮件    "电子邮件地址 '字符串值'"
 联系-网站    "作者/组的网站 URL '字符串值'"
 成员-组 (容器)
    {
    }
 此资源所属的KIND 资源组 资源列表。

 



支持的标签

[编辑 | 编辑源代码]

TrainzBaseSpec 支持在config.txt 文件 中使用以下标签。:  

种类标签

[编辑 | 编辑源代码]
类型: 字符串。
字段定义: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 格式的更新和更新跟踪修改版本,允许指定版本号。一个 <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 无 Service Pack)开始递增 0.1,一直到现在的版本(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-build 标签的数值已经通过 23 个步骤进行递增,这些步骤虽然连续但非单调,因为 Trainz TS09-sp3—TS09-sp4 共享一些 Trainz-build[2] 值;也就是说,在 TS2009 和 TS2010 的联合开发时代和版本中,有一些 TBV 是共同使用的。
  • 此外,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 版本,这通常会将 TBV 解析为 1.3。

 

用户名标签

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

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

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


 
 

用户名-XX 标签

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

 

描述标签

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

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

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

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

描述-XX 标签

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

 

字符串表容器

[编辑 | 编辑源代码]
类型:UTF-8 字符串列表容器,字符串表容器
字段定义:英文字符串的键值列表。每个键都是一个有意义的脚本标识符,映射到二进制数据并被二进制数据引用。每个值都是一个英文字符串。英文字符串可能包含或引用非英文专有名词作为标识符。非英语母语作者创建的资产仍然必须创建没有后缀的字符串表容器(如果有需要)。软件仅链接并引用字符串表容器中没有后缀的名称和值,这对于西班牙语、法语、德语、捷克语、荷兰语... 日语作者来说是无休止的痛苦。换句话说,带后缀的字符串表仅用于翻译目的,这在使用非英语语言编写地图时会导致问题 - 没有字符串表-en 来提供用于反向翻译的表。同样,username-en 和 description-en 也是如此。所有三种缺乏表明了一种过时且傲慢的无视世界动态的态度。

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

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

 

字符串表-XX 容器

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

英语字符串表(无后缀)是强制性的,其他本地化语言是可选的,由资产作者决定。许多提交给 DLS 的资产,然后也用于与 Trainz 版本捆绑的路线,通常会被翻译并拥有一套完整的本地化翻译,用于描述-XX 和字符串表。特别是,与版本捆绑的路线和会话会随着每个零售版本的发布而被专业翻译成多种语言。

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

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

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 CM 中作为已成功提交的无故障资产见证),使用 GSARS 更改 kuid,以便重叠不会覆盖已经使用相同 kuid 的安装目标上的资产,而不会看到错误消息。] 是否它也起作用了,需要比我更勇敢或更愚蠢的人!--Fabartus,编辑。
格式(所有值均为 <kuid:aaaaa.bbbbb> 格式)
kuid-table {
 0            Kuid-1
 1            Kuid-2
 3            Kuid-3
 ...          kuid-ii
 N-1          Kuid-N
 }
大多数用户的第一个内容将是自动克隆内置路线及其关联的会话。通常是因为人们想修改某些东西。检查路线或会话的 kuid-table 将使新手或老手 Trainzer 拥有路线中资产的可编辑列表。这些可以很容易地变成一个样式表“过滤器”(一个选择列表),它允许你使用与原始作者相同的资产来添加和修改路线... 或者在你自己的扩展中复制他的样式。


  • 一个非常有用的利用事实是这些是虚拟参数,就是将复杂滚动库存资产中产品的 kuid 配对。一辆箱车可能包含各种各样的产品... 获得授权将你的作者 ID 赋予你自己的系列,使用不同的装载集,可能是你第一次创建重要的内容!考虑一辆货车,允许的产品容器,kuid 列表可能包含以下条目
...  {
Animal_chickens <kuid:-25:230>
Animal_Horses <kuid:-25:236>
Animal_Cows <kuid:-25:239>
Animal_Piggies <kuid:-25:238>
Animal_Sheep_Flock <kuid:-25:240>
} ...

注意将单词连接起来的下划线... 两个符号,键和值!我们让学生去弄清楚在哪里将 kuid 添加到装载和允许的产品队列表条目中。(不用谢,但这也是改变名称的一个很好的理由!保持事物井井有条几乎是制作资产的全部战斗!) 

已弃用表容器

[编辑 | 编辑源代码]
类型: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"(大多数第一世界国家)

 

类别-分类标签

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


 

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

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

 

类别-年代标签

[编辑 | 编辑源代码]
用途:在 CM 和 Surveyor 中过滤(搜索条件)
类型:枚举格式字符串数组。
字段定义:一个由分号 (';') 分隔的五字符年代代码列表。
  • 每个年代代码代表一个十年,由一个四位数的整数组成,然后必须以 's' 结尾 (例如 "1990s;2000s;2010s"), 从而创建一个枚举的软件令牌(值),该令牌必须与指定的合法年代代码完全匹配。
  • 字符串中不应出现其他字符(包括空格等),包括(尤其是在字符串末尾)在结束双引号字符之前。
  • 允许的年份范围是 1800-2010 年代[注 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 '图标',它应该有一个阿尔法蒙版或非常浅的背景。许多较旧的资产没有使用 jpg 文件,而是在 '_art' 子文件夹中列出了 .tga 文件(Targa True Color)(Trainz 1.0-TC3 惯例:'_art'、'_body' 和 '_shadow' 是三个子文件夹,由早期的 Trainz 数据模型要求命名为 'asset-filename_suffix'(已废弃的标签-<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 链接,它们只会在嵌入式网页浏览器中起作用,而不会在任何外部网页浏览器中起作用。当此标签存在时,游戏内按钮将允许用户查看资产描述或帮助,而无需离开游戏环境。

这在 Driver 中非常有用,可以访问路线图、指南或任务说明或澄清。

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

 

must-have-product-rights 标签

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

 

must-not-have-product-rights 标签

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

 

privileges 容器

[编辑 | 编辑源代码]
类型: privileges 容器 是某些作者使用的一种 DRM,版权保护实现,也可以称为 privileges 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 容器支持标签

[编辑 | 编辑源代码]

此容器是一个简单的键值表,其中包含脚本化资产的名称及其在编译资产的脚本文件时搜索脚本包含的 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>
                     }

 

extensions 容器

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

 


较新且不太常见

[编辑 | 编辑源代码]

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

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 容器 配对的 占位符参数asset-group kuids 列表。
字段定义: 一系列KIND_Asset-group 资产,此资产属于这些资产。 有关如何以及何时使用此功能的详细信息,请参阅kind KIND Asset-group 文档。

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

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

可选的已弃用标签

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

 

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


 

author 标签

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

 

organisation 标签

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

 

contact-email 标签

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

 

contact-website 标签

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

 

已弃用的标签

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


 

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

 

编辑说明: 这些“TrainzBaseSpec 标签”在某些情况下由程序员命令已过时(主要是与机车 KIND 相关的那些),并且在所有情况下,在 TS2009-SP0 及其后的所有N3V Games 版本之后(尽管许多用户发现它们具有实用性,但它们会给内容创建者带来时间损失,也不能仅仅在 预处理操作 中忽略那些不再有用的部分),如果打开资产进行编辑并通过将 trainz-build 标签 提升到 V2.9 和更高版本 数据模型 来部分升级,将生成错误(错误消息):
  • 资产可以本地升级到 V2.8 及之前,并且最常被设置为工作,即使在经过了几代数据模型元素改进之后,也能正常运行。通过这种方式,许多资产可以设置为在 TRS2004 或 TRS2006 数据建模中运行,但仍然符合 TS 版本的内部分类和渲染。
  • 例如,大多数 TRS 时代之前的数据模型资产(v1.0–v2.3)可以通过添加一个网格表来设置为在 TS 版本中运行,以替代自 TS 版本以来被忽略的“asset-filename”的效果,并使用原始 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 标签

[编辑 | 编辑源代码]
范围:轨道或桥梁资产 中找到,早于 v2.9 标准,当时样条对象经历了重大变化,以实现统一的数据模型定义,放弃了混合中的几个先前的 KIND,转而支持所有样条对象统一在 kind track 下。

 

casts-shadow 标签

[编辑 | 编辑源代码]
见上面的 bendy,已弃用/过时的 TS2009 遗留 kind track 标签。

 

name 和 name-XX 标签

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

 

注意: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 标签

[编辑 | 编辑源代码]
category-era 标签 替代
  • category-era-nn — V1.3–v2.8 s.a. {tag: category-era-0, category-era-1, category-era-2, ...} —以前使用数字后缀的日期系统—在历史上几乎所有值得日期的资产中都能找到,直到 TBV 2.0 (甚至在 TBV 2.8 构建的资产中也能找到!),当时引入了当前的 category-era 字符串数组,将它们组合到 config.txt 文件的一行中[注 12]。虽然不能在 Surveyor 中直接访问,但在 TR06 和 CMP 之后,可以定义一个过滤器来选择日期范围,并将该过滤器与区域和类型一起使用,以在 Surveyor 中验证资产是否可以在 Surveyor 的放置和选择工具中列出。在 TS09 中被弃用,TS09 使用更短的 category-era 标签 字符串数组,用一行代替使用多个“-nn”后缀的标签-值对。
  • 字符串数组中的空格会导致错误;所有值必须以“s”结尾,并包含四个数字,例如1880s;1950s;2010s(这可能完全适合某些类型的女性服装,这些服装流行起来又过时!)。不幸的是,目前无法定义范围,但这已经成为用户社区的要求。
  • 用字符串数组类型的 category-era 标签 替换,没有空格,并在日期代码之间使用分号;这些代码以完整的四位数十年数字结尾,并带有“s”(小写“s”)后缀。

 

category-region-nn 标签

[编辑 | 编辑源代码]
category-region 标记 取代
  • 类型 category-region-nn — V1.3–v2.8 —在几乎所有值得本地化的资产中都存在。这些已被 category-region 标记中 包含两个字母的枚举 ISO 国家代码的 “string-array” 取代。
  • 用字符串数组类型 category-region 替换,在两个字符的国家代码之间使用分号分隔,没有空格。这些代码是完整的两个大写字母,由 枚举 的代码组成,代码之间使用 “;” 分隔符,但在最后一个代码之前没有分隔符。
  • 字符串数组中的任何 空白 都会导致读取错误和故障消息,包括尾部引号前的空格。

 

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

 

shadows 标记

[编辑 | 编辑源代码]
参见上面的 bendy,已过时/废弃的 pre-TS2009 遗留 kind track 资产模式控制标记。

 

thumbnail 标记

[编辑 | 编辑源代码]

thumbnail 标记是 thumbnails 容器 的早期单视图实现(上面也有简要说明)。Trainz 的早期 pre-N3V 程序员版本会找到一个 .jpg 文件,最好大小为 240x180 像素,位于主资产根文件夹或 asset-name_art 或 asset-name_body 文件夹中,并将其用于在 CMP 和 DLS 中显示资产(如果上传)。自 TRS2006 以来,该标记已过时,因为 thumbnails 容器已随 v2.0 (TRS2004-SP0) 引入。在使用 TBV 保持在 v2.4 以下的旧修复资产中,拇指通常仍然可以在较新的 CM 中工作,前提是它位于 _art 子文件夹中,并且资产名称与用户名匹配。  

type 标记

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

 

  1. 资产 提交(TANE 的提交)是将内容整合到数据库中并将其在数据库索引中交叉引用的过程和步骤,以便在运行时模块中访问它。
  2. 验证资产的一种方法是,除了这些值之外,其他方法都是可以的,方法是将 TBV 降低到 2.5-3.7 范围,看看这些消息是否消失。您可能需要多次尝试降低它,直到足够低,反之亦然,较新关键字在较旧的 TBV 中无法识别,可能会给出不同的错误消息。不要害怕尝试,即使失败也会产生知识和经验,而且您不会破坏任何东西!如果是这样,您可以自信地提供值,这是解决问题的办法。通常,一些现代需求只需要关键字对,因此在标记之后添加一个空白行或在标记之后添加一个空的花括号集将满足需求,而错误测试则过于严格。
  3. 注意:此列表在 N3V TrainzOnline Wiki 上 “维基化”,这意味着在 “KIND” 这个词之后的首字母已大写,而 config.txt 文件中实际的数据标记名称全部为 小写 文本。该维基也使用双引号来表示许多术语,我们将在本文中避免使用这种做法。
  4. “kind consist” 并不经常直接看到,它只存在于菜单和内容管理器列表中。
  5. 过时表必须谨慎使用,最常出现在 Auran 编写的资产中。该表用较新的 kuid 替换了较旧的 kuid,大多数内容创作者正确地使用 kuid 的 Kuid2 形式来取代旧版本。相比之下,N3V 过度使用过时表来升级新发布的 “升级” 内置资产,这会导致很多混淆,并且无法获得预期看到的内容。(例如,许多很棒的 `翻转树` 在 TS10 和 TS12 中被 Speedtree 取代,这影响了许多路线,其中 Speedtree 并不被创建者想要或需要。在安装中,这也会导致依赖项缺失,直到找到包含过时表的资产。
     • 此外,在 Assets.tdx 数据库索引中只支持每个 kuid 一个过时条目,用 Kuid2 版本过时 kuid 可能会导致问题(例如,您会看到哪个?)。
     • 过时表的绝佳用途之一是使用特定部件升级一系列资产,尤其是转向架。添加一系列 kuid 来替换较新的好的转向架,可以显著改善路线或场景的外观,只需编辑一次(前提是转向架等部件兼容并且尺寸合适!)。
  6. 最近将过时资产引入 TANE 的经验表明,至少有五个备用 kuid 过时了那个糟糕的 翻转树资产。看来,由于 Speedtree 的引入和 TANE 的彻底改造(它积极地追求最适合的资产),ContentManager 进程现在容忍多个具有不同 kuid 的资产过时了同一个 kuid。作为一个良好的实践,仅在绝对必要时使用过时表……例如,在您想要上传到 DLS 或在网站上自行发布的依赖资产中取代一个不想要的付费资产。
  7. 关于 category 时代的标记范围:安全起见,已知有效。其他 “未来十年” 的值应在依赖这些值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词,只要它们不包含空格字符即可。在短语构造的名称中使用下划线或句点可以保持可读性,并显著提高清晰度。例如,货运列车车厢可能装载 45 种合法产品类型。这些将在依赖项容器中列出。使用 Coal、granite、crushed_limestone 等使维护和更改表格变得更容易。Jes Sayin,自 76 年起担任程序员
  9. 在第二个 thumbnails 容器示例中,有一个第二个 512x512 大小的图像,一个额外的图像。DLS 将使用哪个图像尚不清楚。也可以包含更大的图像尺寸,并且通过电子邮件聊天,T:ANE 可能会支持在预览操作或 DLS 列表中找到用途的大图像尺寸。N3V Games 通常不会发布此类信息。
  10. 早期的做法(可追溯到 Trainz 1.x)是在运行时菜单中使用关键字/标记 “thumb”,并在引号中使用 pathspec 引用指向 240x180 的缩略图图像。art 文件夹包含一个带有 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 构建资产时通过软件预筛选传递自动实现。这些操作实际上保证了旧资产下载会存在故障。这是 N3V 程序员做过的最愚蠢、最傲慢的事情之一,而 Auran 更有经验的软件人员永远不会对社区的时间成本如此漫不经心。

参考资料

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



华夏公益教科书