Skip to content

发布、导出与 Bundle

简短版

世界做好了,怎么让其他玩家看到?很简单:进入 Discover 页面点击发布。

在点「发布」之前,确保编辑器概览部分的这些内容已就绪:

  • 名称和描述 — 名称最多 200 字符,描述最多 10000 字符。好名字是你的门面;好描述是你的导游。
  • 封面图 — 玩家在社区列表中看到的第一样东西。没有封面的世界就像没有海报的电影院——没人知道里面在放什么。
  • 标签 — 最多 10 个。标签帮助玩家发现你的世界:「fantasy」「romance」「battle royale」「multiplayer」等。
  • 年龄分级 — 全年龄(all)、R18 或 R18G。选择 R18 或 R18G 会自动添加 NSFW 标记。
  • 可见性 — 公开(所有人可见)或仅关注者可见。

准备好后,保存世界,进入 Discover 页面,点击顶部的发布按钮。在发布对话框中,选择你的世界,设置年龄分级和可见性,勾选条款协议并发布。你的世界将出现在 Discover 中,供其他人搜索、浏览、直接游玩或 fork 修改。

不想用平台的发布系统?把世界导出为 JSON 文件直接发给朋友。或者只导出世界的一部分内容——比如一个战斗系统——作为 Bundle 分享给其他创作者。


详细版

发布状态

世界有三种状态,像交通灯一样控制可见性:

状态含义对他人可见?
draft仍在制作中,只有你能看到
published上线,出现在 Discover 页面
unpublished曾发布,但你下架了

草稿可以发布;已发布的世界可以下架;下架的世界可以重新发布或回到草稿。不能跳过步骤(例如草稿不能直接变成「已下架」)。

当你下架一个世界时,系统会自动通知所有将其添加到媒体库的玩家:「这个世界已被下架。」重新发布时,他们会收到另一条通知:「它回来了。」很贴心的功能。

发布设置

以下设置在 Discover 页面的发布对话框中配置——不在编辑器中。

年龄分级(ageRating

三个级别:

分级含义
all全年龄,任何人可见
r18限制级,未成年人不宜
r18g重度限制(图形/极端内容)

设置 r18r18g 会自动使 isNsfw 为 true——不需要手动设置。反过来,如果你只设了 isNsfw: true 没指定分级,系统默认为 r18。如果什么都不设,发布默认为 all + 非 NSFW。系统处理一致性,你不会出现不匹配的分级。

可见性(visibility

public     — 公开,所有人都能在 Discover 看到
followers  — 仅关注者可见,适合有限测试或分享给你的圈子

发布时未指定则默认为 public

允许编辑(allowEdit

默认为 true。开启时,其他创作者可以 fork 你的世界进行修改。关闭意味着只有你可以 fork 自己的世界。

类似开源和闭源:allowEdit 开启时,你的世界可能催生有趣的变体;关闭则你的内容可以被游玩但不能被修改。你来决定。

允许多人游戏(allowMultiplayer

默认为 false。此标记告诉平台该世界是否为多人游戏设计。如果你在世界定义 schema 中设置了 multiplayerSettings.availabilityenabled,系统也会自动推断此值。具体多人行为配置见下方「多人游戏设置」。

标签(tags

最多 10 个。对 Discover 页面的搜索和筛选非常有用——平台追踪所有已发布世界的标签使用频率,玩家可以按标签浏览和搜索。输入时自动补全会推荐热门标签。

封面图(thumbnailUrl

在编辑器的概览部分上传。用于 Discover 卡片、搜索结果和我的媒体库。没有封面的世界几乎不会被点击。强烈建议添加。

Fork(派生)

当世界已发布且 allowEdittrue 时,其他用户可以「fork」它:

  1. 创建一份完整副本,归 fork 者所有
  2. 名称自动递增——原世界叫「Dark Forest」,你的副本叫「Dark Forest (1)」;再 fork 就是「Dark Forest (2)」
  3. 副本以草稿状态开始,不会自动发布
  4. 保留原世界的所有标签、描述、封面、schema 和内容
  5. 原世界的 downloadCount 增加 1
  6. 副本的 sourceWorldId 指回原世界以便追溯
  7. 引用的资产(如图片)也会一并复制

Bundle 系统

Bundle 是什么?打个比方:你花了两周打造了一个精良的战斗系统——变量、规则、UI 组件、音效,全套。朋友也在做世界,需要一个战斗系统。你不需要把整个世界给他——只要把战斗相关的部分打包发过去。

Bundle 是包含你世界部分内容的「组件包」。

Bundle 包含什么:

部分包含的内容必须?
名称和描述Bundle 名称、描述、标签、创建日期
条目角色档案、剧情、风格指令、设定是(可以为空)
变量HP、金币、好感度、标志、JSON 状态是(可以为空)
规则触发条件和动作是(可以为空)
自定义 UITSX 组件是(可以为空)
音频曲目BGM、SFX、环境音是(可以为空)
Root Component完整的多文件 TSX 应用(index.tsx 及其关联文件)。包含它会将 Bundle 升级为「完整模板」可选
组织结构自定义标签定义、条目文件夹结构可选

Bundle 的两种用法

  • 部分 Bundle — 只有 entries / variables / rules / audioTracks,没有 rootComponent合并到现有世界中。适合分享一套战斗系统或一张角色卡。
  • 完整模板 — 同上再加 rootComponentFork 为全新世界。适合做「视觉小说骨架」「卡牌对战框架」等——任何人导入它都从你的模板开始一个新世界。

七套官方资源模板就是这样运作的。

可以把它想成一个「模块」——插到另一个世界里就能用。

创建 Bundle

在编辑器顶部菜单点击 Export Bundle。你会看到四个可勾选的部分:

  1. 条目 — 条目(角色档案、剧情、风格指令等)
  2. 变量 — 变量(HP、金币、好感度等)
  3. 规则 — 规则(触发条件 + 动作)
  4. 自定义 UI — TSX 组件数组

一个贴心的功能:当你勾选一条规则时,系统会自动高亮它依赖的变量并标记为「推荐」,这样你不会意外遗漏。

两样东西自动包含(无复选框):

  • 音频曲目audioTracks)——完整列表始终包含在 Bundle 中。
  • Root ComponentrootComponent)——如果你的世界有的话,会自动附加。包含 Root Component 会将 Bundle 升级为「完整模板」——导入者不是合并到现有世界,而是可以 fork 为基于你模板的全新世界。

导入时的冲突处理

将 Bundle 导入现有世界时,内容是合并,而非覆盖。具体冲突解决方式:

  • 相同变量 ID:跳过,使用已有变量
  • 同名但不同 ID 的变量:创建带后缀的新变量(例如 HP (1)
  • 条目:始终生成新 UUID,追加到现有条目列表
  • 规则和组件:同上——创建新 ID 并追加

规则和组件中引用的变量 ID 会在导入后自动重映射以保持关系。这很重要——如果你导入一个战斗系统但规则中的「HP」变量没对上,这次导入就没用了。

发布 Bundle 到 Hub

保存的 Bundle 默认为私有。发布后,其他创作者可以在 Discover 页面搜索、预览和安装它。

你也可以将 Bundle 下载为 .bundle.json 文件发给朋友手动导入。

完整世界导出

除了 Bundle 的「部分导出」,你还可以导出完整的世界 JSON。在编辑器的概览部分或我的媒体库 → 我的项目中可用。导出文件包含 WorldDefinition 中的一切:

  • 所有条目(entries)和条目文件夹结构(entryFolders
  • 所有变量(variables
  • 所有规则(rules)和编译后的反应(reactions
  • Root Component(rootComponent)——完整的世界 UI 入口,包括 index.tsx 及其所有关联文件
  • 自定义 UI TSX 组件(customUI
  • 音频曲目(audioTracks)、BGM 播放列表(bgmPlaylist)、条件 BGM(conditionalBGM
  • 空间系统(systems)和场景(scenes
  • 编辑器模式(editorMode: "simple" | "advanced"
  • UI 蓝图(uiBlueprint
  • 世界设置(settings)——温度、token 限制、布局模式、扫描深度等
  • 多人游戏设置(multiplayerSettings

注意:语言变体分组键(languageGroupId)存储在世界记录本身(用于 Hub 匹配),不在 WorldDefinition 内部,所以不会出现在导出的 JSON 中。

完整导出的用途:

  • 备份 — 定期导出为本地副本。你的数据在云端是安全的,但本地备份让人更安心。
  • 版本控制 — 提交到 git 仓库追踪变更。在重大修改前导出作为手动存档点。
  • 协作 — 将 JSON 发给协作者,他们可以在自己的账号导入并工作。
  • 迁移 — 未来的 Tauri 离线版本使用相同格式,切换将是无缝的。

导入时,系统自动识别 Yumina 世界 JSON、SillyTavern 角色卡(包括 PNG 内嵌的 V2 卡片)和 Bundle JSON——各自处理方式不同。你不需要选择格式;直接拖放即可。

多语言支持:两套系统

Yumina 有两种多语言机制,目标完全不同——选择适合你的那个

机制翻译什么何时使用
Hub Translations只翻译 Discover / 你的主页上显示的「橱窗信息」——标题、描述、封面图、图库、标签你的游戏内容是单语言的,但你想让全球玩家在浏览时看到本地化的标题和描述
Variants整个世界的完整副本,全面翻译——条目、规则、组件文本,全部你想让玩家用自己的语言游玩你的世界,AI 也用那种语言回复

Hub Translations

在编辑器左侧导航栏的 Hub Translations 中找到。

设置步骤:

  1. 进入 Hub Translations 部分
  2. 点击添加语言
  3. 从下拉菜单选择目标语言(支持 10 种语言)
  4. 当前世界的名称、描述、封面、图库和标签会作为起点复制过来
  5. 在 UI 中直接编辑每个字段——翻译成目标语言
  6. 如果需要可以上传特定语言的封面图
  7. 保存——翻译作为世界的一部分存储,不会生成单独的文件

玩家浏览 Discover 页面时,Yumina 自动选择最匹配其 UI 语言的翻译。玩家在游戏中看到的内容保持世界的原始语言——Hub Translations 不影响游戏文本。

Variants

如果你想翻译游戏内容本身,需要 Variant 系统——在编辑器顶部的 Variant 标签栏中创建新变体,选择目标语言。完整流程参见初学者指南 → 多语言版本(Variants)

引擎将变体识别为「同一世界的不同语言版本」。在世界详情页,玩家一键切换。在社区列表中变体组算一个世界;浏览统计合并计算。

支持的语言

两种机制支持相同的 10 种语言:

代码语言
enEnglish
zh中文
ja日本語
ko한국어
esEspañol
frFrançais
deDeutsch
ptPortuguês
ruРусский
arالعربية

选哪个?

  • 只想为海外玩家提供不错的封面和描述 → Hub Translations
  • 想要完全本地化的游戏体验 → Variants
  • 两者可以结合使用:变体 A(中文版)配中文 + 英文 Hub Translations,变体 B(英文版)配英文 + 日文 Hub Translations——总共覆盖三组受众

多人游戏设置(MultiplayerSettings)

如果你的世界支持多人游戏,在编辑器中配置以下设置。这些是可选的——不设置的话多人游戏默认禁用。

设置选项默认值用途
AvailabilityDisabled / EnabledDisabled多人游戏主开关
Chat policyFree / Active speaker onlyFree谁可以发消息以及何时
AI trigger modeInstant / Timer / Round / ManualManualAI 何时回复
Round timer5-120 秒15倒计时时长(timer 模式)
Author notes自由文本房主可见的说明

逐项解释:

availability — 主开关。disabled = 仅单人。enabled = 可以创建多人房间。也记得在世界数据库层设置 allowMultiplayertrue——编辑器中有一个单独的开关。

defaultChatPolicy — 聊天策略。

  • free:自由模式,所有人随时可以发消息,像群聊。适合休闲、社交世界。
  • active_speaker_only:回合制,一次只有一人可以说话,像桌游。适合 TRPG 桌面会话。

defaultAiTriggerMode — AI 何时回复?四种模式对应不同节奏:

  • instant:有人说话 AI 立即回复。最快节奏,适合对话驱动的世界。
  • timer:倒计时结束后 AI 回复(使用 defaultRoundTimerSeconds)。给其他人留出插话的时间窗口。
  • round:所有人都发过消息后 AI 才回复。像 TRPG 中 DM 等所有人行动完才说话——每个人的行动都被考虑到。
  • manual:房主手动触发 AI。最灵活,房主完全控制节奏。

defaultRoundTimerSeconds — 计时器时长,5-120 秒,默认 15。主要在 timer 模式下生效。

authorNotes — 创建房间的人可见的笔记。例如「推荐 2-4 人」「房主请在开始前阅读规则」「每位玩家在开始前选择一个职业」。这些不会发送给 AI——纯粹是给人看的说明。

这些都是默认值——房主可以在实际会话中调整。你设置的是「推荐配置」。


实战示例

示例 1:发布前检查清单

世界做好了准备上线。别急着点——先过一遍这个清单:

[ ] 名称 — 有吸引力吗?一眼就能看出是什么类型的世界吗?
[ ] 描述 — 写了吗?别留空。至少两句话告诉玩家他们会体验到什么。
[ ] 封面图 — 上传了吗?缩略到 Discover 卡片大小时还清晰吗?
[ ] 标签 — 加了 3-10 个相关标签吗?想想玩家会搜什么。
[ ] 年龄分级 — R18 内容选 r18,极端内容选 r18g,否则选 all。别搞错。
[ ] 可见性 — 想让所有人看到就 public。想先限范围测试就 followers-only。
[ ] allowEdit — 想让别人 fork 修改就开启。想保护原创就关闭。
[ ] 问候语 — 玩家看到的第一条消息是什么?设置好了吗?第一印象很重要。
[ ] 自测 — 自己从头到尾玩过了吗?变量正常吗?规则正确触发了吗?

确认无误后,在编辑器中点击保存,进入 Discover 页面,点击发布按钮,在对话框中选择你的世界,完成发布流程。

你的世界上线了。去 Discover 看看效果吧。

示例 2:创建战斗系统 Bundle 分享给社区

假设你在 RPG 世界中构建了一个回合制战斗系统,包含:

  • 变量:HP(number,0-100,stat)、MP(number,0-50,resource)、ATKDEFbattlePhase(string,flag)
  • 规则:HP 归零时触发死亡结算每回合开始时 MP 自然恢复 5
  • 组件:一个 HP 状态栏,一个 MP 状态栏
  • 音频:战斗 BGM(loop)、打击音效(sfx)

打包步骤:

  1. 在编辑器顶部菜单点击 Export Bundle
  2. 命名为「Turn-Based Combat System v1.0」,写清楚使用说明
  3. 勾选 5 个变量——勾选规则时系统会高亮相关变量
  4. 勾选 2 条规则和 2 个组件
  5. 勾选音频曲目
  6. 添加标签:combatrpgturn-based
  7. 导出保存

导出的 Bundle 文件包含所有选中内容——条目、变量、规则、UI 组件和音频曲目——打包为单个 JSON 文件。

别人拿到 Bundle 文件后,在编辑器顶部菜单点击 Import Bundle,选择安装到哪个世界,战斗系统就就绪了。变量名冲突自动处理。

示例 3:多人游戏设置——4 人合作 RPG

你构建了一个 4 人地牢冒险世界。每人扮演一个职业(战士、法师、盗贼、治疗者),轮流行动,所有人行动完后 AI 作为 DM 推进故事。

在编辑器中设置:

  • Availability:Enabled
  • Chat policy:Active speaker only
  • AI trigger mode:Round
  • Round timer:60 秒
  • Author notes:「推荐 4 人,每人选择一个职业:战士、法师、盗贼或治疗者。每轮,每位玩家描述自己的行动,所有人行动完后 AI 推进故事。60 秒计时器——如果有人闲置太久,AI 照样继续。」

为什么选这些设置?

  • active_speaker_only — 回合制发言防止四个人同时打字让 AI 不知道该回复谁。这是 TRPG 会话,所以应该轮流来。
  • round — AI 等所有人发言后再回复,确保每位玩家的行动都被考虑到。不会因为「DM 已经往下走了」就有人被跳过。
  • 60 秒计时器 — 足够思考策略,又不会太长拖节奏。如果有人去拿饮料了,AI 在 60 秒后仍会继续,不会把其他人锁在原地。
  • authorNotes — 给房主的「说明书」,让他们知道如何运行会话以及该告诉玩家什么。

另外别忘了在世界层面设 allowMultiplayertrue——否则即使 multiplayerSettings 配置完美,平台也不会将其显示为多人世界。


延伸阅读