PlayDrop logoPlayDrop Studio
作成プレイ交換稼ぐ学ぶコネクタアセットコミュニティサポート
PlayDrop logoPlayDrop Studio
作成プレイ交換稼ぐ学ぶコネクタアセットコミュニティサポート
ログイン
パッケージ化と .play
ドキュメント

はじめに

概要初めてのゲームPlayDrop のゲームよくある質問

Cloud で作る

Cloudで作成プランと生成回数

AI アプリを接続

すべてのコネクタClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

公開と共有

AI アプリから公開するシンプルな HTML ゲームパッケージ化と .play公開とインポートゲームファイル公開範囲と集客掲載用アートと動画ジャンルとタグローカライズインスタントゲーム

ゲーム体験

読み込み、一時停止、オーディオ全画面とセーフエリアクラウドセーブローカルパーティーとコントローラー

一緒に遊ぶ

共有、フレンド、招待ランキング実績オンラインパーティーと音声リアルタイムゲームサーバー

収益を得る

収益化クレジットと報酬

アセット

ゲームアセットAI アセット生成独自形式とプレイヤーの作品

リファレンス

クライアント SDKサーバー SDKcatalogue.jsonエラーと復旧トラブルシューティング
ドキュメントパッケージ化と .play
公開と共有

catalogue.json と .play で PlayDrop ゲームをパッケージ化する

ルートに catalogue.json を置いたビルド済みのフォルダー、ZIP、.play を用意し、掲載メディアとサーバーを宣言して、prepare_catalogue_upload でアップロードします。

パッケージとは、ゲームのビルド結果と、それを記述する catalogue.json をまとめたものです。複数のファイル、SDK、掲載用の画像と動画、ランキング、実績、アセット、ホスト型サーバーなど、PlayDrop のすべての機能を使うための方法です。AI アプリから、フォルダー、ZIP、.play ファイルとしてアップロードします。

フォルダーを構成する

ビルド済みのゲームと同じ場所、つまりルートに catalogue.json を置きます。カタログ内のパスは、このファイルからの相対パスです。

text
catalogue.json
index.html
assets/sprites.png
assets/music.mp3
listing/icon.png
listing/hero-landscape.png
listing/hero-portrait.png
listing/screenshots/landscape-1.png
listing/videos/portrait-1.mp4
achievements/first-win.png
server/index.mjs

.play ファイルは、このフォルダーを ZIP にして拡張子を .play に変えたものです。catalogue.json は、外側のフォルダーの中ではなく、アーカイブのルートに置きます。中身はビルド済みのファイルだけにしてください。node_modules、公開したくないソースマップ、.env ファイルは含めません。ソースプロジェクトはユーザーの手元に残してください。PlayDrop はそれを返すことができません。

catalogue.json を書く

json
{
  "apps": [{
    "name": "moon-jump",
    "displayName": "Moon Jump",
    "subtitle": "Lunar platform hopping against the clock",
    "description": "Jump between lunar platforms, collect oxygen and reach the flag.",
    "controls": "Tap or press Space to jump. Swipe or use arrows to steer.",
    "file": "index.html",
    "version": "1.0.0",
    "visibility": "PRIVATE",
    "authMode": "OPTIONAL",
    "tags": ["game-genre/casual", "game-genre/platformer"],
    "types": ["solo"],
    "controller": { "support": "optional", "type": "simpler" },
    "surfaceTargets": { "desktop": true, "mobileLandscape": true, "mobilePortrait": true },
    "primarySurface": "MOBILE_PORTRAIT",
    "sourceLocale": "en",
    "listing": {
      "icon": "listing/icon.png",
      "heroLandscape": "listing/hero-landscape.png",
      "heroPortrait": "listing/hero-portrait.png",
      "screenshotsLandscape": ["listing/screenshots/landscape-1.png"],
      "videosPortrait": ["listing/videos/portrait-1.mp4"]
    },
    "leaderboards": [{ "key": "best-time", "displayName": "Best time", "description": "Fastest run to the flag",
      "scoreType": "TIME_MS", "sort": "ASC" }],
    "achievements": [{ "key": "first-win", "displayName": "First flag", "description": "Reach the flag once",
      "kind": "STANDARD", "icon": "achievements/first-win.png" }],
    "server": { "entry": "server/index.mjs", "rooms": ["game"] }
  }]
}
  • file は、ゲームを開始するページの正確なパスです。省略すると、エントリーは index.html ではなく <name>.html になります。
  • version は、同じゲームをアップロードするたびに新しくするセマンティックバージョンです。
  • surfaceTargets にはテスト済みの表示環境を列挙し、primarySurface にはゲームが想定している表示環境を指定します。
  • 掲載メディア、実績のアイコン、サーバーのエントリーは、カタログから参照されることで使われます。listing/ 内のファイルでも、どのフィールドからも参照されていないものは掲載メディアになりません。また、どのアプリからも参照されていないファイルがあると、何も公開される前に拒否されます。
  • server.entry は、ビルド済みの ES モジュールのバンドル1つを指します。リアルタイムゲームサーバーをご覧ください。

すべてのフィールドとその制限は、catalogue.json リファレンスにあります。設定が必要なカタログのバージョンフィールドはありません。

フォルダーをアップロードする

新しい requestId、expectedCurrentVersion(新しいゲームなら null)、完全なカタログのオブジェクト、ファイルごとに1つの記述子を指定して、prepare_catalogue_upload を送信します。小さなテキストファイルはインラインの text にできます。それ以外のファイルはすべて署名付きアップロードです。サイズ、SHA-256(64文字の小文字の16進数)、base64 の MD5 を、ローカルで実際のバイトから正確に計算してください。次のリクエストは、2ファイルのゲームの完全な例です。アイコンの2つのダイジェストのプレースホルダーを、アイコンの実際の値に置き換えてください。

json
{
  "requestId": "moon-jump-1.0.0",
  "expectedCurrentVersion": { "moon-jump": null },
  "catalogue": {
    "apps": [{
      "name": "moon-jump",
      "displayName": "Moon Jump",
      "file": "index.html",
      "version": "1.0.0",
      "visibility": "PRIVATE",
      "authMode": "OPTIONAL",
      "tags": ["game-genre/casual"],
      "types": ["solo"],
      "controller": { "support": "off" },
      "surfaceTargets": { "desktop": true, "mobileLandscape": false, "mobilePortrait": true },
      "listing": { "icon": "listing/icon.png" }
    }]
  },
  "files": [
    { "path": "index.html",
      "text": "<!doctype html><html><head><meta charset=\"utf-8\"><title>Moon Jump</title></head><body><canvas id=\"game\"></canvas><script>/* built game */</script></body></html>" },
    { "path": "listing/icon.png", "contentType": "image/png", "sizeBytes": 50211,
      "sha256": "REPLACE_WITH_ICON_SHA256_HEX", "md5Base64": "REPLACE_WITH_ICON_MD5_BASE64" }
  ]
}

レスポンスには、listing/icon.png 用のアップロード URL とヘッダーが含まれます。返されたすべてのヘッダーを付けて、アイコンの実際のバイトをそこに PUT し、同じ requestId で complete_catalogue_upload を呼び出します。アップロード結果の url を開くと、非公開バージョンが表示されます。

ZIP または .play をアップロードする

  • ファイルシステムを使えるエージェントは、アーカイブをローカルで展開し、上と同じようにフォルダーとしてアップロードします。
  • ChatGPT は、会話から解決したアーカイブを、本物の download_url と file_id 付きで archive として渡し、catalogue と files は指定しません。アーカイブは圧縮後で最大 20 MiB まで使えます。

アーカイブは普通の ZIP ファイルである必要があります。暗号化、複数ボリューム、ZIP64、シンボリックリンク、パスの重複、絶対パス、.. は使えません。空のファイルや、入れ子になった catalogue.json ファイルは拒否されます。

制限

ファイルまたはアーカイブのエントリーは512個まで(catalogue.json とディレクトリを含む)、1ファイルあたり 50 MiB、展開後 200 MiB、カタログの JSON は 1 MiB までです。ホスト型サーバーのバンドルは最大 2 MiB です。

パッケージを更新する

list_games を読み取り、各アプリの name を維持して version を上げ、expectedCurrentVersion に現在の公開バージョンを設定します。完全なスナップショット、つまり新しいバージョンに含めるべきすべてのファイルとフィールドを送信してください。保持されているバージョンの変更していないファイルは、バイトの代わりに reuse: { gameId, version, path } で送れます。ランキングと実績のキーは削除できず、種類も変更できません。終了するには "status": "RETIRED" を指定します。

コネクタでまだアップロードできないアセット

PlayDrop は、実行可能な 3D モデル(procedural サブカテゴリーまたは CUSTOM 形式の MODEL_3D アセット)を独自のツールで動かしますが、API がそのコードを検証できないため、コネクタでは拒否されます。対応している形式にベイクするか、PlayDrop ですでに公開されているアセットを参照してください。ベイク済みのプロシージャル画像やスプライトシートは受け付けます。ゲームアセットをご覧ください。

関連ガイド

  • catalogue.jsonPlayDrop ゲームが使う catalogue.json のフィールド:識別情報、掲載情報、遊び方、表示環境、サインイン、インスタント、事前読み込み、メディア、翻訳、スコア、サーバー。
  • AI アプリから公開するAI エージェントが MCP で PlayDrop に公開する方法:シンプルな方法とパッケージの方法、非公開テスト、publish_game_version、更新、制限、復旧。
  • 掲載用アートと動画PlayDrop ゲームに設定できる掲載用の画像と動画、そのパス、形式、向きと、フィードや検索、リンクのプレビューで映えるアートの作り方を説明します。
  • リアルタイムゲームサーバーMongoDB データベース付きのホスト型 Colyseus 0.17 サーバーでゲームを動かし、ブラウザから SDK で接続し、2人のプレイヤーでテストする方法と制限を説明します。
前へAI アプリからシンプルな HTML ゲームを公開する次へゲームを公開する・ファイルをアップロードする・URL を登録する
Markdownを表示
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

このページの内容

フォルダーを構成するcatalogue.json を書くフォルダーをアップロードするZIP または .play をアップロードする制限パッケージを更新するコネクタでまだアップロードできないアセット
Markdownを表示