跳转到内容

Trainz/refs/TrainzBaseSpec

来自维基教科书,开放世界的开放书籍
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 标签的值。该枚举词决定了资产的特定 kind 声明和要求,这些声明和要求被添加到该资产配置文件中 TBS 的定义中。其他重要的 TBS 定义的数据具有明显的意义和作用,例如资产的名称、Kuid 标识符和版本、Trainz 构建值 (TBV),以及其他需要定义、适用性和范围广泛可变的定义,例如字符串表、过时表、kuid 表和缩略图图像都是情景性的。即使是资产名称和描述这样的字符串值,在实践中大多数情况下都是完全不必要的,可以完全省略。
  • 当声明一个 kind 时,该 kind 就会成为父类,它需要并规定必须在类中满足的数据对,除了 TBS 中列出的那些数据对。
  • 某些参数可能在资产 kind 的情况下保持未定义,特别是对旧的历史 Trainz 构建标签值来说是一种常见做法,对于那些标签,内容管理器或 Content Creator Plus (CCP) 实用程序将分配一个默认值,但在处理时会显示警告消息。TrainzOnline wiki、此处或较旧的 TC3 时代 内容创建者指南 (CCG 中的许多标签都会提到一个默认值。
  • 从 TRS2006 和 Trainz Classics (TC1&2) 开始,每个版本的内容管理器模块都会强制进行越来越多的预先承诺错误测试[注释 1],并且每个版本都变得越来越坚定地警告这种标签在期望这种标签 - 数据对时没有被定义。

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

所有 Trainz 定义的数据(内容)都有三个必需的元素:一个 config.txt 文件 用于组织数据,一个身份,即一个 kuid(只有用户名是行不通的,但即使没有名称,也可以创建合法的资产!),最后,一个合法定义的 kind 标签。kind 是负责人,是管弦乐队的指挥、排长或首席执行官,给出指示 - 为所有后续处理过程设置要求。简而言之,kind 的值,一个小型、精选、严格定义的会员制群体 - 告诉 Trainz 软件在虚拟世界中渲染和显示什么,以及如何(或在哪里)找到其他部分,使 config.txt 文件中资产的这些部分链接在一起。
  以下每个子类都被认为具有 TrainzBaseSpec 作为其数据 '父类' [注释 3]。以下列出的一些 kind,即那些带有下划线的 kind,是早于 Trainz 数据模型TS2009 版本(即 2008 年底以来)中发生更改的遗留 kind,N3V 程序员仅从那时起对它们进行了一些逐步(增量)更改。
  目前,可以在 N3V Trainz Wiki TrainzOnline 网站此处内容创建者指南 部分找到基于这些遗留 kind 修复资产的详细信息,其中包含一些具有启发性的 遗留 kind 的示例。强烈建议所有使用 Trainz 下载站 或考虑创建内容的用户仔细阅读 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
 类别-区域标签 枚举 代码  类别-区域 "'字符串数组'"  
 类别-类别标签  类别-类别 "'枚举 字符串值'
 类别-年代标签  类别-年代 "'约束字符串数组'"  年代
 类别-关键词 "'字符串数组'" 最大长度 64 字节    类别-关键词标签 自然语言搜索关键词
  (替换类型,区域)
 自定义类别列表 
 "'字符串数组'"
 脚本接口功能
 必须拥有产品权限 
 "'字符串值'"  
 DRM 字符串数组
 不得拥有产品权限 
 "'字符串值'"  
 DRM 字符串数组
 权限 (容器)
    {
    }
 更多 DRM
 缩略图 (容器)
    {
    }
 缩略图容器
 脚本 (文件名)    "'字符串值'"
  (脚本资产类)    "'字符串值'", 必须与 脚本 规范类同步。
 script-include-table
    {
    }
 (列出库脚本的容器)
 扩展 (容器)
    {
    }
 资产也使用的正式脚本扩展
 许可证 "'字符串值'"  资产创建者的版权声明
 作者    "身份 '字符串值'"
 组织    "第三方组身份 '字符串值'"
 联系电子邮件    "电子邮件地址 '字符串值'"
 联系网站    "作者/组网页 URL '字符串值'"
 所属组 (容器)
    {
    }
 一个 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 窗口中,逗号是多个 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 标签

[edit | edit source]
主要范围: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 无服务包)开始递增 0.1,一直到现在的版本(v3.7 = TS12-SP1,v3.8 = Mac2,3.9=TANE-CE,4.0—4.3 及此后? 从 2016 年 3 月开始,4.3 及以上版本为 TANE SP TBDL)。
  • 从 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 在 Windows 和 Mac 操作系统之间的平滑递增。
    注意: 热修复程序 不会更改版本号。
字段定义: 此资产构建(和存档)的文件格式版本,不一定与资产使用的技术级别有关,但与在 Content Creator Plus 中创建资产时分配的资产级别相对应,与在 CM 的标题栏中找到的值相同。
  • 程序员建议此编号通常应设置为创建和测试资产的 Trainz 安装的 Trainz 版本号。相比之下,Content Creator 社区试图将此编号设置得尽可能低,以便在下载时为新资产提供尽可能广泛的受众/用户范围。较好的内容创作者会在对应版本的裸机安装(无添加内容)上对其进行测试,并验证生成的 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 并从图片中选择,但是能够指定一个唯一的名称并获得你期望的东西真是太棒了!


 
 

username-XX 标签

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

 

描述标签

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

描述在 Content Manager 的“资产详细信息”窗格中可见,用于阐明资产名称,提供规格,以及通常的简要历史记录。

N3V 的 Chris Bergmann 已经声明此字段应保留为简短的(1-2 段)描述资产的简介,并应通过info-url 页面提供扩展细节,但容忍相当长的文本块。有些人将文本块的底部用作版本更改记录。

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

description-XX 标签

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

 

字符串表容器

[编辑 | 编辑源代码]
类型: UTF-8 字符串列表容器,字符串表容器.
字段定义: 一个英语字符串的键值对列表。 每个键是一个有意义的脚本标识符,映射到二进制数据并被其引用。 每个值都是一个英语字符串。 英语字符串可以包含或引用非英语专有名词作为标识符。 非英语母语作者创作的资产,如果需要,仍然必须创建一个无后缀的字符串表容器。 软件只链接到无后缀的字符串表容器中的名称和值并引用它们,这对于西班牙语、法语、德语、捷克语、荷兰语…日语作者来说无疑是令人困扰的。 换句话说,带后缀的字符串表仅仅是为了翻译目的,这在用非英语编写的路线中会产生问题——没有 string-table-en 来提供一个表用于反向翻译。 同样,username-en 和 description-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 容器

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

英语字符串表 (无后缀) 是强制性的,其他本地化语言是可选的,由资产作者决定。 提交到 DLS 并随后在与 Trainz 版本捆绑在一起的路线中使用的许多资产通常会被翻译,并具有针对 description-XX 和字符串表的完整本地化翻译集。 特别是,与版本捆绑在一起的路线和会话会在每个零售版本中接受专业翻译,翻译成多种语言。

请注意,字符串表的左侧列是相同的,因为它是一个映射的符号表,并且索引到诸如网格、会话或路线文件之类的二进制数据。 只有使用名称,即两个元素中的右侧或数据元素是本地化的,并由运行时本地化软件替换。 如果需要,即使在英语字符串表中,也可以手动编辑这些名称,以获得更友好的名称。 索引或左侧引用列语法不能以任何方式更改,因此在数据列中更改名称时,请谨慎使用全局 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 表。大多数只有子组件的资产只有几个。
  • 其次,由于内部关键字有时是“自动定义”的,因此出现了一种惯例——仅列为一个没有名称的数字,例如 占位符参数,伪关键字,可以是任何唯一值(通常是按顺序递增的从零开始的整数。[注释 1])它们可以被命名也可以不被命名,取决于用户或作者的偏好。
  • 此表中的条目有两个目的
    首先:确保游戏系统知道这种依赖关系,以便安装和加载此资产将成功安装和加载任何依赖关系,以及
    其次:允许脚本定位相关的子资产。
  • Kuid 表中只应包含第一级依赖关系——具有自己依赖关系的子资产或部件资产将在该子资产的验证和数据库提交过程中进行处理。
  • 循环依赖关系是非法的。
  • 如果资产也标记为此资产的过时版本,则不能将其列为依赖关系。(Trainz 资产索引(历史上是 assets.tdx 文件)中的 KUID 中只有一个替换 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 表将使新手或老手 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-table 容器 格式相同。
字段定义: 一个“占位符-键—键-值”资产列表,这些资产被此资产淘汰。任何尝试加载此列表中的任何资产将导致加载此资产
  • 此外:两个资产都标记第三个资产为过时的行为是非法的,除非两个资产中的一个也标记另一个为过时。[注释 6]
  • 循环过时引用是非法的。
  • 此资产的所有低编号 KUID2 版本都被隐含地标记为过时,并且不需要包含在此列表中。同时,更新的改进资产(具有更高的 Kuid2)及其某个前身永远不应该将相同的前身(例如原始的!)列为“中间”的中间前身——因为这些值被用作 替代条目表,并且只有一个资产可以替换之前的版本。(数组只保存一个值,不能将两个替换为一个!)
  • 将此资产的更高编号 KUID2 版本标记为过时的行为是非法的,因为这会创建一个隐式循环引用。
  • 此列表中引用的资产必须与此资产具有相同的创建者,才能由 DLS 上传流程审核和接受,此限制在您的本地版本中不适用,例如,它可以用于将大型火车车组上所有旧的纸轮 KUID 替换为一个更具图形美感和更新的 KUID。

 

category-region 标签

[edit | edit source]
目的: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”(大多数第一世界国家)

 

类别-类别标签

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


 

请注意,许多 category-class 代码仅与特定资产种类相关——不应将 category-class 代码应用于不适当种类的资产。

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

 

类别-年代标签

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

 

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

 

缩略图容器

[edit | edit source]
目的:CM 和 Surveyor 中的过滤器(搜索条件)
类型: thumbnails 容器.
字段定义: 用于在整个游戏环境中(包括游戏内、内容管理器下载站)以 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 文件,而是将 .tga 文件(Targa True Color)列在“_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 的一个热修补程序中被取消,因为用户社区中对此有很多抱怨。
 • 如果缺少缩略图容器的资源(即使有过时的缩略图标签)后来在新内置路线或会话中被选中,该资源通常会作为没有图像的项目进行分发 - 如果没有被 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 链接,并且仅在嵌入式网页浏览器中有效,而不是在任何外部网页浏览器中。在存在此标签的情况下,游戏内按钮将提供给用户,允许用户查看资源描述或帮助,而无需离开游戏环境。

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

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

 

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)重新保存对资源的任何更改(将重新验证的资源提交(提交)到数据库)。

 

script 标签

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

 

class 标签

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

 

script-include-table 容器

[编辑 | 编辑源代码]
类型: KUID 参数列表及其对应的名称作为键。
字段定义: 一个键值表,其中包含在编译此资源的脚本文件时搜索脚本包含的脚本资源。键(一个变量,所以不是标签)当前未使用,但必须是唯一的;值表示要包含的资源的 KUID。

script-include-table 容器 是任何资源都可以使用的顶级 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 保留根据扩展创建者的指南,在将来添加对扩展容器中特定条目的验证的权利。

 


较新且不太常见

[编辑 | 编辑源代码]

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

类别关键字标签

[编辑 | 编辑源代码]
类型:UTF-8 字符串。
字段定义:一个自然语言关键字列表,用分号 (;) 分隔。字符串中不应存在其他字符(包括空格或无关的标点符号)。这些关键字构成了资产关键字搜索的基础。资产的用户名不需要在类别关键字列表中重复。
  • 根据资产类型 (KIND+类别-类别),会自动提供各种默认搜索关键字,因此不需要,可能也不应该重复。Ø
  • 标签可能不会作为空字符串 ("") 或空白出现在标签之后——这些情况会产生错误。
  • 明显的使用:公司如 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 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 费用用于更快地访问和无限下载,而不是用于访问资产。)
许可证标签的含义不明确,N3V 不推荐使用它,但它的存在早于 N3V 的管理 6-7 年。
上传到下载站或用于包含在游戏中的内容可能受特定再分配合同或许可协议的约束,该协议取代此字段中的任何文本。许可证字段不提供本地化支持。许可证字段的文本未经 Auran 或 N3V 验证或执行,可能具有法律约束力也可能不具有法律约束力。
另一方面,Planet Auran 的历史表明,有人通过将他人内容作为自己的内容来侵犯版权,可能会导致从 Auran 网站快速禁止,并永久封锁下载站权限等等。此外,社区将严厉打击其他用户侵犯他人的版权,并且会排斥违规者并忽略 DLS 上允许保留的任何资产。
总之,对于试图攀登陡峭的内容创作学习曲线的 Trainzer 来说,实验和修改资产是一种被接受的,甚至是被认可的生活方式(每个人都想要更多内容创建者!),但是如果资产有依赖部分,尤其是网格、脚本、纹理,这些都是知识产权——在上传你的创作之前,请获得使用属于他人的这些部分的许可。
kuid 引用指定的资产部分并不打算涵盖此声明——使用常见的耦合器、转向架或基本火车车网格(Auran 铸造了几个标准类型,许多作者默认使用这些类型,通过对网格进行 kuid 引用,例如检查货车的依赖项(英国:覆盖货车或厢式货车)——很可能超过一半使用对 Auran 在 Trainz 1.0 中发布的基本网格的 kuid 引用!)


 

作者标签

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

 

组织标签

[编辑 | 编辑源代码]
注意英国拼写,北美拼写“organization”也行得通!
类型:UTF-8 字符串。(已弃用,取而代之的是可更新的Planet Auran 数据库。)
字段定义:负责创建此资产的组织的名称或标记。不推荐使用此字段,因为归属可以通过编程方式确定。

 

联系电子邮件标签

[编辑 | 编辑源代码]
类型:字符串,电子邮件地址。(已弃用,取而代之的是可更新的Planet Auran 数据库。)
字段定义:此资产创建者的联系电子邮件地址。不推荐使用此字段,因为归属可以通过编程方式确定,并且可以根据创建者的Auran 帐户 Planet Auran 帐户注册联系方式,在那里可以根据需要限制或更新联系方式。

 

联系网站标签

[编辑 | 编辑源代码]
类型: URL 字符串。 (已弃用,建议使用可更新的 Planet Auran 数据库。)
字段定义: 此资产创建者的联系网站。 不建议使用此字段,因为归属信息可以通过编程确定,并且可以针对创建者的 [联系方式]Auran 帐户 Planet Auran 帐户 中进行注册,在那里可以根据需要对其进行限制或更新。

 

已弃用标签

[编辑 | 编辑源代码]
以下“标签列表”为“事实上的”,因为它们的“使用约定”先于上述列出的 TBS 标签的正式汇编,但并非先于使用它们的规范,事实上,也先于 TrainzBaseSpec 术语的创造(于 2008-2009 年随着 TrainzOnline Wiki 出现),或者它在 N3V Wiki 页面 中的正式定义,2009 年 5 月 12 日 11:32 [4].


 

  • 在最初的编译之后,一些在旧版数据模型中发现的常见但现在已过时的标签已在下面添加,例如在许多桥梁资产中发现的 bendy 及其下方的朋友

 

编辑者注: 这些“TrainzBaseSpec 标签”在某些情况下由于程序员的命令而过时,尤其是在 TB V2.7 中(主要与机车种类相关的那些),并且在所有情况下,在 TS2009-SP0 及其后的所有N3V Games 版本中都过时(尽管许多用户发现它们在某些情况下很有用,但它们会给内容创建者带来时间损失,也不能够仅仅忽略那些在预处理操作 中不再有用的标签),并且如果资产打开以编辑并通过将trainz-build 标签 提升至 V2.9 及更高版本的数据模型 进行部分升级,则会生成错误(错误消息):
  • 资产可以本地升级至 V2.8 或更早版本,并且通常可以正常工作,即使在经过几代数据模型元素改进之后也是如此,然后正常运行。 以这种方式,许多资产可以设置为在 TRS2004 或 TRS2006 数据模型中运行,同时又符合 TS 版本的处理和渲染。
  • 例如,大多数 TRS 时代之前的 data model 资产(v1.0–v2.3)可以通过添加一个网格表来在 TS 版本中运行,以替换自 TS 版本以来被忽略的“资产文件名”的先前效果,以使用原始 Trainz 数据模型 的文件夹分组使用子文件夹和带有后缀“_art”、“_body”和“_shadow”的名称来定义路径(其中由资产名称加后缀定义的字符串设置资产组件的路径)。
  • 相反,具有 TBs v2.9 及更高版本的 TS 版本资产通常可以通过了解这些标签的影响和用途,以及一些明智的修改来回溯适应,以消除 texture.txt 修饰符行(例如,AlphaHint 需要注释掉等),这些行不被早期版本理解。


  • 资产名称名称name-XX — V1.3–v2.8 — 在几乎所有 v1.3-v2.0 资产的历史记录中都有发现。 虽然“资产名称”一直保留到 v2.8,并且没有引起任何抱怨,但从 v2.5 开始就不再鼓励使用。 因此,在 v1.5 之后,资产的 config.txt 文件中唯一需要的、想要的或认可的名称是 用户名-XX 变体。

 

资产名称

[编辑 | 编辑源代码]

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

bendy 标签

[编辑 | 编辑源代码]
范围: 在 v2.9 标准之前,在 轨道或桥梁资产 中找到,当时样条对象经历了重大更改,成为统一的数据模型定义,在混合中放弃了几个先前的种类,转而使用所有样条对象统一在 kind track 下。

 

casts-shadow 标签

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

 

name 和 name-XX 标签

[编辑 | 编辑源代码]
  • 'name' 和 'name-XX' 是早期 data model 中的更长的 用户名用户名-XX 标签的形式,XX 代表英语“name 标签”(或今天的“用户名”标签)的非英语语言翻译的 ISO 双字母后缀。 “XX”形式与 description-XX 一样,是“本地化”支持其他语言的友好值的组成部分。
  • 在最古老的 Trainz 时代(v1.0-v2.4)资产中,将 name 和 name-XX 替换为用户名和用户名-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 中的,该惯例与图形开发软件有着历史渊源。(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”(小写字母 Ess)后缀表示。

 

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(布局)资产中。
作为以前的过滤器修饰符,该标签在历史上几乎所有资产中都可以找到,但它在滚动库存、风景、样条资产、轨道类型(包括隧道和桥梁)以及具有某种程度本地化的路边资产中尤其普遍。
  • 地图资产仍然保留了在“地图配置”中定义的关键字“Region”,它具有相反的用途——成为 kind region kuid 引用。因此,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 container 的早期单视图实现(上面也有简要说明)。Trainz 的早期 N3V 之前的程序员版本将在主资产根文件夹或 asset-name_art 或 asset-name_body 文件夹中找到一个 .jpg 文件,最好大小为 240x180 像素,并将其用于在 CMP 和 DLS 中显示资产(如果它已上传)。该标签在 TRS2006 期间已弃用,因为 thumbnails container 是从 v2.0(TRS2004-SP0)开始引入的。在旧的修复资产中,如果 TBV 保持在 v2.4 以下,那么缩略图通常仍然可以在更新的 CM 中工作,前提是它在 _art 子文件夹中,并且资产名称与用户名匹配。 

type 标签

[edit | edit source]
  • type — V1.3–v2.8 —以前是一个过滤器修饰符,在历史上几乎所有资产中都可以找到,但它在滚动库存、风景、样条、轨道类型(包括隧道和桥梁)以及路边资产中尤其普遍。
  • type 标签与“region 标签”一样,在 Trainz 0.9—TC3 版本中用作“在 Surveyor 中进行分组过滤”,它与 region 相结合,提供了更小的资产选择(工具组)。自从 TS2009 移除了这些本地可单击过滤器并改为使用新的、更繁琐的过滤器,这些过滤器使工具选择变得快速而简单,而不是在工具选项卡之间切换时变得缓慢和暂停——如今的 TANE 之前的版本在工具选项卡之间来回切换时,通常会因重新加载整个选择列表而感到不堪重负。
  • type 和 region 都默认为“All”,与 TS09 及其后的版本中的工具一样,提供相同的超级列表。
  • TRS2006 衍生版(即 TC3)之后,每个 type 标签都已过时,因为在程序员的眼中,他们用 TS09 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. 必须谨慎使用 obsolete-table,它最常在 Auran 编写的资产中看到。该表用更新的版本替换了旧的 kuid,大多数内容创作者正确地使用 kuid 的 Kuid2 形式来取代旧版本。相反,N3V 过度使用 obsolete-table 来升级新版本“升级”的内置资产,这会导致很多混乱,并且无法获得预期看到的内容。(例如,许多不错的“Flip-trees”在 TS10 和 TS12 中已过时,取而代之的是 Speedtrees,这影响了许多路线,在这些路线中,Speedtrees 并非创作者的意愿或期望。在跨安装中,这还会导致缺少依赖项,直到找到包含 obsolete-table 的资产。
  6. 最近将过时的资产导入 TANE 的经验表明,至少有五个替代 kuid 替换了那个可怜的 Flip-tree 资产。似乎由于 Speedtrees 的引入带来的混乱以及 TANE 在积极追求最适合的更新资产方面进行了彻底改革,现在 ContentManager 进程中容忍多个不同 kuid 的资产替换相同的 kuid。作为一种良好的做法,仅在绝对必要时才使用 obsolete-table... 例如,用您想上传到 DLS 或在网站上自行发布的依赖资产中不需要的付费资产替换该资产。
  7. 关于 category 时代的标签范围:安全的游戏,已知有效。其他“未来十年”值应在依赖这些值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词语,只要它们不包含空格字符即可。在短语构造的名称中使用下划线或句点可以保留可读性并显著提高清晰度。例如,货运车厢可能装载 45 种合法产品类型。这些将在依赖项容器中列出。使用 Coal, granite,crushed_limestone 等可以更轻松地维护和更改表格。Jes Sayin 是从 76 年开始的程序员
  9. 在第二个 thumbnails 容器示例中,还有一个 512x512 大小的图像,一个 extra。DLS 将使用哪个尚不清楚。还可以包含更大的图像尺寸,并且通过电子邮件聊天,T:ANE 可能支持更大的图像尺寸,这将在预览操作或 DLS 列表中得到应用。N3V Games 通常不会发布此类信息。
  10. 早期的做法可以追溯到 Trainz 1.x,使用关键字/标签“thumb”以及带引号的路径规范引用 240x180 的缩略图。art 文件夹包含一个 512x512 的带有 alpha 遮罩的 tga(通常是 bmp 文件,但格式正确的 tga 可以用作自 alpha 遮罩),以及 64x128 的菜单图标图像及其控制的 texture.txt 文件。
  11. 在 2014 年至 2015 年冬季与前版本经理 James Moody 的私人电子邮件交流中,关于此主题的重点是 DLS 上传审查软件可能已被更改,以强制执行正确的缩略图容器。
  12. 关于 category-era-nn 与 category-era 标签值:TRS 将接受任何形式的 category-era 数据;但是 TS2009-SP0 及更高版本从以前合法关键字-值对创建了错误,并试图强迫内容创建者更改程序员故意破坏的所有资产。 后来 DLS 上传软件强制执行了转换,但这更可接受,因为第一个操作会导致许多人为修复工作而浪费时间,而这些修复是不必要的,应该在审查较旧 Trainz 版本的资产时,在软件预过滤过程中自动实施。 这些操作几乎保证了较旧资产的下载会出现故障。 这是 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 历史 页面。



华夏公益教科书