构建您的第一个游戏测试 |
您所在的位置:网站首页 › 我的世界结构方块使用 › 构建您的第一个游戏测试 |
构建您的第一个游戏测试
项目
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 |