Trainz/AM&C/数据模型
词汇表 |
HKeys-CM |
HKeys-DVR |
HKeys-SUR |
HKeys-WIN |
鼠标使用 |
符号 |
操作说明:点击正文中的脚注 ([2]) 或注释标签 ([note 12]) 将导航您(定位页面)到该条目的确切文本。 • 然后:点击该处的?符号,将返回您到您开始阅读的地方继续阅读。 |
据说,如果你要四处搬运数字位,你需要一个 容器,一个带有把手的水桶,你可以抓住它来搬运它并在它的能力范围内做一些事情。在 Trainz 中,它是在 Windows 操作系统下编写的,这个水桶就是数据文件夹或目录,所有 Trainz 版本都会将其变成一组以树状层次结构排列的文件夹。
早期的 Trainz 版本在游戏根文件夹路径中建立了一个相对严格的文件夹层次结构。某些类型的资产被强制要求将数据放置在特定位置,以便资产能够正常工作。好消息是该路径的开头没有强制(指定),因此,与其将数据隐藏在 Microsoft 定义的一些模式中的三个或四个层级深的地方,不如将路径从主硬盘驱动器的根目录或其他硬盘驱动器开始[注释 1],并且与许多软件安装不同的是,用户可以并且仍然可以为每个安装的文件夹选择任意名称,无论她认为合适的根路径。
在所有 Trainz 版本中,资产文件夹中的老板是资产的 config.txt 文件。在这个文件中,每一行(实际上)都包含数据对,一个“关键字”和一个配对的“值”。合法格式的标签(关键字)和容器名称从左边缘开始。在一个容器中,它由一对大括号隔开
keyword-containername { indented words and container guts }
尾随的 & 匹配的闭合花括号需要平衡。约定将其放在第一个字母下方,并与关键字的第一个字母对齐。鉴于某些容器可能包含数百行,你一定想知道我们如何才能仍然说“每行(原文如此)包含数据对,一个'关键字' 和一个配对的 '值'。”答案既是过程性的又是概念性的;它是过程性的,关键字作为容器名称将控制权传递给一个处理子例程。这些处理程序知道将与该类型容器合法关键字相关联的数据放在哪里,以及如何找到下一个非空白字符,该字符被评估为标记、值或括号,然后根据需要重复,直到找到与第一个(打开)花括号后面的括号配对的闭合括号。只要每个关键字、内部括号(是的,马蒂尔达,有些容器包含子容器,有些容器包含可变数量的子容器。谢谢提问!)用空格分隔,并且在“预期上下文中”是合法的,一个大型的长 队列容器 的所有子容器仍然只是第二个条件的一部分——标记的值。在本例中,控制中的标记有子标记,这些子标记也有子标记,每行仍然只是一个标记,一个值。(只需稍微转转你的大脑,很快你就会习惯它。别管它 - 那个车站有超过 120 行文本在那个子容器中——在容器数学中,它仅仅是一个单一的值。<g> 不要在里面打错字……当你这样做时,你可能会得到不止一条错误消息!)
- 从最简单的意义上讲,所有 Trainz 数据都以文本文件数据行上的对的形式组织,一个关键字告诉软件如何处理随后的数据。
- Trainz 中从纹理(颜色 & 照明资源)中找到的少量配置数据到最大路线(布局或地图)的每个加载到游戏中的部分都必须有一个 config.txt 文件。Trainz 环境在计算机内部,因此这些文件会引用和列出其他文件也就不足为奇了。
- 你可能知道、怀疑或听说 Trainz 使用各种图像文件来为对象纹理。这些文件具有不同的强度、功能和尺寸影响,但都是成熟的类型;不包括最新的 TANE 后类型,从 DLS 下载的 50 多万个资源中 99.99% 都依赖于.JPG 文件、.TGA 文件 和 Windows 自己的 .BMP 文件 的组合,如今,所有这些都是常见的文件类型。在这些中,TGA 格式是在图形艺术和电视的商业应用中发明的,可能是最不熟悉的——而且很难找到可以处理的图形编辑器。绝大多数 Trainz 纹理将使用 .tga 文件来定义资源。
过去,数字游戏的流行需要屏蔽/透明的 Alpha 通道或层,以实现其与其他投影图像混合的功能。 - 有一些文件包含“如何”应用纹理的说明——这些文件以以下后缀结尾:.texture.txt
- 你可能知道、怀疑或听说 Trainz 使用各种图像文件来为对象纹理。这些文件具有不同的强度、功能和尺寸影响,但都是成熟的类型;不包括最新的 TANE 后类型,从 DLS 下载的 50 多万个资源中 99.99% 都依赖于.JPG 文件、.TGA 文件 和 Windows 自己的 .BMP 文件 的组合,如今,所有这些都是常见的文件类型。在这些中,TGA 格式是在图形艺术和电视的商业应用中发明的,可能是最不熟悉的——而且很难找到可以处理的图形编辑器。绝大多数 Trainz 纹理将使用 .tga 文件来定义资源。
- 所有配置文件可能包含任何关键字和容器,这些关键字和容器的含义和合法数据类型在 枚举 中 TBS 中进行了枚举,但大多数——可以合法地跳过,这取决于枚举的 种类 是否需要该标记-值对,但更多的是因为大多数 TBS 标记更多地是为了人类的方便,而不是为了渲染任何模块。有一些标记至关重要。
- 在给定的最少行情况下,资源默认为原始 TBV 1.3 资源技术标准,外部引用将是资源文件名标记——从 TRS2004 起已过时的标记,在 Trainz Classics (TBV 2.7) 中触发警告,并在 V2.9 以上(TS2009-SP0,2008 年秋季)触发错误消息。这种“旧标记消除”强制首先在 V2.7/TCC 版本中引起人们的关注,在这些版本中,引擎规格、蒸汽机、电力机车和柴油机车允许的标记和容器列表发生了重大变化。
前一段有几个值得注意的教训
- Trainz 数据模型是一个移动目标。
- 它在任何给定时代(版本)的确切含义取决于之前的实践,这些实践受到添加到之前版本技术和实践中的新功能、关键字、约束、要求或方法的修改。
- 有很多标记纯粹是为了人类的方便,例如作者、组织、电子邮件和国际化数据(语言翻译),我们将其描述为“-XX”变体,例如“description-es”或“username-ru”。这些影响排序或显示的信息,以便为其他用户提供更大的便利,但不是强制性值。
这对初学者来说是个好消息——这意味着许多配置文件标记及其行可以忽略。坏消息是,当然,诀窍在于知道哪些以及为什么,以及哪些组合和数据安排在一起是非法的。这就是 KIND 的工作——在这里,我们将在我们认为合适的时候链接种类。
- 学习旧数据实践很可惜,但很有必要。在获取内容方面拥有一定的经验,就会出现某些内容无法为该版本的 内容管理器 接受的情况。关于 Trainz 社区中常见情况的误称是将这些错误称为故障、故障内容、修复故障、错误消息。更准确的术语应该是过时、过时、更新、现代化和重新配置。DLS 上有一些真正的错误资源,但随着 DLS 清理项目的进行,这些错误资源正在迅速消失,曾经很长的清单现在已经缩短了很多。
- Trainz 数据的第一条规则是总有一个配置文件。
- 第二条规则是所有网格和所有由网格引用的相关 texture.txt 文件必须位于同一个文件夹或子文件夹中。
在最古老的实践中,一个始终需要生成资源中网格的引用标记是 'asset-filename' ,它根据种类值引用图像文件(纹理,两种类型)或网格文件(一个简单的对象骨架)。除了这两种构建块类型,甚至资源的名称也不需要。但是,更复杂的种类需要更多定义
- Trainz 是一个国际产品,因此需要国际化功能,这些功能很容易识别,因为它们都在基本标记“username”、“description”和后面附加一个连字符和两个字母的语言代码
- 在运行时菜单中可显示的对象需要图像,标准模仿了商业 3ds Max 生成的建模世界中的实践,并包含一个子文件夹来保存此类 asset-filename 以及
- 各种高级对象需要比在子文件夹中放置其他网格更灵活的数据连接性。
- 在第一个网格使用 asset-filename 槽后,如何指定辅助网格?实际上,asset-fileaname 被设想并实现为几个标准子文件夹的后缀
- 主网格 在火车车厢中,主要(或组织)网格可能被可视化为底盘和结构框架。这很少可见,[注 2]
- 在第一个网格使用 asset-filename 槽后,如何指定辅助网格?实际上,asset-fileaname 被设想并实现为几个标准子文件夹的后缀
}} 但这种比喻是合理的,因为所有将所有部件组合成一个整体的连接点都位于资源的(asset-filename)根文件夹中。
- _body 以“_body”为后缀的文件夹被指定为保存主要子网格。
- 主要动画使用一个标记名称,阴影网格使用另一个名称。这种最初的技术仍然可以在许多新 Trainz 用户检查滚动库存时经常看到,即使子子文件夹也被用来保存子子网格,例如门和舱口,它们随着动画打开和关闭,这些动画显然不是主要车辆动画网格集。
- 类似地,投射阴影的对象有一个用于阴影网格的子文件夹,通常以“shadow.im”命名。嗯,富有创意,这些澳洲人!
Trainz 数字对象没有单一的数据模型,而是一系列广泛的资源要求,这些要求随着各种模型部件的种类而逐渐不同,导致一组数据,对内在变化和时间赋予不同的重要性。请记住,最初的 Trainz 0.9 CDROM“Beta”版本是在 Y2K 之前的那个时期发布的,当时有些人认为计算机世界即将崩溃,将地球再次推入石器时代。嗯。虽然这后来变得很有趣,但正是在那些令人担忧的日子里,Auran 将 Beta 版本发给了他们遍布世界各地的众多爱好者小组进行评估。本质上,该版本定义建模数据集的方式至今仍在很大程度上沿用。它已经弯曲了,脱落了皮肤细胞,剪了头发,并且在某些情况下被晒黑了,但核心……仍然是稳定的,并且在添加的一些不同数据结构中是可识别的,这些数据结构是为了生成更多易用性、容量或灵活性。这些关键的改进功能,以及 Trainz 社区在保持高度向后兼容性的同时提出的驱动需求,是许多用户坚持使用这些产品的原因,尽管偶尔会遇到令人厌烦的情况。
早期的 Trainz 是一款实验性产品,旨在探究是否存在市场需求。虽然 Game Company,Auran 的设计师和软件工程师们认为会有这样的市场,但没有人能确定。最终,他们进行了尽职调查和研究,联系了许多铁路爱好者团体,并为其专有的 JET I 游戏引擎中的建模需求制定了一份相当完善的规范。支持这一说法的证据是,自二十多年前 Trainz 1.0 处于研究阶段以来,软件在测量模块中的控制和选项,以及软件运行方式的变化最小。
已弃用标签
[edit | edit source]- 大多数这些标签都起源于 最初的 Trainz 版本。
|
|
- asset-name、name 和 name-XX — V1.3–v2.8 —在历史上几乎所有风景、脊椎和路边资产中都能找到。Asset-name 是 Trainz 1.x--TRS2004 时代资产在 Trainz 中的主要文件夹名称;在今天这些资产中,人们通常会发现 asset-name 也被用于早期 Trainz 时代的数据子文件夹系统,给子文件夹命名为“asset-name_art”、“asset-name_body”、“asset-name_shadow”(在火车车厢资产中),以及其他类型资产中的其他子文件夹。
- 'name' 和 'name-XX' 是更长标签 username 和 username-XX 的早期形式,XX 代表非英语语言翻译的英文“name 标签”(或今天的“username 标签”)的 ISO 两字母后缀;'XX' 形式与 description-XX 一样,是“本地化”支持其他语言用户友好的值的一部分。
- 如果存在,请在最古老的 Trainz 时代(v1.0-v2.4)资产中替换为 username 和 username-XX,或者删除。
- category-era-nn — V1.3–v2.8 s.a. {tag: category-era-0, category-era-1, category-era-2, ...} —以前的日期系统,带有数字后缀—在历史上几乎所有可追溯日期的资产中都能找到,直到 Trainz-build 2.4 引入当前的 category-era 字符串数组,将这些标签合并到一条 config.txt 行中。虽然在测量仪中无法直接访问,但在 TR06 和 CMP 之后,可以定义一个过滤器来选择日期范围,并将该过滤器与区域和类型一起使用,以便在测量仪的放置和选择工具中验证可以列出的资产。在 TS09 及之后版本中被弃用,TS09 使用更短的 category-era 字符串数组,在一行中表示,而不是使用多个带有 '-nn' 后缀的标签-值对。
- 字符串数组中的空格会导致错误;所有值都必须以 's' 结尾,并有四个数字,例如 1880s;1950s;2010s(这可能完全适合某些类型的女性服装,这些服装会流行起来,然后又会过时!)。不幸的是,目前无法定义范围,但这已被用户社区提出要求。
- 用字符串数组类型的 category-era 标签 替换,标签中没有空格,日期代码之间用分号隔开;这些代码表示完整的四位数年代数字,后面跟着 's'(小写字母 s)后缀。
- 类型 category-region-nn — V1.3–v2.8 —在历史上几乎所有与位置相关的资产中都能找到。这些标签已被 category-region 标签中的由两个字母组成的 ISO 国家代码的“字符串数组”取代。
- 用字符串数组类型的 category-region 替换,标签中没有空格,两个字符国家代码之间用分号隔开,这些代码在引用的标签部分列出;这些代码表示完整的两个大写字母,包含 枚举 代码,代码之间用分号隔开,但最后一个代码之前没有分号,直到结尾引号。
- 字符串数组中的任何 空格 都会导致读取错误和故障消息,包括末尾引号之前的空格。
- region — TBS V1.3–v2.8 中有效的内置过滤器和地图资产自定义本地化标识符(kuid);现在唯一合法的标签使用方式是在 kind map(布局)资产中。
- 参见该标签的当前用法 下面的 config.txt 文件中的区域标签。
- 作为以前的过滤器修饰符,该标签在历史上几乎所有旧的资产中都能找到,但它在滚动库存、风景、样条线资产、轨道类型(包括隧道和桥梁)以及具有某种程度的本地化的路边资产中尤为普遍。
- 地图资产仍然保留着 Region 关键字,该关键字在 Map 配置文件中定义,用途相反—作为 kind region kuid 引用。因此,Region 在 Map 中是必需的,并且自 TRS2012 以来,与标签类型一样,在曾经大量使用它的资产中是非法的。
- 在 TRS2009 之后,任何对文本字符串的 region 标签都已过时,因为在程序员看来,他们用 Pick List 取代了测量仪工具中“类型和区域”字符串值的粗略过滤组选择器。这两个标签都有一些优点和缺点,并且都追溯到 Trainz 0.9 Beta 版本。
- type — V1.3–v2.8 —以前的过滤器修饰符,在历史上几乎所有资产中都能找到,但它在滚动库存、风景、样条线、轨道类型(包括隧道和桥梁)以及路边资产中尤为普遍。在 Trainz 0.9—TC3 版本中,Type 被用作测量仪中的过滤器,与 Region 相结合,提供了资产组,而不是被放置工具选择的整个列表所淹没。两者都默认为“所有”,这与 TS09 及之后的工具提供的列表相同。
config.txt 文件中的区域标签
[edit | edit source]区域标签,作为 Surveyor 快速 *按分组标签排序过滤器* 实现的,是 Trainz 1.3 版本的一部分。在 TS2009 及其后的 Trainz 版本中,区域标签不再是可接受的标签,除了 种类映射 资源(它们仍然是 KUID 引用,而不是过滤器[注 3])。类别区域标签,由两个字母代码指定,仍在 CM 和 Surveyor 模块中用于帮助排序。
区域关键字现在仅限于在 种类映射 配置文件中合法存在,它们被指定为预定义的 “食谱” 区域的 KUID,设置各种地理和时代特定标准,例如在道路上自动生成的 Trainz Carz 列表、决定所述 Trainz Carz 生成密度和频率的车载率值、基础海拔、经度和纬度坐标,以及可以合理地捆绑在一起的此类区域变量;这些关键字及其用途一直保持稳定,无论是在历史上还是在更新的 TS2009-TS2012+TANE 数据模型 中。为路线赋予不同感觉的最快速方法之一是,指向另一个 种类区域 KUID,太阳角度会改变,季节外观也会改变,地图上的车辆也会改变等等。
此页面 正在建设中 此处的內容可能会在很短时间内发生重大变化。所有对该主题有所了解的 Trainzer 和 Wikibookians 欢迎参与。 当 *“页面” 更成熟时*,您可以删除此标签,并用 {{Trainz-stub}} 或用部分存根模板 ({{Trainz-sect-stub}}) 替换未完成的部分。 |
- ↑ Christoph Bergman,N3V Games 首席程序员,又名 'Windwalkr',KIND TrainzBaseSpec 历史 页面。