ニコ生ゲームの投稿は、ゲームアツマール を通して行います。
ゲームアツマールは、"作って遊んでコメントできる ゲーム投稿コミュニティサービス" です(紹介)。 Akashic ゲームをこの ゲームアツマールに投稿・公開した後、申請を行うことで、ニコニコ生放送でも遊べるようになります。
次の手順で行います。
game.json のあるディレクトリで、次のコマンドを実行して zip ファイルを生成します。
akashic export html --output <zipFileName> --atsumaru
<zipFileName>
には、 .zip
で終わるパスを指定してください (./game.zip
など)。
--atsumaru
オプションをつけることで、ゲームアツマールとニコニコ生放送に対応した形式のファイルを生成します。
export html
コマンドによって、以下のファイル・ディレクトリを圧縮した zip ファイル <zipFileName>
が生成されます。
files
ディレクトリindex.html
akashic export html
で出力される index.html とは異なり、このファイルの起動には HTTP サーバーが必要になりますgame.json
現在のところ、ニコ生ゲームには次のような制約があります。
現在のニコ生ゲームではまず zip ファイルの展開後のサイズが 10MB 以下である必要があります。 これを超える場合、アツマールには投稿できますが、ニコ生ゲームとして登録申請する際に失敗するので注意してください。
また game.json が 100KB 以下である必要があります。 特にアセットが非常に多いコンテンツでこの制限にあたる場合があります。 ニコ生ゲームとして申請する際に「不正な game.json」とされてしまう場合、このサイズを超えている可能性があります。
全てのテキストファイル (.js, .json, .txt) の文字コードが UTF-8 であることを確認してください 。
akashic export
コマンドは、効率化のためできるだけテキストファイルを一つにまとめます。このとき Shift JIS など、UTF-8 でない文字コードが使われていると、game.zip の中身が文字化けしてしまうことがあります。
ゲームアツマール への投稿は、Web サイト上で行います。大まかな手順は以下の通りです。
ゲームアツマールの 投稿ページ を開きます。(ニコニコアカウントでのログインが求められます。) zip ファイルを「ゲームファイル」の欄で選択もしくはドラッグ&ドロップします。
残りの入力項目に入力して、その内容を保存します。
詳細な入力・操作方法については、ゲーム投稿ページの案内に従ってください。 特に、ここで指定した ゲーム名・アイコン・紹介文はニコ生ゲーム側にも反映されます 。
game.json
の "width"
, "height"
) と同じ値を指定することを推奨します。内容保存後、マイページにリダイレクトされます。マイページで投稿対象のゲーム中の 「その他 > ニコ生ゲームに登録申請」を選択します。
「ニコ生ゲームへ投稿申請」というダイアログが表示されるので、注意を確認の上「申請」ボタンを押します。
投稿対象のゲームに「ニコ生ゲームに登録申請済み」と表示されたら完了です。
ゲームアツマールでは、一度アップロードしたゲームの内容を更新することができます。ニコ生ゲームとしては、更新後に改めて登録申請が必要になることに注意してください。
更新は、登録申請と同じ画面で「アップデート」ボタンを押して zip ファイルをアップロードして更新した後、改めて「ニコ生ゲームに登録申請」してください。
ニコ生ゲームへの投稿中によくあるエラーをまとめます。Akashic Engine 全般の よくある落とし穴 も参照してください。
ゲームアツマール上では問題がないなどの場合、 「zip ファイルに含められた game.json のサイズが大きすぎる (100KB 以上)」ことがあります。 game.json のサイズは現在ニコ生ゲーム特有の制限であるためです。
zip ファイルを展開して、サイズを確認してください。 この問題に当たっている場合は、アセット数を減らすなどして game.json のサイズを削減する必要があります。
akashic export html
実行時、次のようなエラーメッセージが表示される場合、 akashic-cli
のバージョンが古い可能性があります。
error: unknown option `--atsumaru'
次のコマンドで akashic-cli
を再インストールしてください。
npm install -g @akashic/akashic-cli
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 を与えることは避けてください。