mcpField
R
remix-multiplayer

remix-multiplayer

github.com/farworld-labs開発58 回インストール
リポジトリ

remix-multiplayer について

remix-multiplayerは、Remixプラットフォームのゲームに2人用ターン制マルチプレイヤー機能を組み込むワークフロースキルです。RemixSDKのmultiplayer名前空間の利用、状態更新の処理、プレイヤースコアを使ったゲーム終了報告を案内します。

主な機能

  1. 012人用ターン制マルチプレイヤーの手順
  2. 02RemixSDK multiplayer名前空間の利用
  3. 03ゲーム状態更新の処理と検証
  4. 04プレイヤースコア付き結果の送信

活用シーン

  1. 01Remixゲームへのターン制マルチプレイヤー追加
  2. 02セッション内プレイヤーIDの取得
  3. 03受信したプレイヤー状態の処理
  4. 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 を混在させないでください。いずれか一方を使用します。

コメント