アツマールにツクールMV製でないhtml5ゲームを投稿する超大雑把なまとめ
時間ないので超大雑把ですいません
投稿できるん?
- 基本できる。けど、色々と制約がある。とりあえず既に投稿された他の人の非ツクール製ゲームみてみると分かりやすい
- むにむに教授の二次元人 https://game.nicovideo.jp/atsumaru/games/gm5404
- あるふぁさんのくみたいそう(unity) https://game.nicovideo.jp/atsumaru/games/gm6042
「色々と制約」って、具体的には?
- コメントは全部最初にだけ流れてしまう
- 後述のアツマールAPIを自分で叩く事で対応は一応可能(めんどい)
- 右上のスクショボタンが機能しない
- 後述のアツマールAPIを自分で叩く事で対応は一応可能?(どうも結構面倒で簡単にはできないっぽい)
- 左下のボリュームボタンが表示されない
- 後述のアツマールAPIを自分で叩く事で対応は一応可能(めんどい)
- 一部の特殊な拡張子のファイルをアップロードできない
- 他のアップロード可能な拡張子にリネームすれば一応可能。しかし拡張子を変更すると動かなくなったりするタイプのものだと死。
- なんか画面の右側の方が見切れててすごく遊びづらい / なんか画面が左の方に寄ったりしてる
- コメントは全部最初にだけ流れてしまう
アツマールAPIって?
- http://ch.nicovideo.jp/indies-game/blomaga/ar1163608 にある、javascript用に提供されてる関数。
- かなり情報が古くなってしまってるが、自分が過去に試したメモが http://rnkv.hatenadiary.jp/entry/2017/09/18/045522 にある。
unityいけるん?
他にいい方法ある?
具体的にはどうやるん?
- MVから新規プロジェクトを生成し、ひたすらデータベースから項目を削除(使う項目は残しておくとよい)し、セーブ
- 必要なMVプラグインを追加し、設定しておく。ほぼ必須なのはデフォルトで入ってる
Community_Basic
と AutoLoad だが、同様の機能を自前で用意してもok - セーブされた中の使わない画像や音声ファイルを除去。除去したら起動しなくなる画像とかも普通に含まれてるので、一旦このタイミングで実行してみて、上記の
AutoLoad
で設定したマップのところまでエラーなく起動する事を確認しておくとよい。 - セーブされた中の index.html を編集し、自分のjsファイルをロードするようにしたりしておく
-
AutoLoad
で設定したマップ内に自動実行イベントを配置し、そこから自分のjsファイルを実行するように設定する - 自分の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側の入力受け付け処理の停止
- (なくてもなんとかなるので省略)
- 定期実行処理の停止
- 自分のjsファイル側にて、自分のゲーム本体を起動
- 上記の手順の内のよくわからない部分、こまかい部分は気軽にtwitterとかできいてください。あとアツマール側の更新によっては状況が変化したりとかもありそう。
めんどい!もっと簡単になんとかならないの?
- 最初に書いた通り、単にhtml5ゲーム置くだけでもギリギリ遊べなくはないです。めんどかったらこれで。
セーブどうやるん?
- アツマールAPIにある通りにやる。面倒だったら
window.localStorage
がアツマール用に差し変わってるっぽいので、それをそのまま使ってもまあまあなんとかなると思われる(しかし上手く動いてないっぽい???要確認…)
- アツマールAPIにある通りにやる。面倒だったら
ie対応およびHtmlAudio対応について
- 実はアツマールはサイト側でieを弾いてるらしいです(edgeは可)。なので、ie対応は考えなくてよいし、音源の再生はWebAudioを前提にして問題ありません。
- なお音源の再生には http://ch.nicovideo.jp/indies-game/blomaga/ar1410968 http://ch.nicovideo.jp/indies-game/blomaga/ar1470959 の問題があるので、これらに対応した再生手段を選択すべきです。またoggが再生できないスマホ環境の為の代替音源(m4aかmp3)の用意も可能な限りしておいた方がよいです。
- 実はアツマールはサイト側でieを弾いてるらしいです(edgeは可)。なので、ie対応は考えなくてよいし、音源の再生はWebAudioを前提にして問題ありません。
外部サーバと通信できない
- 仕様です。安全の為に、そういう風に制限されてます。
- 今のところオンラインゲーを作るのはほぼ絶望的です。将来の対応を待ちましょう。
外部url開けない
window.open()
類も外部サーバ通信と同様に、安全の為に制限されてます。その代わりにアツマールAPIにwindow.RPGAtsumaru.experimental.popups.openLink()
が用意されてるのでこれを使えばok。ただし逆にアツマール以外では開かなくなるので、そこらへんは自分で上手くハンドリングする必要があります。
その他の注意点
- デプロイ時の「未使用ファイルを含まない」オプションが利用できないので、自前でアセットファイル管理する必要があります。かなり面倒で自分もなんとかしたいけどいい方法がない(というかそもそも、手元の大量のSEファイルとかの時点で管理がもうできてない…タグ付けて管理とかしたい…)