投稿と申請

ニコ生ゲームの投稿は、ゲームアツマール を通して行います。

ゲームアツマールは、"作って遊んでコメントできる ゲーム投稿コミュニティサービス" です(紹介)。 Akashic ゲームをこの ゲームアツマールに投稿・公開した後、申請を行うことで、ニコニコ生放送でも遊べるようになります。

次の手順で行います。

  1. 投稿用 zip ファイルを生成
  2. ゲームアツマールに投稿し、ニコ生ゲームとして登録申請

投稿用 zip ファイルを生成

game.json のあるディレクトリで、次のコマンドを実行して zip ファイルを生成します。

akashic export html --output <zipFileName> --atsumaru

<zipFileName> には、 .zip で終わるパスを指定してください (./game.zip など)。 --atsumaru オプションをつけることで、ゲームアツマールとニコニコ生放送に対応した形式のファイルを生成します。

export html コマンドによって、以下のファイル・ディレクトリを圧縮した zip ファイル <zipFileName> が生成されます。

  • files ディレクトリ
    • ゲーム内で使用されるアセットファイルを格納しているディレクトリ
  • index.html
    • 起動するとゲームが実行される HTML ファイル
      • ただし、akashic export htmlで出力される index.html とは異なり、このファイルの起動には HTTP サーバーが必要になります
  • game.json
    • ゲームのメタ情報などを取り扱う設定ファイル

生成時の注意点

現在のところ、ニコ生ゲームには次のような制約があります。

  • zip ファイルの 展開後の合計サイズが 10 MB 以下
  • zip ファイルに含まれる game.json が 100KB 以下
  • 全てのテキストファイル (.js, .json, .txt など) の 文字コードが UTF-8

現在のニコ生ゲームではまず zip ファイルの展開後のサイズが 10MB 以下である必要があります。 これを超える場合、アツマールには投稿できますが、ニコ生ゲームとして登録申請する際に失敗するので注意してください。

また game.json が 100KB 以下である必要があります。 特にアセットが非常に多いコンテンツでこの制限にあたる場合があります。 ニコ生ゲームとして申請する際に「不正な game.json」とされてしまう場合、このサイズを超えている可能性があります。

全てのテキストファイル (.js, .json, .txt) の文字コードが UTF-8 であることを確認してくださいakashic export コマンドは、効率化のためできるだけテキストファイルを一つにまとめます。このとき Shift JIS など、UTF-8 でない文字コードが使われていると、game.zip の中身が文字化けしてしまうことがあります。

ゲームアツマールに投稿し、ニコ生ゲームとして登録申請

ゲームアツマール への投稿は、Web サイト上で行います。大まかな手順は以下の通りです。

ゲームアツマールの 投稿ページ を開きます。(ニコニコアカウントでのログインが求められます。) zip ファイルを「ゲームファイル」の欄で選択もしくはドラッグ&ドロップします。

ゲームアップロード

残りの入力項目に入力して、その内容を保存します。

詳細な入力・操作方法については、ゲーム投稿ページの案内に従ってください。 特に、ここで指定した ゲーム名・アイコン・紹介文はニコ生ゲーム側にも反映されます

  • ニコニコ生放送での表示の都合上、アイコンは 160x160 以上 320x320 以下の画像である必要があります。幅と高さが同じ(正方形の)画像を推奨します。
  • アイコン画像にはアニメーション GIF を指定することもできます。ただしニコニコ生放送上では静止画 (最初の 1 フレーム) になります。これはアイコンが配信画面より目立ってしまうのを避けるための仕様です。
  • 「ゲーム表示サイズ」は ゲームアツマール上での表示にのみ影響します。ゲームの解像度 (game.json"width", "height") と同じ値を指定することを推奨します。
  • 「非公開」「限定公開」状態ではニコ生ゲームとして登録申請できないので、「公開」を選択してください。

内容保存後、マイページにリダイレクトされます。マイページで投稿対象のゲーム中の 「その他 > ニコ生ゲームに登録申請」を選択します。

ゲーム登録申請UI

「ニコ生ゲームへ投稿申請」というダイアログが表示されるので、注意を確認の上「申請」ボタンを押します。

登録申請ダイアログ

投稿対象のゲームに「ニコ生ゲームに登録申請済み」と表示されたら完了です。

登録申請完了

コンテンツの更新

ゲームアツマールでは、一度アップロードしたゲームの内容を更新することができます。ニコ生ゲームとしては、更新後に改めて登録申請が必要になることに注意してください。

更新UI

更新は、登録申請と同じ画面で「アップデート」ボタンを押して zip ファイルをアップロードして更新した後、改めて「ニコ生ゲームに登録申請」してください。

トラブルシューティング

ニコ生ゲームへの投稿中によくあるエラーをまとめます。Akashic Engine 全般の よくある落とし穴 も参照してください。

「game.json の記述に誤りがあります。再度エクスポートを実行してください。」という表示でニコ生ゲームの登録申請に失敗する

ゲームアツマール上では問題がないなどの場合、 「zip ファイルに含められた game.json のサイズが大きすぎる (100KB 以上)」ことがあります。 game.json のサイズは現在ニコ生ゲーム特有の制限であるためです。

zip ファイルを展開して、サイズを確認してください。 この問題に当たっている場合は、アセット数を減らすなどして game.json のサイズを削減する必要があります。

unknown option `--atsumaru' と表示される

akashic export html 実行時、次のようなエラーメッセージが表示される場合、 akashic-cli のバージョンが古い可能性があります。

  error: unknown option `--atsumaru'

次のコマンドで akashic-cli を再インストールしてください。

npm install -g @akashic/akashic-cli

Error: Cannot find module ... from ... と表示される

akashic export html 実行時、次のようなエラーメッセージが表示される場合、ソースコードを変更する必要があります。

ERROR: Error: Cannot find module 'foo' from ...

この現象は、ゲームスクリプト内で require() を利用し、その引数にアセット ID を与えている場合に発生します。 (require("foo") でアセット ID "foo" のスクリプトアセットを読み込むなど)

アセット ID ではなく、相対パスで require() するように変更してください。(require("./foo") など)

require() がアセット ID を受け付けているのは、Akashic Engine の古い仕様によるものです。アセット ID と同名の npm モジュールがあると衝突してしまうという問題があるため、この挙動は将来的に廃止される可能性があります。ニコ生ゲームであるか否かに関わらず、 require() にアセット ID を与えることは避けてください。