remix-multiplayer について
remix-multiplayerは、Remixプラットフォームのゲームに2人用ターン制マルチプレイヤー機能を組み込むワークフロースキルです。RemixSDKのmultiplayer名前空間の利用、状態更新の処理、プレイヤースコアを使ったゲーム終了報告を案内します。
主な機能
- 012人用ターン制マルチプレイヤーの手順
- 02RemixSDK multiplayer名前空間の利用
- 03ゲーム状態更新の処理と検証
- 04プレイヤースコア付き結果の送信
活用シーン
- 01Remixゲームへのターン制マルチプレイヤー追加
- 02セッション内プレイヤーIDの取得
- 03受信したプレイヤー状態の処理
- 04マルチプレイヤーゲーム結果の報告
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ farworld-labs/ remix-skills --skill remix-multiplayerインストール後、Claude Code で/remix-multiplayerを入力して読み込まれたか確認します。
詳細
マルチプレイヤーのワークフローを実装する
概要
このスキルでは、Remix プラットフォーム上のゲームでマルチプレイヤー機能を有効にし、統合する方法を説明します。現在のプラットフォームでは、SDK の multiplayer 名前空間を使用した、2 人対戦のターン制マルチプレイヤーに対応しています。
前提条件
- Remix プラットフォームでゲームを作成している必要があります(ゲーム ID が必要です)。
REMIX_API_KEY環境変数を設定する必要があります。- ゲームに RemixSDK の script タグを含める必要があります。
<script src="https://cdn.jsdelivr.net/npm/@remix-gg/sdk@latest/dist/index.min.js"></script>
手順
1. 既存のゲーム ID を確認する
タスクのコンテキストや以前のツールの結果で gameId を利用できる場合は、それを使用します。
それ以外の場合は、最も近い .remix-cli.json を読み込みます。古いプロジェクトでは、引き続き .remix-mcp.json を使用している場合があります。どちらかに gameId が含まれていれば、それを再利用します。
これらの情報源のいずれにも gameId が含まれていない場合にのみ、upload-game ワークフローに従ってゲーム ID を作成します。
2. マルチプレイヤーを有効にする
updateGame や REST による isMultiplayer の直接切り替えに頼らないでください。現在、上流のワークフロードキュメントでは、マルチプレイヤーのプラットフォーム上での有効化は Remix 側のフラグとして扱われており、エージェントが変更できる公開機能ではありません。
3. ゲームコードにマルチプレイヤーを統合する
const sdk = window.RemixSDK
await sdk.ready()
// Access all players in the session
const players = sdk.players // Array of player objects
// Listen for game state updates from other players
sdk.onGameStateUpdated((state) => {
// Sync game state from other players
})
// Send game state to the other player when a turn ends
sdk.multiplayer.actions.saveGameState({
gameState: currentState,
alertUserIds: [opponent.id],
})
重要:マルチプレイヤーでは gameOver を使用する
マルチプレイヤーゲームでは、singlePlayer.actions.gameOver ではなく、multiplayer.actions.gameOver を使用します。プレイヤー ID を含むスコアの配列を渡してください。
sdk.multiplayer.actions.gameOver({
scores: [
{ playerId: player.id, score: playerScore },
{ playerId: opponent.id, score: opponentScore },
]
})
標準のフックを維持する
マルチプレイヤーゲームでも、次のコールバックが必要です。
sdk.onPlayAgain(() => {
// Reset game state and restart
})
sdk.onToggleMute(({ isMuted }) => {
// Mute or unmute all audio
})
ヒント
sdk.playersを使用して 2 人のプレイヤーとその ID を取得します。現在、マルチプレイヤーは 2 人対戦のみです。onGameStateUpdatedは、別のプレイヤーが状態を送信するたびに呼び出されます。適用する前に状態を検証し、受信した更新が無効な場合はsdk.multiplayer.actions.refuteGameState(...)を使用してください。- マルチプレイヤーの状態を保存するときは
alertUserIdsを使用し、次のプレイヤーに自分のターンであることを通知します。 - 同じゲームで
singlePlayer.actions.gameOverとmultiplayer.actions.gameOverを混在させないでください。いずれか一方を使用します。