发布、导出与 Bundle
简短版
世界做好了,怎么让其他玩家看到?很简单:在编辑器顶栏点击「发布」按钮。
在点「发布」之前,确保编辑器概览部分的这些内容已就绪:
- 名称和描述 — 名称最多 200 字符,描述最多 10000 字符。好名字是你的门面;好描述是你的导游。
- 封面图 — 玩家在社区列表中看到的第一样东西。没有封面的世界就像没有海报的电影院——没人知道里面在放什么。
- 标签 — 最多 10 个。标签帮助玩家发现你的世界:「fantasy」「romance」「battle royale」「multiplayer」等。
准备好后,保存世界,点击编辑器顶栏的发布按钮(紧挨着保存)。在发布对话框中,设置内容分级(一般向 / 敏感内容)、可见性和编辑权限,勾选条款协议并发布。你的世界将出现在 Discover 中,供其他人搜索、浏览、直接游玩或 fork 修改。
详细版
发布状态
世界有三种状态,像交通灯一样控制可见性:
| 状态 | 含义 | 对他人可见? |
|---|---|---|
draft | 仍在制作中,只有你能看到 | 否 |
published | 上线,出现在 Discover 页面 | 是 |
unpublished | 曾发布,但你下架了 | 否 |
草稿可以发布;已发布的世界可以下架;下架的世界可以重新发布。 当你下架一个世界时,系统会自动通知所有将其添加到媒体库的玩家:「这个世界已被下架。」重新发布时,他们会收到另一条通知:「它回来了。」很贴心的功能╰(°▽°)╯
发布设置
以下设置在发布对话框(从编辑器发布按钮打开)中配置——不在概览表单里。
可见性(visibility)
public — 公开,所有人都能在 Discover 看到
followers — 仅关注者可见,适合有限测试或分享给你的圈子发布时未指定则默认为 public。
允许编辑(allowEdit)
默认为 true。开启时,其他创作者可以 fork 你的世界进行修改。关闭意味着只有你可以 fork 自己的世界。
类似开源和闭源:allowEdit 开启时,你的世界可以被其他玩家下载学习,可能催生有趣的变体;关闭则你的内容可以被游玩但不能被直接读取。你来决定。
标签(tags)
最多 10 个。对 Discover 页面的搜索和筛选非常有用——平台追踪所有已发布世界的标签使用频率,玩家可以按标签浏览和搜索。输入时自动补全会推荐热门标签。
封面图(thumbnailUrl)
在编辑器的概览部分上传。用于 Discover 卡片、搜索结果和我的媒体库。没有封面的世界几乎不会被点击。强烈建议添加,并且yumina还内置了裁剪功能。
Fork(派生)
当世界已发布且 allowEdit 为 true 时,其他用户可以「fork」它:
- 创建一份完整副本,归 fork 者所有
- 名称自动递增——原世界叫「Dark Forest」,你的副本叫「Dark Forest (1)」;再 fork 就是「Dark Forest (2)」
- 副本以草稿状态开始,不会自动发布
- 保留原世界的所有标签、描述、封面、schema 和内容
- 原世界的
downloadCount增加 1 - 副本的
sourceWorldId指回原世界以便追溯 - 引用的资产(如图片)也会一并复制
Bundle 系统
Bundle 是什么?打个比方:你花了两周打造了一个精良的战斗系统——变量、规则、UI 组件、音效,全套。朋友也在做世界,需要一个战斗系统。你不需要把整个世界给他——只要把战斗相关的部分打包发过去。
Bundle 是包含你世界部分内容的「组件包」。
Bundle 包含什么:
| 部分 | 包含的内容 | 必须? |
|---|---|---|
| 名称和描述 | Bundle 名称、描述、标签、创建日期 | 是 |
| 条目 | 角色档案、剧情、风格指令、设定 | 是(可以为空) |
| 变量 | HP、金币、好感度、标志、JSON 状态 | 是(可以为空) |
| 规则 | 触发条件和动作 | 是(可以为空) |
| 自定义 UI | TSX 组件 | 是(可以为空) |
| 音频曲目 | BGM、SFX、环境音 | 是(可以为空) |
| Root Component | 完整的多文件 TSX 应用(index.tsx 及其关联文件)。包含它会将 Bundle 升级为「完整模板」 | 可选 |
| 组织结构 | 自定义标签定义、条目文件夹结构 | 可选 |
可以把它想成一个「模组」——插到另一个世界里就能用。
创建 Bundle
在编辑器顶部菜单点击 Export Bundle。你就可以看到可以被勾选成bundle的部分了
一个贴心的功能:当你勾选一条规则时,系统会自动高亮它依赖的变量并标记为「推荐」,这样你不会意外遗漏。
两样东西自动包含(无复选框):
- 音频曲目(
audioTracks)——完整列表始终包含在 Bundle 中。 - Root Component(
rootComponent)——如果你的世界有的话,会自动附加。包含 Root Component 会将 Bundle 升级为「完整模板」——导入者不是合并到现有世界,而是可以 fork 为基于你模板的全新世界。
导入时的冲突处理
将 Bundle 导入现有世界时,内容是合并,而非覆盖。具体冲突解决方式:
- 相同变量 ID:跳过,使用已有变量
- 同名但不同 ID 的变量:创建带后缀的新变量(例如
HP (1)) - 条目:始终生成新 UUID,追加到现有条目列表
- 规则和组件:同上——创建新 ID 并追加
规则和组件中引用的变量 ID 会在导入后自动重映射以保持关系。这很重要——如果你导入一个战斗系统但规则中的「HP」变量没对上,这次导入就没用了。
发布 Bundle 到 Hub
保存的 Bundle 默认为私有。发布后,其他创作者可以在 Discover 页面搜索、预览和安装它。
你也可以将 Bundle 下载为 .bundle.json 文件发给朋友手动导入。
多语言支持:
| Variants | 整个世界的完整副本,全面翻译——条目、规则、组件文本,全部 | 你想让玩家用自己的语言游玩你的世界,AI 也用那种语言回复 |
Variants
Variants本身可以作为一个卡的不同版本(详细版,精简版),但如果你想出游戏的不同语言,也可以使用 Variant 系统╰(°▽°)╯——在编辑器顶部的 Variant 标签栏中创建新变体,选择目标语言。编辑器会创建你的世界在新语言下的完整副本,然后你进行翻译。
引擎将变体识别为「同一世界的不同语言版本」。在世界详情页,玩家一键切换。在社区列表中变体组算一个世界;浏览统计合并计算。
支持的语言
两种机制支持相同的 10 种语言:
| 代码 | 语言 |
|---|---|
en | English |
zh | 中文 |
ja | 日本語 |
ko | 한국어 |
es | Español |
fr | Français |
de | Deutsch |
pt | Português |
ru | Русский |
ar | العربية |
实战示例
示例 1:发布前检查清单
世界做好了准备上线。别急着点——先过一遍这个清单:
[ ] 名称 — 有吸引力吗?一眼就能看出是什么类型的世界吗?
[ ] 描述 — 写了吗?别留空。至少两句话告诉玩家他们会体验到什么。
[ ] 封面图 — 上传了吗?缩略到 Discover 卡片大小时还清晰吗?
[ ] 标签 — 加了 3-10 个相关标签吗?想想玩家会搜什么。
[ ] 内容分级 — 成人 / 敏感内容(18+)选**敏感内容**,否则选**一般向**。别搞错——标错是社区准则违规。
[ ] 可见性 — 想让所有人看到就 public。想先限范围测试就 followers-only。
[ ] allowEdit — 想让别人 fork 修改就开启。想保护原创就关闭。
[ ] 问候语 — 玩家看到的第一条消息是什么?设置好了吗?第一印象很重要。
[ ] 自测 — 自己从头到尾玩过了吗?变量正常吗?规则正确触发了吗?确认无误后,在编辑器顶栏点击保存,再点紧挨着的发布按钮,按发布对话框的引导完成流程。
你的世界上线了。去 Discover 看看效果吧。
示例 2:创建战斗系统 Bundle 分享给社区
假设你在 RPG 世界中构建了一个回合制战斗系统,包含:
- 变量:
HP(number,0-100,stat)、MP(number,0-50,resource)、ATK、DEF、battlePhase(string,flag) - 规则:
HP 归零时触发死亡结算、每回合开始时 MP 自然恢复 5 - 组件:一个 HP 状态栏,一个 MP 状态栏
- 音频:战斗 BGM(loop)、打击音效(sfx)
打包步骤:
- 在编辑器顶部菜单点击 Export Bundle
- 命名为「Turn-Based Combat System v1.0」,写清楚使用说明
- 勾选 5 个变量——勾选规则时系统会高亮相关变量
- 勾选 2 条规则和 2 个组件
- 勾选音频曲目
- 添加标签:
combat、rpg、turn-based - 导出保存
导出的 Bundle 文件包含所有选中内容——条目、变量、规则、UI 组件和音频曲目——打包为单个 JSON 文件。
别人拿到 Bundle 文件后,在编辑器顶部菜单点击 Import Bundle,选择安装到哪个世界,战斗系统就就绪了。变量名冲突自动处理。
延伸阅读
- 自定义 UI 指南 — 构建玩家游玩你的世界时看到的视觉体验
