跳转到内容

Trainz/refs/config.txt 文件

来自维基教科书,开放世界开放书籍
logo
中级和高级内容创作

Trainz 资源维护和创建
TOC | 开始乐趣 | AM&C | 创建 | 书中引用 ORP 引用:  • 索引 • 容器 • 种类 • 标签 | 附录  • 版本

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

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 文件都需要一个,它定义了那些其他关键字,包括强制性的和可选的 这些关键字是满足该类型资源的任何定义所必需的。每个 KIND 数据组因此扩展了必需和可选参数,这些标签和容器必须在该 config.txt 文件中详细定义,以正确地将用于创建数字模型的所有元素组合在一起——Trainz 资源。请注意,种类是一个容器,它定义了其他容器和其他特定标签,这些标签必须得到令人满意的定义,才能使 内容管理器 的错误检查接受(并 提交)资源到数据库中。如果数字模型不在数据库中,它就不能被内容创作者用来制作会话或地图。

任何 config.txt 中发现的表格-1 键

[编辑 | 编辑源代码]
下表被称为'Trainz 基础规范' 或 TrainzBaseSpec (TBS). TBS 包含 Trainz 数据模型规范中的关键字和键值对,这些规范可能存在于任何资产中。其他标签和值由 Kinds 标签的值定义,这些值列在 Kinds of KINDS 表格 中。
  1. 在缺少这些标签的 config.txt 文件中添加任何一个标签都不会导致问题,前提是您的语法(键入和拼写)完全正确。
  2. 带有后缀“-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 资产列表。

 

Kinds of KINDs

[编辑 | 编辑源代码]

所有 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 机车资产。

TrainzBaseSpec 子类 KINDs(类型资产组)

 


本地化

[编辑 | 编辑源代码]
  • 本地化 是学术界对“国际化”的说法,指的是将数据翻译成其他语言…

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

  • username - 内容的人类可读名称,用美式英语表示。资产的英语名称必须存在,并且应该用英语定义。(不幸的是,一些资产在上传时没有对该标准进行审查,因此在 DLS 上发现了一些非英语名称。
  • username-cz - 内容的人类可读名称,用捷克语表示。
  • username-de - 内容的人类可读名称,用德语表示。
  • username-es - 内容的人类可读名称,用西班牙语 (Espanol) 表示。
  • 等等。

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

常见容器

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

 

注释、脚注和参考文献

[编辑 | 编辑源代码]

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

  1. 大多数内容创作者对提供清晰、经过深思熟虑的英语描述文本的关注度很低。这些标签的使用在源自非英语地区的资产中很少见。
  2. 注意: 此列表在 N3V TrainzOnline Wiki 上被“wiki 化”,这意味着在“KIND”这个词后面第一个字母被大写,而 config.txt 文件中实际的数据标签名称是全部小写文本。该 wiki 在一些术语中还使用双引号,我们将在这里免除您体验这种做法。
  3. 'kind consist' 并不经常直接被看到,它只是存在于菜单和内容管理器列表中。

 

 

参考文献

[编辑 | 编辑源代码]

 

华夏公益教科书