跳转到内容

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 文件和其文件夹中资产数据的解释。
  • 但是,大多数是可选的,大多数子资产中可以省略使用该标签的定义行。
  • 没有。所有 Trainz 数字模型都需要的有效且大部分都是必要的,实际上是由父容器定义的,即所有 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 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(单独的用户名对你毫无用处,然而,即使没有名称,也可以创建合法的资产!)最后,一个合法的定义的 kind 标签。kind 是负责人,是管弦乐队的指挥,是排长或 CEO 发出指示——为所有在之后处理的内容设置要求。简而言之,kinds 的值,一个精心定义的成员专用的小型选择组——告诉 Trainz 软件在创建的虚拟世界中渲染和显示什么,以及如何在该 config.txt 文件中找到连接这些资产部分所需的其余部分。
  下面的每个子类都被认为具有 TrainzBaseSpec 作为其数据的“父类”[note 3]。下面列出的一些 kind,那些带下划线的 kind,是早于 Trainz 数据模型TS2009 版本发布(即自 2008 年末以来)更改的遗留 kind,N3V 程序员只对其进行了逐渐(增量)的更改。
  目前可以在 N3V Trainz Wiki TrainzOnline 网站这里Content Creator's Guide 部分中找到有关基于这些遗留 kind 修复资产的详细信息,其中包含 遗留 Kind 的示例。强烈建议所有使用 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 (容器)

  { 依赖项列表
  按 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 资源组 资源列表。

 



支持的标签

[编辑 | 编辑源代码]

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 窗口中,逗号是多个 kuids 的必需分隔符。通常,将数据聚合到完整的 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,直接对应('映射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 无 Service Pack)开始递增 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 的平稳递增,这些 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”资产才能进一步混淆我们?好吧,实际上,我们都会搜索 house 并从图像中进行选择,但能够指定一个唯一的名称并获得你期望的结果真是太棒了!


 
 

username-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-XX 标签,每个支持的区域设置一个。如果在给定最终用户系统上没有相应的“description-XX”标签来表示此资产,则使用英文描述标签。

 

字符串表容器

[edit | edit source]
类型: UTF-8 字符串列表容器,字符串表容器.
字段定义:一个键值对列表,包含**英文**字符串。每个键都是一个有意义的脚本标识符,映射到二进制数据并被其引用。每个值都是一个**英文**字符串。英文字符串可以包含或引用一个非英语专有名词作为标识符。由非英语母语人士创作的资源,如果需要,仍然必须创建没有后缀的字符串表容器。软件只链接到字符串表容器中的名称和值并引用它们,而不添加后缀,这对于西班牙语、法语、德语、捷克语、荷兰语……日语作者来说将是无尽的烦恼。换句话说,带后缀的字符串表仅仅用于翻译目的,当地图用非英语编写时就会出现问题——没有字符串表-en 来提供反向翻译的表格。同样,用户名-en 和描述-en 也是如此。这三者都缺乏表现出过时的傲慢和对世界动态的漠不关心。

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

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

 

字符串表-XX 容器

[edit | edit source]
类型:UTF-8 字符串列表容器,即本地化的字符串表,每个后缀对应除英语以外的语言。
字段定义:(其中XX被替换为适当的本地化代码,表示所代表的语言。)该字段类似于字符串表字段,但表示非英语语言环境。

英语字符串表(没有后缀)是强制性的,其他本地化语言在资源作者的决定下是可选的。提交到 DLS 的许多资源,以及捆绑在 Trainz 版本中的路线,通常会翻译并提供完整的本地化翻译,用于描述-XX 和字符串表。特别是,捆绑在版本中的路线和会话在每次零售版本发布时都会进行专业翻译,翻译成多种语言。

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

一个资源中可能存在多个字符串表-XX标签,每个支持的语言对应一个。每个标签都应该包含一个字符串列表,这些字符串具有与字符串表列表中相同的键,但具有不同的值。如果不存在适当的“字符串表-XX”标签来代表此资源在给定的最终用户系统上,或者该列表中缺少适当的字符串,则会改为引用英语的字符串表容器。 

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 槽位,这将创建一个需要自身旧版本的循环定义!)
  • 同样,资源不能列为它自己的依赖项。[另一方面,这在 TSxx CMs 中被体验过(即被证明是成功提交的无错误资源),将地图和会话移植到 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 添加到装载和允许的产品队列表格条目中。(欢迎你,但这是一个改变名称的好理由!保持条理几乎是制作资产的全部战斗!)  

过时表格容器

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

 

类别 - 地区标签

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中过滤(搜索条件)
类型:枚举字符串或字符串数组。
字段定义:由分号 (;) 分隔的两位数 类别 - 地区标签 代码列表。字符串中不应该存在其他字符(包括空格等)。此资产被视为与每个指定的区域相关联——这对于 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 个字符的 类别 - 类 代码。类别 - 类标签用于提供超出资产种类隐含的人工子分类。每个 Trainz 资产的类别 - 类标签有助于描述资产在游戏中的“意图”,而不是资产的内部结构。
内容创建者指南(CCG)用于 TRS2006 和 CCG for Trainz Classics 解释了这些类别代表一个标准化系统,用于引用各种类型的机车、机车车辆、场景、样条线和工业资产。当搜索和/或过滤适合的资产以制作会话或路线(布局)中的内容时,类别 - 类分类代码对所有 Trainzer 变得很重要。


 

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

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

 

category-era 标签

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

 

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

 

缩略图容器

[编辑 | 编辑源代码]
目的:在 CM 和 Surveyor 中过滤(搜索条件)
类型:缩略图容器.
字段定义:在整个游戏环境(包括游戏内、在 内容管理器下载站 中)用于在二维预览框、列表和图标形式中表示此资产的缩略图(多个)。每个数据集都包含在一个子容器中(通常)使用 占位符参数 作为键名或标签。 [注释 8] 惯例使这些数字从 0 开始索引,但值可以是任何可以评估为 字符串 的非空文本值。(参见下面的第二个示例)
一个实际的例子
(来自资产修复编辑[3])
thumbnails {
	0 {
		width					240
		height					180
		image					"$Screenshot (240)(kuid 68787 25222).jpg"
	}
	1 {
		width					512
		height					512
		image					"$Screenshot (512)(kuid 68787 25222).jpg"
	}
}

另一个常见的尺寸是 128x64 的“图标”,用于 Railyard 和测量师资产选择 API,它应该有一个 Alphamask 或一个非常浅的背景。许多旧的没有使用 jpg 文件,而是将 .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 热修复中被放弃。
 • 如果缺乏缩略图容器的资产(即使使用过时的 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 网站上的特定页面而不依赖于特定的 Web 布局来帮助实现未来可扩展性。短 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 容器 是任何从 KIND TrainzBaseSpec 派生的资产(简而言之,所有资产)都可用的顶级 config.txt 文件 条目。此容器允许资产直接 包含另一个资产的脚本 来自父资产的脚本文件,使用 N3V TrainzScript 的 Script_Include_Directive

相关

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

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 容器

[编辑 | 编辑源代码]
类型: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 container|Custom-category-list 容器|custom-category-list 标签|Custom-category-list 标签|custom-category-list 字符串|Custom-category-list 字符串|Custom-category-list 容器|custom-category-list 容器

custom-category-list

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

 

member-of-groups 容器

[编辑 | 编辑源代码]
最小构建: V3.5 及更高版本
类型: Member-of-groups 容器 成对列表,包含 占位符参数资产组 KUID。
字段定义: 一系列KIND_Asset-group 资产,此资产属于这些资产。有关如何使用以及何时使用的详细信息,请参阅 kind KIND Asset-group 文档。

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

如果对于给定的“member-of-groups”容器未指定任何条目,或者如果资产省略了“member-of-groups”容器,则模拟器软件可能会根据资产的 Config.txt 文件指定一些默认资产组。确切的行为可能会在模拟器的不同版本之间有所不同,但是当前的逻辑在此处进行了描述。 

可选的已弃用标签

[编辑 | 编辑源代码]
以下标签对于任何资产来说都不是强制性的,许多资产都将其留空。
从历史上看,识别和许可标签从 Trainz 0.9(Beta)开始。

 

类型: UTF-8 多行字符串。(已由程序员法令弃用。)
字段定义: 一个许可证,描述资产创建者希望如何使用此资产。最常见的是许可证声明,禁止在任何付费路线、依赖资产(例如车厢部件,如转向架、联轴器等)或重制皮肤中使用受版权保护的资产,包括在任何付费运营的网站上分发资产。(理论上,即使对于 DLS 也是如此。FCT 费用用于更快的访问和无限次下载,而不是访问资产。)
license 标签的含义不明确,N3V 不建议使用它,但它的出现早于 N3V 的管理 6-7 年。
上传到下载站 或提供用于包含在游戏中的内容可能受特定再分发合同或许可协议的约束,该协议取代此字段中的任何文本。license 字段不提供本地化支持。license 字段的文本未经 Auran 或 N3V 验证或执行,可能具有法律约束力,也可能不具有法律约束力。
另一方面,Planet Auran 的历史表明,有人通过将他人的内容当作自己的内容来侵犯版权,可能会导致迅速被禁止访问 Auran 网站,并永久屏蔽下载站权限等。此外,社区会严厉打击其他用户侵犯他人的版权行为,并回避违规者,并忽略任何允许留在 DLS 上的资产。
总之,实验和更改资产对于试图攀登陡峭的内容创作学习曲线的 Trainzer 来说是一种公认的,甚至是被认可的方式(每个人都希望有更多内容创建者!),但如果资产有依赖部分,尤其是网格、脚本、纹理,这些都是知识产权——在上传你的作品之前,请获得使用属于他人的这些部分的许可。
用“KUID 引用指定的资产部分不属于本声明的范围——使用公共联轴器、转向架或基本货车网格(Auran 发行了几个标准类型,许多作者通过对网格进行 KUID 引用来默认使用它们,例如,检查箱车的依赖项(英国:覆盖货车或厢式货车)——超过一半可能使用对 Auran 在 Trainz 1.0 中发布的基本网格的 KUID 引用!)


 

author 标签

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

 

organisation 标签

[编辑 | 编辑源代码]
注意英国拼写,“organisation”,北美拼写“organization”也可以!
类型: UTF-8 字符串。(已弃用,建议使用可更新的 星球 Auran 数据库。)
字段定义: 负责创建此资产的组织的名称或标识。不建议使用此字段,因为归属权可以通过程序确定。

 

contact-email 标签

[编辑 | 编辑源代码]
类型: 字符串,电子邮件地址。(已弃用,建议使用可更新的 星球 Auran 数据库。)
字段定义: 此资产创建者的联系电子邮件地址。不建议使用此字段,因为归属权可以通过程序确定,并且可以针对创建者的 Auran 帐户星球 Auran 帐户 注册联系信息,并在需要时进行限制或更新。

 

contact-website 标签

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

 

已废弃的标签

[编辑 | 编辑源代码]
以下“标签列表”是“事实上的”,因为它们的“使用习惯”早于上述列出的 TBS 标签的正式汇编,但并非早于使用它们的规范,事实上,也早于“TrainzBaseSpec”一词的创造(在 2008-2009 年的 TrainzOnline Wiki 中引入),或者它在 N3V Wiki 页面 上的正式定义 11:32, 12 May 2009[4].


 

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

 

编者注: 这些“TrainzBaseSpec 标签”在某些情况下,通过程序员命令在 TB V2.7 中已过时主要是那些与机车 KIND 相关的),并且在所有情况下,在 TS2009-SP0 之后以及它之后的所有N3V 游戏版本(尽管许多用户发现它们中的某些具有效用,但它们会对内容创建者造成的时间惩罚,以及忽略那些在 预处理操作 中不再有用的能力),如果资产被打开以进行编辑并通过提高 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 变体。

 

Asset-name

[编辑 | 编辑源代码]

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

bendy 标签

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

 

casts-shadow 标签

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

 

name 和 name-XX 标签

[编辑 | 编辑源代码]
  • 'name' 和 'name-XX' 是早期数据模型中较长的 usernameusername-XX 标签的早期形式,XX 代表英语“name 标签”(或今天的“username 标签”)的非英语语言翻译的 ISO 二字母后缀;“XX”形式与 description-XX 一样,是“本地化”对其他语言的易于理解的值的支持部分。
  • 在最古老的 Trainz 时代 (v1.0-v2.4) 资产中,将 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,它也取代并替换了 CM 打开文件夹以进行编辑时的“asset-name”。

按照惯例,子文件夹名称将具有以 username/asset-name 字段开头的路径规范名称,并使用后缀 _art、_body 和 _shadow 作为正常命名约定的一部分。这可能是 3ds Maxgmax 约定遗留到 Trainz 中的,Trainz 与该图形开发软件有历史联系。(Gmax 与 Trainz 版本 V0.9—v2.4 捆绑在一起)


 

category-era-nn 标签

[编辑 | 编辑源代码]
category-era 标签 取代
  • category-era-nn — V1.3–v2.8 s.a. {tag: category-era-0, category-era-1, category-era-2, ...} — 以前的日期系统,带有数字后缀 - 历史上几乎所有值得日期的资产都可以在 TBV 2.0 之前找到(甚至在 TBV 2.8 构建的资产之后!),当时引入了当前的 category-era 字符串数组将这些组合到一行 config.txt 中[注释 12]。虽然在 Surveyor 中无法直接访问,但在 TR06 和 CMP 之后,可以定义一个过滤器来选择一个日期范围,并将该过滤器与区域和类型一起使用在 Surveyor 中来验证 Surveyor 安排和选择工具中可列出的资产。在 TS09 及其之后已过时,TS09 使用更短的 category-era 标记 字符串数组 放在一行中,而不是使用多个带有 '-nn' 后缀的标记值对。
  • 字符串数组中的空格会导致错误;所有值必须以 's' 结尾并具有四位数字,例如1880s;1950s;2010s(这对于某些类型的女性服装可能完全合适,因为它们会流行和过时!)。遗憾的是,目前无法定义范围,但这已被用户社区提出要求。
  • 用字符串数组类型 category-era 标记 替换,标记之间没有空格和分号;这些标记以完整的四位数十年数字加 's'(小写字母 's')后缀的形式给出。

 

category-region-nn 标记

[编辑 | 编辑源代码]
category-region 标记 取代
  • 类型 category-region-nn — V1.3–v2.8 — 历史上几乎所有值得本地化的资产中都存在。它们已被 category-region 标记中的包含两个字母的枚举 ISO 国家代码的 '字符串数组' 取代。
  • 用字符串数组类型 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 容器 的早期单视图实现(上面也有简要记录)。Trainz 的早期 N3V 之前版本的程序员会找到一个 .jpg 文件,最好大小为 240x180 像素,该文件位于主资产根文件夹、asset-name_art 文件夹或 asset-name_body 文件夹中,并将其用于在 CMP 和 DLS(如果上传)中显示资产。该标记在 TRS2006 期间已弃用,因为 thumbnails 容器是在 v2.0(TRS2004-SP0)中引入的。在 TBV 保持在 v2.4 以下的旧修复资产中,只要缩略图位于 _art 子文件夹中且资产名称与用户名匹配,缩略图通常仍然可以在较新的 CM 中正常工作。 

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 工具中 'type 和 region' 的粗略过滤分组选择器 - 没有赋予用户保存多个 Pick List 或轻松加载在 CM 中定义和完善的过滤器的能力。

 

  1. 资产 提交(TANE 的提交)是将内容整合到数据库并将其交叉引用到数据库索引中的过程和步骤,以便可以在运行时模块中访问它。
  2. 验证资产的一种方法是,除了这些值之外,其他一切正常,方法是将 TBV 降低到 2.5-3.7 范围,并查看这些消息是否消失。您可能需要在多次尝试中降低它,直到足够低,反之亦然,较新的关键字在较旧的 TBV 中无法识别可能会给出不同的错误消息。不要害怕尝试 - 即使这样做失败也会产生知识和经验,并且您不会破坏任何东西!如果是这样,您可以确信仅仅提供一个值就是问题解决方案。通常,一些现代需求只需要关键字对,因此在标记之后添加一个空行或在标记之后添加一个空的花括号集将满足需求,其中错误测试有点过于严格。
  3. 注意:此列表在 N3V TrainzOnline Wiki 上被 '维基化',这意味着在 'KIND' 这个词之后第一个字母被大写,而 config.txt 文件中的实际数据标记名称全部是小写文本。该维基还使用双引号表示许多术语,这种做法我们不会让你在此体验到。
  4. 'kind consist' 并不经常直接看到,它只存在于菜单和内容管理器列表中。
  5. 必须谨慎使用过时表,它最常见于 Auran 创作的资产中。该表用更新的 kuid 替换了旧的 kuid,大多数内容创建者正确地使用 kuid 的 Kuid2 形式来取代旧版本。相比之下,N3V 过度使用过时表来升级新发布的 '升级' 内置资产,这会导致很多混乱,并且无法获得预期的结果。(例如,许多漂亮的 'Flip-trees' 在 TS10 和 TS12 中被过时,取而代之的是 Speedtrees,这影响了许多路线,其中 Speedtrees 并非创建者想要或希望的。在所有安装中,这还会导致依赖项丢失,直到找到包含过时表的资产。
     • 此外,资产 .tdx 数据库索引中只支持每个 kuid 一个过时条目,用 Kuid2 版本过时一个 kuid 会导致问题(即你会看到哪个?)
     • 过时表的一个很好的用途是升级使用特定部件的系列资产,尤其是转向架。添加一系列 kuid,以新的好转向架替换它们,可以极大地改善路线或会话的外观,只需进行一次编辑即可(前提是转向架,例如,与之兼容且尺寸正确!)
  6. 最近将一个过时的资产引入 TANE 的经验表明,至少有五个替代的 kuid 过时了那个糟糕的 Flip-tree 资产。看来,随着 Speedtrees 引入造成的混乱以及 TANE 对最新合适资产的积极追求,内容管理器进程现在容忍多个不同 kuid 的资产过时同一个 kuid。作为一种良好的做法,仅在绝对必要时才使用过时表... 例如,在您想要上传到 DLS 或在网站上自行发布的依赖资产中,过时一个不想要的付费资产。
  7. 关于 category-era 标记范围:安全有效的玩法。其他 '未来十年' 值应在依赖于这些值之前进行测试。
  8. 许多容器在列表中使用虚拟/占位符名称。这些可以是描述性词语,只要它们不包含空格字符即可。在短语构建的名称中使用下划线或句点可以保持可读性并显着提高清晰度。例如,一辆货运列车车厢可能装载 45 种合法产品类型。这些将在依赖项容器中列出。使用 Coal、granite、crushed_limestone 等使表格的维护和更改更容易。Jes Sayin' 作为一名程序员自 1976 年起
  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 构建资产时在软件预筛选过程中自动实现。这些操作实际上保证了旧的资产下载将存在错误。这是 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 历史记录 页面。



华夏公益教科书