跳转至内容

Trainz/refs/TrainzBaseSpec

来自 Wikibooks,开放世界中的开放书籍
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 wiki 中的许多标签,这里或旧的 TC3 时代 内容创建者指南 (CCG 将提到一个默认值。
  • 从 TRS2006 和 Trainz Classics (TC1&2) 开始,每个版本的 Content Manager 模块都会施加越来越多的预先承诺错误测试[备注 1],并且每个模块都变得越来越坚持要求警告该标签尚未在预期标签 - 数据对中定义。

在 TANE 之后的版本中,许多这些“昨天已默认”的定义行今天将更常生成错误,要求明确的数值定义,而这些数值在过去的加载中是默认的。[备注 2] 这种烦人的事情比以前好得多,因为在以前,错误的资产定义有时会导致臭名昭著的“蓝屏死机”或更常见的是将运行时软件崩溃到桌面,从而导致编辑丢失,并可能需要重建数据库。

所有 Trainz 定义的数据(内容)都有三个必需的元素:一个 config.txt 文件 用于组织数据,一个标识,即 kuid(只有用户名是不行的,但是可以创建合法的资产,而无需名称!)以及最后,一个合法定义的种类标签。种类是负责的,是管弦乐队的指挥,是排长或 CEO 发出指示——为在之后处理的所有内容设置要求。简而言之,种类的值,一个由精心定义的成员组成的精选紧凑组——告诉 Trainz 软件要呈现和显示什么以及如何在我们创建的虚拟世界中显示(或在哪里)查找其他部分,以使那些部分在该 config.txt 文件中链接在一起。
  以下每个子类都被认为具有 TrainzBaseSpec 作为它们的数据“父类”。[备注 3] 下面列出的几种类型,那些带下划线的类型,是遗留类型,早于 TS2009 版本中对 Trainz 数据模型 的更改(即自 2008 年后期以来),N3V 程序员仅对模型施加了逐渐的(增量的)更改。
  目前可以在 N3V Trainz Wiki TrainzOnline 站点这里内容创建者指南 部分找到基于这些遗留类型的修复资产的详细信息,并带有启示性的 遗留类型的示例这里。强烈建议所有使用 Trainz 下载站 的用户或任何考虑创建内容的用户仔细阅读 CCG。从理解旧内容定义方式的历史背景中获得的见解,可以与 TrainzOnline 对相同数据类型的当前覆盖范围进行对比和比较,因为通常这种当时与现在的对比可以为修复、更改和自定义资产提供有价值的见解。更重要的是,CCG 中的写作是专业制作的,并且更富含 tautological——它经常会让你了解如果更改了某项内容的扩展影响,而 Trainz Wiki 却没有提供。TrainzOnline 上的 CCG 是 TC1&2/TC3 版本——是自 1999 年 Trainz 以来出版的几本小册子的最后一个版本;TC3 CCG 包含 TRS2004/TRS2006 和 UTC 数据模型中需要正确更新的已更改的引擎规范机车资产。

TrainzBaseSpec 子类 KINDs(类型资产组)

 


表 I,TBS 标准定义

[edit | edit source]

TBS 标准定义

[edit source]

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

  • 容器是'键' 和 '键值' 对的集合以及 TBS 中的 '上层容器'(与子容器相反,例如缩略图容器中的那些)通常以 '-table' 结尾。
 kind    "'字符串值'"
 trainz-build '浮点数',一位小数
 kuid  <Kuid 编码值>
 username    username "'字符串值'"
 username-XX    username-XX "'字符串值'"
 description    description "'字符串值'"
 description-XX    description-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 Asset-group 资产列表。

 



支持的标签

[edit | edit source]

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

kind 标签

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

 

kuid 标签

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



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

 

trainz-build 标签

[编辑 | 编辑源代码]
主要内容:trainz-build 标签,缩写:TB & TBV(TB 值)
类型:小数点后一位浮点数,由 N3V [2] 列举,用于跟踪和识别与进化软件技术级别相对应的数据类型。
范围:1.0–4.3,直接对应('映射onto3rd' Trainz 1.0—TANE-SP1+hf2;预计此值将随着每次主要软件升级以 0.1 的增量向上爬升。

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

  • 分配给 V1.4 的 TBV 或版本值是 Auran 的 Paintshed 版本,这是一个重绘工具,也适用于 Microsoft Trainz Simulator (MSTS),并且也作为 TRS2004 辅助软件模块的版本值出现;具体来说是它的 ContentManager.exe 工具。
  • 1.7 和 2.0 之间的差距要么是外语版本,要么正如经过数小时的挖掘和研究后看起来更像那样,Auran 未使用,因为在构建原始 Trainz 的程序员团队看来,TRS2004 版本是第二款 Trainz 产品,无论前端办公室如何炒作营销名称(比如 Trainz UTC,是终极的什么东西...... 认真吗?。来吧,伙计!认真吗?!)
Trainz 版本和相应的 Trainz-build 标签 值的系列是 Trainz 1.0=v1.0,Trainz 1+SP1 ⇒ V1.1,Trainz 1.0+SP2 ⇒ V1.2,Trainz 1+SP3 ⇒ V1.3,等等(但跳过 1.4 和 1.7–1.9),所以 TRS2004-SP0 = v2.0 然后递增,其中每个版本从 2.0(TRS2004 无服务包)开始递增 0.1 到当前版本(v3.7 = TS12-SP1,v3.8 = Mac2,3.9=TANE-CE,4.0—4.3 以及从 2016 年 3 月起,4.3 及以上版本是 TANE SP,待定)。
  • 从 v2.0 (TRS2004) 开始,Trainz-build 标签数值已通过 23 个步骤递增,这些步骤虽然不是单调的,但却是连续的,因为 Trainz TS09-sp3—TS09-sp4 共享一些 Trainz 版本[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 文件 的内容,以原始 Trainz 版本进行猜测,这通常将解析为 1.3 作为 TBV。

 

用户名标签

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

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

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


 
 

用户名-XX 标签

[编辑 | 编辑源代码]
类型:UTF-8 字符串,用户名标签 的替代语言版本。
字段定义:(其中XX 被相应本地化代码 替换,以表示正在使用的语言。)此资源的本地化人类可见名称。此字段类似于用户名字段,只是表示非英语区域设置。资源中可能存在多个用户名-XX 标签,每个支持的区域设置一个。如果不存在适当的“用户名-XX”标签来在给定的最终用户系统上表示此资源,则改用英语用户名标签。

 

描述标签

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

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

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

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

description-XX 标签

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

 

string-table 容器

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

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

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

 

string-table-XX 容器

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

英文 string-table(无后缀)是强制性的,其他本地化语言是可选的,由资产作者决定。提交到 DLS 然后在与 Trainz 版本捆绑在一起的路线中使用的许多资产通常会被翻译,并且会有一套完整的本地化翻译,用于 description-XX 和 string-table。特别是,与版本捆绑在一起的路线和会话在每次零售版本发布时都会被专业翻译成多种语言。

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

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

kuid-table 容器

[编辑 | 编辑源代码]

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。大多数具有子组件的资产只有几个。
  • 其次,存在一种约定,因为它有时内部关键字是“自动定义的”——仅仅列为一个数字,没有名称,作为 占位符参数,伪关键字可以是任何唯一值(通常是零索引顺序整数。[注释 1])用户或作者可以根据需要为它们命名或不命名。
  • 此表中的条目有两个目的
    首先:确保游戏系统知道依赖关系,以便安装和加载此资产将成功安装和加载任何依赖关系,以及
    其次:允许脚本定位相关的子资产。
  • kuid-table 中只应包含第一级依赖关系——具有自身依赖关系的子资产或零件资产将在该子资产的验证和数据库提交中处理。
  • 循环依赖关系是非法的。
  • 如果某个资产也标记为此资产的已过时版本,则该资产不能列为依赖关系。(Trainz 资产索引(历史上是 assets.tdx 文件)中只有一个替换 kuid 槽,这将创建一个循环定义,需要它自己的旧版本!)
  • 同样,资产不能列为自身依赖关系。[另一方面,这已经体验过(即在 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 容器

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

 

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"(大多数第一世界国家)

 

category-class 标签

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


 

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

示例
    类别代码 "XBG" 盒式货车 - 来自 PRR 60'
    类别代码 "BR" 铁路(景观非功能性) - 也许是一座建筑物
    类别代码 "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"
	}
}

另一个常见尺寸是在 调车场 和测量员资产选择 API 中使用的 128x64 '图标',它应该有一个 Alpha 遮罩 或一个非常浅的背景。许多旧的资产没有使用 jpg 文件,而是列出了 _art 子文件夹中的 .tga 文件(Targa 真彩色)(Trainz 1.0 - TC3 惯例:_art、_body 和 _shadow 是早期 Trainz 数据模型要求的三个子文件夹,名为 'asset-filename_suffix'(已过时的 tag-<value> 对),看起来像下面这样[注释 9]

thumbnails
{
  Icons
  {
    width 128
    height 64
    image "40ft_boxcar_art\40ft_boxcar_art_icon.texture"
  }
 CM
 {
   width 240
   height 180
   image "$screenshot PRR 40ft_boxcar (240).jpg"
 }
 DLS1
 {
   width 512
   height 512
   image "40ft_boxcar_art\40ft_boxcar_art_512.texture"
 }
 DLS2
 {
   width 512
   height 512
   image "$screenshot PRR 40ft_boxcar (512).jpg"
 }
}

在 TS2009 和 TS2010 的早期版本中,没有正确缩略图容器的资产被标记为有问题的。补丁后来将其转换为警告。 [注释 10] 这种做法在 TS12 热修复程序中被取消,因为用户社区中有很多抱怨。
 • 如果缺少缩略图容器的资产(即使使用过时的 thumb 标签)后来在新的内置路线或会话中被选中,该资产通常会作为没有图像的项目进行分发 - 如果没有被 texture.txt 或 config.txt 缩略图容器正确引用,它们会被剥离出去。 [注释 11].  

软件链接

[编辑 | 编辑源代码]

info-url 标签

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

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

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

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

 

must-have-product-rights 标签

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

 

must-not-have-product-rights 标签

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

 

特权容器

[编辑 | 编辑源代码]
类型: 特权容器 是一种 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>
                     }

 

extensions 容器

[编辑 | 编辑源代码]
类型: 扩展容器.
字段定义: 一组扩展属性,它们为脚本提供了超出 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

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

 

member-of-groups 容器

[编辑 | 编辑源代码]
最小构建: V3.5 及更高版本
类型: Member-of-groups 容器占位符参数asset-group 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 引用,例如,检查 Boxcars(英国:Covered Wagons 或 Vans)的依赖关系 - 其中一半以上可能使用对 Auran 在 Trainz 1.0 中发布的基本网格的 kuid 引用!


 

作者标签

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

 

组织标签

[edit | edit source]
注意英国拼写,北美拼写 'organization' 也适用!
类型: 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, 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' 后缀的子文件夹和名称(其中由资产名称加后缀定义的字符串设置资产组件的路径。
  • 相反,具有 TB 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 变体。

 

资产名称

[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 标签'(或今天的 'username' 标签)的非英语语言翻译的 ISO 两字母后缀;'XX' 形式与 description-XX 一样,是 '本地化' 支持其他语言用户友好值的组成部分。
  • 在最古老的 Trainz 时代(v1.0-v2.4)的资产中,将 name 和 name-XX 替换为 username 和 username-XX,或者如果 username(s) 存在,则直接删除。
    • 如果资产具有 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 中,与该图形开发软件有历史联系。(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' 为后缀,并包含四个数字,s.a. 1880s;1950s;2010s (这可能完全适合某些类型的女性服装,这些服装会随着时尚的变迁而流行起来!)。目前无法定义范围,但用户社区已提出请求。
  • 用字符串数组类型的 category-era 标签 替换,不使用空格,日期代码之间使用分号分隔;这些代码以完整的四位数年代为后缀,后面加上 's'(小写字母 s)后缀。

 

category-region-nn 标签

[编辑 | 编辑源代码]
category-region 标签 取代
  • 类型 category-region-nn — V1.3–v2.8 —在几乎所有需要位置信息的资产中都可以找到。这些已被两个字母的 ISO 国家代码的 '字符串数组' 取代,该数组位于 category-region 标签中。
  • 用字符串数组类型的 category-region 替换,不使用空格,在两个字符的国家代码之间使用分号分隔,这些代码在引用的标签部分中列出;这些代码以两个大写字母组成,包含 枚举 代码,代码之间用 ';' 分隔,但最后一个代码除外,最后一个代码之前没有分隔符。
  • 字符串数组中的任何 空格 都会导致读取错误和错误消息,包括结尾处的空格,这些空格在尾部引号之前。

 

  • region —TBS V1.3–v2.8 中有效的内置过滤器和地图资产自定义本地化标识符 (kuid) 的一部分;现在唯一合法的标签用法是在 kind map(布局)资产中。
作为以前的过滤器修饰符,该标签在历史上出现在几乎所有资产中,但在机车车辆、风景、样条线资产、轨道类型(包括隧道和桥梁)和具有某种程度的本地化的路边资产中尤其常见。
  • 地图资产仍然保留着 Region 关键字,该关键字是在地图配置中定义的,其使用方式相反——它是 kind region kuid 引用。因此,Region 在地图中是必需的,并且自 TS2012 以来,与标签类型类似,在大量资产中都是非法的,因为这些资产曾经作为 TRS 系列版本 Surveyor 工具窗口的 '分组数据' '快速过滤器' 出现。
  • 在 TRS2009 之后,任何指向文本字符串的 region 标签都已过时,因为程序员用 Pick List 替换了 Surveyor 工具中 '类型和区域' 字符串值的粗略过滤分组选择器。这两个标签都有一些优点和缺点,而且都可追溯到 Trainz 0.9 Beta 版本。

 

shadows 标签

[编辑 | 编辑源代码]
请参见上面的 bendy,该标签已过时/废弃,是 TS2009 之前遗留的 kind track 资产模式控制标签。

 

thumbnail 标签

[编辑 | 编辑源代码]

thumbnail 标签是 thumbnails container 的早期单视图实现(上面也有简要介绍)。Trainz 的早期 N3V 之前的程序员版本将找到一个 .jpg 文件,该文件最好大小为 240x180 像素,位于主资产根目录,或 asset-name_art 或 asset-name_body 文件夹中,并将其用于在 CMP 和 DLS 中显示资产(如果已上传)。该标签在 TRS2006 期间被废弃,因为 thumbnails container 是随着 v2.0(TRS2004-SP0)推出的。在旧的修复过的资产中,如果 TBV 保持在 v2.4 以下,则在较新的 CM 中拇指通常仍然有效,前提是它位于 _art 子文件夹中,并且资产名称与用户名匹配。 

type 标签

[编辑 | 编辑源代码]
  • type — V1.3–v2.8 —以前的过滤器修饰符,在历史上出现在几乎所有资产中,但在机车车辆、风景、样条线、轨道类型(包括隧道和桥梁)和路边资产中尤其常见。
  • type 标签与 'region 标签' 类似,在 Trainz 0.9—TC3 版本中用作 'Surveyor 内分组过滤器' ,与 region 结合使用,可以提供更小的资产选择(工具组)。自 TS2009 以来,该版本删除了这些本地可点击过滤器功能和用法,转而使用一种新的更繁琐的过滤器。这些使工具选择变得快速简单,而不是在工具选项卡之间切换时变得缓慢和暂停——如今的 TANE 之前的版本在工具选项卡之间来回切换时,通常会因重新加载整个选择列表而感到不堪重负。
  • type 和 region 都默认设置为 'All',与 TS09 及之后版本中工具提供的列表相同。
  • 在 TRS2006 分支版本(即 TC3)之后,所有 type 标签都已过时,因为程序员用 TS09 Pick List 和过滤器替换了 Surveyor 工具中粗略过滤的 '类型和区域' 分组选择器——没有赋予用户保存多个 Pick List 或轻松加载在 CM 中定义和细化的过滤器的能力。

 

  1. 资产 提交(TANE 提交)是将内容合并到数据库并将其在数据库索引中交叉引用,以便可以在运行时模块中访问它的过程和程序。
  2. 验证资产的一种方法是,除了这些值之外,其他方面都是正常的,可以将 TBV 降低到 2.5-3.7 范围,看看这些消息是否消失。您可能需要在几次尝试中降低 TBV,直到足够低,并且相反的情况也可能发生,在旧的 TBV 中无法识别的较新的关键字可能会显示不同的错误消息。不要害怕尝试,即使这样失败也能带来知识和经验,而且您不会破坏任何东西!如果是这样,您就可以放心地确信,仅提供一个值是解决问题的方案。通常,一些现代需求只需要关键字对,因此在标签后面的空白行或标签后面的空花括号集可以满足需求,在这些需求中,错误测试有点过于严格。
  3. 注:此列表在 N3V TrainzOnline Wiki 上进行了 '维基化',这意味着单词 'KIND' 后的第一个字母已大写,而 config.txt 文件中实际的数据标签名称则是全部小写文本。该维基在很多术语中也使用了双引号,这种做法我们将在本文中省略。
  4. 'kind consist' 很少直接看到,它只存在于菜单和内容管理器列表中。
  5. obsolete-table 必须谨慎使用,最常出现在 Auran 制作的资产中。该表格用更新的 KUID 替换旧的 KUID,大多数内容创作者会正确使用 kuid 的 Kuid2 形式来替换旧版本。相比之下,N3V 滥用 obsolete-table 用于新发布的“升级版”内置资产,这会导致很多混乱,并且无法获得预期的结果。(例如,许多漂亮的 'Flip-trees' 在 TS10 和 TS12 中被弃用,取而代之的是 Speedtrees,这影响了许多路线,因为这些路线的创作者并不希望使用 Speedtrees。在所有安装中,这也会导致丢失依赖项,直到找到包含 obsolete-table 的资产。
     • 此外,Assets.tdx 数据库索引中每个 kuid 仅支持一个 obsolete 条目,而用 Kuid2 版本替换 kuid 会导致问题(即,您将看到哪个?)
     • obsolete-table 的一个很好的用法是使用特定部件(尤其是转向架)来升级一系列资产。将要被更新的好的转向架替换的 kuids 混合在一起,可以通过单次编辑极大地改善路线或场景的外观(前提是转向架例如兼容并且尺寸正确!)
  6. 最近将一个被弃用的资产引入 TANE 的体验表明,至少有五个替代的 kuids 弃用了那个可怜的 Flip-tree 资产。随着 speedtrees 引入带来的混乱以及 TANE 的彻底改造(它积极追求最合适的更新资产),ContentManager 进程现在容忍不同 kuids 的多个资产弃用同一个 kuid。作为最佳实践,仅在绝对必要时才使用 obsolete-table... 例如,在您想上传到 DLS 或在网站上自行发布的依赖资产中,取代不需要的付费资产。
  7. 关于类别时代标签范围:安全起见,已知有效。其他 “未来十年” 值应在依赖于此类值之前进行测试。
  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 可以用作自 alpha 遮罩)和 64x128 的菜单图标图像及其控制纹理 texture.txt 文件。
  11. 在 2014-2015 年冬季与前版本经理 James Moody 进行的一次私人电子邮件对话中,关于这个主题的重点是,DLS 上传验证软件可能已经改变,以强制执行一个合适的缩略图容器。
  12. 关于类别时代-nn 与类别时代标签值:TRS 将接受两种形式的类别时代数据;但是 TS2009-SP0 及其以上版本从以前合法的关键字-值对中创建了错误,并试图强制内容创作者更改所有程序员故意破坏的资产。后来,DLS 上传软件强制执行了转换,但这要好得多,因为第一个操作会让许多人花上无数个小时来修复不必要的错误,这些错误应该在验证旧的 trainz-build 资产时,在软件预过滤器传递中自动实施。这些操作实际上保证了较旧的资产下载会出现错误。这是 N3V 程序员所做过的最愚蠢、最傲慢的事情之一,而 Auran 更经验丰富的软件人员永远不会如此轻率地对待社区的时间成本。

参考资料

[edit | edit source]
  • 本页面的主体内容取自 N3V TrainzOnline Wiki,来自 KIND_TrainzBaseSpec。Yesterdayz-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 历史 页面。



华夏公益教科书