跳转到内容

Trainz/containers

来自维基教科书,开放世界中的开放书籍
(重定向自 Trainz/Containers)
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},因为在这种情况下,事实上,在所有容器中,值(s) 被排序和组织,以填充内存中与 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. 扩展容器, 扩展
  2. kuid 表格容器
  3. 成员组容器
  4. 过时表格容器
  5. 权限容器
  6. 脚本包含表格容器
  7. 缩略图容器, 缩略图容器

 

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

不属于 TBS 的容器

[edit | edit source]

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

  • 附加样条线容器 -- 轨道类型 资源的可选并行样条线定义,也就是说 Trainz 中任何自 TS2009 数据模型发布以来完全更新的样条线资源。
  • 转向架容器 -- 在一些铁路文化中也称为“卡车”,Trainz 使用 bogeyNN 符号来表示车轮组在车架上的布置位置,以及其他修饰符来调整、滑动或旋转车轮组。转向架容器是火车车厢类资源的固有部分。
  • 流量大小容器 -- Enginespec
  • 连接顶点容器 -- 连接顶点容器
  • 队列容器 -- 工业和互动资源;该容器的定义用于装载火车车厢,以及向工业设施卸载或装载货物。
  • 体积容器 -- Enginespec
  • 网格表格容器 -- 是任何“表现”资源的基础,如果没有网格,就没有东西可以用纹理绘制,所以也就没有东西可以看。
  • 季节选择器容器 -- 在样条线资源中添加用于多季节纹理改变(自 TB v2.9/TS2009 数据模型 以来都是 轨道类型 的变体),TS12(TB V3.5)中的新功能。
  • 烟雾容器 -- 最古老的容器类型之一。从水龙头喷出的水流到乡村小屋烟囱上的浓密松木烟柱,火车场周围到处都是烟雾和蒸汽;半透明的薄雾状物体可以制造出许多几乎神奇的效果。有人喜欢用烟雾和镜子来增强真实感吗?这种容器在各种资源中都有应用。不止一个容器获得了 NN 编号作为后缀,形成 smoke0、smoke1、smoke2、...、smokeNN,根据资源需要而定。烟雾也是互动的,并与软件有各种接口,烟雾容器定义构成此类软件链接的一部分。
  • 轨道LOD树容器 -- TS2009 数据模型更改中新添加的功能,轨道LOD树容器用于为在高分辨率和低多边形网格之间进行选择提供决策参数。实际上,它经常被递归使用,为渲染软件提供在 LOD 系列中的三个或多个网格之间进行选择的能力。因此,它的主要功能是通过减少物体在距离越来越远时所需的*多边形计算量*来保持游戏帧率,*无论是在近处、附近、更远、中间还是远处的距离*。

 


TBS 中的资源类型列表

[edit | edit source]

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

  • KINDs 是一种特殊的容器,因为它们的 defines 还包含偷偷潜入 config.txt 文件中的标签,因此似乎根本没有包含任何东西。定义 kind 标签 会使这种判断处于危险之中 - 通过定义 kind,就好像程序员在高级语言中添加了一个包含文件。在这种情况下,需要手动添加,而不是像真正的包含文件那样读取文本。
  • 在 KIND 定义中是标签的东西,也是配置文件中的标签。理解这一点,就成功了一半。


KINDs 的类型

[edit | edit source]

所有 Trainz 定义的数据(内容)都有三个必需元素:一个 config.txt 文件 来组织数据,一个表示身份的 kuid(仅用户名是不够的,但合法的资源可以不使用名称创建!),最后是一个合法定义的 kind 标签。kind 负责一切,是管弦乐队的指挥、排长或 CEO 下达命令——为 config.txt 文件中处理后的所有内容设置需求。简而言之,kinds 的值——一个由少量成员组成的紧密定义的排他性群体——告诉 Trainz 软件要渲染和显示我们在虚拟世界中创建的内容,以及如何在何处找到其他部分,这些部分需要在 config.txt 文件中将资源的这些部分链接在一起。
  以下每个子类都被认为以 TrainzBaseSpec 作为其数据“父类”。[note 1] 下面列出的部分 kind,即带下划线的那些,是遗留 kind,早于 TS2009 发布时对 Trainz 数据模型 的更改(即自 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” 并不经常直接出现,它基本上只存在于菜单和内容管理器列表中。

 

华夏公益教科书