Trainz/AM&C/修复资产
术语表 |
HKeys-CM |
HKeys-DVR |
HKeys-SUR |
HKeys-WIN |
鼠标使用 |
符号 |
操作说明:单击正文中的脚注 ([2]) 或注释标签 ([注释 12]) 将导航您(定位页面)到该条目的确切文本。 • 然后:在那里单击?符号,将返回您并从开始的地方继续阅读。 |
- 投稿作者:The Yesterdayz-Trainz group
操作说明:单击正文中的脚注 ([12]) 或注释标签 ([注释 12]) 将导航您(定位页面)到该条目的确切文本。 • 然后:在那里单击 ↑ 符号,将返回您并从开始的地方继续阅读。 |
如果您开始将 Trainz 用作构建工具,制作或修改路线,或者大胆地进入 DLS 并获取过去十年上传的 2500 多条路线之一——您将不可避免地遇到“修复资产”的学习曲线。如果您要着手修复资产,您需要了解在哪里查找信息。 资产层次结构 和 config.txt 文件 资产修复是一个有点用词不当的术语,除了在极少数情况下——最广泛使用的资产需要通过更新到新的技术级别来修复——因为它们相对于游戏引擎数据需求的更新已经过时。可惜的是,一些实际的错误存在于从 DLS 下载的内容中,以及来自其他信誉良好的第三方内容创作者,例如 TrainzProRoutes.com Mocrossing 包(zip 文件)包——修复这些内容将在后续的教程中介绍。很多时候这些都是简单的拼写错误,有些是拼写错误(并非所有贡献者都将英语作为母语,也并非作为他们的第一语言),而且 TS08 之前的错误检查要宽松得多……导致 Trainz 崩溃或更糟的是,蓝屏死机 错误。
最后,也是最不常见的情况是,存在丢失的纹理故障,以及在文件名中使用非法字符(非 ANSI 字符编码,主要来自非英语字母,例如许多欧洲语言)的资产,这些字符在 Trainz 中是非法的。
- 这些通常可以通过分别提供丢失的纹理(使用 PEV 的网格查看器查看它们发生的位置并进行明智的替换)或通过纹理剥离网格 (IM 文件) 使用 PEV 的 Images2TGA 进行纹理剥离模式来解决。
|
一些数量很少的“不良资产”可以(由于系统性地“清理 DLS”而发生的频率越来越低),当这些资产在路线中被发现时,它们中的许多问题也可以得到修复。大多数可以归类为关键词的误用、拼写错误、缺少引号等。任何人都可以使用文本编辑器(如 Notepad 或 Notepad++)修复这些小问题。偶尔会发现某个资产缺少组件——要么是纹理,要么是网格(被纹理“装饰”的线框,从而形成虚拟对象。一个是表面,另一个是底层形状的骨架)。到目前为止,大多数这些资产都表明自己可以通过调整文件路径规范、在 config.txt 文件中安装更新的容器样式数据结构或调整文件文件夹内容(例如,V2.4 之前的资产处理能够向上和向下查找主要纹理或网格(im)文件,这种处理在 TS2009 及更高版本中被放弃)来轻松修复,方法是将相关文件复制到必要的文件夹中。
已经采用了各种技术,这些技术需要不同的数据,或者需要组织数据的方式不同。大多数这些更改会在软件中自动处理。当它们无法处理时,它们会生成一个错误,这是一件好事。与资产中的缺陷导致程序崩溃相比,资产中出现错误要好得多——这在 TRS2006 的早期阶段非常常见,当时第一个基本的错误测试标准被构建到 CMP 软件 中,以及它的 Service Pack 1。
T:ANE 中的 VE 消息
[edit | edit source]随着 T:ANE 的引入,内容管理器中报告错误和警告的方式发生了变化。每个错误和警告现在都有一个 VE 号码。完整的编号列表在 此处。每个错误或警告也有它自己的 WIKI 页面,可以通过从该页面选择项目访问,或者通过右键单击“错误和警告”窗口中的编号错误或警告消息访问。这些页面上的信息特定于 T:ANE 版本。但是,以下信息适用于针对 T:ANE 报告的大多数错误和警告。
获取和安装 PEV 的工具
[edit | edit source]PEV 的工具将由社区在一个或另一个网站上维护,因为它们非常宝贵。Peter Villaume (PEV) 是一位非常有才华的程序员(实际上是工程师),他位于澳大利亚与 N3V 和 Auran Holding 在黄金海岸(布里斯班附近的小镇)的所在地相对(或悉尼)的一侧,但他于 2013 年年中停止在他自己的网站上托管他的工具,当时这项任务被 Trainz 论坛专家 Shane Turner 接管,位于 他的帮助网站此处。
|
- 在 Shane 的网站上找到 PEV 的工具及其附带的 .pdf 文件 手册(如果提供)。
- 请参阅 设置 PEVtools,了解有关操作步骤和将项目放置位置的提示。
- 请参阅 PEVtools,了解一些操作提示、教程链接和本地安装中的高级设置。您也会在那里找到节省时间的技巧和窍门。
- 虽然您是错误修复新手,但在您的 \UserData 或 \UserData\editing 文件夹中创建一个“editing2_unchanged”文件夹,并在尝试任何更改之前定期将资产复制到该文件夹中。
- 这是一个安全网,以防万一情况似乎变得一发不可收拾……一种在某个错误令人担忧地变成 30 个错误列表时重新开始的方法。
- 或者更好的是,您可以使用一个原始副本和一个已更改的副本,您可以使用 Kdiff3 进行比较,并让它显示您在哪里弄乱了嵌套的“}”或添加了额外的引号,或做了一些其他导致此类解析问题的拼写错误。
• (深呼吸,放松,那种错误列表并不真实,只是某处的标点符号需要修复。)
|
- 第二部分
- 花一些时间在论坛上潜伏和观察。使用 Google 的网站搜索功能查找有关您可能问到的任何主题或问题的条目。(site:forums.auran.com “问题文本关键字”。此方法在此网站上也适用!
- 一旦您学会了处理 10 到 20 个错误,并看到了它们重复出现的方式,请在论坛上找到Asset-X 常见问题解答并订阅,并开始逐渐学习曲线,同时定期、稳定地修复您遇到的任何其他有故障的资产。
- Asset-X 的许多操作方法都在产品中内置的 Windows 风格帮助文件中。您可以直接在文件夹中阅读此文件,也可以通过加载 Asset-X 并单击“帮助”来阅读。
- 在执行此操作之前,您必须了解 Trainz 基本数据模型 配置,并且以 PEV 工具和专注的大脑处理 20 到 30 个错误,这将为您提供足够的起点,了解 Trainz 演变数据模型的各种形式,也许您已经能够熟练地掌握它们之间的相互作用和差异,以便能够使用 Asset-X 来识别某些内容可能出错的地方。
- 此外,建议您设置一个示例资产类型的辅助文件夹,并用您必须编辑的内容的副本填充它,但经过修复后,它们会通过验证而不会产生任何警告。这些可以与同类资产进行比较,防止您陷入困境。这些练习将为您打下坚实的知识基础,并建立信心,从而使您未来修补资产的速度更快。最终,您将领先一步,节省时间,从而建立起对 如何修复故障 的良好基础知识。
关于标签中的大小写
[edit | edit source]内容创作者为在 Trainz 配置文件中使用而创建的标签通常不受任何特定大小写(大写或小写)规则的约束。通用标准是使用全小写,但对于许多名称,任何大小写形式都是允许的。在许多地方使用任意名称,包括文件名(图像、网格等)、在网格中使用的名称(连接点、纹理)以及列表中使用的标签(例如,附加轨道容器中的轨道列表)。
某些名称或标签有特定的大小写要求,例如网格容器中默认网格的“default”。这些标签应严格按照文档使用。在其他地方,需要特定的大小写,例如“string-table”容器中使用的标签,必须全部小写。但许多其他名称,尤其是文件名,完全由内容创作者决定。但很难判断何时大小写很重要,何时无关紧要。看起来很神秘的错误可能是由于大小写不同导致的名称不匹配(尤其是在提交资源会更改某些标签的大小写时)。
一个好的规则是将所有内容都设为小写 - 避免使用任何大写字母。这与 Trainz 通用标准一致,并且还减少了 Windows 资源管理器使用其自身规则来调整文件名以显示目的而导致的问题。
如果您遇到 CM 表示某些内容不存在或已经存在但您看不到错误原因的错误,请仔细检查正在使用的大小写 - 可能是那些大小写很重要的情况之一。
注意:脚本有自己的规则。特别是,对象和方法必须使用文档中记录的精确大小写,并且根据上下文,大小写不同的标签是不同的标签。
一对一替换列表
[edit | edit source]- 发动机规格 <kuid:35837:51002> 可以替换为 <kuid:44090:51016>
内容管理器警告消息
[edit | edit source]- 以及如何处理它们...
内容管理器在提交资源时验证资源,并且还包含一个选项来显示任何已安装资源的错误和警告。以下是 CM 在验证资源时会显示的一些错误消息,以及简要说明。此列表基于 CM v3.7,但也包含一些仅由 N3V 上传验证过程生成的错误。
此列表中的符号 <text> 表示文本根据资源的详细信息而有所不同。
警告:Trainz 当前无法验证别名网格。
[edit | edit source]此资源中使用的多个网格之一未包含在资源中,但包含在从此资源引用的另一个资源中。这种引用被称为别名,另一个资源被称为别名资源。别名通常用于创建与现有资源仅在用于渲染模型的图像方面不同的新资源 - 这有时被称为重新制作资源。它广泛用于火车车厢,以及路标等资源,其中一个网格与许多不同的图像一起使用。它也用于创建资源时,将几个标准网格以不同的方式组合在一起,例如,与接触网组合在一起。别名也被 Trainz UTC-TRS2004 时代的实用程序 Paintshed 使用。
对于 T:ANE 之前的所有版本,CM 不会在验证此资源的过程中验证别名资源,因此无法确认此资源没有错误。即使此资源被列为可用,它也可能无法在游戏中正常运行,因为包含所需网格的别名资源可能存在故障,或者网格可能实际上不存在于该资源中。在大多数情况下,资源是正常的:警告并不表示使用资源会出现问题。该警告有时被解释为错误,因为它经常出现在看起来没有错误但不会在游戏中显示的火车车厢中。
还有其他与网格相关的配置项,例如连接点,如果网格在别名资源中,则不会验证这些配置项。
从构建号 2.9 开始,一种替代形式的别名变得可用。从该构建号开始,可以在网格表容器中使用“mesh-asset”标签来引用另一个资源中的网格。在这种情况下,CM 也会发出上述警告,但(对于 T:ANE 之前的版本),它不会发出。因此,使用“mesh-asset”标签的资源可能会在游戏中无法正常运行,因为别名资源存在故障或丢失,但 CM 不会发出警告。
对于高于 3.8 的构建号,仅支持“mesh-asset”样式的别名,在 T:ANE CM 中会验证别名网格,因此不存在此警告。
- 修复方法
- 可以通过在网格表中将顶级“alias”标签更改为“mesh-asset”标签来抑制警告,注意使用相同的 kuid。但是,这不会改变别名网格不会被验证的事实 - 它只是阻止警告出现。最好保持资源原样,以便警告出现。
- 如果显示此警告的资源未在游戏中出现,则别名资源是第一个寻找问题的地方。
警告:必需标签“<tag name>”缺失,已设置为默认值。
[edit | edit source]应将标签添加到 config.txt 中,并使用合适的值。
- 来自故意滥用的 缩略图容器 的示例
- 警告:必需标签“height”缺失,已设置为默认值。
- 警告:必需标签“width”缺失,已设置为默认值。
导致这些错误的源代码行(测试它们是否可以“全部放在一行上”)
thumbnails { A { image "$screenshot (256).jpg" } }
(答案是“是”,但显示的空格是必需的。)
在某些情况下,此警告实际上是错误,因为默认值对于标签无效。发生这种情况时,在警告之后会立即出现一条错误消息,表明该值无效。使用正确的值添加标签会消除警告和错误。
警告:此资源使用过时的 trainz 构建号。
[edit | edit source]警告:此资源使用过时的 trainz 构建号。低于 <构建号> 的 trainz 构建号不再受支持
应用于资源的验证测试取决于资源的构建号。此消息表明该资源被认为是过时的,因此尚未应用最新标准。
此消息是警告 - 资源仍然可以使用(除非存在错误)。可以通过更改构建号来消除警告,但这可能会在针对更高构建标准验证资源时产生新的错误。只有在您准备好进行所有其他更改以将资源更新到更高构建号时,才应更改构建号以消除此错误。
警告:容器“<container name>”中的标签“<tag name>”已过时。
[edit | edit source]该标签不再受支持,将被忽略。该标签可能在较低构建号时相关,但在当前构建号时不再适用。
该标签的功能可能已被容器或其他标签取代,例如标签“category-era-nn”被更简单的 字符串数组 标签“category-era”取代,或者类似地,“category-region” 字符串数组 标签取代了多个“category-region-NN”标签。
查看 容器规范 这里 或在 N3V Wiki 中,以确定该标签是否已替换。如果存在替换,请选择与已过时项中的值相对应的标签值。如果对应的值不清楚,请接受默认值。在大多数情况下,可以简单地删除该标签。
警告:文件“<name>”不存在
[edit | edit source]当容器中使用无效标签时,可能会出现此错误,并且验证系统假设标签值必须引用文件。例如,“sound”容器只能包含一个标签 - “soundfile” - 并且标签的值必须是文件名。如果包含其他标签,则验证过程不会报告无效标签错误,而是会假设标签值引用文件,并创建此警告。解决方法是删除标签和值。
应该在 config.txt 中添加一个缩略图容器。
对于从 Build 3.5 开始的 DLS 上传,这是一个错误,上传将被拒绝。请参阅错误列表中的相应项目。
应该为该资产创建一个阴影网格,并更新网格表。
在 Build 3.8 及更高版本中不再需要阴影网格。但是,如果网格表中列出了阴影网格,则该网格必须存在,如果缺少网格,将被报告为错误。指定主网格作为阴影网格是有效的。
新的资产不应该使用单色纹理,但对于需要更改网格的旧资产,则应该将纹理调整为 4x4,或至少将一个像素更改为不同的颜色(无论颜色变化多么微小)。大的单色纹理是资源浪费:不要为了避免警告而调整图像颜色,而没有将纹理调整为合适的小尺寸 - 16x16 或更小。
据报道,如果图像小于 64x64,则不会生成此警告,但这似乎不适用于 Build 61388。一个像素的差异足以消除警告。
纹理-kuid 标签被一些容器(例如,一个光晕效果容器)用来引用纹理名称。如果使用它,则应指定纹理名称。
此错误通常发生在纹理由脚本代码控制的资产中。在这种情况下,可以为标签指定任何纹理,因为脚本将在执行后立即更新它。
警告:Trainz 不再支持渐进网格。虽然这些网格可能在 Trainz 中工作,但建议您切换到 LOD 网格。警告:Trainz 不再支持渐进网格。虽然这些网格可能在 Trainz 中工作,但建议您切换到 IM 网格。(直到 2008 年发布的 TC3 引入了 LOD 技术。)
渐进网格 (.pm) 可以使用 PEVtools 实用程序 PM2IM.exe 转换为单个 索引网格 (.im)。
- 没有工具可以将渐进网格文件转换为多 LOD .lm 文件 格式,该格式详细说明了多个网格如何根据与视点的距离缩放进入视图。这种转换将通过手动复制模型并简化它来创建多个版本来完成 - 通常,两个到四个网格,多边形逐渐减少。对于修复后的资产,如果网格的原始模型不可用,这是不可能的。
警告:从 Trainz-build 3.8 开始,索引网格不支持火车车厢。建议您将 <mesh-name.im> 升级到 LOD 网格。
对于 火车车厢,如果构建级别为 3.8 或更高,则网格必须设置为 LOD 网格,否则它将不被接受上传。LOD 网格在 Trainz TRS2004(于 2003 年首次发布)中引入,它包含多个索引网格,这些网格在物体观看距离增加时使用更少的三角形。这有助于减轻主 CPU 的处理负荷,并将负荷转移到 GPU (GPU) 上。此要求不适用于构建级别低于 2.9 的 火车车厢,但对于构建级别为 2.9 及更高的所有资产来说,它都是一个推荐的升级。
如果资产是构建级别为 3.8(Trainz MAC-II 和 TANE)或更高的火车车厢,并且没有 LOD 网格,则此警告将成为错误。
- 示例
- "警告:'US ' 不是标签 'category-region' 的有效值。此标签现在为空,必须选择一个新值。"
警告:'US '
以及 删除标签值末尾的空格。这个额外的空格在一些编辑器中不可见,解释了一些本来很神秘的错误。- 注意:任何字符串值字段中的尾随空格在 Trainz 中都是非法的,并且通常会显示上述信息。
该标签被定义为需要一个布尔型值,但提供了一些其他值。布尔型意味着 '0'(false)或 '1'(true)。使用任何其他整数值会导致此错误消息。一些旧的资产中观察到 2 到 7 的整数值。可以合理地假设,除 0 之外的任何值都意味着 'true'。
- 修复 将标签的值更改为 0 或 1,根据资产的实际情况进行选择。
- 请注意,在某些情况下,此消息实际上表明标签的定义是错误的 - 内容创建者遵循了正确的规则,但验证使用的是不同的规则。例如,Trainz 的某些版本中的不透明度标签。在这种情况下,正确的类型是 'value'(一个浮点数,范围从 0.0 到 1.0),而不是 'boolean'。要消除错误,可以在 安装根目录\bin\TETData 文件夹中的 container.txt 文件中重新定义 'opacity' 标签的类型。仔细检查该文件的内容应该表明需要进行的更改,即使内容在第一眼看来并没有什么意义。
获取资产意味着要通过旧内容的错误关口,这些错误通常可以通过一系列简单的编辑更改和 PEVtools 来修复。这是一个进行此类操作的指南,以及为什么出现这样的错误。 AssetX 和 TARDIS 脚本可以用于自动修复其中许多错误。
- 请参阅 设置 PEVtools 以了解一些有用的技巧和方法。
该资源的trainz-build 标签 (TB, TBV) 值 对于您的 Content Manager 版本过高。
- 如果您收到此消息,则可能表示您拥有 Trainz 的多个许可副本,因为对于没有旧版本和新版本的人来说这种情况不会发生,并且您将无权访问高于与零售版本相关的最高 TBV 的内容。
|
几乎所有具有更高 TBV 的内容都可以通过将版本号降低到与您的版本匹配来使用,除非使用了仅在更高版本中可用的功能(包括一些脚本功能)。对于我们这些运行多个 Trainz 版本的人来说,随着 DLS 软件并不总是正确(并且可能根本没有在 TS09、TS10 和 TS12 中检查 TBV——每个版本都获得了一些更高的三级版本和少量 V4.0+ TBV 作为升级下载。[注释 1] DLS 在将最新版本转发到请求资源的 CM 方面变得更加激进。即使 CMP 也在我不期望如此慷慨的情况下下载了 V3.7 资源。)在解释它正在下载到哪个版本方面,特别是,当同时运行多个 CM 时,当进行跨下载[注释 2]
当此类更新的资源或版本使用旧的 Trainz 数据模型中未找到的标签或容器时,需要进一步调整以删除不支持的标签。
此类错误将由 CM 明确标记,通常会显示多行错误,其中提到了多个纹理和 texture.txt 文件。在许多情况下,修复方法是删除有问题的行,依赖于使用默认值。当回归到低于 2.9 的版本号时,此过程变得更加困难,使用 样条对象(长资源),因为许多标签在该版本时发生了变化。对于对象(种类风景 和相关类型),将 Trainz 版本号回滚到 v1.5 以上的任何版本通常都很容易,不存在纹理问题,因为用于这些类型和绝大多数 种类火车车厢 数据结构的数据模型在 TBV 1.5 和 v2.0(分别为 UTC 和 TR04)时已稳定。
|
- 在许多情况下,回归版本号也会影响 texture.txt 文件,需要从这些文件中删除不支持的标签。
原因
发生这种情况是因为 PEV 的 Images2TGA 是在假设内容创建者或 Trainz 用户正在尝试“升级资源” 的情况下编写的。设计的预期是,一个人试图将资源转换为更高 TBV.
- 由于 TRS 时代的 CMP 在遇到已编译的 纹理文件(例如,文件名类似于feature.texture 的 Trainz 压缩数据形式)时会报错,因此 Images2TGA 必须运行以提取可编辑的 texture.txt 文件 以及相关的各种图形数据文件(例如 BMP、TGA、JPG 等)以供旧的 Trainz 版本使用。
TANE 也只打开 .texture 文件形式的数据进行编辑;因此 Images2TGA 是 PEV 自 2014 年末 TANE-CE 过早发布以来的第一个也是唯一一个更新工具。如果要进行更改,例如修复,则需要它来获取文件的可编辑版本。
- 将资源向后移植到 TRS 时最常见的问题是 Images2TGA 输出的 texture.txt 文件中的AlphaHint= 'something' 行。
修复很简单,只需注释掉AlphaHint= 'something' 行 即可:在行首添加'// '
(一个所谓的 Hack-hack 注释行分隔符),并且行中所有其他内容将被忽略,包括 texture.txt 文件。
• 它以前也可以在 Trainz config.txt 文件中使用,但在 TS09 中程序员变得懒惰,配置中的注释不再存在了。
• 对于单个资源,这可能会涉及数十个 texture.txt 文件。考虑一个“numberit”脚本化的机车——每个数字 0-9 将有四个 TGA 纹理,而其中四分之一(或可能是一半)将具有 AlphaHint 标签!
- 通常,最简单的“修复”方法是删除资源,并使用具有合适版本号的早期版本(如果可用)。有人认为,2015 年 8 月实施的 DLS 下载过程的更改使得下载资源的特定版本变得更加容易,并降低了下载具有不合适版本的资源的可能性。对于 TANE 用户来说,这确实如此,但更改对旧 CM 的影响是,DLS 有时会提供比请求或想要的更高级版本的 kuid/cdp,因此我们看到更多导致打开本节主题的错误。(“错误:此资源的 trainz 版本号无法被此工具识别。”)
- 此外,这些自动 DLS 控件不适用于第三方站点,也不适用于从 DLS 网页通过 FTP 手动下载资源,因此在使用这些站点时,可能需要格外小心以确保只下载并集成合适的版本到您的安装中。
- 唉,罗马人从未拥有过零!
正如仍然会咬人并困扰着最世故和经验丰富的资源修复者...... 真正地,真正地,真正地,最有可能的第一个原因,一整组这些问题是缺少分隔符。
- 用简单的英语来说,您是否在某个地方缺少一个
'"'或 '}'
字符?
|
资产配置文本文件(asset config.txt)和纹理文本文件(texture.txt)也是代码,语法不仅需要精确,而且必须严格执行。 我们称它们为错误。实际上,它们几乎总是人为错误。 使用像 Notepad++ 这样的优秀程序员编辑器,你可以在引号之间来回切换(F3 和 SHFT+F3,这样就可以用一只手进行向下搜索或向上搜索!),以及突出显示配对括号、方括号和圆括号的功能,可以真正加快这类错误的查找速度。
现实世界中的例子:(这些错误都是因为忘记了添加的 缩略图容器 中的内部 '}' 而出现的!)
- 错误:标签 'author' 不允许在 'thumbnails' 类型的容器中使用。
- 错误:标签 'organisation' 不允许在 'thumbnails' 类型的容器中使用。
- 错误:标签 'contact-email' 不允许在 'thumbnails' 类型的容器中使用。
- 错误:标签 'contact-website' 不允许在 'thumbnails' 类型的容器中使用。
- 错误:标签 'license' 不允许在 'thumbnails' 类型的容器中使用。[note 4]
第一部分
[edit | edit source]如果标点符号和语法问题没有导致数据出现奇怪的配对,因为 CM 试图对这些不平衡的分隔符进行解释,那么这些错误通常是由以前有用的但现在是非法的标签引起的,这些标签包含在其他地方定义的值,或者作为要解释为文档或信息的行... 以前合法的注释(见下文)现在应该被删除,或者放在 描述容器 中。 或者,如果使用引号括起来的字符串,则可以将它们保留为标签引号字符串对,但移动到 字符串表容器 中。有时情况正好相反,一个“未来的标签”被带回 Trainz 的早期版本,其 trainz-build(技术水平!)值低于源 trainz-build 值。 第三种情况与第二种情况相反,只是因为在每种情况下,某些东西都脱离了它应有的时间和地点 (和 TBV 级别)。也就是说,如果将高级数据标签带入早期技术水平的故障检查中,可能会出现相同的引号。很容易看出。将 trainz-build 标签值降低至少 0.5,观察错误消息的变化。如果你必须编辑一个内置资产,经常看到的一件事是,它们在生产过程中被归档,并且全局 TBV 被更改,因此,多年来在其中打开的标签会突然显示为非法。有趣!哈哈!将 TBV 降低到 2.3-2.5,并确保它具有 mesh_table 和缩略图容器,大多数较旧的资产可以很好地转换为 TANE 的 V4.2 更新。
理解 Trainz 数据 应该始终被视为 一个标签(关键字)和一个配对值(数据)。这甚至适用于 Trainz 的 容器数据类型,因此,外部大括号定义了值的边界。同样,当被视为像 类别-时代、类别-关键字 和 类别-区域 这样的字符串中保存的值数组时,即使对我们人类来说是多值的物体,也可以解释为单个配对值... 只是软件预期包含多个子值的简单值。最终,这一切都取决于计算机如何解包和利用数据。配对术语,即使是分配了一个无歧义且不会与其他东西混淆的枚举关键字的复合术语,也是构建需要快速运行并解释的收集整理数据的相当安全的方法,因为一列以 70 英里的时速行驶的火车穿过城市的后街![note 5]
“看似相反”,将资产倒退到 更早的 trainz-build 标签值 会直接更改错误检查,因此也可能会显示此类消息。当然,你实际上可能是在将资产带回 Trainz 的早期版本,正如我们中的一些人所做的那样,这将大大增加你看到此类消息中引用的“新标签或容器名称”的可能性。以下两个错误是通过将“新模型”[note 6] 轨道资产从原始 V3.5 或 V3.6 带到 TBV 2.9 而单独生成的
- 错误:标签 'follows-spline-gradient' 不允许在 'track' 类型的容器中使用。[note 7]
- 错误:标签 'attached-splines' 不允许在 'track' 类型的容器中使用。实际上,附加样条线容器 是一个聚合值“子类型”或修饰符,它将建模软件扩展到另一个子例程以解释其值。它很像 场景与轨道种类 的 轨道容器(“附加轨道容器”),它包含允许两种“种类”混合特征的指令,允许工业、交叉路口和码头等资产具有其功能。
- 容器中可能出现在此类错误消息中的所有标签是
- lateral-offset、use-same-direction、spline-kuid <...>、visual-only、follows-spline-gradient、start-gap 和 end gap},除了引用的 kuid 外,所有这些都是布尔值参数,默认值为 0(False)。
这些错误消息的底线是,软件功能和 trainz-build 级别可能不同步。TBV 值标识何时在种类和容器调色板上添加了某些功能。在早期版本中引用此类标签会导致此类消息。
以下实际错误消息:经常以 “作为一个组” 的形式,在大量使用 别名标签 来引用外部网格的油漆棚标记的重新皮肤汽车中重复出现。
- 此组起源于 TS09 发布之前的更松散的数据定义和处理方式及其更严格的错误测试[note 8]。在此之前,任何以字母 字形 开头的行首标记,该标记可能合法地被评估为可能的关键字(例如,height-below、width-of-interior 等),可以与引号字符串配对,如果该标记不是关键字,则会被忽略。此外,如果该行以标点符号(';' 和 '/' 很常见)开头,则该行后面的内容直到行尾代码都被视为单个值,在这两种情况下,Trainz 也会忽略该行。关键字 'REM' 来自 BASIC 语言,虽然从未正式使用,但被广泛用于为整个用引号括起来的文本段落添加前缀。因此,在 TS09 之前,CC(作者)可以嵌入他们自己的测试的替代值,或者允许用户使用相同的网格将配置文件自定义为完全不同的外观,或者在应用资产时嵌入指令,如果使用脚本,几乎总是需要类似的东西。
- “(容器类型 'traincar')”消息可能会或可能不会出现,具体取决于解析配置文件和验证内容错误的 Content Manager 版本。这些示例错误消息来自 TS2009-SP2's CM-2.0 验证测试
- 错误:标签 'capacity:' 不允许在此容器中使用。 (容器类型 'traincar')
- 错误:标签 'height:' 不允许在此容器中使用。 (容器类型 'traincar')
- 错误:标签 'length:' 不允许在此容器中使用。 (容器类型 'traincar')
- 错误:标签 'weight:' 不允许在此容器中使用。 (容器类型 'traincar')
- 错误:标签 'wheelbase:' 不允许在此容器中使用。 (容器类型 'traincar')
- 错误:标签 'width:' 不允许在此容器中使用。 (容器类型 'traincar')
通用修复方法是识别问题的开始,搜索(SAR 或 FIND,通常是大多数编辑器中的 **CTRL+F,**F3 向下重复搜索)双引号( " ) 并用单引号、空格或空字符替换。一旦最后一个错误消息行被通过,选择并使用 **CTRL- **X 拖动以突出显示所有错误文本,目的是将这些现在已消除的文本行移动到 description 容器中。粘贴移动的剪贴板(行)在 description 双引号内低处,进行编辑,保存并重新测试。
另一种使用 string-table 容器 的修复方法保留了遗留方法的历史,前提是 Trainz 构建版本高于 V2.3——这仅涉及将所有有问题的过时标签一起重新定位到后续行,添加标签 string-table 及其花括号 '{' 和 '}'。这是有效的,因为 string-table 是所有有效 'Kinds' 中的合法容器。
- 在验证错误时停留在配置文件中是一个好习惯!
- 使用 **CTRL+S(在大多数编辑器中)保存更改,然后 **ALT+Tab ↹ 和/或 **⇧ Shift+ALT+Tab ↹ 将内容管理器窗口恢复为活动应用程序。
- RMBh+drag 以 查看错误和警告 并重新测试资源。
- 通常,在修复某些其他错误(通常是路径修复)后,会显示其他错误。
- 注意:路径修复对于旧的(v2.6 之前的)资源来说是 迄今为止最常见的修复需求,因为在 trainz-build v2.9 之前,所有版本都能根据 asset-filename 标签的分配值,以及诸如 '_art'、'_body' 和 '_shadow' 之类的后缀,在原始数据模型文件夹中正确定位资源组件。N3V 的程序员放弃了从 v2.9 (TS2009-SP0) 开始,使这些可预测的链接自动化的代码片段——迫使即使在简单的资源中也使用 显式路径 和容器。最常见的需求是 缩略图、网格表 和 转向架容器;创建大量计算机处理程序代码,并在其他可预防的故障生成消息中产生故障。
- 强烈建议,如果你需要修复需要添加这些容器的故障,你也将 trainz-build 提高到 v2.6,并在该 TBv 中消除所有警告。这种修复方法在 TS12 中没有例外。
第二部分
[edit | edit source]情况一
- '错误:标签“?”在“engine”类型的容器中不允许。'
- '错误:标签“?”在“bogey”类型的容器中不允许。'
- 这个神秘的信息,常见于较老的內容中,不是因为“?”(?,搜索“?”在 config.txt 文件中什么也找不到!)。错误是由gmax遗留的字符引起的,这些字符通常出现在配置文件的第二行——不可打印的字符(在大多数文本编辑器中用下划线(___)表示),由对文件的先前处理插入,作者保留(并被早期版本的 Trainz 忽略)。
解决方法:参考右侧图片的文本:这可能是第二行上的两个不可打印的字符,应该直接删除。
情况二:例如,这可能只是一个简单的拼写错误。
- '错误:标签“discription”在“...”类型的容器中不允许。'
因此将拼写更正为“description”。
|
情况三,规范中不再存在的标签
- '错误:标签“origin”在这个容器中不允许。 '
解释
- 该标签在较早的版本中是正确的,但在当前版本中不允许。
解决方法:删除该行。(查阅维基百科中记录的已过时的配置标签列表这里。这些是最常见的情况(风景和路边物体经过了多次更改:其他容器、KIND 和子容器自 V2.8(Trainz Classics 3)以来进行了较少的模型更改)。
第三部分
[edit | edit source]- 这种情况是上述情况的反面:在旧版本中找不到的新标签!
错误是不同版本的 Trainz 发布的验证规则不一致导致的。
例如
- 错误:标签“engine-sound-ramp-up-durations”在“enginesound”类型的容器中不允许。
- 错误:标签“engine-sound-ramp-down-durations”在“enginesound”类型的容器中不允许。
这些错误消息在导入 TS09、TS10 和 TS12 时都会出现。解决此问题的关键是阅读细则,并检查引用页面的历史记录。
- 这两个都是新的标签和参数,以前由一个一劳永逸的默认实现来满足,但“用户 Auran”(一个 Trainz ID 为“-25”,其疏忽为 N3V 的 TS09-TS12 版本对资产进行了许多导致问题的升级。)没有更新trainz-build(让,在这种情况下,TB 默认值为 v1.3!)同时将不合适的关键字(标签)添加到 TS09-TS12 版本中内置功能中缺失的资产中。
- 因此,由于没有 trainz-build 标签,该错误在每个版本中都会出现。
解决方案
- TS12 的配置通过添加 trainz-build 3.6 进行了修复。
- TS09 和 TS10 的配置通过添加 trainz-build 2.3 并将两行标签(包含逗号分隔浮点值的数组参数)移动到描述数据中...实际上删除了这些行,从而得到修复。
第四部分
[edit | edit source]子容器被错误地识别。
某些子容器需要类型识别,并且类型指示哪些标签有效。一个例子是网格表中的 Effects 子容器。Effects 子容器的类型由“kind”标签定义,可以是“animation”、“attachment”、“corona”、“name”或“texture-replacement”。如果使用了错误的类型,或者子容器中缺少“kind”标签,那么原本在子容器中有效的标签可能会被标记为“不允许”。此错误通常会为子容器创建一系列额外的错误消息。解决方法是确保指定了正确的类型,以及子容器中使用的标签适合该类型。
另一个类似的例子是烟雾容器——烟雾容器的类型由“mode”标签的值定义,并且该标签值决定了哪些其他标签是该容器所必需的或有效的。
错误:' '<subcontainer name>' 中的 'image' 标签必须具有图像文件扩展名。
[edit | edit source]- 实际例子
- 错误:'1' 中的 'image' 标签必须具有图像文件扩展名。
- 错误:'c' 中的 'image' 标签必须具有图像文件扩展名。
- 对于某些容器,'image' 标签必须具有一个可以解析为图像文件的值,而无需使用 texture.txt 文件提供引用。预期的图像文件可能是一个纹理文件,也可能是一个扩展名为 bmp、tga 或 jpg 的图像文件。如果它是纹理文件,则应将纹理转换为图像并更新标签。
此错误可能是由简单的拼写错误或缺少文件名引起的。或者,该值可能是一个对 texture.txt 文件的引用,而不是对图像文件本身的引用(是否需要图像,或者是否可以接受 texture.txt 文件,取决于标签所在的容器)。
BAD image "filepathspec\filename.texture.txt" OK image "filepathspec\filename.texture" GOOD image "filepathspec\filename.tga"
请注意,此错误可能会与其他关于无法找到或加载图像文件的错误一起出现。
错误:由于文件访问错误,无法将更改提交到资产<kuid value>。
[edit | edit source]- 错误
- 由于文件访问错误,无法将更改提交到资产<kuid:-25:6>。
此错误最可能的原因是 Trainz 已打开,并且正在编辑的资产在路线中“正在使用”。路线中使用的多数资产在加载路线时加载一次。这些资产可以在游戏运行时进行编辑。但某些资产,例如某些脚本资产、声音和区域,会从数据库中反复访问。这些资产无法在游戏路线中“正在使用”时进行编辑。关闭 Trainz 并重新保存。
此错误也可能是由机器速度较慢或内存不足,再加上下载量较大而引起的。在出现此错误六次的情况下,电脑是一台 10 年前的双核笔记本电脑,六条消息显示了正在编辑的资产。在 CM 主视图中查看下载列表之后,每个资产都成功地手动验证并提交了。
解决方案
- 关闭其他应用程序或停止任何占用 CPU 或内存的活动,然后重试。如果问题出现在多个资产上且无法解决,则数据库可能已损坏。
错误:文件名“<filename>”包含非法字符。
[edit | edit source]- 示例:错误:文件名“$hirsch-tga_converted (512^2).jpg”包含非法字符。
- 解决方案
- 通过编辑引用和文件名来删除有问题的帽子字符 - 文件名中不允许使用此字符。请注意,即使文件名在您的操作系统中有效,Trainz 也可能将其标记为无效 - 这是因为 Trainz 旨在在多个平台上运行。
- 这三个错误经常一起出现
- 这些消息出现在资产升级到 V2.9 及更高版本后(TS09 Trainz 和之后的版本).
- 错误:容器“scenery”中的标签“region”已过时。
- 错误:容器“scenery”中的标签“type”已过时。
- 错误:容器“scenery”中的标签“asset-filename”已过时。
如果trainz-build 标签低于 V2.9,则这三个已弃用标签会显示警告而不是错误。可以通过从 config.txt 中删除该标签来使资产符合规范。
当 CM 对正在编辑的内容感到困惑时,可能会出现一条罕见的消息。这可能是由打开多个 CM 副本或手动移动编辑文件夹或子文件夹造成的。
- [[Trainz/Unable to read config file for asset at <location>|无法读取位于<location>的资产的配置文件]]
找不到 config.txt 文件或无法读取。
1. 这可能表示资产已损坏,或者它不存在于预期位置。如果资产已删除但缓存尚未更新,则会发生这种情况。应从备份源还原资产,或将其还原。
2. 该错误可能是由配置文件中缺少关键信息造成的。例如,如果找不到“kuid”标签,则即使实际错误应该是“无效配置文件”,也会报告此错误消息。请检查是否包含所有必需的标签,并且拼写正确。
- 资产的版本或“构建号”作为资产config.txt 文件中的trainz-build 标签包含在每个 Trainz 项目中作为必填条目。
|
- 原因
- 当您导入具有高于构建号(数据模型支持或技术级别)的trainz-build 标签值的资产时,会发生此错误。
作为强制性数据字段,trainz-build 号码向游戏定义了资产创建的技术标准。它还定义了内容管理器在进行验证和将操作添加到本地数据库时验证资产的标准。这使游戏能够根据适当的技术标准验证资产,并根据需要插入默认值或忽略功能。它是保持 Trainz 版本之间兼容性的秘密,也是(例如)Trainz 1.3 资产在新的路线和会话内容中仍然可用的原因。
通常,可以通过调整构建号将资产降级以在 Trainz 的早期版本中使用,但存在限制。脚本是在构建之间发生重大变化的一个领域,如果构建号降级,则可能会导致问题。因此,将资产从(例如)3.3 降级到 2.9 可能需要删除或禁用脚本。此外,构建级别之间存在一些技术标准的不一致。例如,构建 3.5 允许在 Soundscript 容器中使用 Distance 标签的单个值(这在 2.9 之前是标准),但构建 3.3 要求包含两个值。这些更改通常很容易在资产中进行调整。
网格、纹理、kuid 引用和其他类似的基本资产元素通常可以在所有构建中正常使用,回溯到 2.9。对于 2.9 之前的构建,所需的调整变得更加广泛。
- 目前只有由kind track、地图和会话资产以及包含需要脚本功能的脚本要求的资产(先前版本中没有这些功能)阻止将资产降级到 N3V 时代的数据模型(TS09 及更高版本)。大多数资产只需将 trainz-build 更改为 CM 或更早的版本,并且可能需要补偿(TS09—TS12 的到 TRS 的需要删除纹理文件行,以便它们可以使用默认模式,而 TS09 和更高版本允许它们在改进的图形处理中进行更精细的控制)texture.txt 文件中的任何小命令更改,就可以正常工作。
网格中可能存在技术错误。或者,TANE 在导入 cdp[注释 9] 文件时可能很愚蠢。
- 从技术上讲,它应该表示:... 一个或多个顶点坐标不是数字,或者距离模型原点超过 5 公里。
- 如果出现真实错误,则无法在没有访问网格源文件的情况下修复这种情况,因此您必须联系资产的作者。问题必须转回内容创建者。
- 块号提供了发生错误的网格部分的指示。
- 此错误在 TANE 中某些使用非常大的网格的资产中发生,即使网格本身有效。TANE 无法处理在 TS12 中可接受的网格大小。
无法加载网格文件。它可能在 config.txt 中拼写错误,可能丢失,可能格式错误,或者可能已损坏且无法读取。
|
- 解决这些问题的步骤
- 运行 PM2IM 并查看是否生成了IM 文件,或 Pevs Tool 是否生成了类似的错误。
这可以通过 Trainz 内容管理器使用 RMBh 菜单启动使用打开 PM2IM,或通过在 \editing 文件夹中安装 PM2IM.BAT 的副本,并将要处理的文件夹拖放到 bat 文件上完成。- 如果是后者,请在论坛上寻求建议和帮助。
- 如果是前者,请手动编辑网格路径以使其正确,如下所示。
- 首先,确保您也检查并更新文件扩展名为 .IM!
- 如果已生成相同名称的 IM 文件,请检查资产的 网格表容器 中的文件夹/路径规范条目,并验证 PATH(许多较旧的资产有一个 'asset-name'+'_body' 子文件夹,这是 TRS2006 版本之前的惯例,因此可能存在于任何 v1.3-v2.4 资产中)和 文件名规范(包括扩展名)是否正确。
- 在这些路径规范正确的旧资产中,可能没有安装网格表。添加一个(至少在 v2.0 之后)将(不出所料,因为它是由 TRS2004 引入的标准)被所有 Trainz 版本接受,并且通常被 N3V 的 TS09-TS12 版本中较差的解析要求。
- 大多数网格表将位于一个子文件夹中, 该子文件夹的名称以 '_body' 结尾。
节省时间的小贴士: 当在 ..\editing\asset-folder 中时,单击一下 子文件夹,然后按快捷键序列 F2+CTRL-A+CTRL-C, (然后 ESC) 以捕捉子文件夹名称的准确语法 (并且不进行任何更改). - 然后将该名称粘贴到 网格表 的路径前端:"subfolder-name_captured\mesh_filename.IM"。
- 网格表样板示例(调整 路径规范 和 文件名 以匹配您的文件夹内容)
mesh-table { default { mesh "traincar-body.im" auto-create 1 } shadow { mesh "shadow.im" } } Alternatively, default { mesh "Subfoldername_body\traincar-body.im" ...
|
- 示例
错误:在 'queues\passengers_off_0\attachment-points' 中未找到连接点 18 (a.passoff)。错误:在 'queues\passengers_on_1\attachment-points' 中未找到连接点 61 (a.passoff112)。
此错误可能有几个可能的原因。
- 连接点名称错误,因此网格和包含数据点的容器不匹配。
- 连接点名称后面包含一个或多个额外的尾随空格。
- 连接点丢失,因此网格和包含数据点的容器再次不匹配。
'Numeric-name' 的解释: 网格中由 队列容器 中的子容器 passengers_off_0 引用的第 19 个连接点 名为 '18' 丢失。('18' 是 占位符参数 引用 - 一个作为名称或标签的数字... 并且可以重命名为 'xyz'、'glops' 或任何不包含空格的名称,只要它出现在容器的第 19 行(数据表)上即可)。
• 作为占位符参数,数字被解释为字符串,没有权重或值,就像标签名称一样。
• 重要的是,必须在{...} 对中,其中的内部行也希望关键字(或占位符)与值配对,正如 Trainz 中普遍存在的那样。
• 请注意,配对的 { ... } 大括号 的内容与前面的 类型 或 容器名称 配对。
- 有三种可能的常见修复方法...
- 可以使用 PEVsoft 工具 连接点制作器 向平台添加一个名为 'a.passoff_##' 的连接点,如果它确实丢失了。(这在较旧的 '乘客产品' 资产中是一种相当常见的情况。)
- 但是,根据名称 "a.passoff",该行可能缺少数字后缀 - 没有人会浪费时间在火车站台(可能有数百个)上给一个通用的连接点一个花哨的名称 - 这些通常带有数字后缀;因此,消息可能是因为容器名称缺少其数字后缀而发出的,并且由于占位符序列是
00 → a.passoff01,
01 → a.passoff02,
02 → a.passoff03, ...因此在条目##-1 → a.passoff##
X,添加正确的后缀 '##+1',
因此,在给定示例中,将 19 添加到 #18 占位符的行应该可以解决问题。 - 如果重命名失败,则可以删除该行。如果是这样,则应将产品 队列容器 中的 'size' 标签 数量减 1,以正确初始化数组的大小并节省运行时内存。
|
在 config.txt 中引用了一个连接点,但它不存在于默认网格 <mesh name> 中。这通常发生在从另一个资产复制了 config.txt 时,并且从网格中删除了连接点。例如,一个交叉路口闸门的灯连接点已从网格中删除,但灯的日冕效果仍然引用了丢失的连接点。
示例(以及相关的伴随错误)
- 错误:在网格中必须找到 '133' 中的连接点 'a.lite121'。 ''.
- 错误:连接点 'a.lite121' 必须属于效果的父网格(网格=malt.IM)。
该错误也可能由于连接点名称错误(有时是由于名称中包含尾随空格)而发生。
效果容器通常是一系列类似的项目,它们构成模型,需要某种形式的单独处理。例如,建筑物中的窗户是 '背光' 的,火车车辆上的灯,站台上的乘客和 '树组' 中的树。这些效果需要父网格上的连接点,以便在模型中定位效果。
解决方案: 如果问题是错字,请更正效果容器中的连接点名称。如果找不到正确的连接点,或者效果不再与资产相关,则删除容器。
|
这通常与之前的消息同时出现。附着点不仅在网格中找不到,而且在效果所附加到的父网格中也找不到。它的原因与上一条消息相同。
容器(子容器)将在 mesh-table 中。消息表明容器缺少一个必要的 att-parent 标签,以指示容器中引用的网格所附加到的父网格。当父网格被别名化时,就会出现这种情况 - 在这种情况下,CM 要求显式指定父网格。
- 解决方案
- 查看别名化网格的 config.txt 文件,以确定网格之间的关系,并在网格容器中添加 'att-parent' 标签和父网格名称。
示例: 错误: 纹理文件 'engine_black.texture.txt' 包含非 ANSI 字符。纹理必须为 ANSI。
纹理名称应仅包含 ANSI 字符。此规则过去没有被严格执行,因此,从 DLS 下载的一些资源可能在纹理文件名中包含非 ANSI 字符。如果资源随后被编辑,这些字符会引起问题。非 ANSI 字符的示例包括 À 或 è。文件名也可能包含不可见的非显示字符。
1. 使用 AssetX 检查网格中的纹理名称。确保纹理文件名与网格中的纹理名称完全匹配。
2. 如果网格中的纹理名称包含非 ANSI 字符,则需要使用二进制文件编辑器编辑网格,例如将 è 更改为 e。然后调整纹理文件名以匹配。通常,纹理.txt 文件内容和图像文件名需要进行相同的更改。
在网格文件中使用的纹理名称找不到,或无法加载。应该创建一个有效的 texture.txt 文件,并附带一个合适的关联图像文件。可以搜索用户数据文件夹以查找相同名称的纹理,该纹理可能适合也可能不适合资源。也可以创建一个新的 texture.txt 文件和一个任意图像 - 这可能会显示需要什么样的图像,或者它可能会显示纹理并不重要,任何图像都可以用于消除错误。
如果丢失的文件是 'digit_xx.texture',则可以使用任何图像来消除错误。这些文件实际上并没有使用,因为它们被运行编号创建过程中选择的数字图像所取代。
请注意,如果网格使用包含非 ANSI 字符的纹理名称,则可能会出现此错误。在这种情况下,texture.txt 文件(及其关联的图像文件)可能在导入过程的某个阶段由于文件名无效而被删除。在这种情况下,需要编辑网格中的纹理名称以删除非 ANSI 字符,然后再替换 texture.txt 文件(以及图像文件)。
示例: 错误: 纹理 'column1.bmp' 无法加载。
加载指定的图像文件作为图像时出现错误。文件可能已损坏,在这种情况下,必须用有效的图像文件替换它。它可能不是正确的格式。例如,它可能是压缩的 TGA:将其加载到您最喜欢的图像编辑程序中,并保存为未压缩的 TGA。它的大小可能不正确 - 网格中使用的图像必须具有高度和宽度为 2 的幂(即 2n,其中 n 是整数)像素。如果图像用作主图像文件和 alpha 通道文件,则它必须具有 alpha 通道:将其加载到您最喜欢的图像编辑程序中,并保存为 32 位/像素的未压缩 TGA。
(如果 MS Paint 或其他图形应用程序可以加载文件,则大小是最可能的原因。调整图像大小,使宽度和高度都为 2 的幂(例如,8x8、16x16、32x128、256x64)。)
- 形式
- 错误: 无法为纹理文件 'subfoldername/alphamaskfile.texture.txt' 加载 alpha 纹理 'subfoldername/alphamaskfile.bmp'。
示例
- 错误: 无法为纹理文件 'night/white-licht1.texture.txt' 加载 alpha 纹理 'night/licht1.bmp'。
- 错误: 无法为纹理文件 'night/white-lichta.texture.txt' 加载 alpha 纹理 'night/lichta.bmp'。
|
- 上面的错误消息对出现在一个 v1.3 的塔式泛光灯资源中,其中只有三个灰度.bmp 文件中的一个用于更改塔上每个灯光的亮度和特性,从而赋予它们个性,并增添一些独特之处。在庭院泛光灯资源中,与其他泛光灯并排排列,三个不同的阴影蒙版可以逼真地复制原型中单个灯光的实际属性。
- 当图形文件完全丢失时,通用的解决方法是用能够胜任工作的文件替换它。
- 在上面的情况下,只有三个 AlphaMask 中的一个存在,因此,它被复制并修改,以复制所需的个性,并满足 'texture.txt' 包含文件。(见上图和右侧)
- 其他类型的故障通常是因为早期的 Trainz 会完全读取文件夹的内容,并且不加区别地索引每个文件并将其放入内存块中 - 这使得可以引用资源文件夹层次结构中的任何位置的 .bmp 或其他支持文件(包括位于资源根目录之上的文件)。
错误: 在验证网格 '<mesh filename>' 时,无法为纹理 '<texture filename>' 加载图像文件 '<image filename>'。
[edit | edit source]- 请注意,此错误与下面的错误(无法加载主纹理)经常一起出现。
纹理.txt文件中所指的图像无法加载。该图像可能丢失,纹理.txt文件中的名称可能拼写错误,图像文件格式可能不正确(例如,压缩的TGA),图像尺寸可能不是2的幂(在需要的情况下),或者图像文件可能已损坏。
|
示例:错误:无法加载图像文件 'shadow.bmp' 以用于纹理 'shadow',同时验证网格 'shadow.im'
- 解决方案:阴影网格不需要任何图像文件。但是,许多阴影网格已使用默认图像(通常是黑色)创建,在某些情况下可能已使用多个图像创建。使用PEVs QuickShadows实用程序从现有阴影网格重新创建阴影网格,并删除原始阴影网格使用的图像(纹理.txt和图像文件)(在确认它们不被其他网格需要之后)。使用QuickShadows实用程序创建的网格不需要任何图像。
对于不是阴影的网格,请参见以下内容。
错误:无法加载主纹理 '<image filename>' 以用于纹理文件 '<texture filename>'。
[edit | edit source]- 请注意,此错误与前面的错误(无法加载图像文件)经常(如果不是总是)一起出现...
纹理.txt文件中所指的主图像无法加载。该图像可能丢失,纹理.txt文件中的名称可能拼写错误,图像文件格式可能不正确(例如,压缩的TGA),或者图像文件可能已损坏。
示例-1:错误:无法加载主纹理 'shadow.bmp' 以用于纹理文件 'shadow.texture.txt'。
- 解决方案:使用在修复资产时构建的纹理库文件夹中存档的shadow.bmp。
- 替代方案。可以使用black.tga,或创建一个新的4x4、8x8或16x16的深色tga文件作为此阴影。
示例-2:错误:无法加载主纹理 'greyhound_stop_1_nightwindows/bussstatin1.tga' 以用于纹理文件 'greyhound_stop_1_nightwindows/bussstatin1.texture.txt'。
- 解决方案:关键是关注关键词“主纹理”('//bussstatin1.tga'),但是...该文件位于资产文件夹的根目录中,需要将其复制下来,而夜间模式纹理.txt文件位于根目录下的'..\greyhound_stop_1_nightwindows'文件夹中。它是用'greyhound_stop_1_nightwindows.tga'和'greyhound_stop_1_nightwindows.bmp',它实际上是照明窗口和标志的AlphaMask图像。
示例-3:错误:纹理 'billboardnight/white flat.texture' 丢失或无法加载以用于网格 'billboardnight\billboardnight.im'。
- 在这种情况下,DLS v2.4广告牌资产 (<kuid:262137:10118>) 的故障是完全有效的 TGA 文件 具有 RLE 压缩 'ON'(在许多图形应用程序中单击框选项)。TS09 及更高版本无法容忍预压缩的TGA文件(Trainz 从那时起在提交资产时进行自己的压缩,PEV的Images2TGA 会提取这些压缩文件)。
- 解决方案:使用免费软件 GIMP,或其他图像处理图形编辑器,它可以让你控制RLE压缩,并使用“另存为”模式覆盖资产。
- (如有疑问,请“另存为”另一个名称(添加后缀“-B”等),然后修改纹理.txt文件以保存原始文件。)
- 或者,在Windows中复制文件,然后进行调整 - 允许跳过对纹理.txt文件的更改。
- 请注意,一旦可接受,N3V的Trainz(v2.7及更高版本)版本(至少从TS09及更高版本开始)可能会将额外的纹理.tga标记为一个新的不同的错误... 通过更改后的消息,你会知道你现在可以删除安全文件。
|
错误:图像文件 '<image filename>' 被错误地用作纹理.txt源文件和原始图像文件。
[edit | edit source]该资产包含一个 texture.txt 文件,它引用一个图像文件,但该图像文件从 config.txt 中的标签直接引用。
- 这通常适用于 kind groundtexture 资产,其中纹理也用作缩略图。缩略图引用指向图像文件,但纹理标签引用纹理.txt文件。
- 此故障报告还会发生在添加了 'normal-texture 标签' 到 config 中,并且图像文件从标签直接引用而不是通过纹理.txt文件引用。
- 当使用纹理.txt和图像文件组合时,而只允许使用图像文件时,也会出现此问题,例如产品中的'icon-texture'标签。
除了缩略图和一些特定标签之外,对图像文件的引用都应该通过纹理.txt文件进行。由于多个标签可以引用同一个纹理.txt文件,最简单的修复方法是将标签值从图像文件更改为纹理.txt文件。对于缩略图,引用可以直接进行,而不是通过纹理.txt文件进行,前提是缩略图图像不用于任何其他目的。如果问题是使用了一个不允许的纹理.txt文件,请将标签引用更改为图像文件,并删除纹理.txt文件。
注意:许多内置资产在资产详细信息窗格中不显示缩略图图像。这是因为资产使用对 JPG 图像的直接引用作为缩略图。来自 JA 文件的资产将丢失未从纹理.txt 文件引用的图像,因为这些图像未包含在 JA 中。这与用户无关,用户无法创建 JA 文件。
关于如何使用纹理.txt和图像文件,在 此处引用的脚注 中有详细的讨论。
错误:纹理资源 '<texture filename>' 的二进制转换失败。
[edit | edit source]纹理.txt文件中所指的图像由于某种原因无法处理。参见上文。
错误:主纹理和alpha纹理的大小不相同,用于 'texture.txt 文件'
[edit | edit source]当使用除 TGA(如 BMP)以外的图像格式并且需要透明度时,则必须提供两个图像 - 不透明图像和透明度蒙版。这两个图像在纹理.txt文件中被称为主图像和alpha图像。在这种情况下,这两个图像的大小必须相同。
如果出现以下情况,就会报告该错误
- 使用了两个不同的图像,但这两个图像的大小不一致。
- 需要两个不同的图像,但只能加载一个图像。
这个问题可以通过以下方法解决:
- 1- 如果提供了两个不同的图像,但它们的大小不一致,请调整其中一个图像的大小,使其与另一个图像的大小一致。编者注: 免费软件 IrfanView 和 Paint.net 都可以轻松调整大小,GIMP 则比较复杂。大多数图形软件应用程序都具有调整图像大小的功能。
- 2- 如果提供了两个不同的图像,则此错误也可能是由 32 位 TGA 或 32 位 BMP 造成的。当提供两个不同的图像时,它们应该是 24 位格式。
- 3- 如果需要透明图像(例如,如果 texture.txt 文件包含标签 'AlphaHint=masked'),则还必须指定一个 'Alpha' 文件。它可以是一个单独的文件,但最简单的配置是通过将文件格式从 24 位更改为 32 位,向现有 TGA 文件添加一个 alpha 通道。然后在 texture.txt 文件的 'Primary' 和 'Alpha' 标签中列出 TGA 文件名。
- 当纹理文件压缩时,也会出现此错误,并伴随着一条无法加载纹理文件的错误消息。这在 GIMP 中很常见,因为在 “另存为”模式 对话框的选项菜单中隐藏了将文件保存为压缩/未压缩、24 位/32 位的选项。对于 Paint.Net 用户,这些选项将作为“另存为”对话框页面的一部分显示。(对于 Irfanview,TGA 文件没有选项页面 - 默认格式为 32 位未压缩)。
选项 1 可能是修复某些资源的更简单方法,但 32 位 TGA 文件是更好的选择。
示例问题和解决方案
[edit | edit source]- 示例情况 1
错误显示在艺术子文件夹中
错误:无法加载纹理文件 'gondola4axlebn521555ant_art/gondola4axlebn521555ant_512.tga' 的 alpha 纹理 'gondola4axlebn521555ant_art/gondola4axlebn521555ant_art_512.texture.txt'。
错误:'gondola4axlebn521555ant_art/gondola4axlebn521555ant_art_512.texture.txt' 的主纹理和 alpha 纹理大小不一致。
资源的 texture.txt 文件为
Primary=Gondola4axleBN521555ant_art_512.tga Alpha =Gondola4axleBN521555ant_512.tga Tile=st Hint=Dynamic
这是一个简单的文件输入错误。将其更改为
Primary=Gondola4axleBN521555ant_art_512.tga Alpha =Gondola4axleBN521555ant_art_512.tga Tile=st
(提示不是必需的。更改行的顺序并不重要,但这使检查输入更容易)。错误实际上是由于找不到 alpha(透明蒙版)文件造成的。
- 注意:修复“无法加载...”错误也消除了“..大小不一致”错误。
- 512x512 艺术文件不再使用,因此可以删除 texture.txt 文件和图像文件,并删除匹配的缩略图表条目。
- 可以通过引用控制的 texture.txt 文件 来使用 512x512 图像作为 240x180 缩略图,但在缩略图容器标签中仍然将高度和宽度分别指定为 180 和 240。但是,这将创建失真图像。首选的方法是在图像编辑器中编辑 512x512 图像并将其保存为正确大小的 JPG。
- 128x64 图标艺术文件仍然用于列表(例如,Railyard 中的火车车厢列表或测量师的“火车车厢”选项卡列表)。它是可选的,另一个大小相似的图像将按比例缩放以适应,但结果通常不可接受。图像应该是侧面视图,透视效果最小且背景透明,火车车厢位于图像的上半部分。
- 对于 512x512 图像(如果使用)和 128x64 图像,应使用 texture.txt 文件(但请注意,AssetX 不会执行此操作 - 必须手动编辑 config.txt)。缩略图表条目应仅针对 DLS 缩略图(240x180)直接引用图像文件,正如 N3V Games 版本经理 James Moody 在 2014 年 9 月强烈指出的那样。在脚注中详细引用的电子邮件中,J. Moody 强烈建议使用 texture.txt 文件[1] 用于所有格式化为图像的文件,包括 *.jpg 240x180 缩略图截图。James Moody 现在不再为 N3V 工作。
- 示例情况 2
- 错误:'kansascitysouthernsd40-2_body/reflectstrip1f-window-dark.texture.txt' 的主纹理和 alpha 纹理大小不一致。
在这种情况下,使用 AssetX(或任何图像编辑程序,如 Irfanview 或 GIMP)中的图像调整大小选项来调整图像大小(以像素为单位),使其在高度和宽度上匹配,并且每个维度都是 2 的整数次幂(4、8、16、32 等)。
错误:找不到资源 <asset kuid> 的缩略图图像。
[edit | edit source]- 1- 缩略图容器丢失或为空。使用合适的缩略图添加容器。
- 2- 图像文件位于子文件夹中,并且文件夹路径格式错误。对于在缩略图容器中引用的图像,路径名必须使用 '/' 作为分隔符,而不是更常见的 '\'。例如
image "Litchfield & Madison CT100_art/preview.jpg"
错误:找不到运行编号字体目录 '_alpha_numbers'。
[edit | edit source]- 1- 火车车厢不支持运行编号,但 'fonts' 标签的值大于零。删除 'fonts' 标签,或将 'fonts' 标签的值设置为零。
- 2- 火车车厢支持字体,但缺少 'fontspath' 标签或该标签为空。创建 'fontspath' 标签并插入正确的值。正确的值是字体所在的文件夹名称,直到但不包括文本“_alpha_numbers”。例如,如果字体位于文件夹“sd40-2_alpha_numbers”中,则 'fontspath' 标签的值为“sd40-2”。
|
错误:标签 '<tag name>' 不允许在类型为 '<kind>' 的容器中使用。
[edit | edit source]示例
"错误:标签 'thumbnail' 不允许在类型为 'scenery' 的容器中使用。"
该标签不被识别为 kind scenery 类型的容器的有效标签。
- 该标签可能是一条注释:早期版本的 CM 忽略了注释(注释可以用多种方式表达[note 12] 最早的 Trainz 版本简单地忽略了无效的关键字,使许多结构实际上变成了注释。如果它只是一个注释,则可以将其删除。
• 脚本使用的标签通常利用了以下事实:The TRS's 时代的版本简单地忽略了无效的标签——这种处理方式应该一直延续下去,因为它让计算机在眨眼之间完成了一项任务,但却给成千上万的用户带来了时间上的压力,“修复因程序员的命令而损坏的资源!”——这就是为什么这页成为必需的原因!
• 例如,一些脚本使用的标签用于提供运行编号范围(起始和结束的合法值),它们通常作为 config 文件中的顶级标签包含在内。这些“自定义标签”现在不再允许作为顶级标签使用——它们必须移动到 'extensions' 容器中,并且必须修改脚本代码,以便在 config 代码汤中找到它们的新位置。或者,可以从 config 文件中删除这些值,并在脚本文件中硬编码——具体细节取决于脚本。 - 它可能拼写错误,在这种情况下,可以将其更改为正确的拼写。
- 它可能是一个在不同版本号的容器中有意义且有用的标签,但在资源的当前版本号中无效。
具有以下确切示例错误的资源可能已经更新——因此,与任何需要修复的资源一样,请检查 DLS,看看是否有可以下载的更新版本,其中包含修复程序。
版本冲突示例 [note 13]
- 错误:标签 'engine-sound-ramp-down-durations' 不允许在类型为 'enginesound' 的容器中使用。
- 错误:标签 'engine-sound-ramp-down-durations' 不允许在类型为 'enginesound' 的容器中使用。[2]
在这种情况下,... 这两个错误代表了内容创作者对 Trainz 0.9—TC3 的良好一致性,但被程序员在 TS09 和 TS10 中安装故障测试破坏了... 也就是说,在上面两个错误中,这两个带有连字符的计算机术语都是 Trainz 中最初的关键字,然后在 Trainz 2.9 版本的开发或调试过程中被添加,而这些关键字在 Trainz 解决多个声音处理问题的预期方案中是不必要的,然后在 3.4 版本及更高版本中再次被强制要求。
- 请注意,上面显示的这两个错误代表了当您将有效的早期 TBV 引擎规范导入或下载到 TS09-TS10 时,或将更新的引擎资产的配置文件中的报告 TBV(TB v3.4-v3.6 或更高版本)“回溯”时出现的错误消息类型[注释 14]
- 解决方案: - 不要删除这些行,只需将它们移动到描述字段中,以记录在以后的 TBV 版本中对它们的需要,并作为对自己的提醒——许多带有这些错误的资产将在TB v3.4 以上版本中给出相反的“缺少必需值”错误,因为 N3V 的程序员开始在 Trainz 数据模型和代码系统中为Trainz Mac 和Trainz Mac2 版本进行更新,使越来越多的数据元素成为强制性的[注释 15]。您也可以通过将构建号更改为支持该标签的版本来消除错误。但是,由于这会导致 TB 值增加或减少,因此可能会引入其他需要修复的错误或警告,尽管在这种情况下,可能性很小,因为kind engine 是一种非常稳定的数据类型。这个错误是程序员典型的傲慢[3]。
该标签的值与该标签允许的值之一不匹配。例如
错误:在“traincar”中缺少或无效的标签“nightmode”选择。
对于这种情况,标签“nightmode”允许的值为“home”、“lamp”、“constant”或“none”。许多其他标签也有类似的允许值列表。如果标签值不是允许值之一,则会报告此错误。
当标签引用一个文件而该文件无法找到时,会发生此错误。
例如,缩略图容器中的命名子容器有一个“image”标签,它可以指向一个 texture.txt 文件或一个图像文件。如果图像文件未找到 - 可能名称拼写错误或文件丢失 - 将记录此消息。类似地,“maps”容器中的“info-page”应指向一个.htm 文件。如果文件未找到,则会记录该错误。
当标签需要一个值列表时,该列表中可能存在所需的最小或最大条目数。如果未提供正确的条目数,则会记录此错误。
- 情况一——声音脚本容器中成对的 repeat-delay 标签值
- 在较旧的声音效果资产中很常见(kind scenery 或其他),因为早期的 Trainz 版本被编程为足够智能,可以将第二个值设为默认值。
- 实际示例——具有三个不同声音效果的资产
Slugsmasher's trainz-build V2-4 —SS Log Dump 柴油机,<kuid2:86661:144048:2>,在升级到 V3-7 时,来自 V2-9-SP2(TS2009-SP2 消息)的错误。值得注意的是,TS12 没有报告相同的错误,在导入到 V3.1 之前,它给出了 0 个错误和 0 个警告,尽管 N3V Wiki 文档指出该标签在 TB V3-4 以上是强制性的。
- 错误:标签“repeat-delay”的值数量不正确,预期为 2 个值,但找到 1 个。
- 错误:标签“repeat-delay”的值数量不正确,预期为 2 个值,但找到 1 个。
- 错误:标签“repeat-delay”的值数量不正确,预期为 2 个值,但找到 1 个。
- 修复:参考repeat-delay 容器 — 成对的值是一个范围,如果不同,则差异是在声音再次重复之前添加到第一个值的随机值范围。默认值为 1,1。第三个容器是引擎,因此将值设置为 0,0。其他日志转储为 2,3(因此操作员操作的随机性为 1 秒)和“logdrop”2,2(恒定延迟,它们只会下降那么远),采用原始的违规单值,并相应地调整。
- 情况二——一团糟
- 错误:标签“trackoffsets”的值数量不正确,预期为 2 个值,但找到 1 个。
类别类别“TB”(截至TS2009)控制图形渲染和CM 验证,用于轨道样条线。(这种对验证和渲染的影响存在于所有Trainz 数据模型的历史中,一个奇怪之处,关键字(标签)值——在历史上一直专门用于 CM 中进行排序——主要用于传达人与人之间的分类交流,而不会影响软件,现在用于定义许多kind track 的样条线子类型。)但是,TS2009 和TS2010 的验证存在不一致,无论轨道数量如何,只允许偏移量和方向为 2 个值。TS12 要求两个列表中的项数正确。
桥梁资产类别类别“TB”要求使用 trackoffsets 标签,该标签指定轨道距离样条线中心线的距离。标签值是一个CSL 列表,其中包含[注释 16]以米为单位的小数,但所有桥梁类型(公路[4]、单轨桥[5]、双轨桥[6],甚至隧道[7],每种类型在 TS2009 之前都有一个唯一的 KIND 声明)在 TS09 和 TS10 中存在编码错误,在 CM 验证过程中将所有桥梁解释为双轨,并且始终至少需要两个值。这伴随着样条线的类似变化,将其定义为轨道 KIND 子类型,以及所有轨道轨道资产。
- 更新出现此错误消息的旧资产的正确方法取决于哪个 ContentManager 版本正在读取配置文件。Content Manager 2.0 到 Content Manager 3.3 会错误地给出此错误,以下是调整方法。将资产移至 TS12(TB V3.4 及更高版本)时,需要重新调整这些更正。
- 理论
• 如果要更正错误,在轨道资产中删除该标签,则该资产将不会有任何“bridgetrack
• 列表中的项数(以及标签 trackdirections 列表中的值数)必须与TS12 及其之前版本的 Trainz 到 TS09 中桥梁的轨道数匹配。
• 对于使用 CM 验证错误的单轨或单样条线道路桥梁的更新,请使用两个非常小的偏移量,例如 trackoffsets -0.001,0.001。[注释 17]
|
示例:错误:容器“14”中的十进制标记“object-size”不是有效的十进制值。
标记值不是有效的十进制数。例如,输入的值为“0,05”,而不是“0.05”。编辑标记值,使其成为有效的十进制数。
在资产中找不到动画文件。
- 此错误在 kind mocrossing 中很常见,其中网格中没有动画。例如,道口可能有闪烁的灯光,但没有栏杆或闸门,或者资产可能是 kind mocrossing,因为它需要由驶近的列车触发的事件,而不是为了动画。CM 要求,即使动画文件在 config.txt 中没有被引用,对于 kind mocrossing 的资产也必须存在动画文件。在这种情况下,任何有效的 anim.kin 文件都可以添加到资产中以消除错误。可以在 userdata 中搜索合适的文件 - 只需要一个有效的 .kin 文件来满足 CM。
如果网格支持动画,但没有动画文件,那么修复它将很困难。如果资产是多个相似道口的一部分,则来自该系列中另一个资产的 anim.kin 文件可能有效 - 这应该经过彻底测试。如果网格是动画的,但没有可用的正确 anim 文件,仍然可以用不同的文件进行替换,最坏的结果是动画不会发生。无法从网格信息创建正确的动画文件。如果替换动画文件,请务必使用 Loco 在轨道上进行测试,使其从远处逐渐靠近。如果 anim 没有触发,那么资产至少可以使用。如果它确实触发了,那么你可以在决定是否进一步修复资产之前,决定效果是否可以接受。
在某些情况下,这可能也是一个警告,即使它说“必需”。这表示资产类型需要特定的容器,但该容器未包含在 cofig.txt 文件中。此问题的解决方法取决于容器(一些容器可以轻松创建,而一些容器则不能)和资产类型。
当容器中需要 kuid 时,它必须是适合该容器类型的 kuid。
- 案例 1,队列容器示例
- 错误:“product-kuid”中指定的 kuid“<kuid:-3:10044>”类型不正确。
- 分析
- 当消息为:“错误:“product-kuid”中指定的 kuid“<kuid:-3:10044>”类型不正确。
在这种情况下,在allowed-products 容器中指定了产品类别,而预期的是产品。
此错误很可能是因为一些看似是产品的资产实际上并不是产品,而是 KIND 产品类别。产品类别用于将产品的组分类为特定类型。类别可用于限制列为可添加到资产中的产品的范围。这些 kuid 不是标记中需要产品的有效值,但通常会在那里被错误地找到。
如果在allowed-categories 容器中使用了产品,也会出现类似的错误。 四个标准产品类别是:
Passenger,<kuid:-3:10091> Bulk Load,<kuid:-3:10040> Liquid Load,<kuid:-3:10044> Container,<kuid:-3:10042>
- 两种简单的解决方法
- 如果容器是产品容器,请用适当的产品替换无效的产品类别。如果队列具有product-kuid 标记,请使用该产品。
- 如果容器是产品类别容器,请用适合火车车的产品类别替换产品。
KUID 格式错误。例如:“<kui2:287205:15361>”。确认 KUID 并更正格式。
这是一个典型的错误,可能发生在构建号小于约 2.9 的资产上,因为一些非关键的 KUID 引用如果错误,则会被忽略。它也可能发生在脚本设置为替换纹理的资产上。在这种情况下,纹理资产由脚本提供,因此 KUID 可以保留为任何文本,例如“NULLKUID”。对于这些情况,可以插入任何通用纹理资产的 KUID - 它要么未在模型中使用,要么会被脚本替换。据报道,具有缺失 KUID 的标记可以简单地删除,但这可能取决于脚本如何使用此标记,因此不建议这样做。
无法加载声音文件。可能文件丢失 - 可以在用户数据中搜索文件并找到它。它可能已损坏或格式错误。如果文件因为实际上不需要而被从资产中删除,那么任何声音文件都可以工作,至少可以安装资产,以便确定声音文件的功能并找到合适的替换文件。出于历史原因,此错误也可能发生在从早期构建号升级的资产中 - 文件存在,并且 config.txt 文件条目似乎与文件名匹配,但警告仍然存在。在这种情况下,请确保 config.txt 中的文件名用引号 (") 括起来 - 如果不使用引号,尾随空格或制表符可能会使 CM 混淆。
这也可能是“比特率”错误。使用 Audacity(免费软件)等程序检查,我的经验是,声音文件比特率为 4400mhz,将其更改为 22050 以匹配现有的工作 .wav 文件,问题得到解决。AssetX V3 及更高版本包含一个修复选项,可以修复声音文件的一些问题。
资产脚本试图使用一个不适合资产类型(kind)的类。一个极端的例子是试图在风景资产中使用机车类。
- 请注意,与脚本相关的错误只有在提交资产时才能完全识别。因此,当其他错误被修复并且提交成功时,此错误可能消失。如果与此错误相关的问题不明显,请先修复所有其他错误,提交资产,然后确认此错误是否仍然存在。
(在验证一个开放修复的资产时,错误报告的错误并不仅仅是这个问题。“查看错误和警告”不可靠,不应依赖于开放修复的资产,并且在 Trainz 的后续版本中,当资产处于打开状态时,它根本不起作用。在重新检查错误之前,始终提交资产。)
修复此错误并保留脚本功能超出了本次讨论的范围。
错误:容器“attached-track”中“<attachment point>”和“<attachment point>”之间存在多个轨道段。轨道段必须是唯一的。
- 从 CM 版本 3.7 开始,这是一个 DLS 上传验证错误。
附加轨道容器包含一个或多个顶点子容器。子容器中列出的顶点对表示顶点之间的连接。一对顶点只能有一个连接。通过删除重复的顶点对来编辑顶点子容器。
此错误可能不再有效。请参阅以下两项。
资产的过时历史记录中存在问题。但是,错误消息中的描述不正确。问题在于资产正在使已经存在于资产过时历史记录中的项目过时。例如,资产 <kuid:12345:6789> 可能包含一个过时表 -
obsolete-table { 0 <kuid:12345:6000> }
表明它使旧版本过时。如果资产随后以新版本发布,它应该只使用 kuid <kuid2:12345:6789:1> 来表明先前版本现在也已过时。该升级后的资产不应包含先前版本的过时表,因为这会在资产的过时历史记录中创建重复的过时引用。(但是,在版本递增方法不适用的其他情况下,需要过时表。)
- 上述错误发生的原因...
- asset.tdx(数据库索引文件)只能包含一个关于资产使 KUID 过时的引用,因此双重条目会生成错误消息。当一个取代的 KUID2 跳过一个或多个版本后缀时,CM 将“填补空白”,并使用一个假定的 KUID2 序列,因此知道例如,要使用“<KUID...:4>” 使 KUID 或 <KUID...:1> 过时;但序列中的每个填补数字只包含索引中的下一个取代的 kuid。当考虑到过时表作为替换查找表的作用时,这一点是有道理的。资产的kuid-table 列出了一个较旧的 kuid,并将其与指向其替换的列表进行比较。计算机无法用两件事来代替一件事,因此资产.tdx 索引中的过时/替换表只能保存一个条目。
- 从 CM 版本 3.7 开始,这是一个 DLS 上传验证错误。
此错误也已在没有明显取代资产重复但序列中存在差距的情况下观察到
- <kuid:12345:67>
- <kuid2:12345:67:2>
- <kuid2:12345:67:3> - 被错误拒绝
从构建 3.5 开始,这是一个 DLS 上传错误。
两个资产不应使同一资产过时,除非它们都属于同一修订历史记录的一部分。此资产包含一个过时表,其中包含一个条目,该条目包含一个已经被其他资产使过时的资产,但这两个资产不属于同一版本序列。应调整过时表。
注意:当两个资产都属于同一修订历史记录的一部分时,已经观察到此错误。这种不正确的验证可能已修复:请参阅“先前过时的 KUID <kuid> 缺少新资产的过时表”。
例如
<kuid:12345:66> 存在于 DLS 上。上传了更新版本 <kuid:12345:67>,其中包含一个过时表
obsolete-table { 0 <kuid:12345:66> }
然后,资产 <kuid:12345:67> 被升级到 <kuid2:12345:67:1> 并上传。如果过时表保留在此版本中,那么资产 <kuid:12345:66> 现在被两个更新使过时:这应该是允许的,但有些情况下上传被拒绝。解决方案是删除过时表,并依赖于 kuid 版本号来指示过时。
此错误消息可能是“过时的 KUID <kuid> 不属于此资产的过时历史记录”错误消息的替代消息。但是,过时表的验证规则似乎发生了变化,这意味着此错误对于上述情况不再发生。
从构建 3.5 开始,这是一个 DLS 上传错误。
如果此资产使具有不同内容 ID 的资产过时,那么必须在此资产的过时表中包含该过时资产。该消息表明,DLS 知道此资产使具有不同内容 ID 的资产过时,但该过时资产缺少过时表。DLS 可能知道过时资产,因为它存在于此资产使过时的资产的过时表中。
例如,如果资产 <kuid:12345:67> 具有过时表
obsolete-table { 0 <kuid:12345:66> }
那么,后面的版本,例如 <kuid2:12345:67:2> 必须具有以下过时表
obsolete-table { 0 <kuid:12345:66> 1 <kuid:12345:67> 2 <kuid:12345:67:1> }
换句话说,资产的过时表必须包含该资产的完整过时历史记录。
请注意,此错误消息似乎与消息“错误:过时的 KUID <kuid> 已经在服务器上由 KUID <kuid> 标记为过时”相矛盾,因此,这是对过时表验证规则的更改。
无法将用于资产的 kuid 解析为有效的 kuid。它可能是格式错误的(例如,<kuid2:-1:110000:0>),或者可能存在关于冲突的 kuid 号码的内部问题。检查 config.txt 中的 kuid 并确认它是否正确。
数据库中记录的资产 kuid 与 config.txt 文件中的 kuid 之间存在不一致。
当一个资产被打开以供编辑时,该资产的状态将被记录在数据库中。当该资产被提交时,该资产将从编辑文件夹重新加载到数据库中,并更新状态。如果加载资产回数据库的过程检测到资产 kuid 与数据库中记录的内容不同,则会发出此错误。
如果要更改资产 kuid,则必须通过“文件/导入内容”(直至 TS12)或“文件/导入内容文件夹”(T:ANE)菜单选项加载该资产,并且应还原原始资产。
数据库修复错误。该资产可能会在 CM 中显示带有错误图标,但没有可用的错误消息。将该资产打开以供编辑,然后重新提交可能会清除此错误。
- Trainz Classics 中一些过时的 数据模型 变更
将一个成熟的 TB v2.6 机车导入 Classics 时,会产生这些错误和警告:
Trainz Classics 中容器 'steam' 中过时的标签。 |
---|
'boiler-to-piston-flow' |
'firebox-to-boiler-heat-flow' |
'firebox-to-boiler-heat-flow-idle' |
'firebox-volume' |
'main-reservoir-volume' |
'piston-to-atmosphere-flow' |
'westinghouse-volume' |
这些标签-值对会在指定的容器中生成错误 |
错误:标签 'epbrakes' 不允许出现在容器类型 'steam-engine' 中 |
错误:标签 'max-fire-coal-mass' 不允许出现在容器类型 'steam' 中 |
- 解释和详细说明
- ↑ 仅在本周末就看到了超过 500 个,写于 2019 年 5 月 6 日
- ↑ 这个编辑者曾经同时使用 5 个 CM 和 3 个测量员,同时分享带宽给 skype 并观察来自印第安纳州的共享桌面视图。
- ↑ 在这项工作中,我们回顾了四种可作为免费软件使用的编辑器:Notepad++,Programmer's Notepad,Crimson(以前称为 'Ruby'),以及 ConTEXT。我们决定不使用 NOTEPAD,除了临时保存一两个剪切缓冲区之外。在这些中,只有 Notepad++ 拥有所有搜索和替换 (SAR) 功能,这些功能是 Trainz 中进行所有类型编辑所需的。
- ↑ 请注意,此列表是在添加 thumbs 容器后生成的,因为描述块是在添加 thumbs 容器之后添加的。添加和缺少 'something'(分隔符或关闭块字符) 会极大地改变报告的错误消息。计算机只是在说,嘿,笨蛋,把它们配对起来!
- ↑ 标签 'rgb' 对我们人类来说,包含三个值,分别代表红色、绿色和蓝色数字,范围是 0-255(十六进制 0-FF),但它仅存储为单个计算机字(32 位可以容纳四个这样的字节值,这就是透明度 'Alpha 通道' 在许多常见的图像文件格式中,如何在 32 位字中存储图像像素的方式。)因此,在文件读取子例程保存时,它会保持关键字-值的关联性。类似地,每个容器都有自己的处理子例程,它知道哪些关键字在容器中是合法的,并且还可以进行边界测试(浮点数或整数或布尔逻辑值在某些情况下可能看起来相同,但内核系统中使用的变量和存储方法却大不相同。
- ↑ 在 2008 年 TS2009 发布之前,'除了轨道样条线之外的类型',道路、桥梁和隧道都是单独的类型(参见:这里在 Track 下缩进)来自 引用,但它们都通过添加许多标签来控制或区分图形渲染内容而组合在一起。之后,桥梁、隧道和样条线对象(如围栏、车站平台、电力线(电线杆和电线)、实际上具有长度的任何资产)都使用轨道分类和方法。
- ↑ 对于好奇的人来说,'follows-spline-gradient' 布尔标签是在 2012 年秋季的 TS12 更新期间添加的,用于修复 TS12 中附着轨道容器的一些应用,如 此编辑 和一个月后的编辑之间所记录的那样。在 TS09 和 TS10 中使用时,资产可以工作,但在 CM 中会显示错误。该轨道是 Auran 桥梁轨道:"Auran Track Bridge, <kuid:523:19721247>"
- ↑ Fabartus 说,这仍然是我在任何软件部门见过的最愚蠢的决定之一,他从 70 年代后期就开始编写代码。Windwalkr 和他的团队因为这个烂摊子让每一个 Trainzer 付出了许多人时! FrankB 01:43, 2016 年 4 月 14 日 (UTC)
- ↑ 此错误:--在 2016 年 1 月,系统性地使用 cdp 导出从 TS12-SP1 复制北美机车数字模型并导入到 TANE-SP1(版本 80330)时出现了几次。将这些打开进行编辑,然后将编辑文件夹移动到 TS12,在该文件夹中可以使用本地批处理文件在文件夹上运行 PEV 的工具
- ↑ AssetX 内置了 Windows 帮助文件,但对于不熟悉 Trainz 行为和 Trainz 数据模型 这些年来发生的演变的人来说,它仍然很难掌握。另见论坛主题:[AssetX] 以获取更多信息。
- ↑ AssetX 对本页面的解决方案表示欢迎,但它们是次要的,因为要正确运行 AssetX,新的 Trainzer 必须构建资产知识才能有效地使用该程序。因此,PEVtool 和手动编辑方法是优先事项,而运行 AssetX 则需要添加一个全新的知识层次,这只会阻碍工作。此外,升级资产对于大多数修复来说并不是必需的,AssetX 更适合将资产更新为特定于 trainz 版本的需求,而不仅仅是修复资产使其正常运行。
- ↑ Trainz 中曾经被允许的注释方法:
• 'Hack-Hack' 注释,其中行以 '//' 开头,
• BASIC 语言和 DOS OS 批处理文件风格的注释——其中带引号的字符串以 REM 或 rem 为前缀)以及
• 以分号为前缀的行——类似于 hack-hack 注释,该行中分号后面的所有内容都将被忽略——这是在 config.txt 文件中经常看到的另一种编程语言 '风格' 的实践。 - ↑ Trainz 2009 和 Trainz 2010 共同处于过渡时期,前者用于基础 数据模型,后者用于模块之间的互连性、与外部世界的通信以及更好地利用现有的最新计算机技术,例如更好的显卡和多核处理,以及过渡代码,利用了新式 64 位 CPU 和 操作系统 的一些功能。TS09 和 TS10 的第四个也是最后一个服务包更新都包含并共享 Trainz 版本 3.3。它们也有一些共同的缺点,而这里提到的两个标签是 N3V 有时粗心编程的鲜明例子。
• 由于 Trainz MAC 项目需要将代码移植到不同的操作系统,操作系统上的差异要求对 IBM PC 和其他 MSDOS 操作系统以及 Intel X86 CPU 家族芯片代码中理所当然的某些假设进行明确定义,并且不再默认。
• 其他软件演变的改变表明,某些参数也应该明确定义,以赋予 CC 社区长期以来所要求的功能和选项。
• 这两个措施导致 N3V 程序员需要更多且有时不同的关键字明确定义,如 N3V Wiki 中有时有很好的记录,有时只有因为 DLS 上传软件过滤器现在拒绝没有这些更改的资产才能发现。
• 应该注意的是,随着 DLS 上传审查流程的实施,它也开始更新以反映下一个(即将发布或未来)Trainz 版本在开发过程中所需的内容和要求,这早于该版本的内容管理器可用。因此,上传到 DLS 有时会由于对不断发展的 数据模型 进行更严格的测试而发现新的要求。 - ↑ 在 CC 识别到其 安装 CM 或 CCP 中最高的 trainz-build 值 与上传一个更改最少的更新资产之间存在一种张力,两种相互矛盾的优先事项,而这个更新资产具有更低的 TB 值,这样就可以让更多用户使用。
• 分配的 TB 越低,在更多情况下,运行旧版本的人就可以使用该资产,而无需对其进行调整。
• 现在,更高的 TB 版本号是由管理层命令驱动的,而不是由技术需求驱动的。N3V Games 在大量的争议和大量用户抵制中,几乎完全劫持了 trainz-build 代码的设计目的,并开始强制上传与实际技术规格和需求脱节的 TB 值,这始于 2014 年 9 月,或等同于 2010 年 9 月,当时他们宣布并开始强制执行令人讨厌的 Trainz 生命周期策略,却没有事先建立一个统一清理内容的基线,也没有在长时间内执行人们充分理解的标准。
• 这种政策管理不善一直以来,而且现在还在继续产生两种影响:
A) 那些可能没有钱购买更新的计算机和软件的人,而且他们通常是收入固定,而且对学习新系统没有兴趣的退休老人,现在不得不放弃 Trainz 更新,实际上已经变成了二等 Planet Auran 公民。对于这些习惯于购买高质量产品,而且对发布需要不断更新的低质量产品这种仓促、随意的方式感到不舒服的老年人来说,这被视为一种背叛,这明显表明他们生产的产品质量差、程序员的专业水平差,而且很明显表明这家公司的管理人员的道德水平低下。
B) 而且——一个稳定的过渡版本,在这个版本中,许多(如果不是大多数的话)enginespec 已经进化,并且一直以来都基本上处于平台状态,成为“标准”enginespec)在该资产中;或者是否应该尝试将该资产回退到早期的 Trainz。 - ↑ 即使在 2015 年 1 月,强制性的数据元素也并不总是清晰明确地在 Trainz Wiki 中体现出来。最重要的是,如果一个 安装 的 内容管理器 正在说一个 TB 值 需要这些定义,则必须定义一个定义,或者将 TB 值降低到 CM 可以接受的值。
• 在任何“修复”情况下,Trainz Wiki 的默认值很可能是要分配的正确值,但正如在修复和修改机车车辆或其他动态资产时总是会发生的那样,修复后的文件应该在测量员 和 司机 在尽可能多的适用安装中进行测试,以确保这是一个可行的通用修复,或者确定它只是一个TB 范围限制 修复。
• 提醒新用户,有时需要参考 TC3 内容创建指南 PEV,它作为 Trainz Wiki 的附录,用于查找正确的默认值......而且一如既往:社区会对 Trainz Wiki 上更新了这些深奥信息的任何页面和段落表示感谢,当发现这些信息时,他们会毫不利己地为大众利益而亮出这些信息。 - ↑ 在此查看 CCGTC“类型:双线桥”在线资源 和 在此查看 CCGTC“类型:桥梁”(单线)在线资源 以及 CCG/类型:轨道(道路) 和 CCG/类型:桥梁隧道。
- ↑ 为什么这个值不能取零值尚不清楚,但推测它是某些计算中使用的除数。无论如何,在旧的 CCG 中,非零的极小数字是作为必需的值出现的。在修复后,在 TS10-SP2 中对“trackoffsets -0.001,0.001”进行了测试,测试对象为单线轨道和道路元素,并且成功地与连接的道路相连。
- ↑ . 在一系列涉及 Yesterdayz-Trainz 的大约 6 名成员和 James Moody 的私人电子邮件、回复、反对意见、澄清和重申中,人们提出了以下建议:
- 关于 James Moody 始终使用 texture.txt 文件的电子邮件交流,除了 DLS 240x180 缩略图之外。
- N3V Games 的版本管理器 James Moody 回复(已截断)
我的建议是绝对 100% 肯定地引用一个 .texture用于在司机或测量员中以游戏形式出现的任何东西。
如果 Trainz 遇到它需要在游戏中渲染但不是 .texture 的东西,即使它属于 UI 的一部分,它也必须在运行时将其转换为一个 .texture。这种纹理不会像 CM 在提交时预先处理那样好(或者使用起来那样快)。
显然,对于旨在用于网页(例如 DLS)的东西来说,例外情况是,在这种情况下,你希望使用网页浏览器可以理解的东西。这就是为什么我们对 DLS 缩略图使用 .jpg 的原因。
对于大多数资产来说,这“仅仅”是一个性能问题,导致在每次遇到图像时都会发生一次磁盘访问(因此会导致短暂的卡顿)。但是,这里还隐藏着一个更严重的问题。
如果一个资产被广泛使用,它很可能会出现在未来游戏版本中内置的内容集中的一部分,或者可能作为 DLC 内容包的依赖项。这些资产以一种剥离了源纹理的形式分发,以减小下载大小。如果你有一个 .texture.txt 文件,并且仍然直接引用源图像(例如 .tga),那么在这种情况下就会完全失败。这不仅速度更慢,而且根本无法工作。(斜体加粗表示强调)你会得到一个空的方框——根据情况,要么是 100% 黑色,要么是 100% 白色,因为该文件实际上丢失了。
如果你想看到这个错误在行动中,请在 TS12(或者 TS2010,同样适用)中使用内置机车车辆来制作一个编组。其中大部分没有编组预览图标——正是因为内容存在这个错误。
—James Moody, 2014 年 9 月 16 日 12:24 EDST(波士顿)向 Yesterdayz-Trainz 的五名成员发送的电子邮件 - ↑ 在 TS10 中发现,V2.8 资产 config.txt 包括以下标题行:kuid <kuid2:60238:53042:1> username “Green Goat GENSET Engine Sounds Startup” kind “enginesound” category-class “ZS” engine-sound-ramp-up-durations 0,2.396,2.317,2.267,2.701,2.626,2.374,2.175 engine-sound-ramp-down-durations 0,2.396,2.317,2.267,2.701,2.626,2.374,2.037 category-region “US” trainz-build 2.8 category-era “2000s;2010s”
- ↑ 当 Fabartus(前 N3V 版本经理)在 2014 年 10 月左右的 T:ANE 开发期间通过电子邮件询问有关这种成对出现的“TAG 数组”定义的问题时,James Moody 对当时在 TBV 3.4 及更高版本中显示为强制性的值竟然是一个较旧的规范感到惊讶!我不确定他是在开玩笑,还是不想回答这种令人尴尬的错误,或者只是在坦诚相待!Fabartus,2015-0917。
- ↑ 查看 CCGTC“类型:轨道(道路)”
- ↑ CCGTC“类型:桥梁”(单线)
- ↑ 查看 CCGTC“类型:双线桥”
- ↑ 查看 CCGTC“类型:桥梁隧道”