跳转至内容

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 标签的值。这个枚举的词语决定了资源的特定 种类声明和要求,这些要求将添加到该资源 config 文件中的 TBS 定义中。其他关键的 TBS 定义数据也具有明显的意义和实用性,例如资源的名称、Kuid 标识符和版本、Trainz 构建值 (TBV),以及其他对定义、适用性和范围有广泛变化需求的数据,例如string-table、obsolete-table、kuid-table 和缩略图都是偶然的。字符串值,甚至资源名称和描述在实践中大多数时候都是完全没有必要的,完全可以省略。
  • 当声明了一种种类时,该种类将成为父类,要求并规定该类中必须满足的必要数据对,除了 TBS 中列出的数据之外。
  • 某些参数可能在资源种类的某个特定情况下保持未定义,尤其是一些常见的旧历史 Trainz 构建标签值,对于这些标签,内容管理器或 Content Creator Plus (CCP) 实用程序将分配默认值,但在处理时会列出警告消息。TrainzOnline Wiki 中的许多标签,以及更早的 TC3 时代 Content Creator's Guide (CCG) 中都会提到默认值。
  • 从 TRS2006 和 Trainz Classics (TC1&2) 开始,每个版本的 Content Manager 模块都会强加越来越多的预先承诺错误测试[note 1],并且每个模块都变得越来越坚持,强调在预期存在这样的标签-数据对时,如果未定义这样的标签会发出警告。

在 TANE 后版本中,这些过去“默认”的定义行现在往往会产生故障,要求清晰的值定义,而过去这些值是默认的[note 2]。与过去那些年代相比,这是一种更可取的烦人之处,在过去那些年代,错误的资源定义有时会导致臭名昭著的“蓝屏死机”,或者更常见的是,导致运行时软件崩溃回桌面,导致编辑丢失,并可能需要重建数据库。

子类

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需的元素:一个 config.txt 文件 来组织数据,一个标识,即 kuid(只有用户名对你没有用,但是可以创建合法资源,不需要名称!)和最后,一个合法定义的种类标签。种类负责,它是管弦乐队的指挥,是排长或 CEO,负责下达指令——为所有后续处理内容设置要求。简而言之,种类的值是一个紧密定义的成员限定的小组——告诉 Trainz 软件在虚拟世界中要渲染和显示什么,以及如何在 config.txt 文件中找到将这些资源部分链接在一起的其他部分。
  以下每个子类都被认为具有 TrainzBaseSpec 作为它们的“父类”数据[note 3]。下面列出的几种种类(带下划线的)是过时的种类,早于 TS2009 版本中对 Trainz 数据模型 进行的更改(即从 2008 年后期开始),N3V 程序员自此只对这些种类进行了逐渐(增量)的更改。
  目前可以在 N3V Trainz Wiki 的 Content Creator's Guide 部分中找到有关修复基于这些过时种类的资源的详细信息TrainzOnline 站点在此,其中包含启发性的 过时种类的示例在此。强烈建议 Trainz Download Station 的所有用户或任何考虑创建内容的用户仔细阅读 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 (容器)

  { 依赖项列表
  按kuid排列 }

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

 



支持的标签

[编辑 | 编辑源代码]

TrainzBaseSpec 支持config.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 直接对应 ('映射 **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 的程序员团队的眼中,无论前台如何炒作营销名称(比如 Trainz UTC,是终极的任何东西…… 真的吗?。拜托!真的吗!?),TRS2004 版本是第二款 Trainz 产品。
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 版本号。相比之下,内容创建者社区试图将此数字设置得尽可能低,以便在下载时为新资产提供尽可能广泛的受众/用户范围。较好的内容创建者会在对应版本的裸安装(无添加内容)上对其进行测试,并验证生成的 cdp 是否包含所有相关材料。
  • 一些资产种类根据其 trainz-build 版本标签进行显著不同的解析。注意:trainz-build 标签 是强制性的。如果未指定,Trainz 将尝试根据 config.txt_file 的内容来猜测一个旧版 Trainz 版本,通常会解析为 1.3 作为 TBV。

 

用户名标签

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

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

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


 
 

用户名-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 字段,但表示非英语语言环境。资产中可能存在多个 description-XX 标签,每个支持的语言环境一个。如果适当的“description-XX”标签不存在,无法在给定的最终用户系统上表示此资产,则改为使用英语 description 标签。

 

字符串表容器

[edit | edit source]
类型: UTF-8 字符串列表容器,字符串表容器
字段定义: **英文** 字符串的键值对列表。每个键都是一个有意义的脚本标识符,映射到二进制数据并由其引用。每个值都是一个 **英文** 字符串。英文字符串可能包含或引用非英语专有名词作为标识符。非英语母语作者必须在需要时创建一个没有后缀的字符串表容器。软件只链接到字符串表容器中的名称和值并引用它们,而不使用后缀,这将使西班牙语、法语、德语、捷克语、荷兰语……日语作者感到困惑。换句话说,带后缀的字符串表仅用于翻译目的,这在用非英语编写地图时会造成问题——没有字符串表-en 可以提供一个用于反向翻译的表。同样,username-en 和 description-en 也是如此。这三种缺失都体现了一种陈旧的、傲慢的、对世界动态的漠视。

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

  • 这些左侧的键或标签既充当 “本地索引关键字”,也充当 “语言之间的等效表”
  • 左侧列始终包含内容创建者赋予“特殊”名称的对象,例如信号、轨道标记、行业、连接等名称,这些名称可能会被引用,并且会出现在 Driver 和 Surveyor 模块的“查找公用设施” (CTRL+F ) 功能小程序中。
  • 另一方面,索引侧也 *不会列出* 地点(例如大量连接)的默认名称,这些地点在构建路线图时会由随机数自动索引(即无意义的杂乱。如果重要,路线构建 CC 会命名它!),但会自动包含潜在的临时资产,例如火车车的默认名称。如果重命名,这些名称将取代其相应的默认名称。
  • 它的主要用途是针对那些旨在与脚本引用接口并获取可变属性的对象,例如火车站、行业所需的或准备运往行业的货物数量,或由交互式火车车(向脚本滚动行业)和其他可配置资产(如通用广告牌式标志)运送的货物,通过稍微调整高度和角度扭矩,可以将这些标志放置在库存建筑或行业的立面前,在建筑上放置不同的商业名称。换句话说,这是一种可配置的风景。
  • 总体而言,在 路线图或布局 中,这些左侧名称对应于地图资产上的命名对象,而大多数字符串表(从字面上看,由大型路线 kind map 中的数千个条目填充)都是在那里看到的。
  • 在某些资产中,该默认名称连接到软件脚本,因此字符串表变得 *特别重要*,而不是 *平淡无奇*。(见下文)
  • 在每种类型的资产中,字符串表类型的使用始终是合法的,就像描述标签、trainz-build 和 kind 标签一样。与它们不同的是,它不必存在或定义,也不是强制性的。封装在字符串表容器中的值除非代码期望它们配对,否则没有功能或效果。
  • 在其他资产中,再次以假设的可编程商业标志为例,如果字符串表要与软件接口,则必须为其提供默认名称。所有地图可放置资产都可以命名或重命名,但“特殊名称”必须在脚本和字符串表索引值中匹配。大多数可配置资产定义了一个接口变量,该变量用于将默认名称替换为脚本引用的索引或查找表,以及资产的二进制数据。其他变量也可能在可编程资产中定义。这些变量中的每一个都可能被脚本引用,但正是索引值使其进入地图或会话字符串表,从而使一切在需要 Driver 或 Session 创建者可变性时协同工作。
  • 相反,如果没有系统软件知道索引中命名的项目的地址,则对象的脚本可能没有触发、条件检查或更新能力。这正是 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 更改 kuids,以便重叠不会覆盖已经在目标安装中使用相同 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 拥有路线中资产的可编辑列表。这些可以轻松地转化为一个样式表“过滤器”(一个选择列表),它允许人们使用与原始作者相同的资产来添加和更改路线……或在您自己的扩展中复制他的样式。


  • 利用这些是虚拟参数这一事实的一个非常有用的方法是将复杂滚动库存资产中产品的 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 表格容器 格式相同。
字段定义: 由此资产使之过时的资产的“占位符键-键-值”列表。尝试加载此列表中的任何资产将导致加载此资产
  • 此外:两个资产都标记第三个资产为过时是不合法的,除非其中一个也标记另一个为过时。[注释 6]
  • 循环过时引用是非法的。
  • 此资产的所有低编号 KUID2 版本都隐含为过时,无需包含在此列表中。同时,较新的改进资产(具有较高的 KUID2)及其前任不应在“中间”前任中列出同一个前任(如原始资产!),因为这些值用作替代条目表,并且只有一个资产可以替换为较早的版本。(数组只保存一个值,不能用两个值替换一个值!)。
  • 标记此资产的更高编号 KUID2 版本为过时是非法的,因为这会创建隐式循环引用。
  • 此列表中引用的资产必须与此资产具有相同的创建者,以便资产通过 DLS 上传过程审核和接受,此限制不适用于您的本地版本,例如,它可以用于将大型火车车厢组中的所有旧纸质车轮 KUID 替换为一个更具视觉吸引力和更新的 KUID。

 

类别-区域标签

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中进行筛选(搜索条件)
类型: 枚举字符串或字符串数组。
字段定义: 由分号 (;) 分隔的两个字符 类别-区域标签 代码列表。字符串中不应存在其他字符(包括空格等)。此资产被认为与每个指定的区域相关 - 这对于 kind traincarkind mosignal 资产最相关,但可以为任何资产提供。
示例
类别-区域 "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"(大多数第一世界国家)

 

类别-类别标签

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


 

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

示例
    类别-类别 "XBG" 货车 - 来自 PRR 60'
    类别-类别 "BR" 铁路(非功能性风景)——可能是一座建筑
    类别-类别 "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 的“图标”,用于 调度场 和测量员资产选择 API,它应该具有 Alpha 遮罩 或非常浅的背景。许多较旧的资产没有使用 jpg 文件,而是将 .tga 文件(Targa 真彩色)列在 '_art' 子文件夹中(Trainz 1.0-TC3 惯例:_art、_body 和 _shadow 是早期 Trainz 数据模型要求规定的三个子文件夹,名为“asset-filename_suffix”(过时标签-<值> 对),它看起来像下面这样[注释 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 修补程序后被放弃,因为用户社区中出现了许多抱怨。
 • 如果缺少缩略图容器的资产(即使具有过时的缩略图标签)后来在新的内置路线或场景中被选择,该资产通常会作为没有图像的项目进行分发——如果纹理文本或配置文本缩略图容器未正确引用,它们将被剥离[注释 11]。  

软件链接

[编辑 | 编辑源代码]

info-url 标签

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

此外,建议使用自定义 Trainz 短链接 格式,而不是直接链接到这些域,以防止将来网站布局发生变化而导致 URL 无法使用。“短链接”是 Trainz 特定的 URL,它有助于通过允许内容创建者引用 N3V 网站上的特定页面来保护内容免受未来影响,而无需依赖于特定的网站布局。短链接旨在用于游戏内使用,例如 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 容器 是顶级 config.txt 文件 条目,可用于任何从 KIND TrainzBaseSpec 派生的资产(简而言之,所有资产)。此容器允许资产直接 包含另一个资产的脚本 来自父资产的脚本文件,使用 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 容器|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 及以上
类型: 成员分组容器 成对列表,包含 占位符参数资产组 KUIDs。
字段定义: 一个包含 KIND_Asset-group 资产的列表,该资产属于这些资产。有关如何以及何时使用此功能的详细信息,请参阅 kind KIND Asset-group 文档。

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

如果为给定的“成员分组”容器未指定任何条目,或者资产省略了“成员分组”容器,则模拟器软件可能会根据资产的 Config.txt 文件指定一些默认资产组。 不同版本的模拟器之间的确切行为可能会改变,但是当前逻辑描述 这里。 

可选的已弃用标签

[edit | edit source]
以下标签对于任何资产都不是强制性的,许多资产将它们留空。
从历史上看,识别和许可标签从 Trainz 0.9(Beta)开始。

 

许可

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


 

作者标签

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

 

组织标签

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

 

联系电子邮件标签

[edit | edit source]
类型: 字符串,电子邮件地址。(已根据可更新的 Planet Auran 数据库 弃用。)
字段定义: 此资产创建者的联系电子邮件地址。不建议使用此字段,因为归属可以通过编程方式确定,并且联系方式可以注册到创建者的 Auran 账户 Planet Auran 账户,在那里可以根据需要限制或更新它们。

 

联系网站标签

[edit | edit source]
类型: URL 字符串。(已根据可更新的 Planet Auran 数据库 弃用。)
字段定义: 此资产创建者的联系网站。不建议使用此字段,因为归属可以通过编程方式确定,并且 [联系方式] 可以注册到创建者的 Auran 账户 Planet Auran 账户,在那里可以根据需要限制或更新它们。

 

已废弃的标签

[edit | edit source]
以下“标签列表”是“事实上的”,因为它们的“使用惯例”早于上述 TBS 标签的正式汇编,但不是使用它们的规范,事实上,也早于“TrainzBaseSpec”一词的创造(在 2008-2009 年的 TrainzOnline Wiki 中引入),或者它在 N3V Wiki 页面 上的正式定义 11:32, 12 May 2009[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定义的字符串加上后缀设置了资产组件的路径)。
  • 反之,TS版本发布的资产,其TBs为v2.9及以上版本,通常可以通过了解这些标签的作用和用途,以及稍微谨慎地修改来消除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

[edit | edit source]

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

bendy标签

[edit | edit source]
范围:轨道或桥梁资产中找到,该资产早于v2.9标准,当时样条对象经历了重大变化,成为统一的数据库模型定义,放弃了混合中的几个以前KIND,转而将所有样条对象统一在kind track之下。

 

casts-shadow标签

[edit | edit source]
参见上面的bendy,已弃用/过时的TS2009之前遗留的kind track标签。

 

name和name-XX标签

[edit | edit source]
  • 'name'和'name-XX'是早期数据库模型中较长的usernameusername-XX标签的形式,XX代表英语“name tag”(或今天的“username”标签)的非英语语言翻译的ISO双字母后缀;“XX”形式与description-XX一样,是其他语言用户友好值的“本地化”支持的一部分。
  • 在最古老的Trainz时代(v1.0-v2.4)资产中,将name和name-XX替换为username和username-XX,或者如果username存在,则直接删除。
    • 如果资产的trainz-build为v2.7以上版本,则name-XX会造成错误。有趣的是,即使在TS12中,name-XX标签也会作为资产名称出现在Surveyor工具的搜索列表中,如果没有找到TrainzBaseSpec,则会显示。

 

注意:Username(英语)是DLS上的官方资产名称,永远不应该使用外语;在TB v2.5之后(TRS2006-SP0),它还会取代“asset-name”,成为CM打开文件夹进行编辑时的主要名称。

根据惯例,子文件夹名称将以username/asset-name字段开头,并将使用后缀_art、_body和_shadow作为正常命名约定的一部分。这可能是3ds Maxgmax约定延续到Trainz中的,Trainz与该图形开发软件有着历史渊源。(Gmax与Trainz V0.9-v2.4版本捆绑在一起)


 

category-era-nn标签

[edit | edit source]
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文件中[note 12]。虽然在Surveyor中无法直接访问,但在TR06和CMP之后,可以定义一个过滤器来选择日期范围,并使用该过滤器以及区域和类型在Surveyor中验证在Surveyor的放置和选择工具中可列出的资产。在TS09及之后版本中已过时,TS09及之后版本使用较短的category-era标签字符串数组在一行中,而不是使用多个“-nn”后缀的标签值对。
  • 字符串数组中的空格会导致错误;所有值必须以“s”结尾,并具有四位数字,例如1880s;1950s;2010s(这可能完全适合某些类型进出时尚的女性服装!)。不幸的是,目前无法定义范围,但用户社区已经提出了请求。
  • 替换为字符串数组类型的category-era标签,标签之间没有空格,并用分号隔开;这些标签以四位数的年代数字开头,并以“s”(小写s)结尾。

 

category-region-nn标签

[edit | edit source]
category-region标签取代
  • 类型category-region-nn——V1.3-v2.8——历史上在几乎所有值得本地化的资产中都能找到。它们已被category-region标签中由两个字母组成的枚举ISO国家代码的“字符串数组”取代。
  • 替换为字符串数组类型的category-region,标签之间没有空格,并用分号隔开,两个字符的国家代码在该引用的标签部分中枚举;这些标签以两个大写字母组成的枚举代码开头,代码之间用“;”隔开,但在最后一个代码之前没有分号,直到结束引号之前。
  • 字符串数组中的任何空格都会导致读取错误和故障消息,包括结尾处引号之前的空格。

 

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

 

shadows标签

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

 

thumbnail标签

[edit | edit source]

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

type标签

[编辑 | 编辑源代码]
  • type — V1.3–v2.8 — 以前是一个过滤器修饰符,在几乎所有资产中都有历史记录,但在滚动库存、场景、脊柱、轨道类型(包括隧道和桥梁)和路边资产中尤为普遍。
  • type 标签与 region 标签类似,在 Trainz 0.9—TC3 版本中用作“Surveyor 中的组过滤器”,它与 region 结合使用,提供了更小的资产选择(工具组)。自从 TS2009 移除这些本地可点击过滤器的功能和使用,转而使用一个新的、更繁琐的过滤器。这些让工具选择变得快速简单,而不是在工具选项卡之间切换时变得缓慢和暂停——如今的 TANE 之前的版本在工具选项卡之间来回切换时,常常会被重新加载一整套选择项所淹没。
  • type 和 region 都默认为“All”,提供了与 TS09 及其后续版本中工具提供的相同的大型列表。
  • 从 TRS2006 分支(即 TC3)之后,所有 type 标签都已过时,因为在程序员的眼中,他们用 TS09Pick List 和过滤器取代了 Surveyor 工具中“type 和 region”的粗略过滤组选择器——没有给用户保存多个选择列表或轻松加载在 CM 中定义和细化的过滤器的能力。

 

  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,大多数内容创建者正确地使用 kuid 的 Kuid2 形式来取代旧版本。相比之下,N3V 过度使用 obsolete-table 来升级新发布的内置资产,这会导致很多混淆,并且无法获得预期看到的内容。(例如,许多漂亮的 'Flip-trees' 在 TS10 和 TS12 中被 Speedtrees 取代,这影响了许多路线,而创建者在这些路线中不想要或不希望使用 Speedtrees。在跨安装中,这也会导致依赖项缺失,直到找到包含 obsolete-table 的资产。
     • 此外,Assets.tdx 数据库索引中仅支持每个 kuid 一个过时条目,用 Kuid2 版本使 kuid 过时会导致问题(例如,您会看到哪个?)。
     • obsolete-table 的一个很好的用法是升级使用特定部件的资产系列,尤其是转向架。添加一些要被更新的好的转向架取代的 kuid 可以极大地改善路线或会话的外观,只需一次编辑即可(前提是转向架,例如,兼容且尺寸合适!)。
  6. 最近将一个过时的资产引入 TANE 的经验表明,有五种不同的 kuid 替代了那个可怜的 Flip-tree 资产。随着 Speedtrees 引入带来的混淆以及 TANE 的大修,它积极地追求最合适的更新资产,ContentManager 现在允许使用多个不同 kuid 的资产来取代同一个 kuid。作为一项良好的实践,仅在绝对必要时使用 obsolete-table... 例如,在您要上传到 DLS 或在网站上自行发布的依赖资产中,取代不需要的付费资产。
  7. 关于类别时代标签范围:安全的玩法,已知有效。其他“未来十年”值应该在依赖它们之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词语,只要它们不包含空格字符。在短语构造的名称中使用下划线或句点可以保留可读性,并显著提高清晰度。例如,一个货运车厢可能运载 45 种法定产品类型。这些将在依赖项容器中列出。使用 Coal、granite、crushed_limestone 等可以让表的维护和更改变得更容易。Jes Sayin,从 1976 年起担任程序员。
  9. 在第二个缩略图容器示例中,有一个第二个 512x512 大小的图像,一个额外的图像。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-build 资产时,通过软件预过滤阶段自动实现。这些操作实际上保证了较旧资产下载会出现错误。这是 N3V 程序员所做过的最愚蠢、最自负的事情之一,而 Auran 更具经验的软件人员永远不会如此轻率地对待社区的宝贵时间。

参考资料

[编辑 | 编辑源代码]
  • 此页面主体取自 N3V TrainzOnline Wiki 的 KIND_TrainzBaseSpec。增强的信息由 Yesterdayz-Trainz 用户组成员添加。
  1. N3V 的 KIND_TrainzBaseSpec,作为没有历史信息(标签)的原始来源页面,位于此处;accessdate=2014 年夏季
  2. a b "Trainz-build" 标签 直连
  3. per fabartus,2014 年夏季;可能是在添加此示例的同一天。
  4. Christoph Bergman,N3V Games 首席程序员,又名“Windwalkr”,KIND TrainzBaseSpec 历史 页面。



华夏公益教科书