构建您的第一个游戏测试

您所在的位置:网站首页 我的世界结构方块使用 构建您的第一个游戏测试

构建您的第一个游戏测试

#构建您的第一个游戏测试 | 来源: 网络整理| 查看: 265

构建您的第一个游戏测试 项目 07/28/2022 游戏测试包含什么?

游戏测试是一个带有一组起始条件的微型环境,例如一组生物或物品。 当该环境在《我的世界》的世界中运行一段时间后,您可以运行条件代码来评估其是否满足您的期望。

构建游戏测试集需要通过一个行为包来构建您的游戏测试,并编写一些简单的 JavaScript 代码。

重要

游戏测试框架仍处于实验阶段。 与所有实验一样,您可能会在《我的世界》版本中看到功能的添加、删除和更改,而没有明显的高级警告。 查看《我的世界》更改日志以了解有关游戏测试框架任何更改的详细信息。

要了解有关实验功能的更多信息,请访问 《我的世界》基岩版中的实验功能

注意

由于游戏测试框架会频繁添加和更新功能,我们建议使用《我的世界》的最新测试版。 有关更多信息,请参阅《我的世界》测试版。 此示例的语法旨在与最新的测试版兼容。

要求

在开始本教程之前,建议完成以下内容。

行为包简介 游戏测试元素

在行为包中,每个游戏测试都包含以下几个元素:

- 一个结构,它定义了测试的物理环境以及任何起始实体。 在《我的世界》中,您可以通过设计新结构(通常在创造模式下)然后在附近放置一个结构方块来创建新结构。 然后您可以使用结构方块将结果保存到磁盘。 这将创建一个 .mcstructure 文件,您可以将其添加到您的测试中。

当游戏测试在《我的世界》中运行时,您的结构将被加载并扩展到《我的世界》。 应注意,此结构将在通常平坦广阔的世界中创建和运行,因此您需要确保所有生物都被围在您创建的结构中。

然后,游戏测试使用 JavaScript 代码来定义测试,包括:

- 测试注册:在环境中建立测试的少量代码。

- 测试设置:在已创建的结构环境中设置条件的附加代码。 通常,这将创建额外的生物。

- 测试验证:用 JavaScript 编写的附加代码片段,用于评估测试是成功完成还是失败。

建立了这个简单的基础,就可以用几行 JavaScript 代码加上一个《我的世界》结构来创建游戏测试。

开始构建自己的测试

首先,您需要从构建自己的行为包开始。 要开始构建您的行为包,请在 development_behavior_packs 文件夹中创建一个名为 startertests 的新文件夹。

重要

要构建和运行您自己的游戏测试,您必须使用《我的世界》的最新测试版(版本 1.16.230+)。 有关更多信息,请参阅《我的世界》测试版。

在 startertests 文件夹中,您还需要包含两个子文件夹:

structures structures 用于保存 MCStructure 文件 scripts scripts 用于保存 JavaScript 文件 更新您的清单

您可以使用 startertests 文件夹中的 manifest.json 文件作为行为包清单的起点,如下所示:

{ "format_version": 2, "header": { "description": "Introductory tests for Minecraft GameTest Framework.", "name": "Starter Hello World Tests", "uuid": "1A2F42BD-98D4-4E0D-8E3F-934AB8A0C05E", "version": [0, 0, 1], "min_engine_version": [ 1, 14, 0 ] } }

行为包清单需要额外的元素来支持游戏测试。 modules 部分需要一个模块,添加在 header 部分下方,用于注册您的 JavaScript 代码入口点,如下所示:

"modules": [ { "description": "Script that implements basic starter tests.", "type": "javascript", "uuid": "1A1B53FC-5653-4A75-91B7-9CDF027674AE", "version": [0, 0, 1], "entry": "scripts/StarterTests.js" } ]

注意这个 module 的几个方面:

这个模块的类型是 javascript。 `uuid` 需唯一,并专为您的项目生成。 有关用于生成新 UUID 的工具,请参阅[行为包简介](BehaviorPack.md)主题。 `entry` 属性指向一个 JavaScript 文件,其中包含您的游戏测试代码。

此外,您将需要建立对《我的世界》API 和游戏测试框架的依赖关系。 您可以通过在下面的 modules 部分下添加其他依赖项来执行此操作:

"dependencies": [ { "uuid": "b26a4d4c-afdf-4690-88f8-931846312678", "version": [ 0, 1, 0 ] }, { "uuid": "6f4b6893-1bb6-42fd-b458-7fa3d0c89616", "version": [ 0, 1, 0 ] } ]

警告

请注意,这里的 uuid 引用《我的世界》的核心组件。 您不应在 dependencies 部分中更改这些值。

重要

如您所见,游戏测试框架测试依赖于《我的世界》API 和游戏测试框架的“0.1.0”版本。 版本 0 表示这些功能仍然是实验性的。 与所有实验一样,随着时间的推移,我们将改进它们的功能,并且随着构建迭代,API 签名可能会在没有提前通知的情况下更改。 查看《我的世界》更新日志以了解更多更改历史记录。

带有游戏测试的行为包的完整清单文件如下所示:

{ "format_version": 2, "header": { "description": "Introductory tests for Minecraft GameTest Framework.", "name": "Starter Hello World Tests", "uuid": "1A2F42BD-98D4-4E0D-8E3F-934AB8A0C05E", "version": [0, 0, 1], "min_engine_version": [ 1, 14, 0 ] }, "modules": [ { "description": "Script that implements basic starter tests.", "type": "javascript", "uuid": "1A1B53FC-5653-4A75-91B7-9CDF027674AE", "version": [0, 0, 1], "entry": "scripts/StarterTests.js" } ], "dependencies": [ { "uuid": "b26a4d4c-afdf-4690-88f8-931846312678", "version": [ 0, 1, 0 ] }, { "uuid": "6f4b6893-1bb6-42fd-b458-7fa3d0c89616", "version": [ 0, 1, 0 ] } ] } 游戏测试注册

每个游戏测试都需要一个脚本文件。 正如您在上一节中看到的,我们添加了一个带有 entry 属性的模块,该属性指向 JavaScript 文件:

"entry": "scripts/StarterTests.js"

当启用了游戏测试框架的世界打开并注册此文件时,您的游戏测试 JavaScript 文件将加载并执行。 在这里,您的代码的主要作用是注册下游的游戏测试。

请注意,当您对脚本或结构进行更改时,您将需要退出您的世界并重新加载。 如果有任何脚本错误,将在加载世界时显示。

要注册您的游戏测试脚本,需要使用 RegistrationBuilder 类。 您可以在 Registration Builder 中查看有关 Registration Builder 类的更多信息。

使用 RegistrationBuilder 的 JavaScript 示例行如下所示:

// Registration Code for our test GameTest.register("StarterTests", "simpleMobTest", simpleMobTest) .maxTicks(410) .structureName("startertests:mediumglass"); /* use the mediumglass.mcstructure file */

这行代码在 StarterTests 测试组中建立了一个名为 simpleMobTest 的新测试。 它添加了一个额外的参数 (maxTicks),表示这个测试可能需要 410 个节拍(20.5 秒)来运行。 最后,游戏测试指定了一个 MCStructure (startertests:mediumglass)。 按照惯例,这会使《我的世界》使用行为包文件夹中的 MCStructure 文件,位于 /structures/startertests/mediumglass.mcstructure。

JavaScript 的其余部分使用游戏测试 Helper 类在 simpleMobTest 函数中实际表达测试。

测试函数

测试函数将实际执行测试。 测试函数既为要运行的测试设置初始条件,又返回一个评估标准的附加测试函数。

示例测试:

import * as GameTest from "mojang-gametest"; import { BlockLocation } from "mojang-minecraft"; function simpleMobTest(test) { const attackerId = "fox"; const victimId = "chicken"; test.spawn(attackerId, new BlockLocation(5, 2, 5)); test.spawn(victimId, new BlockLocation(2, 2, 2)); test.assertEntityPresentInArea(victimId, true); // Succeed when the victim dies test.succeedWhen(() => { test.assertEntityPresentInArea(victimId, false); }); };

在这个测试函数中需要注意几点:

您可以使用 spawn 方法在您的测试中创建新的生物。 在诸如 spawn 的 API 中使用的坐标是相对于 .MCStructure 的结构方块的坐标。 assert 如果方法中描述的条件不成立,assert 函数会导致代码停止执行。 其中,此代码断言鸡实体不再存在于结构中(assertEntityPresentInArea 方法中的 false 通知函数,断言该实体不再存在于该处)。 如果在结构中的任何方块中找到一个,assert 代码将抛出错误。 但是,如果没有找到 chicken,我们将转到 test.succeed 代码行,并且测试通过。

完整的 JavaScript StarterTests.js 文件如下所示:

import * as GameTest from "mojang-gametest"; import { BlockLocation } from "mojang-minecraft"; function simpleMobTest(test) { const attackerId = "fox"; const victimId = "chicken"; test.spawn(attackerId, new BlockLocation(5, 2, 5)); test.spawn(victimId, new BlockLocation(2, 2, 2)); test.assertEntityPresentInArea(victimId, true); // Succeed when the victim dies test.succeedWhen(() => { test.assertEntityPresentInArea(victimId, false); }); }; // Registration Code for our test GameTest.register("StarterTests", "simpleMobTest", simpleMobTest) .maxTicks(410) .structureName("startertests:mediumglass"); /* use the mediumglass.mcstructure file */

要完成示例,您将需要使用结构方块来定义测试。

为此,请打开《我的世界》并以创造模式开始一个新世界来构建您的环境。 这是一个由玻璃方块构建的简单玻璃笔,专为我们的游戏测试构建:

接下来,您需要将其导出为结构。 在《我的世界》中运行以下命令:

/give @s structure_block

这将为您提供一个可以使用的结构方块。 在您的创作旁边放置一个结构方块,并使用结构方块弹出框来包围您的创作。 将其导出为 mediumglass.mcstructure。

在您的行为包中,转到您的结构文件夹并创建一个名为 startertests 的子文件夹。

将此 mediumglass.mcstructure 文件放在名为 startertests 的子文件夹中。 确保匹配您在 JavaScript 代码中指定的大小写,因此将其全部小写。 将 mediumglass.mcstructure 文件复制到该文件夹。 您的文件夹应如下所示:

在游戏中运行测试

完成游戏测试行为包后,您想要在《我的世界》中尝试一下。 为此,请创建一个新的《我的世界》的世界。 对于这个新世界,您需要从创造模式开始,并开启游戏测试框架的实验。 您需要在您的世界中添加游戏测试行为包。 如果一切正常,您应该在创造世界时看到 Start Hello World 游戏测试行为包:

点击 Starter Hello World 行为包磁贴以将其激活。

重要

您还可能希望在您的环境中指定一些其他更改:

选择一个平坦的世界 保持一般难度(在完全和平的世界中,生物的工作方式不同)

加载世界后,使用 /gametest 命令运行测试。

要运行特定测试,请使用 /gametest run :,如:

/gametest run startertests:simpleMobTest

下一步内容?

您已经创建了您的第一个游戏测试框架测试。 游戏测试允许您作为创建者扩展内容、运行实体并验证游戏机制。 您可以查看下方的游戏测试 API 以了解有关游戏测试框架中包含的内容的更多信息。

游戏测试 API



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3