• このエントリーをはてなブックマークに追加
【投稿者向け】ニコニコ新市場対応コンテンツでの躓きポイントと対策集
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

【投稿者向け】ニコニコ新市場対応コンテンツでの躓きポイントと対策集

2018-11-30 13:48

    この記事について

    2018年10月25日より、実験放送で利用できるツールやゲームが、RPGアツマールに投稿できるようになりました。

    Akashic Engineで作成したコンテンツをRPGアツマールに投稿し、ニコニコ新市場に登録申請をする事で、実験放送で投稿したツールやゲームを実行できます。これを、ニコニコ新市場対応コンテンツと呼びます。

    本記事では、ニコニコ新市場対応コンテンツでよくある質問に対して、2018年11月30日現在お出し出来る情報をまとめて記載していきます。

    RPGアツマール固有コードの呼び出し方

    実験放送で利用するためには、RPGアツマールに投稿する必要があります。この際、RPGアツマール固有機能を呼び出したくなることがあると思います。

    代表的な例として、スコアボードがあると思います。

    RPGアツマール固有のコードを呼び出す場合、以下のようなコードを記述してください。

    if (typeof window !== "undefined" && window.RPGAtsumaru) {
        // ここに処理を書く
    }

    「window」という変数は、Akashic Engineの通常の実行環境では利用できないため、最初にtypeofでwindow変数の有無を確認してから、RPGAtsumaru環境であることを確認しています。

    例えば、スコアボードにスコアを送信したい場合、以下のようにします。

    if (typeof window !== "undefined" && window.RPGAtsumaru) {
        window.RPGAtsumaru.experimental.scoreboards.setRecord(
            1, // ボードIDとして固定で1を指定
            g.game.vars.gameState.score // スコアを送信
        ).then(function () {
            // ok
        }).catch(function (e) {
            // ng
        });
    }

    音について

    aacファイルとoggファイルの二つをご用意いただく必要があります。

    また、ボリュームが大きすぎると生放送で実行する際に少し大きくなりすぎる事があります。

    音の取り扱い方については、本記事では注意点のみ記述し、また別途詳細な記事を公開させていただきます。

    ECMAScript 5th Editionの文法チェック

    Akashic EngineはECMAScript 5th Editionという、少し古いJavaScriptで記述されている必要があります。

    この文法にのっとっていなくても、Akashic Sandboxで開発している際等はエラーにならずに実行ができてしまうため、文法のチェックに苦労される人が多いと思いますが、以下の手順で機械的な文法チェックができるようになります。

    1. akashic initを実行する
    2. akashic initをしたところで、npm installを実行する
    3. npm run lintを実行する

    2までは最初の一回だけで、あとは[3]のみを実行することで検査することができます。ご活用ください。

    文字コード

    Akashic EngineのソースコードはUTF-8で記述していただく必要があります。

    Windows環境ですと、デフォルトで保存される文字コードがShift_JISとなることが多く、アツマールに投稿する時点でコメントの日本語等が文字化けします。

    保存する文字コードをUTF-8にするようお気をつけください。

    乱数

    Akashic Engineはリプレー性を担保するエンジンとなっているため、いわゆる参照透過性を持たない処理を基本的には呼び出すべきではありません。

    代表的なものが「Math.random」です。

    Math.randomは、g.game.random.getで代用できます。より詳細な情報は、公式のチュートリアルをご参照ください。

    setTimeoutやsetIntervalの利用の際も、同様の問題があります。こちらもより詳細な情報は、公式のチュートリアルをご参照ください。

    利用不可能なObject

    Akashic EngineはWebブラウザでの実行を前提としている訳ではないため、以下のような機能へのアクセスは原則としてできません。

    • window
    • navigator
    • location
    • document
    • localStorage, sessionStorage

    これらは一例で、ECMAScript 5th Editionのビルトインオブジェクトと、Akashic Engineが規定するgしか取り扱う事はできない、という規則になります。

    もしこれらの機能にアクセスしたい場合は、前述のアツマール環境に限定する等の対策が必要になりますのでご注意ください。

    終わりに

    投稿コンテンツも増えて、躓きやすいポイントも見えてきたので、本記事ではそれらポイントに対する部分的な情報出しをさせていただきました。

    今後もこういった形で、逐次情報出しをしていきますので、引き続きよろしくお願いします。

    コメントを書く
    コメントをするにはログインして下さい。