GTMB · 玩法指南
管理员测试区:启用、有限运行与报告
Administrator Test Laboratory
安装环境:GTNH 2.9.0 · GTMB 0.3.8
本页资料:GTMB 0.3.7 · 与当前下载版本的差异尚待核对
介绍与使用
管理员测试区用于在当前存档的独立维度运行有界验证。它默认关闭。普通 minimal / stress 使用独立的 Forge FakePlayer,不需要真人进入;另行开启的 composite 使用明确指定、已连接的自有生存测试客户端。普通玩家的蓝图、剪切与施工不需要启用测试区。
管理员测试区:显式开启、有界运行、独立报告
- 配置开启后重启
仅本地 gtmb-testlab.cfg 的 testlab.enabled 可以启用;默认关闭,命令要求权限等级 4 或控制台。
- 查状态并选择运行
status 不创建世界。明确选择 run minimal 或 run stress;另行开启 compositeEnabled 并指定在线自有生存客户端后,才可 run composite。一次只运行一项,按当前设施租用区块。
- 停止与核对报告
stop 在协作检查点取消并释放票据;report 写当前报告。逐项核对本轮 runId,不把 PASS 扩大为真人 GUI 或 TPS 结论。
reset 与 refresh 的范围
只改写已确权的单元。原五区为 32 × 16 × 32;综合套件另有四个 40³ 单元和有限资源库,使用附加归属标记。先按正常撤销恢复代理剪切,不删除 DIM/region 文件或接管未知世界。
stress 的实际边界
默认有限 64 次、512 KiB 内存编解码;真实惰性任务回调最多 8 个 outstanding。不是 Netty 吞吐或 TPS 基准。
默认关闭与隔离
testlab.enabled 和 compositeEnabled 默认均关闭。原套件用 FakePlayer;综合套件只接管明确指定的在线生存测试客户端,其他真人进入则停止变更。测试供应与自动变更限于本轮已确权设施。 综合套件还需 allow-nether=true 才有非零维度自然 tick;关闭时拒绝运行。
64,000 格就绪不是通过
40³ 含机器空气,默认 100 台自然成型且停机的 EBF / LCR,各 50 台;另有 GT / AE / EnderIO 共 56 类设备角色。有限 AE 和无线 EU 实际付料,自用与分享分别真实保存并放置,再完成 RAW 剪切/粘贴与独立世界复核;NATIVE_READY 不是 PASS。缺少本轮回执仍待核验。
工作区管理员命令补全
权限等级 4 的管理员输入 /gtmb 后可用 Tab 补全 restart;补全不执行命令,实际执行仍检查权限与参数。
源码规则图解,非游戏截图。单次原生存盘、工厂调用或压缩不能被软时间预算强制截断;终态与报告写盘需要分别核对。
普通工作区的管理员恢复
权限等级 4 的管理员可用 /gtmb restart 重置 GTMB 运行任务与会话,清除旧任务、回调和传输,并独立取消本次 AE 订单。已施工方块、回收暂存与持久剪切记录保留,之后重新打开投影仪。命令仍须由服务器线程正常执行;已经进入不可中断的原生原子写盘可能完成原提交。这项运行时恢复不能强制解除卡死磁盘或被阻塞的服务器 tick 线程,也不回滚已完成的施工。
权限等级 4 的管理员输入 /gtmb 后可用 Tab 补全 restart 与 voucher;后者打开服务器猫猫装饰抵用券规则界面。补全不执行命令,实际执行仍检查权限与参数。
此命令不需要开启测试区;测试区的启用与命令按下文单独配置。
启用与权限
启动一次生成 config/gtmb-testlab.cfg。在 testlab 分类将 B:enabled=false 改为 B:enabled=true 后重启。只有此本地配置可以启用;命令、网络消息和 JVM 参数不能开启它。关闭时不注册测试区 provider、维度、命令或 tick 处理,不创建测试世界、代理、强加载票据和报告,也不启用测试区性能计数。
启用后的命令要求权限等级 4,服务器控制台也可使用。没有任意传送/进入命令,也没有任意维度、坐标、路径或临时启用参数。普通套件发现真人进入测试维度时停止自动变更;composite 只豁免配置中明确指定的测试客户端,其他真人进入仍会停止变更。
命令与日常使用
| 命令 | 作用 |
|---|---|
/gtmbtestlab status |
查看启用、注册、运行状态、ID 和自有票据数量;不创建测试世界 |
/gtmbtestlab refresh |
先按生产撤销流程恢复代理的未完成剪切,再清理自有单元并重建小地板和标记 |
/gtmbtestlab reset |
同样先恢复代理剪切,然后只清空自有单元 |
/gtmbtestlab run minimal |
显式运行小单元验证 |
/gtmbtestlab run stress |
显式运行有限的内存编解码和服务器任务队列负载 |
/gtmbtestlab run composite |
另行开启后构建真实 40³ 场景,等待连接客户端完成自用、分享与 RAW 剪切流程及独立复核;场景就绪不等于通过 |
/gtmbtestlab stop |
在协作检查点取消本轮并释放自有票据 |
/gtmbtestlab report |
将当前报告再次写盘;没有本轮报告时拒绝 |
默认配置与隔离范围
| 设置 | 默认值 / 含义 |
|---|---|
enabled |
false,显式启用后才可使用 |
dimensionId / providerId |
均为 1048578;可配置,冲突时拒绝注册,不抢占或自动换号 |
baseX / baseZ / zoneSpacing |
均为 4096;现有归属记录必须与布局一致 |
zoneY |
80 |
maxOwnedChunks |
8,还受 Forge 票据容量限制;普通设施每次租用四个区块 |
operationsPerTick / tickBudgetMillis |
512 步 / 5 ms,协作软预算 |
runTimeoutSeconds |
60 秒,有界运行 |
stressIterations / stressPayloadKiB |
64 次 / 512 KiB,有限内存负载 |
compositeEnabled |
false;在整个测试区已开启的基础上,另行允许 40³ 原生综合套件 |
compositeActorUuid |
空;必须明确填写在线自有生存测试客户端的 UUID,不能用 FakePlayer 代替 |
compositeMachines |
100,交替放置 EBF / LCR,默认各 50 台;允许 1–128 |
performanceDiagnostics |
启用测试区时默认为 true;设为 false 可关闭计数,整个测试区关闭时始终无效 |
五个设施为 minimal、capture、cut、codec、stress,各自只拥有 32 × 16 × 32 的体积。设施沿 X 相隔一个 zoneSpacing,stress 的 Z 额外偏移两段间距。refresh 只在每个单元内重建 16 × 16 地板和标记。设施切换先释放上一组四个区块,再申请下一组;不会同时强加载全部五区。
composite 另有四个 40³ 的来源、自用、分享、RAW 单元和一个 32 × 16 × 32 的有限资源库,使用附加的 composite-ownership-<dimensionId>.nbt 归属标记。它不改写原五区的归属布局,也不接管已有未知 region。来源与资源库需 13 个区块,同时检查一个目标时需 22 个;应将 maxOwnedChunks 设为至少 22(例如 32),仍受 Forge 票据容量约束。按需调整 runTimeoutSeconds,综合套件允许至 3600 秒;配置改动均需重启。
reset 和 refresh 会改写测试区已确权的单元;开启综合套件时还包括已确权的综合设施。它们不删除 DIM 目录、region 文件、无关区块或别人的剪切缓存。已有 DIM<id> 却没有匹配归属标记、布局发生变化或路径为符号链接时拒绝接管;应恢复原配置,不能用 reset 收编未知世界。
归属标记位于 <save>/gtmb-testlab/ownership-<dimensionId>.nbt。维度注册与世界已加载是不同状态:只查 status 不加载世界,操作时按需加载;已启用且确权的存档若存在生产剪切恢复事务,恢复可能例外加载测试维度。关闭/未注册时该事务保留。释放票据后世界未立即卸载不等于仍有自有强加载。
代理与测试物品
代理是存档专属 UUID 的生存 FakePlayer,不冒用在线真人,不开启创造或飞行。带 owner/run 标记的测试物品效果只在当前运行、正确代理、当前自有单元中生效;每轮有限供应一次七颗钻石。它不是全局物品事件 hook,也不会给予普通投影仪额外权限;结束后清理代理装备和库存。
通用候选的验证边界
本候选只保留通用测试设施。此前未发布候选的专属套件、命令和额外区域已撤出当前产品;历史报告保持原候选归属,不证明通用实现通过了外部机器验收。旧额外标记和区域不会被接管或删除。
读懂 minimal、stress 与报告
minimal 覆盖报告列出的普通蓝图、材料支付、原始区域采集、剪切缓存/预览 DTO、粘贴去重与原位撤销、公共端编解码等入口。项目应逐项查看,不能从 FakePlayer 或 DTO 通过推断真人网络、GUI 或 GL 渲染通过。
stress 是有限内存编解码,以及最多 8 个 outstanding 的真实惰性服务器任务回调;不会清空全局任务队列。它不是 FakePlayer Netty 吞吐或 TPS 基准,也不证明任意机器/整包场景的性能。普通工作区按剩余 tick 时间与任务切片推进;原生步骤仍可能超出软期限,不能据此承诺无卡顿。
40³ 综合套件:真实场景、有限资源与最终复核
composite 需要 testlab.enabled=true 和 compositeEnabled=true 两项本地配置,命令不能绕过它们。指定客户端须已在线、存活、生存模式且有真实服务器连接,客户端和服务器都须启用测试维度 provider。服务器还需 allow-nether=true,以允许当前 Forge 的非零维度自然 tick;关闭时套件拒绝运行。此时测试区临时接管该测试客户端的背包、手持槽、位置与视角,传送至安全平台;正常完成或取消后归还。归还状态只在内存中,不提供崩溃恢复,应使用自有测试客户端和隔离存档。
固定选区是 40 × 40 × 40 = 64,000 格,包含机器内部的空气,不表示 64,000 个实心方块。默认场景含 50 台电力高炉、50 台大型化学反应器,另有 20 类 GT 单方块、24 类 AE 和 12 类 EnderIO,共 56 类不同设备角色,AE 与 EnderIO 每类各三份;另有真实 GTSWN 设备。多方块通过原生物品放置及世界自然 tick 成型,检查保持停机和零配方进度;缺失注册、成型失败或所需原生 API 不可用会失败,不使用占位设备补齐。
资源库提供有限 AE 材料和能源。来源与分享目标使用两只经原生交互绑定的量子终端,AE 付料另沿用真实无线终端;不手写终端绑定数据。无线 EU 通过原生管理器有限入账,并记录初始入账、追加入账、余量与净消耗。原有非零无线余额不会被场景搭建覆盖。GT ME 样板输入总成和 AE 接口中还包含原生编码的处理样板,输入总成有真实物品与流体缓冲,用于核对配方保真、空白样板成本和缓冲资源扣料。测试后按原生管理器清理本轮未用供应。
场景达到 NATIVE_READY 后,仍须由连接客户端完成真实导入、自用处理与保存、付料放置、分享处理与保存、付料放置,以及 RAW 剪切和粘贴。只有自用、分享、RAW 的独立世界复核、实际有限资源扣除,以及两次匹配的保存提交均完成,才允许本轮终态为 PASS。场景就绪、内存编解码、直接后台调用、FakePlayer 快照或手工生成 PNG 都不证明原生保存完成。
各轮报告须连同客户端原始截图、JSON / PNG 文件对、实际构建与来源版本核对;缺少本轮运行回执时,验收仍为待核验。全局指标可能混入其他活动,不当作独占网络计数或 TPS。比较版本必须使用相同场景输入、断言、堆限制、模组环境和生存客户端,不能用旧场景耗时推导本轮 64k 性能。
核对本轮报告
普通施工运行期间可用轻量进度和分离的格状态增量更新,终态仍给完整结果。排队容量与执行预算是不同指标:pending / outstanding 表示尚未完成的数量或字节容量,不是每 tick 允许多少请求的速率。测试区、普通工作区和服务器任务队列各有自己的约束,不能把它们相加当作一个全服时限。
报告写到 <save>/gtmb-testlab/latest-report.json 和 latest-report.nbt,各自最多 512 KiB。人工查看时核对两份文件的 runId 属于当前轮,并检查命令结果与日志中的写盘错误;不能把旧文件当作本轮报告。自动读取 TestLab.status() / TestLab.report() 的管理工具还应同时核对 reportPersisted=true、persistedRunId 与本轮 runId 匹配。两个文件分别原子替换,并非双文件事务。
timing 统计测试与清理,reportWriteNanos 单独报告已完成的报告写盘时间。metrics 是全局公共端计数,可能包括其他玩家;payload 字节不含 TCP/IP 开销,不是 TPS,也不会为测试区重置其他计数。