Bedrock Wiki
  • QQ
  • 原站
新手入门指南
  • Guide
    • 1. 简介
      指南
    • 2. 附加组件详解
    • 3. 软件与准备工作
    • 4. 项目设置
    • 5. 创建自定义物品
    • 6. 创建自定义实体
    • 7. Blockbench:建模、贴图与动画制作
    • 8. 添加战利品表、生成规则与合成配方
  • Extra
    • a. 理解JSON
    • b. 下载示例包
    • c. 故障排除
      帮助
    • d. 高级清单文件指南
    • e. 格式版本
    • f. Android 项目设置
JSON UI
  • General
    • JSON UI 入门指南
      指南
    • 最佳实践
      指南
  • Tutorials
    • Aseprite 动画
    • 保留标题文本
      中级
    • 修改服务器表单
      中级
    • 字符串与数字转换
      中级
    • 按钮与开关
      新手
    • 添加HUD界面元素
      新手
  • Documentation
    • JSON UI 文档
Meta
  • Style Guide
  • 使用JSON模式(Schemas)
  • 实用链接
  • 版本控制
  • 附加包性能优化
  • Q&A
    • GameTest 问答集 2021/08/06
    • 世界生成问答 2024/11/15
    • 延迟渲染技术预览问答 2024/02/23
    • 方块与物品问答 2024/08/30
    • 脚本与编辑器问答 2023/09/22
NBT
  • General
    • .mcstructure
  • Tutorials
    • 扩展结构限制
      简单
    • 教育版中的实验功能
      简单
  • NBT in Depth
    • NBT 库列表
      专家
    • NBT读取示例
      专家
    • 关于NBT(命名二进制标签)
      专家
世界生成
  • General
    • 世界生成入门
      指南
      实验性
    • 特性类型
      实验性
    • 生物群系
      指南
      实验性
  • Tutorials
    • 特征(Feature)的方块条件
      实验性
    • 生成地表区块
      实验性
    • 生成自定义矿石
      实验性
    • 生成自定义结构
      实验性
    • 高度图噪声地形
      实验性
  • Documentation
    • 生物群系标签
动画控制器
  • 动画控制器入门指南
    指南
  • 实体命令
    中级
  • AFK检测器
  • 将Molang变量转换为计分板数值
  • 死亡指令
  • 重生指令
命令
  • General
    • 命令方块入门指南
    • 函数
    • NBT 命令
    • 坐标系
    • 方块状态
    • 理解目标选择器
    • 记分板操作
  • Commands
    • Execute
      简单
    • Playanimation
    • 伤害
    • 播放音效
  • On Event Systems
    • 玩家首次加入时
    • On Player Join
    • 玩家离开时触发
    • 玩家死亡事件
    • 玩家重生事件系统
    • 首次加载世界时
  • Scoreboard Systems
    • 实体计数器
    • 计分板计时器
    • 比较与获取分数
  • Techniques
    • 执行逻辑门
    • MBE - Max的方块实体
    • FMBE - 创建显示实体的新方法
    • 视线检测
    • 移动状态检测
    • 轨道摄像机
  • Useful Creations
    • 多人位置重排系统
      函数
    • 自定义合成台
      简单
实体
  • General
    • Intro to Entities BP
      指南
      新手
    • 实体资源包入门
      指南
      新手
    • 实体问题排查指南
      帮助
    • NPC对话系统
      中级
    • 实体事件
      新手
    • 实体属性
    • 渲染控制器
      新手
    • 生成规则
  • Tutorials
    • 任意坐标系间的坐标转换(世界、实体、骨骼)
      中级
    • 创建船只
      中级
    • 实体手持物品
      中级
    • 实体攻击机制
      中级
    • 实体睡眠机制
      中级
    • 实体碰撞体
      中级
    • 实体移动
    • 实体计时器
      中级
    • 无敌实体
      新手
    • 村庄机制实现指南
    • 检测其他实体
      中级
    • 生成已驯服的实体
      脚本
      中级
    • 视线检测实体
      中级
    • 禁用队友伤害
      中级
    • 范围效果云入门指南
      中级
    • 虚拟实体
      新手
    • 飞行实体控制
      中级
  • Documentation
    • Vanilla Usage Spawn Rules
    • 原版使用组件
    • 抛射物
    • 虚拟组件
    • 运行时标识符
    • 非生物实体运行时标识符
战利品、配方与交易
  • General
    • 交易行为
  • Documentation
    • 战利品表
    • 交易表
    • 合成配方
    • 物品函数
  • Tutorials
    • 随机化结构战利品
      简单
文档
  • Shared Constructs
  • Molang 查询详解
  • Vanilla Materials
    专家
  • 声音定义
  • 文件类型
  • 材质配置文件说明
    专家
  • 菜单分类
  • 资源包文件夹结构
  • 雾效ID
  • 高级Molang指南
方块
  • General
    • 方块入门指南
      指南
      新手
    • 方块组件
    • Block Tags
    • 方块状态
    • Block Traits
    • 方块排列组合
    • 方块事件
      脚本
    • 方块事件迁移指南
      帮助
    • 方块物品化
      中级
    • 方块问题排查指南
      帮助
  • Visuals
    • 方块剔除
      中级
    • 方块模型
      指南
      新手
      简单
    • 方块着色
      简单
    • 方块纹理动画
      中级
    • 方块纹理变体
      中级
  • Tutorials
    • Precise Interaction
      专家
      脚本
    • Precise Rotation
      专家
      脚本
    • 伪方块
      中级
    • 可旋转方块
    • 应用持续效果
      简单
      脚本
    • 矿石战利品表
      简单
      脚本
    • 规避状态值限制
      专家
  • Vanilla Re-Creations
    • 自定义作物
      中级
      脚本
    • 自定义活板门
      中级
      脚本
    • 自定义玻璃
      新手
      简单
      已弃用
    • 自定义釉面陶瓦
      简单
  • Documentation
    • 原版方块模型
      新手
    • 方块形状
    • 方块格式历史
    • 方块音效
服务器
  • Software
    • Bedrock Server Software
  • Protocols
    • Bedrock Protocol
    • NetherNet 协议
    • RakNet 协议
概念
  • contents.json
  • Molang
    中级
  • Rawtext
  • textures_list.json
  • 命名空间
  • 子包
  • 文本与本地化
  • 着色器
  • 纹理图集
    中级
  • 表情符号与特殊字符
  • 覆盖资源
    中级
  • 音效
    中级
物品
  • General
    • 物品入门指南
      指南
      新手
    • 物品组件
    • 物品标签
    • 物品事件
      脚本
    • Item Event Migration
      帮助
    • 物品问题排查指南
      帮助
  • Tutorials
    • Custom Pottery Sherds
    • 可投掷物品
      中级
    • 生成物品
      中级
    • 自定义武器
      简单
    • 自定义盔甲
    • 自定义食物
      简单
      脚本
    • 通过装备物品执行命令
      实验性
      中级
    • 高分辨率物品
  • Documentation
    • 附魔
    • Numerical Item IDs
    • Vanilla Usage Components
    • 原版物品标识符
      已弃用
    • 可附着物
      新手
    • 物品格式历史记录
视觉效果
  • General
    • 实体视觉效果简介
      指南
    • 基岩版建模指南
    • 动画中的特效
    • 基于数学的动画
      中级
    • 材质
      专家
    • 材质创作
      专家
    • 皮肤包制作指南
    • 自定义死亡动画
      中级
  • Tutorials
    • Glowing Entity Texture
    • 受伤动画
      中级
    • 实体纹理动画
      中级
    • 栓绳位置调整
      简单
    • 玩家几何模型
      新手
    • 移除实体阴影
      中级
    • 重绘生成蛋纹理
      新手
  • Ideas
    • 结构展示技巧
粒子效果
  • General
    • 粒子效果入门
      指南
  • Tutorials
    • 禁用粒子效果
      新手
  • Documentation
    • 原版粒子效果
脚本编写
  • General
    • 脚本编程入门
    • 什么是Script API?
    • API 模块
  • Tutorials
    • GameTests
      实验性
    • 简易聊天命令
      实验性
    • 脚本核心功能
    • 脚本表单
      实验性
    • 脚本请求API
      实验性
    • 阻止方块放置
  • Documentation
    • JavaScript 问题排查指南
    • Script Resources
    • Script Watchdog
      实验性
    • TypeScript
    • 引擎环境
虚拟现实
  • General
    • 启用VR模式
      指南
    • 配置资源包
      专家
  • Tutorials
    • 编辑你的第一个模型
      专家

GameTest 问答集 2021/08/06

GameTest 问答集 2021/08/06
  • 领域服务器(Realms)
  • QuickJS与V8引擎选择
  • 文件与网络访问
  • 斜杠命令注册
  • 原版内容测试
  • 开发路线图
  • GameTest的成功之道
  • 主机平台支持
  • 多语言支持
  • 事件系统整合
  • 功能禁区清单
  • 自定义维度支持
  • 旧版Scripting API去向
  • 世界生成噪声
  • BDS服务器支持
  • JavaScript学习资源
  • BDS测试版发布
  • NPM支持
  • GameTest的终极目标
  • 实验性功能API
  • 开发趣闻
  • API覆盖范围
  • 命令方块的未来
  • 教育版编程工具
  • 最搞笑的Bug
  • 市场影响
  • 领域服务器前景
  • 通用化发展
  • Molang测试
  • 功能开发依据
  • 平台效能
  • 命名由来
  • 设计初衷
  • 功能限制
  • 热重载功能
  • 文档改进
  • Hummingbird UI整合
  • 外部脚本协作
  • 市场内容支持
  • Discord集成
  • Java版一致性测试

本次问答活动在 Bedrock Add-Ons Discord 举行。五位微软员工参与并解答了关于GameTest框架的问题,所有问题均来自社区征集。

注意: 并非所有对话记录都被完整保存,部分内容经过编辑。如需查看完整记录,请加入上述Discord服务器并获取"events archive"权限。

领域服务器(Realms) ​

  • 问:GameTest是否设计支持领域服务器?
  • 答:是的

QuickJS与V8引擎选择 ​

  • 问:选择QuickJS而非V8等其他JS引擎的原因是什么?QuickJS由于缺乏JIT编译导致速度较慢,这在某些社区被视为重大缺陷
  • 答:我们团队中有成员在过往项目中使用过QuickJS,其集成非常简便。虽然我们评估过V8(及其他引擎),未来可能会迁移。JIT编译确实很有吸引力,但并非所有平台都能轻松(或完全)支持该特性。

文件与网络访问 ​

  • 问:GameTest会提供文件或网络接口吗?
  • 答:我们倾向于保持脚本API的有限性,逐步扩展功能。文件与网络API需要权限管理及游戏所有者授权,因此可能不会作为基础API提供,但未来可能会为服务器所有者等特定场景添加这类功能
  • 问:这类接口是否仅会在部分平台实现?
  • 答:我们致力于在所有平台实现统一API。唯一例外可能是编辑器专属的桌面端API。

斜杠命令注册 ​

  • 问:何时能注册自定义斜杠命令?
  • 答:虽无具体时间表,但这在我们的开发优先级列表中名列前茅
  • 补充说明:当社区开始自制!commands时,我们就清楚认识到这个功能的重要性

原版内容测试 ​

  • 问:你们是否使用GameTest框架测试原版行为包?如何利用测试API验证自有内容?
  • 答:当然!目前已有大量针对原版内容的测试,并计划持续扩展。我们甚至在公开版本中发布了部分原版测试案例(vanilla_gametest)
  • 展望:理想情况下,社区也可以通过GameTest提交原版漏洞报告,我们将整合这些测试用例(修复问题后)以确保不再出现同类问题

开发路线图 ​

  • 问:能否分享API后续开发的时间规划?
  • 答:团队仍在确定新增事件的优先级,暂无具体时间表可分享。你们最希望看到哪些新增事件?
  • 补充意见:方块破坏/放置事件确实是高优先级需求

GameTest的成功之道 ​

  • 问:相比初代Scripting API,GameTest API在技术架构或组织决策上有何不同使其取得成功?如何定义"成功"标准以避免项目中止?社区如何助力?
  • 答:我们更聚焦于内容测试与验证这一具体场景——这不仅适用于核心游戏,也适用于自定义内容。目标是降低创建测试的门槛,该场景对平台覆盖率和性能要求相对宽松。GameTest的成功标准是让内容创作者能轻松测试他们的作品
  • 延伸说明:虽然我们看到其在游戏玩法等场景的潜力,但在验证性能表现、多平台支持及收集反馈前,我们不想过度承诺
  • 社区协作:持续与我们保持沟通就是最大的帮助!创作者社区是这一切的核心驱动力

主机平台支持 ​

  • 问:为何当前主机平台无法运行GameTest?未来会支持吗?
  • 答:我们计划支持全平台!某些平台原先缺少JS引擎必需的API(如aligned_alloc),目前正在积极解决这些问题

多语言支持 ​

  • 问:会支持其他编程语言吗?
  • 答:我们的绑定层设计足够通用,可适配多种语言。内部曾实验性集成Lua甚至Blockly等方案,但目前无法承诺官方支持其他语言
  • 追问:考虑过Kotlin吗?
  • 答:尚未深入研究(我们的Android平台仍使用Java),但听起来很有趣!会找时间调研

事件系统整合 ​

  • 问:数据驱动中的事件系统与GameTest事件系统如何定位?未来会提供两者间的接口吗?
  • 答:我们希望两个系统能协同工作。熟悉数据驱动的开发者应该能自然地融入脚本逻辑,具体实现方式仍在探索中

功能禁区清单 ​

  • 问:能否分享你们明确"不会实现"的功能清单?包括不支持的设备或开发方向
  • 答:目前几乎没有"绝对不实现"的内容,但以下功能需要谨慎处理:
    • 网络访问
    • 文件访问
    • 平台专属API
  • 详细说明:
    • 网络访问可能通过严格管控的API实现
    • 文件系统会提供某种持久化存储方案,但非自由访问
    • 尽量避免平台专属API(编辑器功能除外)
    • 自定义着色器是个技术难点(如PlayStation要求着色器预编译),可能通过物理材质系统实现
  • 追问:持久化存储会支持跨实例的简单变量读写吗?
  • 答:计划添加键值对存储(可能是JSON格式),包括通过JS API访问标签和记分板。更进一步的通用存储方案仍需解决沙盒隔离等安全问题

自定义维度支持 ​

  • 问:有计划支持自定义维度的GameTest吗?
  • 答:API设计时已考虑自定义内容,例如Commands.run采用字符串参数而非硬编码维度变量,正是为未来整合预留空间

旧版Scripting API去向 ​

  • 问:旧版Scripting API会如何发展?是否保持可用但停止更新?
  • 答:旧版API会保留(如你所见近期已无更新)。当GameTest等系统逐步覆盖其功能后,我们将移除这个实验性API
  • 补充说明:
    • 旧版API不保证向后兼容
    • 不会扩展对移动设备的支持
    • 客户端体验与UI支持是我们关注的方向,但具体方案尚未确定

世界生成噪声 ​

  • 问:有计划暴露世界生成噪声给GameTest吗?现有JS噪声库无法匹配生物群系生成使用的噪声算法
  • 答:尚未深入研究脚本中的世界生成方案。区块生成运行在任务线程,当前架构暂不支持安全地迁移到其他线程。我们考虑过类似Web Worker的方案,但仅停留在讨论阶段

BDS服务器支持 ​

  • 问:GameTest能很快在BDS上稳定运行吗?
  • 答:我们已在CI流水线中使用BDS运行GameTest进行验证!
  • 现存问题:需要启用实验性选项的世界才能运行GameTest,目前最简便的方式是通过客户端创建世界后迁移至专用服务器

JavaScript学习资源 ​

  • 问:对刚接触JavaScript的新手,有什么针对GameTest的学习建议?
  • 答:JavaScript是绝佳的编程入门语言!我们有一篇简明的入门指南: https://docs.microsoft.com/en-us/minecraft/creator/documents/gametestbuildyourfirstgametest
  • 社区协作:欢迎贡献教程内容!

BDS测试版发布 ​

  • 问:有计划发布BDS测试版帮助调试GameTest问题吗?
  • 答:感谢建议。我会与发布管理团队探讨可行性

NPM支持 ​

  • 问:支持NPM库吗?
  • 答:原生不支持,但通过WebPack打包已有成功案例
  • 好消息:官方TypeScript绑定即将发布!
  • 追问:会有类似npm的包管理器吗?
  • 答:考虑过但实现复杂。我们会观察社区使用模式后再决定发展方向

GameTest的终极目标 ​

  • 问:GameTest最终会保持为测试工具,还是扩展为内容创作系统?
  • 答:核心目标是简化内容测试流程,包括:
    • 丰富的模拟与断言API
    • 新增玩家模拟等测试方法
    • 降低JS测试创建门槛
  • 附加价值:同时也在探索通用服务端脚本API的可能性

实验性功能API ​

  • 问:实验性功能会获得API支持吗?会放在独立模块中吗?
  • 答:我们确实希望为实验性功能提供API,可能采用类似C++的"mojang-minecraft-experimental"命名空间方案

开发趣闻 ​

  • 问:开发过程中最有趣的部分是什么?
  • 答:个人最喜欢创建支持多语言的绑定层设计,让每个包能选择脚本运行时
  • 追问:未来可能支持Python吗?
  • 答:Game Jam中曾用Python 2.7实现过原型,但暂无产品化计划

API覆盖范围 ​

  • 问:现有方法会向玩家开放吗?比如物品堆相关方法
  • 答:最新API列表见: https://docs.microsoft.com/en-us/minecraft/creator/scriptapi/mojang-minecraft/player
  • 注:当前API覆盖面仍较小,正在逐步扩展

命令方块的未来 ​

  • 问:GameTest会取代命令方块吗?
  • 答:不会完全取代,但可能将复杂逻辑转移至脚本。理想情况是两者协作(例如脚本注册自定义命令供命令方块调用)

教育版编程工具 ​

  • 问:会推出类似教育版Code Builder的易用工具吗?
  • 答:正在探索Blockly等可视化编程方案,暂无具体计划

最搞笑的Bug ​

  • 问:开发过程中遇到过什么有趣的Bug?
  • 答:测试驯服API时,曾尝试生成并驯服100多只狼...结果参见: https://imgur.com/a/NIF7D4x

市场影响 ​

  • 问:GameTest对市场内容会有多大影响?
  • 答:目前作为实验性功能无法用于市场内容,但非常适合用作发布前的验证工具

领域服务器前景 ​

  • 问:GameTest在领域服务器的未来如何?会像旧版Scripting API一样被移除吗?
  • 答:我们计划长期支持,不会轻易弃用

通用化发展 ​

  • 问:鉴于社区主要将GameTest用于最终产品(而非开发测试),会考虑扩展其通用性吗?
  • 答:当前仍聚焦测试场景。在扩展至通用玩法前,我们需要完善实验性验证和基础架构

Molang测试 ​

  • 问:能通过GameTest测试Molang吗?
  • 答:可通过多种方式测试实体行为(包含Molang的动画控制器和状态转换)。只需在运行测试时加载自定义实体的行为包即可

功能开发依据 ​

  • 问:新功能会基于Mojang需求还是社区反馈?这个策略会改变吗?
  • 答:两者兼顾!例如自定义命令API就是因社区需求而优先开发
  • 即将到来:模拟玩家API和VS Code脚本调试功能

平台效能 ​

  • 问:跨平台兼容性和效能如何?
  • 答:目标全平台支持。性能方面需兼顾JIT与非JIT平台
  • 追问:"效能"指API的底层程度
  • 答:抽象层级与Bukkit类似(未来可能增加客户端功能)

命名由来 ​

  • 问:为何命名为GameTest?
  • 答:继承自Java版的测试框架名称
  • 追问:整个系统都会沿用这个名称吗?
  • 答:若扩展至非测试场景,可能调整命名体系

设计初衷 ​

  • 问:开发GameTest时的核心目标是什么?
  • 答:实现免编译测试!让社区成员在提交漏洞时能附带测试用例
  • 附加价值:也是脚本集成的重要试验场

功能限制 ​

  • 问:GameTest有哪些限制?
  • 答:目前主要限制:
    • 结构体尺寸限制64x64x64
    • 仅主世界维度可用(正在扩展)
    • 暂不支持玩家交互(开发中)
    • 仅剩Switch和PlayStation平台待支持
  • 追问:循环嵌套会导致崩溃吗?
  • 答:while(true)确实会挂起游戏。我们计划开发"看门狗"机制来监控脚本对象、内存和循环

热重载功能 ​

  • 问:会添加类似/reload命令的脚本热重载功能吗?
  • 答:作为经常编写GameTest脚本的开发者,这确实在我们的规划中

文档改进 ​

  • 问:当前文档对新手不够友好,有计划改进吗?
  • 答:新创作者门户已包含入门指南: https://docs.microsoft.com/en-us/minecraft/creator/documents/gametestgettingstarted
  • 协作邀请:文档托管在GitHub,欢迎社区贡献: https://github.com/MicrosoftDocs/minecraft-creator/tree/main/creator/ScriptAPI

Hummingbird UI整合 ​

  • 问:GameTest会取代Scripting成为Hummingbird UI的引擎吗?
  • 答:Hummingbird(现称GameFace)是我们用于构建基岩版UI的技术。虽然计划让脚本操控UI,但具体实现方式仍在设计中,且与GameFace运行在不同的沙盒环境

外部脚本协作 ​

  • 问:支持跨目录的脚本协作吗?
  • 答:计划通过行为包依赖系统实现脚本复用,但不会支持任意路径加载(存在安全和跨平台问题)

市场内容支持 ​

  • 问:GameTest会向市场内容开放吗?预计时间?
  • 答:当前专注测试场景。在确保稳定性前,不想作出无法兑现的承诺

Discord集成 ​

  • 问:会支持Discord联动吗?
  • 答:初期版本大概率不支持

Java版一致性测试 ​

  • 问:许多标记为java_parity的测试被禁用,是否因为行为不一致?这些测试来自Java版吗?
  • 答:部分测试确实移植自Java版。即使存在版本差异,我们仍保留这些测试用于追踪问题
  • 社区协作:欢迎提交展示版本差异的测试用例: https://aka.ms/gametestsamples
  • 追问:能否贡献原版行为/资源包?
  • 答:正在讨论是否将内置测试移至开源仓库

贡献者

编辑 GameTest 问答集 2021/08/06

Bedrock Wiki by Bedrock OSS ,Translate by 8aka-Team

"Minecraft"是Mojang AB的注册商标。

Bedrock OSS、Bedrock Wiki以及 bedrock.dev 与Microsoft及Mojang AB不存在任何隶属关系。

  • 隐私政策
  • 加入QQ社区
  • 参与贡献指南
  • 访问代码仓库