VNCTST games 開発日誌

ゲーム開発日誌

アツマールにツクールMV製でないhtml5ゲームを投稿する超大雑把なまとめ

時間ないので超大雑把ですいません

  • 投稿できるん?

  • 「色々と制約」って、具体的には?

    • コメントは全部最初にだけ流れてしまう
      • 後述のアツマールAPIを自分で叩く事で対応は一応可能(めんどい)
    • 右上のスクショボタンが機能しない
      • 後述のアツマールAPIを自分で叩く事で対応は一応可能?(どうも結構面倒で簡単にはできないっぽい)
    • 左下のボリュームボタンが表示されない
      • 後述のアツマールAPIを自分で叩く事で対応は一応可能(めんどい)
    • 一部の特殊な拡張子のファイルをアップロードできない
      • 他のアップロード可能な拡張子にリネームすれば一応可能。しかし拡張子を変更すると動かなくなったりするタイプのものだと死。
    • なんか画面の右側の方が見切れててすごく遊びづらい / なんか画面が左の方に寄ったりしてる
      • アツマール内で動かすhtml5ゲームは基本的に「ブラウザ内全サイズまで自動拡大縮小」される仕組みを入れておかないと、そうなる(スマホのような小さい画面に対応する為)
  • アツマールAPIって?

  • unityいけるん?

    • 上記の制約はあるけど基本WebGL出力でいける。けどそのままだと画面リサイズに対応してないのでスマホで遊ぶのが困難。またそもそもunityのWebGL出力はiOS(mobile safari)で動かないらしい。アツマールのユーザ層はiOSが30%ぐらいとの事なので、30%ぐらいの人は遊べないという事になる
    • 自分はunity脱落勢なので、これ以上の詳細は分からない…
  • 他にいい方法ある?

    • MVベースで実行して、MV本体の動作を停止させて、MVのcanvasに自前でhtml5ゲームの内容を描画する、みたいな手がある。自作の「ネコゴゴゴ」もその方法を使ってる
      • メリット
        • 上記の制約の大部分はMV側が解決してくれる
        • 必要に応じてMVの一部の機能も使える
      • デメリット
        • MVの内部仕様の方まで目を通しておく必要がある
        • デプロイ等の操作はMV側で行う必要がある
  • 具体的にはどうやるん?

    1. MVから新規プロジェクトを生成し、ひたすらデータベースから項目を削除(使う項目は残しておくとよい)し、セーブ
    2. 必要なMVプラグインを追加し、設定しておく。ほぼ必須なのはデフォルトで入ってる Community_BasicAutoLoad だが、同様の機能を自前で用意してもok
    3. セーブされた中の使わない画像や音声ファイルを除去。除去したら起動しなくなる画像とかも普通に含まれてるので、一旦このタイミングで実行してみて、上記の AutoLoad で設定したマップのところまでエラーなく起動する事を確認しておくとよい。
    4. セーブされた中の index.html を編集し、自分のjsファイルをロードするようにしたりしておく
    5. AutoLoad で設定したマップ内に自動実行イベントを配置し、そこから自分のjsファイルを実行するように設定する
    6. 自分のjsファイル側にて、MV本体を停止させる。大体は以下のようにすればよい
      • 定期実行処理の停止
        • window.SceneManager._stopped = true;
      • タッチイベントがメインのGameCanvasに届くようにする(必要なら)
        • document.oncontextmenu = function () { return false };
        • document.getElementById('UpperCanvas').style.pointerEvents = "none";
        • document.getElementById('GameVideo').style.pointerEvents = "none";
        • document.getElementById('ErrorPrinter').style.pointerEvents = "none";
        • document.getElementById('modeTextBack').style.pointerEvents = "none";
        • document.getElementsByClassName('comment_box')[0].style.pointerEvents = "none";
        • document.getElementById('GameCanvas').style.pointerEvents = "auto";
      • MV側の入力受け付け処理の停止
        • (なくてもなんとかなるので省略)
    7. 自分のjsファイル側にて、自分のゲーム本体を起動
      • 上記の手順の内のよくわからない部分、こまかい部分は気軽にtwitterとかできいてください。あとアツマール側の更新によっては状況が変化したりとかもありそう。
  • めんどい!もっと簡単になんとかならないの?

    • 最初に書いた通り、単にhtml5ゲーム置くだけでもギリギリ遊べなくはないです。めんどかったらこれで。
  • セーブどうやるん?

    • アツマールAPIにある通りにやる。面倒だったら window.localStorage がアツマール用に差し変わってるっぽいので、それをそのまま使ってもまあまあなんとかなると思われる(しかし上手く動いてないっぽい???要確認…)
  • ie対応およびHtmlAudio対応について

  • 外部サーバと通信できない

    • 仕様です。安全の為に、そういう風に制限されてます。
    • 今のところオンラインゲーを作るのはほぼ絶望的です。将来の対応を待ちましょう。
  • 外部url開けない

    • window.open() 類も外部サーバ通信と同様に、安全の為に制限されてます。その代わりにアツマールAPIwindow.RPGAtsumaru.experimental.popups.openLink() が用意されてるのでこれを使えばok。ただし逆にアツマール以外では開かなくなるので、そこらへんは自分で上手くハンドリングする必要があります。
  • その他の注意点

    • デプロイ時の「未使用ファイルを含まない」オプションが利用できないので、自前でアセットファイル管理する必要があります。かなり面倒で自分もなんとかしたいけどいい方法がない(というかそもそも、手元の大量のSEファイルとかの時点で管理がもうできてない…タグ付けて管理とかしたい…)