Skip to content

公開・エクスポートとバンドル

短いバージョン

ワールドが完成したら、どうやって他のプレイヤーに届けるか? シンプル:エディタ上部のバーで「公開」を押す。

「公開」をクリックする前に、エディタの 概要(Overview) セクションで以下が準備できているか確認してください。

  • 名前と説明 — 名前は最大200文字、説明は最大10,000文字。良い名前はあなたの店舗、良い説明はあなたのガイドです。
  • カバー画像 — コミュニティリストでプレイヤーが最初に目にするもの。カバーのないワールドはポスターのない映画館 — 中で何が上映中か誰も分かりません。
  • タグ — 最大10個。タグはプレイヤーがワールドを発見する助けに:「fantasy」「romance」「battle royale」「multiplayer」など。

準備ができたらワールドを保存し、エディタ上部のバーで Publish ボタン(Save の隣)をクリックします。公開ダイアログで コンテンツレーティング(GeneralまたはSensitive Content)、可視性、編集権限を設定し、利用規約に同意して公開。あなたのワールドが Discover に登場し、他のユーザーが検索、閲覧、直接プレイ、フォーク改変できるようになります。

プラットフォームの公開システムを使いたくない? ワールドをJSONファイルとしてエクスポートし、友達に直接送れます。あるいはワールドの一部 — 戦闘システムのような — を Bundle としてエクスポートし、他のクリエイターと共有することも。


詳細バージョン

公開ステータス

ワールドには可視性を制御する信号機のような3状態があります。

ステータス意味他者に見える?
draft制作中、自分だけが見えるいいえ
published公開中、Discoverページに登場はい
unpublished公開していたが取り下げたいいえ

下書きは公開可能、公開は取り下げ可能、取り下げは再公開または下書きに戻せます。ステップを飛ばせません(例:下書きから直接「取り下げ」へは行けない)。

ワールドを取り下げると、システムは自動的にライブラリに追加した全プレイヤーに通知します:「このワールドは取り下げられました」。再公開時はまた通知:「戻ってきました」。なかなか気が利いています。

公開設定

以下の設定はエディタの Publish ボタンから開く 公開ダイアログ で設定されます — 概要フォーム自体ではありません。

コンテンツレーティング(ageRating

UIには2階層あります。

UIラベル格納値意味
Generalall明示的なアダルトコンテンツなし — 誰にも見える
Sensitive Contentr18アダルト/センシティブコンテンツ、18+

Sensitive Content を選ぶと isNsfw が自動的に true になります — 手動でセットする必要はありません。何も選ばない場合、公開はデフォルトで General + 非NSFW になります。システムが一貫性を扱うので、レーティングがミスマッチになることはありません。

レガシー注記: 古いワールドとデータベースは r18g(重度の制限)も認識します。公開UIではもう公開されていません — 新規ワールドは18+素材には Sensitive Content を選んでください。

可視性(visibility

public     — 公開、誰もがDiscoverで見える
followers  — フォロワー限定、限定テストやサークル共有に良い

公開時に指定がなければデフォルトで public

編集を許可(allowEdit

デフォルトは true。オンの時、他のクリエイターがあなたのワールドをフォークして編集できます。オフだとあなただけが自分のワールドをフォークできます。

オープンソース vs クローズドソースのような感じ:allowEdit オンだと、あなたのワールドが興味深いバリエーションを生むかも、オフだとコンテンツはプレイされても改変されません。あなた次第です。

マルチプレイヤーを許可(allowMultiplayer

デフォルトは false。このフラグはプラットフォームに、ワールドがマルチプレイヤー向けに設計されているかを伝えます。ワールド定義のスキーマで multiplayerSettings.availabilityenabled にセットすると、システムもこの値を自動推論します。具体的なマルチプレイヤー動作設定は下の「マルチプレイヤー設定」にあります。

タグ(tags

最大10タグ。Discoverページの検索・フィルタに非常に有用 — プラットフォームは公開ワールド全体のタグ使用頻度を追跡しており、プレイヤーはタグで閲覧・検索できます。オートコンプリートが入力中に人気タグを提案します。

カバー画像(thumbnailUrl

エディタの 概要 セクションでアップロード。Discoverカード、検索結果、マイライブラリ で使用されます。カバーのないワールドはほぼクリックされません。追加を強く推奨します。

フォーク

ワールドが公開され allowEdittrue のとき、他ユーザーは「フォーク」できます。

  1. フォーク者所有の完全コピーが作成される
  2. 名前は自動インクリメント — 元が「Dark Forest」なら、あなたのコピーは「Dark Forest (1)」、もう一度フォークすれば「Dark Forest (2)」
  3. コピーは下書きとして始まり自動公開はされない
  4. 元のすべてのタグ、説明、カバー、スキーマ、コンテンツを保持
  5. 元のワールドの downloadCount が1増加
  6. コピーの sourceWorldId は元へのトレーサビリティのため逆参照
  7. 参照されるアセット(画像など)もコピーされる

バンドルシステム

バンドルとは? こんな例えです:あなたは2週間かけて磨かれた戦闘システム — 変数、ルール、UIコンポーネント、効果音、フルパッケージ — を構築しました。友達もワールドを作っており戦闘システムを必要としています。彼らにワールド全体を渡す必要はなく、戦闘関連の部分だけを バンドル して送れます。

バンドルとはワールドの選択された部分を含む「コンポーネントパック」です。

バンドルに含まれるもの:

セクション含まれる内容必須?
名前と説明バンドル名、説明、タグ、作成日はい
エントリキャラクタープロフィール、プロット、スタイル指示、伝承はい(空でも可)
変数HP、ゴールド、好感度、フラグ、JSON状態はい(空でも可)
ルールトリガー条件とアクションはい(空でも可)
カスタムUITSXコンポーネントはい(空でも可)
オーディオトラックBGM、SFX、ambientトラックはい(空でも可)
ルートコンポーネントフルマルチファイルTSXアプリ(index.tsxと同階層ファイル)。これを含めるとバンドルが「フルテンプレート」にアップグレードされるオプション
整理情報カスタムタグ定義、エントリフォルダ構造オプション

バンドルの2つの使い方

  • 部分バンドル — エントリ/変数/ルール/audioTracksのみ、rootComponent なし。既存ワールドに マージ。戦闘システムやキャラクターカードの共有に最適。
  • フルテンプレート — 同じものに加えて rootComponent。新しいワールドへ フォーク。「VN骨格」「カードバトルシェル」などに最適 — インポートする人はあなたのテンプレート上に新しいワールドを開始。

7つの公式リソーステンプレートはまさにこの方式で動いています。

「モジュール」と考えてください — 別のワールドに差し込むと動きます。

バンドルの作成

エディタの上部メニューで Export Bundle をクリック。4つのチェック可能なセクションがあります。

  1. エントリ — エントリ(キャラクタープロフィール、プロット、スタイル指示など)
  2. 変数 — 変数(HP、ゴールド、好感度など)
  3. ルール — ルール(トリガー条件+アクション)
  4. カスタムUI — TSXコンポーネント配列

気の利いた機能:ルールをチェックすると、システムが依存変数を自動でハイライトし「推奨」として印を付けるので、うっかり外すことがありません。

2つは 自動で含まれます(チェックボックスなし)。

  • オーディオトラックaudioTracks) — 全リストが常にバンドルされる。
  • ルートコンポーネントrootComponent) — ワールドにあれば自動で添付。ルートコンポーネントを含めるとバンドルが「フルテンプレート」にアップグレードされ — 既存ワールドへのマージではなく、インポーターがあなたのテンプレート上の新しいワールドへフォークできるようになります。

インポート時の衝突処理

バンドルを既存ワールドにインポートする際、コンテンツは マージ され上書きされません。具体的な衝突解決:

  • 同じ変数ID:スキップ、既存変数を使用
  • 同じ変数名で異なるID:サフィックス付きで新規変数を作成(例 HP (1)
  • エントリ:常に新規UUIDを生成、既存エントリリストに追加
  • ルールとコンポーネント:同様 — 新規ID作成、追加

ルールとコンポーネントで参照される変数IDはインポート後の関係保持のため自動再マッピングされます。これは重要 — 戦闘システムをインポートしてルールの「HP」変数が一致しないと、インポートが無意味になります。

バンドルをハブに公開

保存されたバンドルはデフォルトでプライベートです。公開後、他のクリエイターはDiscoverページで検索・プレビュー・インストールできます。

バンドルを .bundle.json ファイルとしてダウンロードして友達に送り手動インポートしてもらうこともできます。

フルワールドエクスポート

バンドルの「部分エクスポート」を超えて、完全なワールドJSONもエクスポートできます。エディタの 概要 セクション、または マイライブラリ → マイプロジェクト から利用できます。エクスポートされたファイルには WorldDefinition のすべてが含まれます。

  • すべてのエントリ(entries)とエントリフォルダ構造(entryFolders
  • すべての変数(variables
  • すべてのルール(rules)とコンパイル済みリアクション(reactions
  • ルートコンポーネント(rootComponent) — ワールドUIエントリ全体、index.tsx と同階層ファイル含む
  • カスタムUI TSXコンポーネント(customUI
  • オーディオトラック(audioTracks)、BGMプレイリスト(bgmPlaylist)、条件付きBGM(conditionalBGM
  • 空間システム(systems)とシーン(scenes
  • エディタモード(editorMode: "simple" | "advanced"
  • UIブループリント(uiBlueprint
  • ワールド設定(settings) — 温度、トークン制限、レイアウトモード、スキャン深度など
  • マルチプレイヤー設定(multiplayerSettings

注意:共有バリアントグループ化キー(languageGroupId)はワールドレコード自体に格納され(ハブマッチング用)、WorldDefinition 内ではないので、エクスポートされたJSONには現れません。

フルエクスポートの用途:

  • バックアップ — 定期的にエクスポートしてローカルコピーに。データはクラウドで安全ですが、ローカルバックアップは安心感があります。
  • バージョン管理 — gitリポジトリにコミットして変更追跡。主要リビジョン前に手動セーブポイントとしてエクスポート。
  • コラボレーション — JSONを協力者に送ると、彼らが自分のアカウントでインポートして作業できます。
  • マイグレーション — 将来のTauriオフライン版は同じ形式を使うので、移行はシームレスです。

インポート時、システムは自動でYuminaワールドJSON、SillyTavernキャラクターカード(PNG埋め込みV2カード含む)、バンドルJSONを認識し、それぞれ別処理します。形式を選ぶ必要はなく、ドラッグ&ドロップするだけです。

多言語サポート:2つのシステム

Yuminaには 目的の完全に異なる2つの多言語メカニズム があります。用途に合うものを選んでください

メカニズム翻訳されるもの使うタイミング
Hub TranslationsDiscover/プロフィールに表示される「店舗情報」のみ — タイトル、説明、カバー画像、ギャラリー、タグゲーム内コンテンツは単一言語だが、グローバルプレイヤーに閲覧時のローカライズタイトル・説明を見せたい
バリアントワールド全体のコピーを完全に翻訳 — エントリ、ルール、コンポーネントテキスト、すべてプレイヤーに自分の言語でプレイさせ、AIもその言語で返事させたい

Hub Translations

エディタ左ナビの Hub Translations にあります。

セットアップ方法:

  1. Hub Translations セクションに行く
  2. Add Language をクリック
  3. ドロップダウンから対象言語を選択(10言語サポート)
  4. 現在のワールドの名前、説明、カバー、ギャラリー、タグが出発点としてコピーされる
  5. UI内で各フィールドを直接編集 — 対象言語へ翻訳
  6. 言語固有のカバー画像をアップロードしてもよい
  7. 保存 — 翻訳はワールドの一部として保存され、別ファイルは生成されない

プレイヤーがDiscoverページを閲覧すると、Yuminaは自動的に彼らのUI言語に最適な翻訳を選びます。プレイヤーがゲーム内で見るコンテンツはワールドの元言語のまま — Hub Translationsはゲームプレイテキストに影響しません。

バリアント

ゲーム内コンテンツも翻訳したいなら、バリアント システムが必要です — エディタ上部のバリアントタブバーで新規バリアントを作成し、対象言語を選択します。エディタは新言語でワールドのフルコピーを作成し、それを翻訳します。

エンジンはバリアントを「同じワールドの異なる言語版」として認識します。ワールド詳細ページでプレイヤーはワンクリックで切り替えられます。コミュニティリストではバリアントグループは単一ワールドとしてカウントされ、ビュー統計は統合されます。

サポート言語

両メカニズムは同じ10言語をサポートします。

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

どちらを?

  • 海外プレイヤー向けに 見栄えの良いカバーと説明 が欲しいだけ → Hub Translations
  • 完全にローカライズされたゲームプレイ が欲しい → バリアント
  • 2つは 組み合わせ可能:バリアントA(中国語版)に中国語+英語Hub Translations、バリアントB(英語版)に英語+日本語Hub Translations — 合計3つのオーディエンスをカバー

マルチプレイヤー設定(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:ターン制、一度に1人だけ話せる、ボードゲームのよう。TRPGテーブルトークセッションに最適。

defaultAiTriggerMode — AIはいつ応答するか? 異なるペーシングのための4モード。

  • instant:誰かが話すと即座にAIが応答。最速ペース、対話駆動ワールド向き。
  • timer:カウントダウンタイマーが切れたときAIが応答(defaultRoundTimerSeconds 使用)。他者が割り込む余地を残す。
  • round:全員がメッセージを送った後にAIが応答。TRPGでDMが全員のターン後に話すように — すべての行動が考慮される。
  • manual:ホストが手動でAIを起動。最も柔軟、ホストがペースを完全制御。

defaultRoundTimerSeconds — タイマー時間、5–120秒、デフォルト15。主に timer モードで有効。

authorNotes — ルームを作る人に見えるメモ。例「2–4人推奨」「ホストは開始前にルールを読んでください」「各プレイヤーは開始前にクラスを選択」。AIには送られない — 純粋に人間可読の指示ガイド。

これらはすべて デフォルト値 です — ルームホストが実際のセッション用に調整できます。あなたが設定するのは「推奨設定」です。


実例

例1:公開前チェックリスト

ワールドが完成し公開準備完了。クリックを急がず、まずこのチェックリストを通してください。

[ ] 名前 — 魅力的? 一目でどんなワールドか分かる?
[ ] 説明 — 書いた? 空のままにしない。プレイヤーが体験することを少なくとも2文で
[ ] カバー画像 — アップロード済み? Discoverでサムネイルサイズになってもくっきり見える?
[ ] タグ — 関連タグを3–10追加した? プレイヤーが検索しそうなものを考える
[ ] コンテンツレーティング — アダルト/センシティブ素材(18+)には **Sensitive Content**、それ以外は **General**。間違えないで — 誤ラベルはガイドライン違反
[ ] 可視性 — 誰もに見てほしいなら public。限定テストならフォロワー限定
[ ] allowEdit — 他者にフォーク改変させたいなら開く。元作品を守りたいなら閉じる
[ ] Greeting — プレイヤーが最初に見るメッセージは何? ちゃんと設定されている? 第一印象は重要
[ ] 自己テスト — 自分で最初から最後までプレイした? 変数は機能する? ルールは正しくトリガーされる?

確認したらエディタ上部の Save をクリックし、隣の Publish ボタンをクリック、公開ダイアログのフローを完了します。

ワールドが公開されました。Discoverでどう見えるか確認に行きましょう。

例2:戦闘システムバンドルを作成してコミュニティに共有

RPGワールド内にターン制戦闘システムを構築したとします。次を含みます。

  • 変数:HP(数値、0–100、ステータス)、MP(数値、0–50、リソース)、ATKDEFbattlePhase(文字列、フラグ)
  • ルール:HPが0になったら死亡決済をトリガーMPがターン開始時に5自然回復
  • コンポーネント:HP用ステータスバー1つ、MP用ステータスバー1つ
  • オーディオ:バトルBGM(ループ)、ヒット効果音(sfx)

パッケージング手順:

  1. エディタ上部メニューで Export Bundle をクリック
  2. 「Turn-Based Combat System v1.0」と命名、使用方法を明確に説明
  3. 5つの変数をチェック — ルールをチェックするとシステムが関連変数をハイライト
  4. 2つのルールと2つのコンポーネントをチェック
  5. オーディオトラックをチェック
  6. タグ追加:combatrpgturn-based
  7. エクスポートして保存

エクスポートされたバンドルファイルには選択した全コンテンツ — エントリ、変数、ルール、UIコンポーネント、オーディオトラック — が単一JSONファイルとしてパッケージされています。

誰かがバンドルファイルを得たら、エディタ上部メニューで Import Bundle をクリックし、どのワールドにインストールするか選べば、戦闘システムが使えるようになります。変数名の衝突は自動処理されます。

例3:マルチプレイヤー設定 — 4人協力RPG

4人ダンジョン冒険ワールドを作りました。各人がクラス(戦士、魔法使い、盗賊、ヒーラー)を演じ、交代で行動し、全員が行動した後にAIがDMとしてストーリーを進めます。

エディタで設定:

  • Availability:Enabled
  • Chat policy:Active speaker only
  • AI trigger mode:Round
  • Round timer:60秒
  • Author notes:「Recommended 4 players, each choosing a class: warrior, mage, rogue, or healer. Each round, every player describes their action, then the AI advances the story once all players have acted. 60-second timer — if someone is idle too long, the AI moves on anyway.」

なぜこれらの設定か?

  • active_speaker_only — ターン制発言で、4人が同時にタイプしてAIが誰に応答すべきか混乱するのを防ぐ。TRPGセッションなので一人ずつ。
  • round — AIが応答前に全員を待つので、すべてのプレイヤーの行動が考慮される。「DMがもう進んじゃった」で誰も飛ばされない。
  • 60秒タイマー — 戦略を考える時間は十分、引きずる程ではない。誰かが飲み物を取りに行ったらAIは60秒後に進んで他の人を縛りつけない。
  • authorNotes — ホスト向け「マニュアル」、セッションの運営方法と何をプレイヤーに伝えるかを知らせる。

ワールドレベルで allowMultiplayertrue にするのも忘れずに — そうしないと、multiplayerSettingsが完璧でもプラットフォームはマルチプレイヤーワールドとして表示しません。


関連項目