ニコ生ゲームを投稿しよう
ニコ生ゲームの投稿は、ニコ生ゲーム投稿 のページから行います。
こちらから Akashic ゲームを投稿すると、ニコニコ生放送で遊べるようになります。
投稿用 zip ファイルを生成
game.json のあるディレクトリで、次のコマンドを実行します。 (--nicolive
オプションは akashic-cli@2.16.22
以降で利用できます。)
akashic export zip --output game.zip --nicolive
すると game.zip という名前の zip ファイルが生成されます。 (ディレクトリ内に game.zip というファイルが既にある場合は、 game.zip の代わりに .zip で終わる適当なファイル名を指定してください)
--nicolive
オプションをつけることで、ニコニコ生放送に対応した形式のファイルを生成します。
生成時の注意点
現在のところ、ニコ生ゲームには次のような制約があります。
- zip ファイルの 展開後の合計サイズが 10 MB 以下
- zip ファイルに含まれる game.json が 100KB 以下
- 全てのテキストファイル (.js, .json, .txt など) の 文字コードが UTF-8
現在のニコ生ゲームではまず zip ファイルの展開後のサイズが 10MB 以下である必要があります。 これを超える場合、ニコ生ゲームとして投稿する際に失敗するので注意してください。
また game.json が 100KB 以下である必要があります。 特にアセットが非常に多いコンテンツでこの制限にあたる場合があります。
全てのテキストファイル (.js, .json, .txt) の文字コードが UTF-8 であることを確認してください 。 akashic export
コマンドは、効率化のためできるだけテキストファイルを一つにまとめます。ただし、ファイル自体の文字コードは変換されないため Shift JIS など UTF-8 でない文字コードが使われていると、game.zip の中身が文字化けしてしまうことがあります。
ニコ生ゲーム投稿
ニコ生ゲームへの投稿は、Web サイト上で行います。大まかな手順は以下の通りです。
ニコ生ゲーム投稿ページを開きます。(ニコニコアカウントでのログインが求められます。) zip ファイルを「ゲームファイル」の欄で選択もしくはドラッグ&ドロップします。
残りの入力項目に入力して、「投稿する」ボタンを押します。
詳細な入力・操作方法については、ニコ生ゲーム投稿ページの案内に従ってください。
- ニコニコ生放送での表示の都合上、アイコンは 160x160 以上 320x320 以下の画像である必要があります。幅と高さが同じ(正方形の)画像を推奨します。
- アイコン画像にはアニメーション GIF を指定することもできます。ただしニコニコ生放送上では静止画 (最初の 1 フレーム) になります。これはアイコンが配信画面より目立ってしまうのを避けるための仕様です。
- 「非公開」を設定した場合には、投稿者が作成した番組でのみ起動できます。 投稿完了後に生ゲーム投稿ページから自分が投稿したゲームの一覧を確認できます。
ゲームの更新
生ゲーム投稿ページでは、一度アップロードしたゲームの内容を更新することができます。生ゲーム投稿ページの対象のゲームから 「編集する」ボタンを押すことで編集が可能となります。
トラブルシューティング
ニコ生ゲームへの投稿中によくあるエラーをまとめます。Akashic Engine 全般の よくある落とし穴 も参照してください。
「game.json の容量をご確認ください。」という表示でニコ生ゲームの投稿に失敗する
zip ファイルに含められた game.json のサイズが大きすぎる (100KB 以上)ことがあります。 game.json のサイズは現在ニコ生ゲーム特有の制限であるためです。
zip ファイルを展開して、サイズを確認してください。 この問題に当たっている場合は、アセット数を減らすなどして game.json のサイズを削減する必要があります。
unknown option '--nicolive' と表示される
akashic export zip
実行時、次のようなエラーメッセージが表示される場合、 akashic-cli
のバージョンが古い可能性があります。 akashic-cli@2.16.22
以降を利用してください。
error: unknown option `--nicolive'
次のコマンドで akashic-cli
を再インストールしてください。
npm install -g @akashic/akashic-cli
Error: Cannot find module ... from ... と表示される
akashic export zip
実行時、次のようなエラーメッセージが表示される場合、ソースコードを変更する必要があります。
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 を与えることは避けてください。