跳转到内容

Trainz/refs/config.txt 文件

来自 Wikibooks,开放世界开放书籍
logo
中级和高级内容创建

Trainz 资产维护和创建
TOC | 开始有趣 | AM&C | 创建 | 书内参考文献 ORP 参考文献:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本

这是对 Trainz ini 文件 类型(称为 config.txt 文件)的更技术性的介绍。

有关主题的介绍,请参见:Trainz/Config.txt files,有关一般基础知识的构建,请参见 Trainz/AM&C/config.txt files

无论 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 文件将转换回文本格式,但是任何自定义格式或错误语法都已丢失,无法恢复。

TBS 标准标签

[编辑 | 编辑源代码]
主要文章: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 文件,该文件定义了其他关键字,包括强制性关键字和可选关键字 满足该类型资产的任何定义所需的。因此,每个类型数据组都扩展了必需和可选参数、标签和容器,这些参数、标签和容器必须在该 config.txt 文件中详细定义,以便正确地将所有用于创建数字模型(Trainz 资产)的元素组合在一起。请注意,类型是定义其他容器和其他特定标签的容器,这些标签必须在 内容管理器 的错误检查中得到满意地定义,以接受(并 提交)资产到数据库中。如果数字模型不在数据库中,则内容创作者无法在制作场景或地图时显示和使用它。

表 1 中的键可在任何 config.txt 文件中找到。

[编辑 | 编辑源代码]
以下表格 正式称为'Trainz 基础规范TrainzBaseSpec (TBS). TBS 包含 Trainz 数据模型规范的 关键字和键值对,这些规范可能在任何资产中找到。其他标签和值由 类型 标签的值定义,该值列在 类型表 中。
  1. 在缺少这些标签的 config.txt 文件中添加任何一个标签都不会导致问题,只要您的语法(输入和拼写)正确无误。
  2. 后缀为 -XX 的标签是支持多种语言的非英语语言支持。后缀源于 ISO 标准缩略词列表,但通常是直接的。例如:-it 表示意大利语,-fr 表示法语,-cz 表示捷克语,-de 表示德语,-es 表示西班牙语,等等。
  类型     "'字符串值'"
  trainz-build '浮点数', 1 位小数
  kuid   <Kuid 编码值>
  用户名     用户名 "'字符串值'"
  用户名-XX     用户名-XX "'非英语语言字符串值'"
  描述     描述 "'字符串值'"
  描述-XX     描述-XX "'非英语语言描述字符串值'"[注释 1]
  kuid 表 按 kuid 列出的依赖项(容器)

  {
  }

  此资产依赖的资产的键值列表。
  已过时表 (容器)
    {
    }
  kuids 列表,此资产替换(使其过时)
通常为空(空)
  字符串表 (容器)
    {
    }
  资产中使用的字符串和消息的键值列表
通常为空,但!
路线和场景中可能非常大。(地图上的命名资产在此列出,从轨道标记和触发器到信号、命名建筑和行业、以及路标。)
 字符串表-XX 按每种非英语语言(容器[s])
    {
    }
  翻译后的字符串列表 对应 强制性的 字符串表
  类别-区域 "'字符串数组'"     类别-区域标签
  类别-类别 "'枚举字符串值'   类别-类别标签
  类别-时代 "'字符串数组'"     类别-时代标签
  类别-关键字 "'字符串数组'"     自然语言关键字
  (替换类型、区域)
  自定义类别列表 
 "'字符串数组'"
  脚本接口功能
  必须拥有的产品权利 
 "'字符串值'"  
  DRM 字符串数组
  不能拥有的产品权利 
 "'字符串值'"  
  DRM 字符串数组
  特权 (容器)
    {
    }
  更多 DRM
  缩略图 (容器)
    {
    }
  缩略图容器
  脚本 (文件名)     "'字符串值'"
  类别 (脚本资产类别)     "'字符串值'", 必须与 脚本 规范类别同步。
  脚本包含表
    {
    }
  (列出库脚本的容器)
  扩展 (容器)
    {
    }
  资产也使用的正式脚本扩展
  许可证 "'字符串值'"   资产创建者的版权声明
  作者     "身份 '字符串值'"
  组织     "第三方组身份 '字符串值'"
  联系电子邮件     "电子邮件地址 '字符串值'"
  联系网站     "作者/组的网页地址 '字符串值'"
  所属组 (容器)
    {
    }
  此资产所属的 类型资产组 资产列表。

 

类型的类型

[编辑 | 编辑源代码]

所有 Trainz 定义的数据(内容)都包含三个必需元素:一个 config.txt 文件 来组织数据,一个身份,即一个 kuid(只有用户名是不够的,但合法的资产可以在没有名称的情况下创建!),最后是一个合法定义的类型标签。类型负责,就像乐队的指挥、排长或 CEO 指示——设置处理后所有内容的要求。简而言之,类型的值,一个很小且严格定义的成员组——告诉 Trainz 软件在虚拟世界中渲染和显示什么,以及如何(或在何处)找到与 config.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 数据模型的已更改引擎规范机车资产,需要正确更新。

TrainzBaseSpec 子类类型(类型资产组)

 


本地化

[编辑 | 编辑源代码]
  • 本地化 是 '学术术语' 用于“国际化”或数据翻译成其他语言...

由于 ACS 文本格式 使用 UTF-8 编码,因此非英语文本字符串条目可能会出现在 config.txt 文件中的任何字符串字段中,除非有规定。(例如,用户名标签 应该始终是英语,但语言后缀形式也允许在区域语言中支持多种语言环境 - 为了避免混淆,需要本地化支持的标准字符串标签实际上允许多个条目,因为运行时软件使用以下约定

  • 用户名 - 内容的人类可读名称,以美式英语表示。资产的英文名称必须存在,并且应该用英文定义。(不幸的是,少数资产在上传时没有受到此标准的约束,因此在 DLS 上找到了一些非英语名称。)
  • 用户名-cz - 内容的人类可读名称,以捷克语表示。
  • 用户名-de - 内容的人类可读名称,以德语表示。
  • 用户名-es - 内容的人类可读名称,以西班牙语(西班牙语)表示。
  • 等等。

以下标准标签支持这种本地化形式
其中 XX 是语言的 ISO 两字符缩写。(例如 de=德语,fr=法语,it=意大利语,等等。)

常用容器

[编辑 | 编辑源代码]
[编辑 | 编辑源代码]

 

注释、脚注和参考文献

[编辑 | 编辑源代码]

Config.txt 文件在 Trainz 资产中是普遍存在的,因为没有任何资产可以在没有这种类型的 计算机科学容器 的情况下进行定义。 

  1. 大多数内容创建者很少注意在英语中提供清晰、经过深思熟虑的描述文本。在来自非英语地区的资产中,这些标签的使用很少。
  2. 注意:此列表在 N3V TrainzOnline Wiki 上“维基化”,这意味着在“KIND”一词之后,首字母大写,而 config.txt 文件中实际的标签名称全部为小写文本。该维基还使用了很多双引号,我们在此将为您省去这些体验。
  3. 'kind consist' 不常直接看到,它只存在于菜单和内容管理器列表中。

 

 

参考文献

[编辑 | 编辑源代码]

 

华夏公益教科书