blockscope-worker crate 把 CPU 渲染器暴露为无状态 HTTP 端点。它接受请求体中的
.litematic 文件,并在单次请求中返回 PNG。
资源包可以作为 Workers 静态资源,通过 ASSETS 绑定加载。ZIP 包在内存中读取,
因此 Worker 不需要文件系统。没有资源包时,Worker 回退到内置色块 catalog。
静态资源随每个 Worker 版本一起打包。要更换资源包必须重新构建并部署;运行时选择
资源包需要 R2 或其他对象存储,本适配器暂不支持。
部署
前置条件:Rust、wasm32-unknown-unknown target,以及已登录的 cf CLI。
cargo xtask worker 会在首次使用时安装 worker-build 0.8.7。
cargo xtask worker 把 Cloudflare Build Output 写入 .cloudflare/output/v0,
在 Windows、Linux 和 macOS 上行为一致。如果账号下有多个 account,部署前设置
CLOUDFLARE_ACCOUNT_ID。just worker 和 just worker-deploy 运行相同命令。
打包资源包
把资源包放在仓库根目录的pack.zip,或显式指定路径:
assets/ 目录,启用 ASSETS 绑定,并在内部通过
/pack.zip 暴露。仓库默认 RESOURCE_PACK_PATH=/pack.zip;不移动文件也可以覆盖
URL:
pack.zip 已被 git 忽略。不要提交 Minecraft 资产。文件缺失时构建会生成仅色块的
Worker 并输出警告。
限制:Free 方案静态资源单文件 25 MiB、最多 20,000 个文件(Paid 方案 100,000 个)。
本适配器把资源包限制为 24 MiB,让运行时检查在 isolate 耗尽内存前失败。完整客户端
jar 通常过大,请使用资源包 ZIP。
cf deploy 会输出 Worker URL:
配置端点
编辑crates/worker/worker.config.json:
ENDPOINT 必须以 / 开头。ALLOWED_ORIGIN 控制渲染和健康检查路由的 CORS
响应头。把 RESOURCE_PACK_PATH 设为空字符串会关闭纹理加载并强制仅色块输出。
runWorkerFirst 让资源包不出现在公开静态资源路由上;Worker 通过 ASSETS 读取。
CPU 限制
Workers Free 方案限制 10 ms CPU 时间且不允许自定义上限。小预览可以完成,更大的 结构需要付费方案。付费方案可以在构建时设置 CPU 上限:API
向<endpoint> 发送 POST,请求体为原始 .litematic 字节。默认端点为 /render。
image/png。错误响应为 JSON:
GET /health 返回引擎状态,包括 textures: true|false。OPTIONS 处理 CORS
预检。配置资源包后,方块模型和纹理从包中解析;缺失纹理保留回退颜色。
限制:输入 8 MiB、解压后 NBT 32 MiB、64,000,000 个方块、200,000 个网格 quad、
资源包 24 MiB、输出 1,048,576 像素。请求体按上限流式读取,因此分块传输或低报
Content-Length 的请求会在 8 MiB 后拒绝,而不是完整缓冲。解码资源包和纹理会消耗
CPU 和内存;解析后的材质集缓存在 isolate 中,RESOURCE_PACK_PATH 变化时会替换
缓存条目。
构建前端
将 UI 单独托管(Cloudflare Pages、静态存储桶或其他 Worker)并调用渲染端点。 CORS 已启用,不需要代理。multipart/form-data),并以 blob 读取响应。对于大结构,请暴露 width/height
控件,让调用方控制 CPU 和像素预算。