マルチプレイ開発予備知識

# Akashic Engine マルチプレイ入門

前述のとおり、ニコ生ゲームのマルチプレイゲームは、ほぼ単なる Akashic ゲームです。そのためまず「Akashic Engine 入門」のマルチプレイゲームの章まで理解している必要があります。

https://akashic-games.github.io/tutorial/v3/ (別ページで開きます)

次ページ から、これを補足する内容のコラム形式の文書になるので、そちらも併せてご覧ください。

# マルチプレイ対応の表明

一点だけ「単に Akashic ゲームを作成する」以外に必要な作業があり、それは「このゲームはマルチプレイゲームである」と表明することです。

これは game.json の environment.nicolive.supportedModes の値に ["multi_admission"] を設定することで行われます。

{
  // ... その他の記述 ...

  "environment": {
    "nicolive": {
      "supportedModes": [
        "multi_admission"
      ]
    }
  }
}

"multi_admission" の代わりに "multi" を指定することもできます。 "multi" の場合、起動時にプレイヤー募集が行われません。 詳細は別項 プレイヤーの募集 を参照してください。

以前は environment.nicolive ではなく environment.niconico プロパティを利用していました。 現在 environment.niconico は非推奨になっています。 詳細は別項 ニコ生ゲーム関連の仕様 を参照してください。

# ユーザ名の取得

マルチプレイのニコ生ゲームでは、ニコニコのユーザ名を利用することができます。 これについては別項 ユーザ名を使う を参照してください。

ただし必要となる機能の関係上、 Akashic Engine v3 以降で作成されている必要があります。

# 動作確認

マルチプレイのニコ生ゲームの動作確認は、Akashic ゲームとして単に akashic serve コマンドで行うことができます。 ただしニコ生ゲームの場合は --target-service オプションが利用できます。

$ akashic serve --target-service nicolive

--target-service (短縮形 -s) オプションは、 serve コマンドに特定のサービス上の動作をできるだけ再現させるものです。 現在指定可能な値は nicolivenone (デフォルト値) の二つです。

nicolive が指定された場合、 serve コマンドは次のように振る舞います。

  • 放送者役をいちいち Join させなくてもいいように
    • 起動後、最初に開かれたブラウザウィンドウのプレイヤーを必ず Join させる
    • 「新規プレイ」ボタンでゲームを始める時も、このブラウザウィンドウのプレイヤーを Join させる
    • 「Join Me」ボタンが無効になる
  • コンテンツ起動時に与えられる引数を、ニコニコ生放送と同様のものに
    • 詳細割愛 (通常、ゲーム開発者がこの値を参照する必要はありません)

Join と Leave の節 でも記載のとおり、ニコニコ生放送では「放送者がただ一人 Join する」動作になっています。 --target-service を指定すると、「Join Me」ボタンを逐一押さずに放送者を含めた動作を確認することができます。

# 投稿

作成したゲームの投稿手順はランキングゲームと同様です。ニコ生ゲームを投稿しよう を参照して、投稿してみてください。