跳转至内容

Trainz/refs/TrainzBaseSpec

来自维基教科书,开放世界中的开放书籍
(从 Trainz/TrainzBaseSpec 重定向)
logo
Trainz 注释参考页面

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


KIND 层级结构简介

[编辑 | 编辑源代码]

KIND TrainzBaseSpec 为所有 Trainz 资源类型在所有 config.txt ini 文件 中提供基本定义。TBS 为许多“标准标签”提供,这些标签是所有 Trainz 资源共有的(或者至少可以合法地定义[1]

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

许多这些在 TANE 之后版本中“昨天默认”的定义行,今天反而更经常地会生成一个错误,要求一个明确的值定义,而这些值在过去加载时是默认的。[注释 2] 与过去的时代相比,这是一个更令人讨厌的事情,那时一个错误的资源定义有时会导致臭名昭著的“蓝屏死机”,或者更常见的是,将运行时软件崩溃回桌面,导致编辑丢失,并可能需要重建数据库。

所有 Trainz 定义的数据(内容)都有三个必备元素:一个 config.txt 文件 来组织数据,一个标识,意味着一个 kuid(只有用户名对你毫无用处,然而一个合法的资源可以不带名称地创建!)最后,一个合法定义的 kind 标签。kind 负责,是乐队的指挥,是排长或 CEO 指示——为在之后处理的所有内容设置要求。简而言之,kinds 的值,一个很小的、精心定义的、成员只有少数的群体——告诉 Trainz 软件应该在我们的虚拟世界中渲染和显示什么,以及如何(或在哪里)找到其他部分,这些部分需要使资源的这些部分在该 config.txt 文件中链接在一起。
  下面的每个子类都被认为具有 TrainzBaseSpec 作为其数据“父类”。[注释 3] 下面列出的几个 kind,那些带下划线的,是过时的 kind,早于 TS2009 版本中 Trainz 数据模型 的更改(即从 2008 年后期开始),N3V 程序员仅对其施加了逐渐(增量)的更改。
  当前可以在 N3V Trainz Wiki TrainzOnline 站点此处Content Creator's Guide 部分中找到有关基于这些过时 kind 修复资源的详细信息,其中包含 过时 Kinds 的示例此处。强烈建议 Trainz Download Station 的所有用户或任何考虑创建内容的用户仔细阅读 CCG。通过了解旧内容是如何定义的,然后与 TrainzOnline 对相同数据类型的当前覆盖进行对比,可以获得宝贵的见解,因为这种过去与现在的对比通常可以为修复、更改和自定义资源提供宝贵的见解。更重要的是,CCG 在 TrainzOnline 上发布的是 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 (容器)

  { 依赖项列表
 按 kuid }

 一个键值表,列出此资产所依赖的所有资产。
 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    "作者/组的网页地址 '字符串值'"
 member-of-groups (容器)
    {
    }
 此资产所属的 KIND 资产组 资产列表。

 



支持的标签

[编辑 | 编辑来源]

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

kind 标签

[编辑 | 编辑来源]
类型: 字符串。
字段定义:config.txt 文件 所代表的资产类型。请参阅索引 种类 和列表: 这里(上面)

 

kuid 标签

[编辑 | 编辑来源]
类型: KUID (简短),主要: KUIDs
字段定义: 引用此资产的唯一资产 ID。
KUID
'Koolthingz Unique IDentifier'. Trainz 系统软件的 *资产唯一数据库引用编号*,也扩展到 KUID2 形式中跟踪多个版本。Trainz 可升级性和资产模块化设计的核心,因为每个资产都有自己独特的 kuid 代码,因此可以指定一个组件(转向架)或来自另一个的整个火车车厢,并在新资产中选择性地替换其中任何一个(重新贴皮或修改卡车)。
  • 基本 KUID 格式: '<kuid:wwwwww:xxxxxx>',其中 wwwwww 是 *作者* 的“Trainz 唯一身份”,xxxxxx 代表作者分配的 模型标识代码
编辑者注: 请注意,*许多在线网站将需要使用单独的数据字段*(作者和序列号)进行搜索,内容管理器将需要三个或四个冒号分隔的数据字段,但不需要方括号,虽然在搜索 API 窗口中需要逗号作为多个 kuid 的分隔符。通常更容易在完整的 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-value)
类型: N3V 枚举 的一位小数浮点数[2],用于跟踪和识别与已演进软件的技术级别相对应的数据类型。
范围: 1.0–4.3,直接对应(*映射3rd*)Trainz 1.0—TANE-SP1+hf2;*预计该值将随着每次新的主要软件升级而递增 0.1。*

每个合法值必须与已发布的 Trainz 版本号 完全匹配,但以下情况除外

  • 分配给 TBV 或版本值的 V1.4 是 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 进军 Mac 电脑,打断了基于 Windows 的 Trainz 版本在 TBV 3.4、3.5、3.6、3.7 和 3.8 之间的平滑递增,这些 TBV 在基于 Windows 和 Mac 的操作系统之间交织在一起。
    注意: 热修复 不会更改版本号。
字段定义: 此资产构建的(和存档的)文件格式版本,不一定与资产使用的技术级别有任何关系,但对应于在 Content Creator Plus 中创建资产时分配的资产级别——与在 CM 的标题栏中找到的相同。
  • 程序员建议此号码通常应设置为正在创建和测试资产的 Trainz 安装的 Trainz 版本号。相比之下,Content Creator 社区试图将此号码设置得尽可能低,以便在下载新资产时为其提供尽可能广泛的受众/用户范围。更好的内容创作者将在裸安装(无添加内容)的相应版本上对其进行测试,并验证生成的 cdp 是否包含所有相关材料。
  • 某些资产类型根据其trainz-build 版本标签的解析方式有很大不同。注意:trainz-build 标签 是强制性的。如果未指定,Trainz 将尝试根据 config.txt_file 的内容来猜测遗留 Trainz 版本,这通常会将 TBV 解析为 1.3。

 

用户名标签

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

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

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


 
 

用户名-XX 标签

[edit | edit source]
类型:UTF-8 字符串,用户名标签 的替代语言版本。
字段定义:(其中XX 被替换为适当的 本地化代码,用于表示语言。)此资产的本地化人类可见名称。此字段类似于用户名字段,但表示非英语区域设置。资产中可能存在多个用户名-XX 标签,每个支持的区域设置一个。如果适当的“用户名-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”标签不存在于给定最终用户系统上以表示此资产,则改为使用英文description 标签。

 

string-table 容器

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

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

  • 这些左侧的键或标签既充当“本地索引关键字”,又充当“语言之间的等效表”
  • 左侧栏始终包含内容创建者赋予的“特殊”名称的对象,例如信号、轨道标记和行业、连接点等的名称,这些名称可能会被引用,并会出现在驾驶员和测量员模块的“查找公用设施”(CTRL+F ) 功能小程序。
  • 相反,索引侧也不会*列出默认的名称*,例如在构建路线图时由随机数自动索引的无数连接点(即毫无意义的杂乱无章。如果重要,路线构建 CC 会命名它!),但会自动包含可能临时的资产,例如火车车的默认名称。如果重命名,这些名称将取代其对应的默认名称。
  • 它的主要用途是那些旨在与脚本引用进行交互并承担可变属性的对象,例如火车站或行业需要或准备运送到行业的货物数量,或由交互式火车车(滚动行业到脚本)和其他可配置资产(如简单通用的广告牌风格标志)携带,通过一些高度调整和角度扭转,可以放置在库存建筑或行业的正面,以便在建筑物上放置不同的商业名称。换句话说,一些可配置的场景。
  • 总体而言,在路线地图或布局中,这些 LHS 名称对应于地图资产上的命名对象,这就是大多数字符串表出现的地方(从字面上看,由大型路线kind 地图中的数千个条目填充)。
  • 在某些资产中,该默认名称与软件脚本挂钩,因此字符串表变得*特别重要*,而不是*无趣*。(见下文)
  • 在每种类型的资产中,使用字符串表类型始终是合法的,就像描述标签和 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 槽,这将创建一个循环定义,要求它自己的旧版本!)
  • 同样,资产不能被列为它自己的依赖关系。[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 添加到装载和允许的产品队列表条目,留给学生。(欢迎你,但这是更改名称的充分理由!保持事情井井有条几乎是制作资产的全部战斗!) 

obsolete-table 容器

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

 

类别 - 地区标签

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

 

category-class 标签

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


 

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

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

 

category-era 标签

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

 

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

 

缩略图容器

[edit | edit source]
用途: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 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 修复程序中被取消,因为用户社区中出现了许多抱怨。
 • 如果缺少缩略图容器的资产(即使具有过时的 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 链接,它们只会在嵌入式 Web 浏览器中起作用,而不会在任何外部 Web 浏览器中起作用。在存在此标签的情况下,游戏内按钮将允许用户查看资产描述或帮助,而无需离开游戏环境。

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

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

 

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 容器 是顶层 config.txt 文件 条目,可用于任何源自 KIND TrainzBaseSpec 的资产(简而言之,所有资产)。此容器允许资产直接 包含另一个资产的脚本 来自父资产的脚本文件,使用 N3V TrainzScript's Script_Include_Directive

相关

扩展容器是具有特定命名约定的自定义标签或子容器列表。

S-I-T 容器支持的标签

[编辑 | 编辑源代码]

此容器是脚本化资产名称及其 KUID 的简单键值表,在编译资产的脚本文件时,会在其中搜索脚本包含。键或标签名称目前未使用(即是一个 占位符参数)在搜索中;该值指示要包含的资产的 KUID。能够搜索和识别键名是内容创建者要求的功能,因此建议使用脚本文件名而不是数字虚拟标签名作为最佳实践,因为它比 KUID 引用传达的信息更多。

S-I-T 容器验证

[编辑 | 编辑源代码]

通常最好将这些引用限制为 KIND 库 资产,但这并非强制性,可以引用任何资产。

S-I-T 容器示例

[编辑 | 编辑源代码]
script-include-table {
                       a-key        <kuid:nnnn:nnnnn>
                       enginespec   <kuid2:www:xxxxx:yy>
                       anim-doors   <kuid:tttt:uuuuuu>
                     }

 

扩展容器

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

 


更新且较少见的

[编辑 | 编辑源代码]

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

类别-关键词 标签

[编辑 | 编辑源代码]
类型: UTF-8 字符串。
字段定义: 一个自然语言关键词列表,用分号 (;) 分隔。字符串中不应包含其他字符(包括空格或不相关的标点符号)。这些关键词构成了资产关键词搜索的基础。资产的 用户名 不需要在 类别-关键词 列表中重复。
  • 根据资产类型 (KIND+类别-类),会自动提供各种 默认搜索关键词,因此不需要,也可能不应该重复。 Ø
  • 该标签可能不会作为空字符串 ("") 或空白存在于标签之后 - 这些情况会导致故障。
  • 明显的用途:例如 ATSF、Santa Fe 和 AT&SF、B&O、Chessie、CSX、NS、PRR 或 NYC 等公司,而像平板车、箱车、料斗车等基本类型应该是自动的。像凹陷式、井式车和侧卸车(换句话说,修饰词)这样的桥接键,可能应该用来增强自动关键词生成的有限智能。自动生成的术语的重复不应该引起关注。

 

{{anchor|custom-category-list container|自定义类别列表容器|custom-category-list tag|自定义类别列表标签|custom-category-list string|自定义类别列表字符串|Custom-category-list Container|custom-category-list container

custom-category-list

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

 

member-of-groups 容器

[编辑 | 编辑源代码]
最低版本: V3.5 及更高版本
类型: 成员-of-组容器 配对的 占位符参数资产组 KUID 列表。
字段定义: 一个 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 年。
上传到 下载站 或提供用于包含在游戏中的内容,可能受特定再分发合同或许可协议的约束,该协议将取代此字段中的任何文本。许可字段不提供本地化支持。许可字段的文本不会由 Auran 或 N3V 验证或强制执行,并且可能具有法律约束力,也可能没有法律约束力,这取决于最终用户。
另一方面,在 Planet Auran 的历史上,有人通过将其他人的内容作为自己的内容来侵犯版权,可能会导致快速从 Auran 网站被禁止以及永久屏蔽下载站权限等。此外,社区会对其他用户侵犯他人的版权进行严厉打击,并回避违反者,并忽略 DLS 上允许保留的任何资产。
总而言之,试验和修改资产是 Trainzer 尝试克服陡峭的内容创作学习曲线的一种公认的,甚至可以说是纵容的方式(每个人都想要更多内容创作者!),但是如果资产具有依赖的部件,特别是网格、脚本、纹理,这些都是知识产权 - 在上传您的作品之前,请获得使用属于其他人的这些部件的许可。
由 'kuid 引用' 指定的资产部件并不打算被此声明涵盖 - 使用常见的耦合器、转向架或基本货车网格(Auran 发布了多种标准类型,许多作者通过对网格进行 kuid 引用默认使用,例如检查箱车的依赖项 (UK: Covered Wagons or 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 版本以来被忽略的“资源文件名”的以前效果,以使用原始 Trainz 数据模型 的文件夹分组定义路径,使用带有后缀“_art”、“_body”和“_shadow”的子文件夹和名称(其中由资源名称加上后缀定义的字符串设置了资源组件的路径。)。
  • 相反,通常具有 TBs v2.9 及更高版本的 TS 版本资源可以通过理解这些标签中一些标签的效果和用途,以及对纹理.txt 修饰符行进行一些明智的修改来进行反向适配,以使其与早期数据模型一起使用(例如 AlphaHint 需要注释掉等),这些纹理.txt 修饰符行不被早期版本理解。


  • 资源名称名称名称-XX — V1.3–v2.8 — 历史上在几乎所有 v1.3-v2.0 资源中发现。尽管“资源名称”在 v2.8 中被保留而没有引起抱怨,但在 v2.5 后被弃用;因此,在 v1.5 之后,资源的 config.txt 文件中唯一需要的、想要的或被认可的名称是用户名-XX 变体。

 

资源名称

[编辑 | 编辑源代码]

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

bendy 标签

[编辑 | 编辑源代码]
范围: 在 v2.9 标准之前的轨道或桥梁资源 中发现,当时样条对象经历了重大变化,统一了数据模型定义,删除了混合中的几个以前的 KIND,有利于所有样条对象在kind 轨道 下统一。

 

casts-shadow 标签

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

 

name 和 name-XX 标签

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

 

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

根据约定,子文件夹名称将具有以用户名/资源名称字段开头的路径规范名称,并使用后缀 _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 国家代码的“字符串数组” 取代。
  • 用字符串数组类型的 category-region 替换,标签之间没有空格,用分号隔开,两个字符的国家代码在引用的标签部分中枚举;这些标签以两个大写字母的形式给出,构成 枚举 代码,代码之间用分号隔开,但在最后一个代码之前除外。
  • 字符串数组中的任何 空格(包括结尾引号前的空格)都将导致读取错误和故障消息。

 

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

 

阴影标签

[edit | edit source]
见上面的弯道,已弃用/过时的 TS2009 之前的遗留 kind track 资产模式控制标签。

 

缩略图标签

[edit | edit source]

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

类型标签

[edit | edit source]
  • type — V1.3–v2.8 — 以前的过滤器修饰符,在历史上几乎所有资产中都能找到,但它在滚动库存、场景、样条线、轨道类型(包括隧道和桥梁)以及路边资产中尤为普遍。
  • 类型标签与“区域标签”一样,在 Trainz 0.9 - TC3 版本中用作“Surveyor 内组过滤器”,它与区域相结合,提供了较小的资产选择(工具组)。自从 TS2009 以来,它移除了这些本地可点击过滤器的功能和使用,转而采用一种新的、更繁琐的过滤器。这些使工具选择变得快速简单,而不是在工具选项卡之间切换时变得缓慢和暂停——如今的 TANE 之前的版本在工具选项卡之间来回切换时,经常会被重新加载整个选择列表所淹没。
  • 类型和区域都默认为“全部”,提供与 TS09 及之后版本工具相同的超级列表。
  • TRS2006 分支(即 TC3)之后,每个类型标签都已过时,因为在程序员的心目中,他们用 TS09 Pick List 和过滤器替换了 Surveyor 工具中“类型和区域”的粗略过滤组选择器——而没有赋予用户保存多个 Pick List 或轻松加载在 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. 过时表必须谨慎使用,并且最常出现在 Auran 编写的资产中。该表用较新的版本替换了较旧的版本,大多数内容创建者正确地使用 kuid 的 Kuid2 形式来取代较旧的版本。相比之下,N3V 过度使用过时表来升级新发布的“升级”内置资产,这会导致很多混乱,并且无法获得预期的结果。(例如,许多不错的 'Flip-trees' 在 TS10 和 TS12 中被 Speedtrees 取代,影响了许多 Speedtrees 未被创建者需要或希望的路线。在安装过程中,这也导致依赖项缺失,直到找到包含过时表的资产。
     • 此外,资产库.tdx 数据库存储索引中仅支持每个 kuid 的一个过时条目,并且用 Kuid2 版本替换 kuid 可能会导致问题(即您会看到哪个?)。
     • 过时表的一个很好的用途是使用特定部件升级一系列资产,尤其是转向架。添加一系列 kuids 以新的优质转向架替换,可以显着改善路线或会话的外观,只需进行一次编辑即可(前提是例如转向架兼容且尺寸合适!)。
  6. 最近使用过时资产导入 TANE 的经验表明,有不止五个备用 kuids 替换了那个可怜的 Flip-tree 资产。似乎随着 Speedtrees 引入引起的混乱,以及 TANE 的大修以及其对最新适当资产的积极追求,现在 ContentManager 进程中可以容忍多个不同 kuids 的资产替换相同的 kuid。作为最佳实践,仅在绝对必要时使用过时表... 例如,用您想要上传到 DLS 或在网站上自行发布的依赖资产中的不需要的付费资产取代该资产。
  7. 关于类别时代标签范围:安全游戏,已知有效。其他“未来十年”值应在依赖此类值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词语,只要它们不包含空格字符。在短语构造的名称中使用下划线或句点可以保留可读性并显着提高清晰度。例如,一辆货运火车车厢可能装载 45 种合法产品类型。这些将在依赖项容器中列出。使用 Coal、granite、crushed_limestone 等会使表更容易维护和更改。Jes Sayin 自 76 年以来一直是程序员。
  9. 在第二个缩略图容器示例中,还有一个第二个大小为 512x512 的图像,即 extra。DLS 将使用哪一个尚不清楚。还可以包含更大的图像大小,并且通过电子邮件聊天,T:ANE 可能支持更大的图像大小,这将在预览操作或 DLS 列表中找到用途。N3V Games 通常不发布此类信息。
  10. 早期的做法可以追溯到 Trainz 1.x,使用关键字/标签“thumb”,在引号中包含一个指向 240x180 缩略图图像的路径规范引用。art 文件夹包含一个带 alpha 遮罩的 512x512 tga(通常为 bmp 文件,但正确格式的 tga 可以用作自 alpha 遮罩)以及 64x128 菜单图标图像及其控制的 texture.txt 文件。
  11. 在 2014 年至 2015 年冬季与前版本经理 James Moody 的私人电子邮件对话中,关于此主题的要点是,DLS 上传验证软件可能已在此之后进行了更改,以强制执行正确的缩略图容器。
  12. 关于类别时代 -nn 与类别时代标签值:' TRS 会接受类别时代数据的两种形式;但是,TS2009-SP0 及更高版本会从以前合法的关键字值对中创建错误,并试图强制内容创建者更改程序员故意破坏的所有资产。后来,DLS 上传软件强制执行了转换,但这要可接受得多,因为第一个操作导致许多人花费数小时来修复那些不必要的错误,而这些错误应该在验证较旧的 Trainz 构建资产时在软件预过滤器传递中自动实施。这些操作实际上保证了较旧的资产下载将出现错误。这是 N3V 程序员做过的最愚蠢、最傲慢的事情之一,而 Auran 更具经验的软件人员绝不会如此轻率地对待社区的时间成本。

参考文献

[edit | edit source]
  • 本页面的主体内容取自 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 历史 页面。



华夏公益教科书