Trainz/refs/config.txt 文件
这是 Trainz ini 文件 类型的更技术性覆盖,称为 config.txt 文件。
- 有关主题的介绍,请参见:Trainz/Config.txt 文件,有关一般基础知识的构建,请参见 Trainz/AM&C/config.txt 文件。
无论 Trainz 版本如何,特定版本的 Trainz 数据模型 一直都有一个名为 KIND 数据容器 的 config.txt 文件,其中包含一个作为 Trainz 内容项目的最小中心描述需求的 kuid 标识符代码。这使得特定资源文件夹中的 config.txt 文件成为任何给定资源的中心描述;为了加强模型,当数据位于数据库内且不开放编辑时,配置文件定义了其所在的文件夹名称。
每个内容项目在其文件夹中都有一个名为 config.txt 的定义文件,该文件确定资源的名称,识别其 种类,并指定项目的 KUID ID 代码,唯一地允许从资源到资源或到运行时软件的数据合并和引用。每个配置文件,取决于资源 KIND,也将包含定义该资源的各种特定于 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 中的列表),每个 config.txt 文件都需要一个,它定义了那些其他关键字,包括强制性的和可选的 这些关键字是满足该类型资源的任何定义所必需的。每个 KIND 数据组因此扩展了必需和可选参数,这些标签和容器必须在该 config.txt 文件中详细定义,以正确地将用于创建数字模型的所有元素组合在一起——Trainz 资源。请注意,种类是一个容器,它定义了其他容器和其他特定标签,这些标签必须得到令人满意的定义,才能使 内容管理器 的错误检查接受(并 提交)资源到数据库中。如果数字模型不在数据库中,它就不能被内容创作者用来制作会话或地图。
- 下表被称为'Trainz 基础规范' 或 TrainzBaseSpec (TBS). TBS 包含 Trainz 数据模型规范中的关键字和键值对,这些规范可能存在于任何资产中。其他标签和值由 Kinds 标签的值定义,这些值列在 Kinds of KINDS 表格 中。
- 在缺少这些标签的 config.txt 文件中添加任何一个标签都不会导致问题,前提是您的语法(键入和拼写)完全正确。
- 带有后缀“-XX”的标签表示多语言非英语语言支持。这些后缀源自 ISO 标准缩写列表,但通常很简单。例如:-it 表示意大利语,-fr 表示法语,-cz 表示捷克语,-de 表示德语,-es 表示西班牙语(Español),等等。
kind | "'string-value'" |
trainz-build | 'float',一位小数 |
kuid | <Kuid 编码值> |
username | username "'string-value'" |
username-XX | username-XX "'非英语语言字符串值'" |
description | description "'string-value'" |
description-XX | description-XX "'非英语语言描述字符串值'"[注 1] |
kuid-table 按 kuids 列出的依赖项(容器) { |
此资产依赖的资产的键值对列表。 |
obsolete-table (容器) { } |
kuids 列表,此资产替换(使其过时) 通常为无(空) |
string-table (容器) { } |
资产中使用的字符串和消息的键值对列表 通常为空,但是! 在路线和场景中可能非常大。(地图上的命名资产列在这里,从轨道标记和触发器到信号,命名建筑物和工业,到路标。 |
string-table-XX 按每种非英语语言(容器[s]) { } |
翻译后的字符串列表 匹配到 强制性的 string-table |
category-region "'string-array'" | category-region 标签 |
category-class "'枚举字符串值'" | category-class 标签 |
category-era "'string-array'" | category-era 标签 |
category-keyword "'string-array'" | 自然语言关键字 (替换 type、region) |
custom-category-list "'string-array'" |
脚本接口功能 |
must-have-product-rights "'string-value'" |
DRM 字符串数组 |
must-not-have-product-rights "'string-value'" |
DRM 字符串数组 |
privileges (容器) { } |
更多 DRM |
thumbnails (容器) { } |
缩略图容器 |
script (文件名) | "'string-value'" |
class (脚本资产类) | "'string-value'",必须与 script 规范类同步。 |
script-include-table { } |
(列出库脚本的容器) |
extensions (容器) { } |
资产也使用的正式脚本扩展 |
license "'string-value'" | 资产创建者的版权声明 |
author | "身份 'string-value'" |
organisation | "第三方组身份 'string-value'" |
contact-email | "电子邮件地址 'string-value'" |
contact-website | "作者/组的网站 URL 'string-value'" |
member-of-groups (容器) { } |
此资产所属的 KIND Asset-group 资产列表。 |
所有 Trainz 定义的数据(内容)都包含三个必备元素:一个 config.txt 文件 用于组织数据,一个身份,即一个 kuid(仅用户名是不够的,但可以创建一个没有名称的合法资产!)最后,一个合法定义的 kind 标签。kind 负责,它是乐团的指挥,排长或 CEO 负责指挥——为 config.txt 文件中处理的之后所有内容设置要求。简而言之,kind 的值是一个小而紧密的定义良好的成员组——它告诉 Trainz 软件应该在虚拟世界中渲染和显示什么,以及如何在虚拟世界中渲染和显示(或在虚拟世界中寻找)构成资产的各个部分。
下面的每个子类都被视为具有 TrainzBaseSpec 作为其数据的“父类”。[注 2] 下面列出的一些 kind,那些带下划线的 kind 是在 TS2009 版本(即 2008 年后期至今)中对 Trainz 数据模型 进行更改之前存在的 legacy kind,N3V 程序员只对这些 legacy kind 进行了逐渐的(增量的)更改。
目前可以在 N3V Trainz Wiki 的 内容创建者指南 部分找到修复基于这些 legacy kind 的资产的详细信息。 TrainzOnline 网站的此处 具有启发性的 此处 的 legacy Kinds 例子。强烈建议 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 内容创作者指南页面 (各种)
- 各种 CCG 和 Auran 网站
本参考资料页面改编自 TrainzOnline Wiki,根据 CC-BY-SA 3.0 许可证 使用。本页面可能包含比 [online.ts2009.com/mediaWiki/index.php/Config.txt_file 相同主题的源页面] 更详细的文本解释、阐述、历史和/或示例。 TrainzOnline Wiki 主要由程序员或了解 内容创建者 维护,可能包含有关当前 trainz-build 代码 标准的更新信息,这些标准随着软件功能的添加而不断变化。 |