Trainz/refs/config.txt 文件
这是对 Trainz ini 文件 类型的更技术性的介绍,被称为 config.txt 文件。
- 有关该主题的介绍,请参阅:Trainz/Config.txt 文件,有关一般基础知识构建,请参阅 Trainz/AM&C/config.txt 文件。
无论 Trainz 版本如何,特定版本的 Trainz 数据模型 一直都有 KIND 数据容器 在一个 config.txt 文件中,带有 kuid 标识代码 作为 Trainz 内容项目的 最小中心描述需求。这使得 特定资产文件夹 中的 config.txt 文件成为任何给定资产的中心描述;为了使模型更紧凑,配置文件定义了数据位于数据库中时所在的文件夹名称,而不是开放编辑。
每个内容项目在其文件夹中都有一个名为 config.txt 的 定义文件,它确定资产的名称,识别其 种类 并指定项目的 KUID ID 代码,唯一 地允许资产与资产之间或与运行时软件之间的关联和引用。每个配置文件都取决于资产的 KIND,还将保存各种特定于种类的细节,这些细节定义了该资产以及任何允许在使用同一资产的多倍实例运行 GUI 时多次出现 (实例) 的键。(树木、火车车厢、房屋等,其中许多都通过脚本影响而半定制,例如随机车号、替代皮肤、标签和其他会话编写者定义的特性。) |
config.txt 文件 (在大多数情况下,所有 文本格式的 Trainz 文件类型)存储在 ACS 文本格式 中,它简要定义了一个关键字和一个值对。某些关键字是聚合值,在 Trainz 中,对应于一个 容器,它保存着此类数据对和其他容器的列表。
- 在手动编辑文件时,必须注意使用正确的语法,否则文件部分或全部的含义可能会永久丢失。当内容安装到 Trainz 中,或者当它被归档(在 CDP 格式 或类似的 .cdpa 文件格式中)时,config.txt 文件存储在机器优化的二进制格式中。如果内容随后使用 内容管理器 提取,config.txt 文件将被转换回文本格式,但是任何自定义格式或错误语法都已丢失,无法恢复。
- 主条目:TrainzBaseSpec
Trainz 数字模型基于数据定义,所有这些数据定义都遵循一种格式,其中一个 枚举 的 标签关键字 领导一行,并在同一行中跟随数据对。在一些更复杂的数据允许的情况下,数据元素只是开始 - 引号设置了数据或一个 开始花括号 '{' 设置了其他特定关键字 - 数据对。即使是复杂的容器,其中一些带有子容器,也遵循这种要求的格式。从这个意义上说,容器和子容器分别由一个标签和一个用匹配的花括号分隔和包含的值组成,这是一个从 C 编程语言借来的约定。
注意,这种复杂的数据定义在子程序数据处理级别上是有意义的,因为标签一旦被识别,就会被用来选择适当的处理 子程序(在计算中,处理程序 例程),它输入行的其余部分(或行),知道如何解释在第一个 '{'(或引号标记字符)之后包含的数据,直到遇到 匹配的结束花括号 '}'(或结束引号 '")。该 种类 数据子类型定义了该资产在游戏引擎内部正确呈现所需的唯一配对。 相反,各种标签和容器在法律上可供所有 Trainz 内容定义种类使用,在该种类资产的 config.txt 文件中是合法的,与特定资产类型无关。为了方便起见,自 TS2009 发布和 TrainzOnline Wiki 的诞生以来,这组数据关键字和通常 强制性数据定义 被称为 Trainz 基础规范 (TBS),在程序员的 (骆驼大小写) 行话 中成为 TrainzBaseSpec 规范 - 一个始终合法的标签、容器及其所需定义的列表。
• 合法性不涉及您的当地法律机构,而是内容管理器和 DLS 错误检查软件例程的核心居民。如果标签-值对超出上下文,例如放置在容器边界之外的子容器标签,或者是不合适的,那么“警官”将生成错误消息和投诉(“起诉书!”),并将资产标记为有缺陷... 使其无法使用,直到修复(至少在后来的 Trainz 版本中 - 早期版本更宽容)。因此,各种配置标签,包括必需标签和可选标签,都继承自 kind trainzbasespec 基础资产类型,并在那里详细描述。这些值类型是
标签 或单个行开头单词是 '关键字',并且具有 单个分配的 '键-值' 、正确格式的容器数据结构,或者有时键-值 需要被组织成一个带引号的字符串数组(实际上是该特定标签类型定义的参数的容器),通常是受限的编码值(枚举列表成员),用分号分隔,引号标记定义该标签的单个字符串(字符串值)。(示例:"CA;MX;US"
是一个 类别-区域 定义,涵盖北美所有地区 - 加拿大、墨西哥和美国。
容器 是关键字和键-值 对以及可能的子容器的集合。上层容器(与子容器不同,例如缩略图容器内的子容器)是 KIND 规范(包括 KIND TBS)的一部分,并且是高度使用的容器,特别是那些可能接受可变数量的子容器元素的容器,例如 网格表容器 通常以“-table”结尾。
最后,也是最重要的一点,有 各种 类型(参见下方第二个表格中的列表或 TBS),每个配置 .txt 文件都需要一个,并且定义了其他关键字,包括强制性和可选的 满足该类型资产任何定义所需的关键字。因此,每个类型数据组扩展了必需和可选的参数,必须在该配置 .txt 文件中详细定义的标签和容器,以正确地将用于创建数字模型(Trainz 资产)的所有元素组合在一起。请注意,类型是定义其他容器和其他特定标签的容器,这些容器和标签必须定义完整,以便 内容管理器 的错误检查接受(以及 提交)资产到数据库。如果数字模型不在数据库中,则内容创作者在制作会话或地图时无法显示和使用它。
表 1 键,存在于任何 config.txt 文件中
[edit | edit source]- 以下表格被 正式地 称为'Trainz 基础规范' 或 TrainzBaseSpec (TBS). TBS 包含 Trainz 数据模型规范的 关键字和键值对,这些规范可能存在于任何资产中。其他标签和值由 类型 标签的值定义,列在 类型表 中。
- 将任何一个这些标签添加到缺少此类标签的 config.txt 文件中,只要语法(键入和拼写)正确,就不会出现问题。
- 后缀为“-XX”的标签是多语言非英语语言支持。后缀源于 ISO 标准缩写列表,但通常很直观。例如:-it 代表意大利语,-fr 代表法语,-cz 代表捷克语,-de 代表德语,-es 代表 Espanol(西班牙语)等等。
类型 | "'字符串值'" |
trainz-build | '浮点数',1 位小数 |
kuid | <Kuid 编码值> |
用户名 | 用户名 "'字符串值'" |
用户名-XX | 用户名-XX "'非英语语言字符串值'" |
描述 | 描述 "'字符串值'" |
描述-XX | 描述-XX "'非英语语言描述字符串值'"[注释 1] |
kuid-table 依赖项列表,按 kuids(容器) { |
此资产依赖的资产的键值列表。 |
obsolete-table (容器) { } |
此资产替换(使之过时的)的 kuids 列表 通常为无(空) |
string-table (容器) { } |
资产中使用的字符串和消息的键值列表 通常为空,但是! 在路线和会话中可能非常大。(地图上命名的资产列在这里,从轨道标记和触发器到信号,命名的建筑物和产业,到路标。 |
string-table-XX 按每种非英语语言(容器[s]) { } |
翻译后的字符串列表,对应于 强制性的 string-table |
category-region "'字符串数组'" | category-region 标签 |
category-class "'枚举字符串值'" | category-class 标签 |
category-era "'字符串数组'" | category-era 标签 |
category-keyword "'字符串数组'" | 自然语言关键字 (替换类型、区域) |
custom-category-list "'字符串数组'" |
脚本接口功能 |
must-have-product-rights "'字符串值'" |
DRM 字符串数组 |
must-not-have-product-rights "'字符串值'" |
DRM 字符串数组 |
privileges (容器) { } |
更多 DRM |
thumbnails (容器) { } |
缩略图容器 |
script (文件名) | "'字符串值'" |
class (脚本资产类) | "'字符串值'",必须与 script 规范类同步。 |
script-include-table { } |
(列出库脚本的容器) |
extensions (容器) { } |
资产也使用的正式脚本扩展 |
license "'字符串值'" | 资产创建者的版权声明 |
author | "身份 '字符串值'" |
organisation | "第三方组身份 '字符串值'" |
contact-email | "电子邮件地址 '字符串值'" |
contact-website | "作者/组的网站 URL '字符串值'" |
member-of-groups (容器) { } |
此资产所属的 KIND 资产组 资产列表。 |
类型表
[edit | edit source]所有 Trainz 定义的数据(内容)都包含三个必需元素:一个用于组织数据的 config.txt 文件、一个表示 kuid 的身份(仅用户名对你没有用,但是可以创建一个没有名称的合法资产!)以及最后,一个合法定义的类型标签。类型负责,它是乐队的指挥,排长或 CEO 指挥 - 设置了在处理完所有内容后需要处理的每件事的要求。简而言之,类型的 value,一个小而紧密的定义好的会员制群体 - 告诉 Trainz 软件在虚拟世界中要渲染和显示什么,以及如何在该配置 .txt 文件中找到将这些资产部分链接在一起的其他部分。
以下每个子类都被认为具有 TrainzBaseSpec 作为他们的数据的“父类”。[注释 2] 下面列出的一些类型,那些带有下划线的类型是遗留类型,它们早于 TS2009 发布时 Trainz 数据模型 的更改(即自 2008 年后期以来),N3V 程序员只对它们进行逐步(增量)更改。
目前可以在 N3V Trainz Wiki 的 内容创建者指南 部分 TrainzOnline 网站 中找到有关修复基于这些遗留类型的资产的详细信息,其中有说明性的 遗留类型示例。强烈建议 Trainz 下载站 的任何用户或任何考虑创建内容的人仔细阅读 CCG。从理解旧内容定义方式的背景历史中获得的见解可以与 TrainzOnline 对相同数据类型的当前覆盖范围进行对比和比较,因为这种过去与现在的比较通常可以提供修复、更改和自定义资产的宝贵见解。更重要的是,CCG 在 TrainzOnline 上发布,它是 TC1&2/TC3 版本 - 从 1999 年的 Trainz 开始出版的几本小册子的最后一本出版物;TC3 CCG 包含来自 TRS2004/TRS2006 和 UTC 数据模型的已更改的 Enginespecs 机车资产,需要进行适当更新。
- 本地化是学术上的说法,指的是国际化,或者将数据翻译成其他语言...
由于ACS 文本格式使用 UTF-8 编码,因此非英语文本字符串条目可能会出现在 config.txt 文件中任何字符串字段内,除了禁止的地方。(例如,用户名标签应该始终是英文,但语言后缀形式也允许在区域语言中支持多种语言环境——为了避免混淆,需要本地化支持的标准字符串标签实际上允许多个条目,因为运行时软件使用以下约定
- username - 内容的可读名称,用美式英语。资产的英文名称必须存在,并且应该用英语定义。(不幸的是,一小部分资产在上传时没有进行这种标准的检查,因此在DLS上会发现一些非英语名称。
- username-cz - 内容的可读名称,用捷克语。
- username-de - 内容的可读名称,用德语。
- username-es - 内容的可读名称,用西班牙语(Espanol)。
- 等等。
以下标准标签支持这种本地化形式
其中 XX 是语言的 ISO 双字符缩写。(例如 de=德语,fr=法语,it=意大利语,等等)。
- attached-track 容器
- extensions 容器
- kuid-table 容器
- mesh-table 容器
- obsolete-table 容器
- string-table 容器
- textures 容器
- 缩略图容器
- ...待续
Config.txt 文件在 Trainz 资产中是无处不在的,因为没有一个资产可以没有这种类型的计算机科学容器。
- Trainz 印刷版或pdf 文件手册,适用版本 - 通常在..\extras 或 ..\extras\manuals 文件夹
- TrainzOnline Wiki Config.txt 文件页面和其他页面
- TrainzOnline Wiki 内容创建者指南页面 (各种)
- Auran 的各种CCG 和网站
此参考页面改编自TrainzOnline Wiki,根据CC-BY-SA 3.0 许可证。与[online.ts2009.com/mediaWiki/index.php/Config.txt_file 同一主题的源页面]相比,此页面可能包含更多文字解释、阐述、历史和/或示例。 TrainzOnline Wiki 主要由程序员或知识丰富的内容创作者维护,可能包含关于当前trainz-build 代码标准的最新信息,随着软件功能的添加,这些标准可能会发生一些变化。 |