跳转到内容

Trainz/容器

来自维基教科书,开放世界中的开放书籍
(重定向自 Trainz/Container)
logo
Trainz 培训生的基础知识

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

 

关于容器

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


容器是 Trainz 中对数据的一种称呼,这些数据比通常在标签中表示的单个参数更大,但仍然符合所有 Trainz 数据文件都必须遵循的 ACS 文本格式。从这个背景来看,容器是包含多个元素 数据类型 的复杂 数据结构,这些数据类型表示一个 R 值(如果定义正确),从处理软件的角度来看。对我们人类来说,它们是一种务实的方式,每一组相关的标签和值也符合 ACS 文本格式标准,此外,它们还表示可重用的分组数据定义,这些定义专门用于在 Trainz 的多个 种类 中重复使用。配置文件和 KIND 在抽象意义上都是容器,但 KIND TBS 和 KIND 共同创建了一种独特的容器类型。

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

回想一下初等数学

{X: A, B, C, ..., xx}表示为“合法值的集合 'X',这些值是以下之一:有效数据值的列表”。



数据组织

[编辑 | 编辑源代码]

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

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

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

 

Trainz 维基教科书容器

[编辑 | 编辑源代码]

Trainz 维基教科书和 N3V Games TrainzOnline 维基(或 Trainz 维基)侧重点和目的不同。TrainzOnline 页面旨在作为内容创建者的技术规范和参考,以及用于传递运行时软件所需数据的工具,以便资源在 Trainz GUI 内正确运行。它作为内容定义的简洁指南。

在 Trainz 维基教科书中,我们的重点是提供从初级到中级,有时还包括高级知识的介绍性资料,帮助新老 Trainz 用户更详细地了解 Trainz 的内幕。一家小公司为维持运营而付出的成本和人力资源限制了 Trainz 维基,因此它必须具有权威性。我们在这里努力达到相同的准确度,但也要努力呈现更宏观的视角,并且不可避免地会有一些在 Trainz 不断发展过程中引入的变化滞后。如果没有这种变化,这款产品就不会生存下来,虽然这使得'追赶'变得困难,但也让 Trainz 体验不断改进。 

当我们认为某个主题需要额外的说明,并且缺乏基础知识的连贯构建时,我们会用额外的信息、解释、示例来扩充 TrainzOnline 维基页面,并希望在 N3V 程序员(负责 Trainz 维基)不希望使用更严格、更简洁的写作方式的情况下,帮助人们理解。以下是截至目前我们容器页面的目录。在目录下方,您将看到 TrainzBaseSpec 中一些关键基础材料的回顾。

容器目录

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


属于 TBS 的容器

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

 

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

不属于 TBS 的容器

[edit | edit source]

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

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

 


TBS 中的 KIND 列表

[edit | edit source]

TrainzBaseSpec (TrainzBaseSpec) 是所有 Trainz 数据模型 标签和容器的综合列表,这些标签和容器是必须或可选任何和所有 Trainz 资产中。下面回顾的部分列出了 Trainz 数据模型 中的 KIND,并提供了与上面 TOC 相同的链接,或链接到 N3V Wiki,方便参考。

  • KIND 是一种特殊的容器,因为它们的 defines 还包括潜藏在 config.txt 文件中标签的标签,因此看起来根本没有包含。定义 kind 标签 会使这种判断处于危险之中 — 通过定义 kind,就好像程序员在高级语言中添加了一个包含文件。在这个例子中,需要手动添加,而不是读取真正的包含文件中的文本。
  • KIND 定义中的标签也是配置文件中的标签。理解这一点,你就能赢得半场胜利。


KIND 的种类

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需元素:一个 config.txt 文件 来组织数据,一个身份,即 kuid(仅用户名是不够的,但合法的资产可以不包含名称创建!)最后,一个合法定义的 kind 标签。kind 负责管理,是乐队的指挥,是排长或 CEO 指挥 — 为 config.txt 文件中处理的所有内容设置要求。简而言之,kinds 的值,一个由少数几个严格定义的成员组成的小组 — 告诉 Trainz 软件在虚拟世界中呈现和显示什么,以及如何(或在哪里)找到将 config.txt 文件中这些资产部分链接在一起的其他部分。
  以下每个子类都被认为具有 TrainzBaseSpec 作为其数据的“父类”。[注释 1] 以下是其中一些类型,那些带下划线的类型是过时的类型,它们早于在 Trainz 数据模型 中发布的 TS2009 (即 2008 年后期)进行的更改,N3V 程序员只对这些类型进行了渐进(增量)的更改。
  目前,可以在 N3V Trainz Wiki 的 内容创建者指南 部分找到基于这些过时类型修复资产的详细信息,TrainzOnline 网站在这里 提供了具有启发性的 过时类型示例在这里。强烈建议所有使用 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”并不常直接看到,它实际上只存在于菜单和内容管理器列表中。

 

华夏公益教科书