跳转到内容

Trainz/refs/TrainzBaseSpec

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

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


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) 开始的每个版本的内容管理器模块都会越来越多地实施预先承诺的错误测试[note 1],并且每个模块在警告此类标记未定义时变得越来越坚决,因为它期望此类标记 - 数据对。

在 TANE 后期发布的版本中,许多这些“昨天默认”的定义行如今将更频繁地生成故障,要求明确定义值,而过去在加载时默认使用了这些值。[note 2] 与旧时代相比,这是一种比较好的烦恼,因为在旧时代,错误的资产定义有时会导致臭名昭著的“蓝屏死机”或更常见的情况,使运行时软件崩溃回桌面,导致编辑丢失,并且可能需要重建数据库。

子类

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需的元素:一个config.txt 文件 用于组织数据,一个标识,即一个kuid(仅用户名无用,但可以创建合法的资产,即使没有名称!),最后,一个合法定义的种类标记。种类负责,是乐队的指挥、排长或首席执行官下达指示——为在之后处理的所有内容设置要求。简而言之,种类值(一个小型、精选的严格定义的成员专属组)告诉 Trainz 软件在创建的虚拟世界中要渲染和显示什么以及如何(或在何处)找到与该 config.txt 文件中链接在一起的资产部分的其他部分。
  下面的每个子类都被认为具有TrainzBaseSpec 作为其数据的“父类”。[note 3] 下面列出的几种种类(带下划线的那些)是遗留种类,早于 TS2009 发布中对 Trainz 数据模型 的更改(即自 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 表 (容器)

  { 依赖项列表
  按 kuids }

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

 



支持的标签

[编辑 | 编辑源代码]

TrainzBaseSpecconfig.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 表 中指定依赖项列表,即软件套件的各个部分组装的其他组件资产,以构成 kuid 表容器 中可渲染和可使用的资产。
  • 在许多资产的核心内部,特定的标签可以由kuid 引用定义,并将引用资产用作一部分。这实际上是如何实现重新蒙皮的,并且可以在资产中使用网格,尽管更现代的做法建议这种引用是到网格库资产的引用。
KUID2
KUID 格式的更新和更新跟踪修改版本,它允许指定版本号。<kuid:xxx:yyy> 等同于 <kuid2:xxx:yyy:0> (零修订或版本零,表示原始版本
  • 这允许数据项(Trainz 资产)携带资产的固有版本代码。这通常不会与 CM Trainz-build 代码(标识软件技术级别)匹配,但表明了之前的版本历史。
  • 在数据库中同时存在两种资产的情况下,具有更高后缀代码的 KUID2 资产会覆盖或替换旧的资产。拥有早期版本并非必需,但CM 会将缺少的修订链列为缺少的依赖项,对于那些讨厌 CM 中该功能被污染的人来说,这是一个软件错误,或者程序员将其保留为“特性”,无论如何,它会降低使用 CM 来识别用户缺少了什么的功能的效用,并导致用户花费时间手动找出到底是什么是什么。

 

trainz-build 标签

[编辑 | 编辑源代码]
主要覆盖范围: trainz-build 标签,缩写: TB & TBV (TB-value)
类型: 一个十进制浮点数,由 N3V 枚举 [2] 用于跟踪和识别与演进软件技术水平相对应的​​数据类型。
范围: 1.0–4.3,直接对应(映射3rd' 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 SPs TBDL)递增 0.1。
  • 从 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 版本,这通常解析为 1.3 作为 TBV。

 

用户名标签

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

在 TC1 和 TC2(v2.7)之后的 trainz-build 中,用户名在编辑资产时也成为操作系统文件夹名称,而资产文件名被忽略,而它在 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 页面提供扩展的详细信息,但可以容忍相当长的文本块。有些人使用文本块的底部作为版本更改记录。

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

description-XX 标签

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

 

字符串表容器

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

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

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

 

string-table-XX 容器

[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 列表容器,与过时的表容器(下文)格式相同。一个虚拟参数 + 一个(依赖)kuid
字段定义:定义该资产依赖的资产列表的键值。

 

通常
只有具有子组件或具有替代选择(货物)的资产才会具有长度可观的 kuid-table。大多数具有子组件的资产只有几个。
  • 其次,由于内部关键字有时是“自动定义”的,因此只列出一个没有名称的数字,作为占位符参数,伪关键字可以是任何唯一值(通常是零索引顺序整数。[notes 1])。用户或作者可以根据喜好为其命名或不命名。
  • 此表中的条目有两个用途
    首先:确保游戏系统知道该依赖项,以便安装和加载此资产会成功安装和加载所有依赖项,以及
    其次:允许脚本定位相关的子资产。
  • kuid-table 中只应包含第一级依赖项——具有自身依赖关系的子资产或部分资产将在该子资产的验证和数据库提交中处理。
  • 循环依赖是非法的。
  • 如果资产也被标记为该资产的过时版本,则不能将其列为依赖项。(在 Trainz 资产索引中,kuid 中只有一个替换 kuid 槽(历史上为 assets.tdx 文件),这将创建一个循环定义,要求该资产的较旧版本!)
  • 同样,资产也不能被列为自身的依赖项。[OTOH,这在将地图和会话移植到安装中并使用 GSARS 更改 kuid 以避免重叠,而不会覆盖已在目标安装中使用相同 kuid 的资产,并且不会出现错误消息时,已被体验到(即,作为 TSxx CM 中成功无故障提交的资产而被见证)。] 是否也需要这样做,则需要比我更勇敢或更愚蠢的人! --Fabartus,编辑。
格式 (所有值均为 <kuid:aaaaa.bbbbb> 格式)
kuid-table {
 0            Kuid-1
 1            Kuid-2
 3            Kuid-3
 ...          kuid-ii
 N-1          Kuid-N
 }
大多数用户的第一批内容是自动克隆一个内置路线及其关联的会话。通常是因为有人想要修改某些东西。检查路线或会话的 kuid 表格将使新手或老手 Trainzer 拥有一个可编辑的路线资产列表。这些可以很容易地转化为一个样式表“过滤器”(一个选择列表),它允许使用与原作者相同的资产来添加和修改路线... 或者在自己的扩展中复制他的风格。


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

注意连接单词的下划线... 两个符号,键和值!我们让学生弄清楚将 kuids 添加到装载和允许产品的队列表条目中的位置。(不客气,但这是一个更改名称的好理由!保持事物清晰几乎是制作资产的整个战斗!) 

obsolete-table 容器

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

 

category-region 标签

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中过滤(搜索标准)
类型: 枚举字符串或字符串数组。
字段定义: 一个由分号(';')分隔的两个字符 category-region 标签 代码列表。字符串中不应存在其他字符(包括空格等)。此资产被认为与指定的每个区域相关——这与 kind traincarkind mosignal 资产最相关,但可以为任何资产提供。
示例
category-region "CA;US"
category-region "CA;MX;US"(北美国家,加拿大,墨西哥,美国)
category-region "CA;CS;DE;MX;US;VE;AU;FR;IN;IT;JP;KR;ES;AR;AT;BE;CH;DK;IE;EE;NL; NO;NZ;PA;PL;PR;PT;RO;RU;SE;SK;UA;UK"(大多数第一世界国家)

 

类别-类别标签

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


 

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

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

 

类别-年代标签

[编辑 | 编辑源代码]
目的:在 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 的“图标”,用于 Railyard 和测绘员资产选择 API,它应该有一个 Alphamask 或一个非常浅色的背景。许多旧的没有使用 jpg 文件,而是在一个“_art”子文件夹中列出 .tga 文件(Targa 真彩色)(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 热修复程序中被放弃,因为用户社区中出现了许多抱怨。
 • 如果缺少缩略图容器的资产(即使使用了过时的 thumb 标签)后来在新的内置路线或会话中被选中,该资产通常会作为没有图像的项目进行分发 - 如果纹理.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) 重新保存对资产的任何更改(将重新验证的资产提交(提交)到数据库)。

 

脚本标签

[编辑 | 编辑源代码]
类型:字符串文件名。
字段定义:指示此资产的主脚本文件的文件路径(如果有)。此文件路径应始终以“.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 字符串|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(Beta)。

 

类型:UTF-8 多行字符串。(已由程序员法令弃用。)
字段定义:描述资产创建者希望如何使用此资产的许可证。最常见的是许可证声明禁止在任何付费路线、依赖资产(例如转向架、联轴器等火车部件)或重制版中使用受版权保护的资产,包括在任何收费网站上分发该资产。(理论上,即使对于 DLS 也是正确的。FCT 费用是为了更快地访问和无限次下载,而不是为了访问这些资产。)
license 标签的含义不明确,N3V 不建议使用它,但它的出现早于 N3V 的管理 6-7 年。
上传到下载站或提供用于包含在游戏中的内容可能处于特定的重新分发合同或许可协议下,该协议取代了此字段中的任何文本。license 字段不提供本地化支持。license 字段的文本未经 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 中弃用主要是那些与机车 KIND 相关的),并且在所有情况下,在 TS2009-SP0 之后和所有N3V Games 版本之后(尽管许多用户发现其中一些标签有用,但它对内容创建者造成的时效惩罚,或者仅仅忽略那些在 预处理操作中不再有用的能力)并且如果资源被打开进行编辑并通过提高 trainz-build 标签 到 V2.9 及更高 数据模型 来进行部分升级,则会产生错误(错误消息):
  • 资源可以本地升级到 V2.8 及之前版本,并且通常可以正常运行,即使在经过了几代数据模型元素改进之后,也能正常运行。通过这种方式,许多资源可以实现与 TRS2004 或 TRS2006 数据建模功能,同时在 TS 版本的内部处理和渲染中保持一致。
  • 例如,大多数 TRS 时代之前的 data model 资源 (v1.0–v2.3) 可以通过添加一个网格表来在 TS 版本中正常工作,以取代自 TS 版本以来被忽略的“资源文件名”的旧效果,从而使用原始 Trainz data model 的文件夹分组使用带后缀“_art”、“_body”和“_shadow”的子文件夹和名称来定义路径(其中由资源名称加后缀定义的字符串设置了资源组件的路径)。
  • 相反,带有 TBs v2.9 及更高版本的 TS 版本资源通常可以通过了解这些标签的作用和使用方式,以及一些明智的修改来回溯到旧版数据模型中,以消除纹理.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 时代的 data 子文件夹系统,在火车车厢资源中,给子文件夹命名为“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

 

注意:用户名(英文)是 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'* 所取代。
  • 用 string-array 类型 category-region 替换,该类型不包含空格,并在引用的标签部分中枚举的两个字符国家代码之间使用分号隔开;这些代码以两个大写字母的全写形式给出,包含 枚举 代码,代码之间用 ';' 分隔,但最后一个代码在终止结束引号之前没有分隔符。
  • 字符串数组中的任何 空格 都会导致读取错误和故障消息,包括结尾引号之前的空格。

 

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

 

shadows 标签

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

 

thumbnail 标签

[edit | edit source]

thumbnail 标签是 缩略图容器 的早期单视图实现(上面也有简要说明)。Trainz 的早期 pre-N3V 程序员版本将在主资产根文件夹或资产名称_art 或资产名称_body 文件夹中查找一个 .jpg 文件,最好大小为 240x180 像素,并将其用于在 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 取消了这些本地可点击过滤器功能和使用,转而使用新的、更繁琐的过滤器。这些使工具选择变得快速简单,而不是在工具选项卡之间切换时变慢和暂停——如今的 pre-TANE 版本在工具选项卡之间来回切换时,经常会因重新加载整个选择列表而不堪重负。
  • type 和 region 都默认设置为 'All',提供与 TS09 及其后版本中的工具相同的超级列表。
  • 在 TRS2006 的衍生版本(即 TC3)之后,每个 type 标签都已过时,因为在程序员的意识中,他们在 Surveyor 工具中用 TS09 选择列表 和过滤器替换了 *粗略过滤* 组选择器 'type 和 region'——而没有赋予用户保存多个选择列表或轻松加载在 CM 中定义和精炼的过滤器的功能。

 

笔记

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

参考资料

[编辑 | 编辑源代码]
  • 此页面主体内容取自 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 历史记录 页面。



华夏公益教科书