跳转到内容

Trainz/容器

来自维基教科书,开放世界中的开放书籍
logo
Trainz 训练生基础知识

Trainz 数据元素介绍 - 2 容器
目录 | 开始乐趣 | AM&C | 创作 | 书内参考 ORP 参考:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本
 词汇表
 HKeys-CM
 HKeys-DVR
 HKeys-SUR
 HKeys-WIN
 鼠标使用
 符号

 

关于容器

[编辑 | 编辑源代码]
有关 Trainz 容器的技术背景,请参见 Trainz/AM&C/containers.
本页面列出了此维基教科书涵盖的特定 Trainz 容器的“
参考页面链接”,在简要介绍了它们在 Trainz 数据模型 中的作用之后。


容器是 Trainz 中用于表示大于单个参数(通常在标签中表示)但仍符合所有 Trainz 数据文件强制要求的 ACS 文本格式 的数据的术语。在这种背景下,容器是复杂的 数据结构,包含多个元素 数据类型,在正确定义的情况下从处理软件的角度来看表示一个 R 值。对我们人类来说,从实际的角度来说,它们是与 ACS 文本格式标准兼容的标签和值的集合,此外,它们还代表可重复使用的分组数据定义,这些定义的目的是为了在多个 Trainz 种类 中重复使用。配置文件和 KIND 从抽象的角度来说,本身就是一个“合并容器”,但 KIND TBS 和 KIND 结合起来创造了一种独特的容器类型。

从某种意义上说,Trainz 资源只不过是通过适当的 枚举代码 组织起来的数据集合,这些容器(包括称为 种类 的父类容器)定义了资源的相互关系和配置,以及数字模型在 GUI 运行时软件(游戏引擎)中的行为。容器只是资源自我定义中的一项元素,由资源创建者初始化。

回忆一下小学数学

{X: A, B, C, ..., xx}读作“合法的值的集合 'X',这些值是:有效数据值的列表。”



数据组织

[编辑 | 编辑源代码]

所有 Trainz 数据都由一个关键字和一个值表示。容器由一个唯一的枚举关键字(标识符)标识,对于一个容器来说,成对的花括号 '{' and '}' 中的所有值在抽象意义上都是容器关键字的值。在内部,所有元素再次是成对的值,通常再次是一个关键字和一个值。 

在许多容器中(或者在实践中,是一个子容器 - 请参阅 缩略图 中的形式、格式和示例,以了解一个常见的易于理解的表示和示例),关键字实际上是一个变量(未枚举和未声明,不受约束),通常按照惯例表示为一个简单的整数{X: 1, 2, 3, ..., nn}后面跟着空格和“值”作为 config.txt 文件中定义数据值的右栏。 

这些被称为“虚拟参数”“虚拟关键字”“伪关键字”,内容创建者可以轻松地使用{X: A, B, C, ..., xx}{X: throttle1, throttle2, throttle3, ..., tt},因为在这些情况下,实际上所有容器中的值都按顺序排列并组织起来,以填充 KIND 相关的内存物理地址,通常是 数组 的一部分(参见 节流功率容器)或 列表(参见 缩略图容器 中的多个示例)。

 

Trainz 维基教科书容器

[编辑 | 编辑源代码]

Trainz 维基教科书和 N3V Games TrainzOnline wiki(或 Trainz Wiki)的重点和目的不同。TrainzOnline 页面旨在成为内容创建者的技术规范和参考,以及一种用于传达运行时软件所需数据的工具,以便资源可以在 Trainz GUI 中正常运行。它充当内容定义的简明指南。

在 Trainz 维基教科书中,我们的重点是提供从基础到中等甚至高级的入门资料 - 传授理解,帮助新老 Trainz 用户更详细地了解 Trainz 的来龙去脉。一家小型企业为了维持生计而努力奋斗的成本和人力限制了 Trainz Wiki,它必须具有权威性。我们在这里努力做到同样程度的准确性,但也努力做到更宏观的视角,并且不可避免地会出现一些在 Trainz 持续发展过程中引入的更改的滞后。如果没有这些改变,这款产品就不会生存下来,虽然这使得“赶上”变得很困难,但也使得 Trainz 体验不断改善。 

当我们认为某个主题需要额外的阐述,并且缺乏对基础知识的连贯构建时,我们将在 TrainzOnline Wiki 的页面中加入更多信息、解释、示例,并希望在 N3V 程序员(负责监管 Trainz Wiki)不希望使用更严格的简明写作方式的情况下,帮助理解。以下是迄今为止我们容器页面的目录。在目录下方,您将看到 TrainzBaseSpec 中一些关键基础资料的回顾。

容器目录

[编辑 | 编辑源代码]
[e]
KIND(资产类型组)
容器


属于 TBS 的容器

[edit | edit source]
  1. extensions 容器extensions
  2. kuid-table 容器
  3. member-of-groups 容器
  4. obsolete-table 容器
  5. privileges 容器
  6. script-include-table 容器
  7. thumbnails 容器thumbnails 容器

 

  • 上面列出的两个链接中,第一个链接到有关容器类型的专用参考页面,第二个链接到 TrainzBaseSpec (TrainzBaseSpec) 中涵盖该容器关键字(名称)的部分。大多数上面的链接将导航到 TBS 的正确部分。

不属于 TBS 的容器

[edit | edit source]

这些是 Trainz 配置容器,它们不属于 TrainzBaseSpec,但被多种 资产类型 使用。不属于 TrainzBaseSpec 的容器是常态,而不是例外,因为容器被定义为用于自定义多种资产类型或资产部分的多用途数据子组。

  • attached-splines 容器 -- 轨道资产 的可选平行样条线定义,也就是说自 TS2009 数据模型发布以来,Trainz 中任何完全更新的样条线资产。
  • bogeys 容器 -- 在一些铁路文化中也称为转向架,Trainz 使用 bogeyNN 符号来表示车架上哪组轮子在哪里排列,以及其他修饰符来定位、滑动或旋转轮组。bogeys 容器是车厢类资产的固有部分。
  • flowsize 容器 -- Enginespec
  • junction-vertices 容器 -- junction-vertices 容器
  • queues 容器 -- 工业和互动资产;该容器的定义用于装载车厢,以及向工业卸载或装载货物。
  • volume 容器 -- Enginespec
  • mesh-table 容器 -- 任何“显示”资产的基础,没有网格,就没有东西可以用来绘制纹理,所以也就没有什么可以看。
  • season-selector 容器 -- 为样条线资产中的多季节纹理更改添加,(自 TB v2.9/TS2009 数据模型 以来,所有资产都是 轨道类型 的变体),TS12 中的新功能(TB V3.5)。
  • smoke 容器 -- 最古老的容器类型之一。从水龙头喷出的水流到乡村小屋烟囱顶部的刺鼻松木羽流,火车场周围到处都是烟雾和蒸汽;半透明的薄薄的东西创造了许多几乎是魔术的效果。有人想要烟雾和镜子来帮助可信度吗?这种容器会出现在各种各样的资产中。不止一个获得了 NN 编号作为后缀,形成了 smoke0、smoke1、smoke2、...、smokeNN,因为资产需要。烟雾也是互动的,并且与软件有各种接口,smoke 容器的定义构成了这种软件链接的一部分。
  • track-lod-tree 容器 -- TS2009 数据模型更改中的新增内容,track-lod-tree 容器用于为在高分辨率和低多边形网格之间进行选择提供决策参数。实际上,它经常被递归使用,为渲染软件提供在 LOD 系列中三个或更多网格之间进行选择的选项。因此,它的主要功能是通过减少在物体距离越来越远时(无论是在近处、附近、更远、中间还是远处)所需的计算多边形数量来保持游戏帧速率很高。

 


TBS 中的类型列表

[edit | edit source]

TrainzBaseSpec (TrainzBaseSpec) 是所有 Trainz 数据模型 标签和容器的综合列表,这些标签和容器是必需的可选的在任何和所有 trainz 资产中。下面概述的部分列出了 Trainz 数据模型 中的 KIND,链接重复了上面的 TOC,或链接到 N3V Wiki 以便于参考。

  • KIND 是一种特殊的容器,因为它们的 定义 也包含标签,这些标签会偷偷潜入隐藏在 config.txt 文件中的标签,因此看起来似乎根本没有包含。定义 kind 标签 会让这种判断变得危险——通过定义 kind,就好像程序员在高级语言中添加了一个包含文件一样。在这种情况下,需要手动添加,而不是读取真实包含文件中的文本。
  • 在 KIND 定义中作为标签的东西,也是 config 文件中的标签。理解这一点,你就赢了一半。


KIND 的类型

[编辑 | 编辑源代码]

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

TrainzBaseSpec 子类 KIND(类型资产组)

 

 

注释和脚注

[编辑 | 编辑源代码]
  1. 注:此列表在 N3V TrainzOnline Wiki 上“维基化”,这意味着在“KIND”一词之后,第一个字母已大写,而 config.txt 文件中的实际数据标签名称全部为小写文本。该维基还使用双引号来表示很多术语,我们将在本文中避免使用这些术语。
  2. “kind consist”并不常见,它只存在于菜单和内容管理器列表中。

 

华夏公益教科书