PlayDrop
PlayDropを読み込めませんでした

ページに必要なファイルをダウンロードできませんでした。もう一度読み込んでください。

STYLESHEET_ERROR
PlayDrop logoPlayDrop Studio
作成PlayTrade稼ぐ学ぶコネクタコミュニティサポート
サーバーSDK
ドキュメント

はじめに

概要初めてのゲーム

Cloudで作成

Cloudで作成公開とインポートプランと生成回数クレジットと報酬

エージェントを接続

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

技術リファレンス

ゲームファイルcatalogue.jsonクライアントSDKサーバーSDKトラブルシューティングよくある質問
ドキュメントサーバーSDK
技術リファレンス

PlayDrop ゲームサーバー:Colyseus、MongoDB、サーバー SDK

PlayDrop ゲーム向けの任意のホスト型マルチプレイヤー:MongoDB ストレージ付きの Colyseus server.js をアップロードしてテストプレイヤーで試し、フレンドや AI には任意のサーバー SDK を使用できます。

ゲームサーバーは任意です。ゲームからは、自前で運用する任意のサーバーを呼び出せます。必要であれば、PlayDrop がゲーム用に MongoDB データベース付きの標準的な Colyseus サーバーをホストします。PlayDrop Connector で index.html と同じ場所に server.js としてアップロードするか、PlayDrop Cloud に作成を依頼してください。@playdrop/server パッケージも任意です。

標準的な Colyseus サーバーを書く

js
import { Room, defineRoom } from "colyseus";
import { MongoClient } from "mongodb";

class GameRoom extends Room {
  async onCreate() {
    this.mongo = new MongoClient(process.env.PLAYDROP_MONGO_URL);
    await this.mongo.connect();
  }
  onJoin(client) {
    // client.auth is the verified PlayDrop player, for example client.auth.userId.
  }
  async onDispose() { await this.mongo?.close(); }
}

export const rooms = { game: defineRoom(GameRoom) };

server.js から rooms マップをエクスポートし、そのルーム名を catalogue.json に "server": { "rooms": ["game"] } のように記載します。サーバーは PlayDrop が起動するため、自分で起動しないでください。データは、ルームのライフサイクル内で、PLAYDROP_MONGO_URL を通じて標準の MongoDB ドライバーで保存します。

ホスト型サーバーのルール

  • Colyseus 0.17(colyseus 0.17.10、@colyseus/schema 4.0.30)、MongoDB ドライバー 7.5、Node 22。
  • 最大 2 MiB の自己完結型 ES モジュール 1 つ。インポートできるのは colyseus、@colyseus/core、@colyseus/schema、mongodb、@playdrop/server のみです。その他のコードはファイルにバンドルしてください。
  • ルームタイプは最大 2 種類、1 ルームあたり 8 人、1 ルームあたり 4 時間、プレイヤー 1 人あたり毎秒 30 メッセージ、1 メッセージあたり 512 KiB まで。
  • サーバーからインターネットにはアクセスできません。到達できるのは MongoDB と PlayDrop のサービスのみです。
  • プレイヤーはサインインしている必要があります。PlayDrop が参加時に各プレイヤーを検証するため、onAuth は実装しないでください。
  • MongoDB データベースはゲームごとに 1 つで、バージョンをまたいで保持され、ストレージ容量にカウントされます。その認証情報は決してブラウザに送信しないでください。

ブラウザを接続してテストする

ブラウザでは、クライアント SDK の sdk.multiplayer.getConnection() がサーバーのアドレスとプレイヤーのトークンを返します。Colyseus クライアント(@colyseus/sdk 0.17)で参加してください。開発中は、Colyseus 0.17 と MongoDB 8 をローカルで実行し、ローカルサーバーに直接接続します。ホスト型サーバーをテストするには、非公開バージョンをアップロードしてから https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1 を開き、2 つ目のウィンドウで同じリンクを player=2 にして開きます。各ウィンドウは別々のテストアカウントとしてプレイします。動作を確認したら、ゲームページからそのバージョンを公開してください。

任意のサーバー SDK:フレンドと AI

@playdrop/server は、playdrop.social(このゲームをプレイしているフレンドと、PlayDrop Chat のゲームカード)と playdrop.ai(クリエイターが費用を負担するテキスト、画像、3D、動画、効果音、音声、音楽の生成)を追加します。これらの呼び出しはアップロード済みのゲームでのみ動作し、ローカル開発では動作しません。非公開の生成メディアはサーバー上で playdrop.ai.tasks.downloadFile を使ってダウンロードし、そのバイトデータは対象のプレイヤーにのみ送信してください。音声生成リクエストで受け付けるのは最大 40 語までです。

パーティーとルームのボイスチャット

await playdrop.social.getParty(client.auth) は、現在アクセスを許可されているパーティーのメンバー情報を取得します。パーティーチャットや他のゲームでの活動は公開せず、パーティーの管理権限も付与しません。既存のソーシャルAPIの動作は変わりません。

カタログで roomVoice: true を指定すると、初期設定はルーム全体での会話になります。この初期設定にサーバー呼び出しは不要です。変更する場合は、const platform = playdrop.multiplayer.forRoom(this) を実際のColyseusルームに紐付けます。platform.voice.setPolicy("all" | "team" | "proximity" | "off", { range: 20 })、setTeam(client.auth, teamId)、setAudience(client.auth, audience)、updatePositions([{ player: client.auth, position: { x, y, z } }]) を使用します。チームの指定やプレイヤー別の上書き設定を解除するにはnullを渡します。近接モードには、サーバーが管理する最新の位置情報が必要です。

信頼されたランタイムが参加資格の変更をまとめ、リーダーの通常の参加後に参加を許可されたパーティーメンバーの枠を確保し、権限を整理します。ゲームから音声、プロバイダーの認証情報、マイクへのアクセス要求を送信することはありません。ラウンド間で同じルームを維持してください。公開前に、対象となるクリエイターのアカウントで既存の非公開Test Playersを使用して連携をテストしてください。公開するだけでは、この機能の段階的提供は有効になりません。

前へブラウザゲーム向け PlayDrop クライアント SDK次へPlayDrop Cloudの制作・公開のトラブル解決
Markdownを表示
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

このページの内容

標準的な Colyseus サーバーを書くホスト型サーバーのルールブラウザを接続してテストする任意のサーバー SDK:フレンドと AIパーティーとルームのボイスチャット
Markdownを表示