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

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」ボタンを逐一押さずに放送者を含めた動作を確認することができます。

投稿

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

補足: アツマール対応の表明

Akashic のマルチプレイゲームは、ゲームアツマールでも公開できます。 ただしニコ生ゲームと異なり配信者はいません。 ユーザがまず「部屋」を作成して、その部屋を訪れたユーザとマルチプレイゲームを遊ぶ形になります。

マルチプレイのニコ生ゲームは、内容によってニコニコ生放送専用であるかどうかが分かれるでしょう。 例えば「配信者が配信上で発した言葉を使う」ゲームは、アツマールでは遊べません。 一方で配信者も視聴者も同じ立場のゲームであれば、アツマールでも同じように遊べるはずです。

game.json で external.atsumaru.supportedModes["multi"] を指定すると、アツマールでの実行もサポートすることができます。 次の例は、ニコ生ゲーム向けの指定とアツマール向けの指定を両方行ったものです。

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

  "environment": {
    "nicolive": {
      "supportedModes": ["multi_admission"]
    },
    "atsumaru": {
      "supportedModes": ["multi"]
    }
  }
}

後述しますがニコ生ゲームは、まずゲームアツマールに投稿して、その後に「ニコ生ゲームとして申請」することで公開されます。 そのため上のように指定しておけば、ニコ生ゲームの公開時にそのままアツマールでも公開されます。

逆にアツマールに対応 しない 場合、そのままだとアツマール上では動かないだけのゲームになるので、以下のいずれかを行うことを推奨します。

  • アツマール上での説明文に「ニコ生のみ対応、アツマール上では遊べない」ことを明記する
  • アツマール側を「限定公開」にする (アツマール上では一般に公開しない)
  • アツマールで動作している時向けの挙動を実装する (e.g. CPU 戦モード)

ゲームアツマール向けのゲームについては ゲームアツマールで遊べるゲームの作成 も参照してください。