跳转到内容

Trainz/AM&C/containers

来自维基教科书,开放世界中的开放书籍
(重定向自 Trainz/container)
logo
Trainz新手入门

Trainz资源维护与创作
TOC | 开始乐趣 | AM&C | 创作 | 书内参考文献 ORP 参考资料:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本
 词汇表
 HKeys-CM
 HKeys-DVR
 HKeys-SUR
 HKeys-WIN
 鼠标使用
 符号


[e]
KINDs(资产组类型)
容器


CS中的容器

[编辑 | 编辑源代码]

计算机科学(CS)领域,'容器' 是一个类型化的 变量,它包含其他值。一个原始类型是语言中的一个数据元素(与二进制机器存储类型相对应),它用于在容器(如数组)中组合时定义更复杂的类型(一个索引列表容器,其中所有包含的数据元素类型相同)。'变量' 是一个关键字(一个符号引用),用作'方便人类使用的句柄',用于引用其中类型的元素,无论它们是什么类型。在一般计算机科学中,变量的值可以被更改和重新定义,而在 Trainz 中,某些关键字名称是可变的,而数据则由内容创建者 (CC) 在配置文件中固定。

也就是说,在 Trainz 中,容器是枚举数据类型,它们充当关键字,后跟一对大括号 ({}),在其中包含数据,但某些 Trainz 枚举容器类型可能会出现多次[1],因此当需要多个实例时,会在末尾添加一个数字索引,例如(常见的特效容器)smoke0、smoke1...、smokeii

在基础级别--机器相关的级别:nibbles 构成 bytes,bytes 构成 short words,short words 构成 long words,并且(有时是 short words 和)long words 可以加倍、四倍 (x4)、五倍 (x5) 或捆绑成更大的字节块,在机器代码级别由程序的类型分配和定义约定进行解释。
上面列出的都是硬件可以管理的原始类型,编译器编写者负责将它们解释和处理为语言的原始类型。一种高级语言在适应计算机架构后,使用这些机器原始类型来定义其语言特定数据元素或原始类型。其他更复杂的类型都是根据这些类型定义的。
应用程序依赖于这些定义来定义诸如字符(此文本)、整数(没有小数部分,请!)和浮点数(小数十进制 中表示为 二进制 -- 二进制机器语言)等类型。这些计算机语言也必须具有相应的原语,称为 指针,用于描述每个原语的每个数据元素的 内存地址(或物理地址)。如果元素不能在 随机访问 操作中直接访问,它就不是一个离散元素,使其成为更大元素的一部分——一个包含其物理状态的容器。
位运算 算术中,整数通常与具有关联含义的特定位一起使用。这些被称为标志,它们与位掩码一起通常用作分类(是该集合的一部分,满足此条件,满足或不满足此测试)以确定进一步的处理。这些是 YES-NO 或 TRUE-FALSE 评估,布尔逻辑 操作。

当数据原语需要成批处理时,会使用容器类型。

  • 字符串是一个包含字符的容器,这些字符不打算被处理为数字数据,或者只是文本;虽然文本的合法表示取决于文本的编码方式(unicode、ASCII、BOM 等)。
  • 数组,一个索引可随机访问的值组是另一种类型的容器。类型数组(整数、字符串等)可以保存每个匹配的原语类型的元素。在机器级别,数组的开头是一个地址 ('A'),该地址的值是第一个元素,它可以保存一个该类型的值。下一个元素的偏移量是数据的长度 (L)字节 为单位——可以单独寻址的最低数据形式(索引用于随机访问)——因此第一个元素的地址 + L)(A + L)给出了下一个元素的地址。这可以用索引或游标变量 'I' 来写,以便第 N 个元素(其中 I= (N-1))可以通过Ai = (A + L * I) 来寻址,通常表示为V[i],其中 V 是一个变量名。因此,数组中的最大元素数是 N,因为 V[0] 必须是地址运算中的一个偏移量,而 V[N] 是一个非法的索引,因为它计算的是内存中未分配给数组的另一个位置的地址。因此,V[N-1] 是 N 个声明的内存地址(长度为 L 字节)的最后一个元素。
  • 矩阵


Trainz 容器

[编辑 | 编辑源代码]
  1. 一个 资产内容OS 文件系统上的一个文件文件夹,其中包含其自身的自定义文件,这些文件随后被合并到 Trainz 数据库中,该数据库由 TrainzUtil内容管理器 管理。大多数资产需要组件部分或其他资产才能完全呈现数字模型,或运行时资产,例如 Trainz 会话和 路线
    1. 勘测员 模块用于在 Kind 地图'布局' 或 '路线' 资产)上构建游戏世界,方法是在地图的数据库上放置此类内容/资产——这些内容都包含在地图的 KUID 文件夹 中,它保持所有内容井井有条。
    2. 勘测员模块的 会话编辑器 也用于编写 会话,这些会话结合了代表脚本的 规则,这些脚本被编译成运行时代码以创建一个用于游戏的“场景”,存储在会话的 KUID 文件夹中,作为一个 Kind 配置文件。这些在组成和功能上与历史上的“场景”类型有很大不同,后者是在 TrainzScript 应用程序中预先编写并保存为 活动。在 TS2012 之后,KIND 活动被停用,除非用户在数据库中,否则启动它们的菜单按钮不会显示。
  2. 所有资产都包含一个标题或自定义文件,Trainz 称为 config.txt,这是一个资源组织和参数声明的文本文件,没有它,资产自定义会失败,或者具有 故障,根据 spin N3V 的扭曲,这个词意味着。
  3. 一个 .cdp 文件或 .cdp2、.cdpa 变体)是另一个火车容器,一个可移植的压缩数据集合,我们从其他 Trainzer 那里获得,跨 Trainz 版本通过导出和导入,以及从 DLS 上传和下载的数据形式。
  4. Trainz 容器是一个 枚举(已定义和约束)的复杂类型的数据结构,其中可能包括标签(通常是虚拟标签)和值或引用(KUIDS),以及 子容器容器
    1. 它们通常包含可变长度(到 CC)的数组声明(乘客连接点 乘客参数),这些声明用于分配实际内存和初始化值,这些值由同一结构中的伴随定义标签或从父容器继承的标签进行修改。
    2. 配置中哪些容器是合法的,取决于资产 KIND 标签定义。
    3. 包含文件是计算机科学类在 Trainz 中通过 texture.txt 文件引用实现的,这意味着列出组件的 依赖项 的 KUID。Trainz 中的 texture.txt 文件在 config.txt 声明中令人困惑地不能具有扩展名 .txt,而必须以 .texture 扩展名结尾。
    4. 在 Trainz 层次结构中,KINDs 是一个上层复杂类型,其中隐式嵌套了必要的标签。
      1. 也就是说,几乎所有 Kind 定义都会在 config 中添加一些标签,这些标签不会嵌套在成对的卷曲括号中,这些括号是通用 Kind 的特征,以及一个在外观上是容器的元素。
      2. 这些是事实上的子容器,仅适用于该 KIND,而 Trainz 容器类型更通用,因此可以在多个 KIND 需求中声明和使用。实际上,容器实际上是 KIND 的子容器,它们满足几个到多个资产自定义的更广泛需求。
      3. 隐式嵌套由 Kind 标签的声明控制,因此不在其特殊子容器内的 Kind 标签可以被正确处理。

注释和脚注

[编辑 | 编辑源代码]

参考资料

[编辑 | 编辑源代码]
  1. 定义:实例
华夏公益教科书