跳转到内容

Trainz/refs/TrainzBaseSpec

来自维基教科书,开放世界开放书籍
(重定向自 Trainz/era code)
logo
Trainz 标注参考页

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


KIND 层级结构简介

[编辑 | 编辑源代码]

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

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

在 TANE 之后版本中,许多以前默认定义的这些行,现在更经常地会产生错误,要求明确定义值,而以前在加载时这些值是默认的。 [注释 2]与旧时代相比,这是一种更好的烦恼,在旧时代,错误的资源定义有时会导致臭名昭著的“蓝屏死机”,或者更常见的是将运行时软件崩溃回桌面,导致编辑丢失,并且可能需要重建数据库。

子类

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需的元素:一个 config.txt 文件 来组织数据,一个身份,即 kuid(仅用户名对你没有用,但是,可以创建合法的资源而无需名称!)最后,一个合法定义的种类标签。种类负责,是管弦乐队的指挥、排长或 CEO 指示——为之后处理的所有内容设置要求。简而言之,种类的值,一个由少量严格定义的会员组成的群体——告诉 Trainz 软件在虚拟世界中渲染和显示什么,以及如何(或在何处)找到将这些资源的一部分链接在一起的配置文件中的其他部分。
  下面的每个子类都被认为具有 TrainzBaseSpec 作为其数据的“父类”。 [注释 3]下面列出的一些种类(那些带下划线的)是遗留种类,早于TS2009 发布时对Trainz 数据模型 的更改(即自 2008 年后期以来),N3V 程序员仅对它实施了逐渐(增量)的更改。
  目前可以在 N3V Trainz 维基TrainzOnline 站点这里内容创建者指南 部分中找到基于这些遗留种类的修复资源的详细信息,并提供遗留种类的示例这里。强烈建议Trainz 下载站 的任何用户或任何考虑创建内容的用户仔细阅读 CCG。了解旧内容定义方式的背景历史可以与 TrainzOnline 对相同数据类型的当前覆盖范围进行对比,并进行比较,因为这种过去与现在的对比通常会为修复、更改和自定义资源提供宝贵的见解。更重要的是,CCG 中的写作是由专业人员撰写的,并且更具循环论证性——它通常会让你了解更改这一点或那一点的扩展效果,而 Trainz Wiki 却没有提供。TrainzOnline 上发布的 CCG 是TC1&2/TC3 版本——自 1999 年的Trainz 开始,出版的几本小册子中的最新版本;TC3 CCG 包含需要适当更新的 TRS2004/TRS2006 和UTC 数据模型中的更改后的 Enginespecs 机车资源。

TrainzBaseSpec 子类种类(类型资源组)

 


表 I,TBS 标准定义

[edit | edit source]

TBS 标准定义

[edit source]

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

  • 容器是'键' 和 '键值' 对的集合,并且 TBS 中的 '上层容器'(与缩略图容器中的子容器相反)通常以 '-table' 结尾。
 类型    "'字符串值'"
 trainz-build '浮点数', 1 位小数
 kuid  <Kuid 编码值>
 用户名    用户名 "'字符串值'"
 用户名-XX    用户名-XX "'字符串值'"
 描述    描述 "'字符串值'"
 描述-XX    描述-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 资源组 资源的列表。

 



支持的标签

[edit | edit source]

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

kind 标签

[edit | edit source]
类型: 字符串。
字段定义:config.txt 文件 所代表的资源类型。请参见索引 类型 和列表:此处(上方)

 

kuid 标签

[edit | edit source]
类型: KUID(简短),主: KUIDs
字段定义: 引用此资源的唯一资源 ID。
KUID
'Koolthingz Unique IDentifier'. Trainz 系统软件的唯一数据库参考号,也扩展到在 KUID2 格式中跟踪多个版本。Trainz 可升级性和资源模块化设计的核心,因为每个资源都有其唯一的 kuid 代码,因此可以从另一个资源中指定组件(转向架)或整个车厢,并在新资源中选择性地替换其中任何一个(重新蒙皮或修改卡车)。
  • 基本 KUID 格式:'<kuid:wwwwww:xxxxxx>',其中 wwwwww 是作者的“唯一 Trainz 身份”,xxxxxx 代表作者分配的模型标识代码
编辑者注: 但请注意,许多在线网站需要使用单独的数据字段(作者和序列号)进行搜索,内容管理器需要三个或四个冒号分隔的数据字段,但不需要括号,尽管逗号是搜索 API 窗口中多个 kuids 的必需分隔符。通常更容易将数据汇总到完整的 kuid 标签结束括号中,并且通常更容易阅读。对于剪切和粘贴一个巨大的列表,缓冲区大小限制可能会中断列表的末尾,在这种情况下,在文本编辑器中修剪掉两个结束括号可能会允许将整个列表放入 API 中。



  • 大多数 Trainz 资源在 kuid-table 中指定依赖项列表,即软件套件的不同部分组装的其他组件资源,以在 kuid-table 容器 中形成一个可渲染和可用的资源。
  • 在许多资源的内部,特定标签可以由kuid 引用定义,并将引用的资源用作一部分。实际上,这就是重新蒙皮的实现方式,并且可以使用网格资源,尽管更现代的做法建议此类引用应指向网格库资源。
KUID2
KUID 格式的更新和更新跟踪修改版本,允许指定版本号。<kuid:xxx:yyy> 等同于 <kuid2:xxx:yyy:0>(零次修订或版本零,意味着原始版本
  • 这允许数据项(Trainz 资源)携带资源的固有版本代码。这通常不会与 CM Trainz-build 代码(标识软件技术级别)匹配,但指示了先前版本的历史记录。
  • 在数据库中同时存在两种资源的情况下,具有较高后缀代码的资源在 KUID2 中会覆盖或替换较旧的资源。拥有早期版本并非必要,但 CM 会将缺失的修订链列为缺失的依赖项,对于那些反感 CM 中污染该设施的软件错误或程序员保留的“功能”的人来说,这是一个软件错误,无论如何,这会降低使用 CM 来识别用户缺少什么内容的效用,并导致用户花费时间手动弄清楚究竟是什么。

 

trainz-build 标签

[edit | edit source]
主要覆盖范围: trainz-build 标签,缩写: 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 之间的差距可能是外语版本,或者更可能是经过几个小时的挖掘和研究后发现的,因为在构建了最初 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 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 版本号。相比之下,内容创建者社区试图将这个数字设置得尽可能低,以便在下载新资产时,尽可能扩大新资产的受众/用户范围。 优秀的素材制作者会在对应版本的裸机安装(没有添加素材)上进行测试,并验证生成的 cdp 文件是否包含所有相关材料。
  • 一些资产类型会根据它们的 trainz-build 版本标签进行显著不同的解析。注意:trainz-build 标签 是强制性的。如果没有指定,Trainz 将根据 config.txt_file 的内容尝试猜测一个旧版 Trainz 版本,这通常会将 TBV 解析为 1.3。

 

用户名标签

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

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

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


 
 

用户名-XX 标签

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

 

描述标签

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

描述在内容管理器“资产详细信息”窗格中可见,用于阐明资产名称,提供规格,以及通常的历史信息。

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

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

description-XX 标签

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

 

字符串表容器

[edit | edit source]
类型: UTF-8 字符串列表容器,字符串表容器
字段定义: 一个英文字符串的键值列表。每个键都是一个有意义的脚本标识符,映射到二进制数据并由二进制数据引用。每个值都是一个英文字符串。英文字符串可以包含或引用非英文专有名词作为标识符。 非母语为英语的作者必须仍然创建一个没有后缀的字符串表容器,如果需要的话。软件只链接到并引用字符串表容器中没有后缀的名称和值,这会让西班牙语、法语、德语、捷克语、荷兰语……日语作者感到非常厌烦。换句话说,带后缀的字符串表仅用于翻译目的,这会在地图以非英语编写时产生问题——没有 string-table-en 来提供用于反向翻译的表。同样,username-en 和 description-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 版本捆绑的路线中使用的许多资产通常会被翻译,并且拥有描述-XX 和字符串表的完整本地化翻译集。特别是,与版本捆绑的路线和会话在每次零售版本发布时都会被专业翻译成多种语言。

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

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

kuid-table 容器

[edit | edit source]

kuid-table   {
 numberit_library                      <kuid2:75134:99003:7>
 0                                     <kuid:-3:10164>
 1                                     <kuid:-1:42004201>
 2                                     <kuid2:50567:11155:1>
 3                                     <kuid2:58422:50120:1>
 4                                     <kuid:-3:10003>
 5                                     <kuid2:30671:94407101:1>
 6                                     <kuid2:87907:94407101:1>
 7                                     <kuid2:87907:94407103:1>
 8                                     <kuid2:87907:94407105:1>
 9                                     <kuid2:30671:9870190:1>
 10                                    <kuid2:30671:94407100:1>
 11                                    <kuid2:87907:94407100:1>
 12                                    <kuid2:87907:94407102:1>
 13                                    <kuid2:87907:94407104:1>
 14                                    <kuid:-3:10013>
 15                                    <kuid2:60318:10008:1>
 16                                    <kuid2:60318:10010:2>
 17                                    <kuid2:189041:301:1>
 18                                    <kuid2:50567:11121:1>
 19                                    <kuid2:30671:9840820:1>
 20                                    <kuid2:30671:9870899:1>
 21                                    <kuid2:50567:12646:3>
 22                                    <kuid2:124017:30000:2>
 23                                    <kuid2:124017:30001:2>
 24                                    <kuid2:124017:30002:2>
 25                                    <kuid2:124017:30003:2>
 lodi_icon                             <kuid2:124017:35000:1>
 lodi_lib                              <kuid2:124017:40000:1>
 26                                    <kuid2:30671:69006:1>
 27                                    <kuid2:124017:35000:1>
 28                                    <kuid2:30671:90810901:1>
 29                                    <kuid2:30671:9081290:1>
 30                                    <kuid2:60318:10009:1>
}
类型: KUID 列表容器,与 过时表容器(下面)格式相同。一个 虚拟参数 + 一个(依赖)kuid
字段定义: 用于区分该资产依赖的资产列表的键值对。

 

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

注意连接单词的下划线...两个符号,键和值!我们将找出如何将 kuids 添加到负载和允许的产品队列表条目中,让学生来处理。(不用谢,但这确实是一个更改名称的好理由!保持清晰是制作资产的关键!)。 

过时表格容器

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

 

类别区域标签

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中进行过滤(搜索条件)
类型: 枚举字符串或字符串数组。
字段定义: 由分号 (;) 分隔的两个字符的 类别区域标签 代码列表。字符串中不应该存在其他字符(包括空格等)。此资产被认为与每个指定的区域相关——这对于 火车车类型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 个字符的 类别类 代码,描述此内容项。类别类 标签用于在资产 KIND 隐式提供的基础上提供额外的用户子分类。每个 Trainz 资产的类别类标签有助于描述资产在游戏中的“意图”,而不是资产的内部结构。
内容创建者指南(CCG)适用于 TRS2006 和 Trainz Classics 的 CCG 说明,这些类代表一个标准化系统,用于引用各种类型的机车、滚动库存、风景、样条线和工业资产。当搜索和/或过滤合适的资产以在会话或路线(布局)中制作内容时,类别类分类代码对所有 Trainzers 来说都很重要。


 

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

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

 

category-era 标签

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

 

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

 

缩略图容器

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中进行过滤(搜索条件)
类型: 缩略图容器
字段定义: 在整个游戏环境(包括在游戏中、在 内容管理器 中以及在 下载站 上)中用于在 2D 预览框、列表和图标形式中表示此资产的缩略图。每个数据集都包含在一个子容器中(通常)使用一个 占位符参数 作为键名称或标签。[注 8] 惯例将这些数字设置为 0 索引整数,但该值可以是任何可以作为 字符串 评估的非空文本值。(参见下面的第二个示例)
一个实际的示例
(来自资产修复编辑[3]
thumbnails {
	0 {
		width					240
		height					180
		image					"$Screenshot (240)(kuid 68787 25222).jpg"
	}
	1 {
		width					512
		height					512
		image					"$Screenshot (512)(kuid 68787 25222).jpg"
	}
}

另一个常见尺寸是 128x64 的“图标”,用于 铁路场 和测量员资产选择 API,它应该有一个 Alpha 遮罩 或一个非常浅的背景。许多较旧的资产没有使用 jpg 文件,而是列出了 .tga 文件(Targa 真彩色)在一个“_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 的一个热修复程序中被取消,此前用户社区对此提出了很多抱怨。
 • 如果缺少缩略图容器的资源(即使有旧的缩略图标签)后来在新构建的内置路线或会话中被选中,该资源通常将被分发为没有图像的项目——如果没有被 texture.txt 或 config.txt 缩略图容器正确引用,它们会被剥离出来[注释 11]。  

软件链接

[编辑 | 编辑源代码]

info-url 标签

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

此外,建议使用自定义 Trainz 短 URL 格式,而不是直接链接到这些域名,以便将 URL 针对未来可能的网站布局更改进行防范。“短 URL”是 Trainz 特定的 URL,通过允许内容创建者引用 N3V 网站上的某些页面来帮助防范未来的内容,而无需依赖特定的网页布局。短 URL 旨在用于游戏内使用,例如 info-url 链接,并且只会在嵌入式网页浏览器中工作,而不会在任何外部网页浏览器中工作。如果存在此标签,则游戏内将提供按钮,允许用户查看资源描述或帮助,而无需离开游戏环境。

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

建议在任何情况下都使用通用组页面来表示具有相似功能但外观略有不同的整类资源。这减少了创建、维护和本地化此类文档的时间成本。

 

must-have-product-rights 标签

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

 

must-not-have-product-rights 标签

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

 

特权容器

[编辑 | 编辑源代码]
类型:“特权”容器 是某些作者使用的 DRM,版权保护实现,也可以称为特权 DRM 容器。DRM 指的是数字版权管理,这就是它的实现方式。如果定义了,某些参数甚至会阻止查看config.txt 文件,以便获取资源。
字段定义:由资源创建者设置的一组权限,以控制如何操作此资源。
privileges {
  is-payware-content 0 
  permit-listing 1
  permit-edit 1
  permit-commit 1
}

  上面的容器使用默认值设置,它表明

0) 这不是付费软件,因此其他字段具有相关性 [当付费软件编辑和提交为零时,但列表可能允许];

允许

1) 查看config.txt 文件中的资源,
2) 编辑资源,包括查看其主文件夹中组件文件的内容,
3) 重新保存对资源的任何更改(提交(提交)重新验证的资源到数据库)。

 

脚本标签

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

 

类标签

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

 

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 保留根据扩展创建者的指南,在稍后日期为 扩展容器 中的特定条目添加验证的权利。

 


更新且较少见

[编辑 | 编辑源代码]

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

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

[编辑 | 编辑源代码]
类型: 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 年。
上传到 下载站 或提供用于包含到游戏中的内容可能在特定再分配合同或许可协议下,该协议取代了此字段中的任何文本。许可字段不提供本地化支持。许可字段的文本未经 Auran 或 N3V 验证或执行,可能具有法律约束力,也可能不具有法律约束力。
另一方面,Planet Auran 的历史表明,有人通过将他人的内容作为自己的内容来侵犯版权,可能会导致从 Auran 网站上迅速被禁以及永久封锁下载站权限等。此外,社区将严厉打击其他用户侵犯他人的版权行为,并且会同时排斥侵权者并忽略 DLS 上允许保留的任何资产。
总之,实验和修改资产是 Trainzer 试图攀登陡峭的内容创建学习曲线(每个人都希望有更多内容创建者!)的一种公认的甚至被默许的生活方式,但如果资产具有依赖部分,尤其是网格、脚本、纹理,这些都是知识产权 - 在上传您的创作之前,请获得使用属于他人的这些部分的许可。
资产部分由kuid 引用指定,不应包含在此声明中 - 使用通用联轴器、转向架或基本火车车厢网格(Auran 发行了几种标准类型,许多作者默认情况下通过对网格进行 kuid 引用来使用,例如检查箱车的依赖项(英国:Covered Wagons 或 Vans) - 超过一半可能正在使用 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 中(主要是与机车 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 两字母后缀;与 description-XX 类似,“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 之后,它也取代了 CM 打开文件夹进行编辑时的“asset-name”。

按照惯例,子文件夹名称将具有以 username/asset-name 字段开头的 pathspec 名称,并使用后缀 _art、_body 和 _shadow 作为正常命名约定的一部分。 这可能是 3ds Maxgmax 约定,延续到 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 国家代码的“string-array”category-region 标签中取代。
  • 用 string-array 类型 category-region 替换,在两个字符的国家代码之间没有空格和分号,这些代码在引用的标签部分中枚举;这些代码以两个大写的字母的形式给出,包含 枚举 代码,然后是代码之间的“;” 分隔符,但最后一个分隔符除外,该分隔符位于末尾引号之前。
  • 字符串数组中的任何 空格 都会导致读取错误和故障消息,包括结尾引号之前的空格。

 

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

 

shadows 标签

[edit | edit source]
参见上面的 bendy,已弃用/过时的预 TS2009 遗留 轨道类型 资产模式控制标签。

 

thumbnail 标签

[edit | edit source]

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

type 标签

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



华夏公益教科书