ラノゲツクールMVの実態がJavaScriptで出来たADVエンジン＋IDEだった

# TL;DR
- ツクールシリーズ最新作「ラノゲツクールMV」の実態は、JavaScript の塊だった。
- デスクトップ向けは NW.js、スマフォ向けは Cordova、Steam OS 向けは Electron でアプリ書き出しを行う。
- JavaScript (公式推奨は CoffeeScript）で、シーンエディタも含めて拡張できるっぽい。
- 出たばかりということもあって buggy だが、実力は高そうなので今後が楽しみ。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/151254/0d3a0f9f-89ed-bf52-fb0d-a9fd8cffec6b.png)

# ラノゲツクールMVとは
2017年12月14日にダウンロード版が先行発売された、RPGツクールを代表としたツクールシリーズ最新作。
[公式サイト](https://tkool.jp/lngmv/) によると**「アドベンチャーゲームやライトノベルゲームをドラッグ＆ドロップで簡単に制作！」**するもの。

「かまいたちの夜」のようなノベルゲームから「Fate/stay night」のようなビジュアルノベルまで、多様なアドベンチャーゲームを作れるツクールのようです。

[ダウンロード版](https://tkool.jp/lngmv/download/index.html) 6,980円。ツクールシリーズとしては標準的な値付けですが、Steam に並んでいると少しギョッとしますねー。
Steam では "Visual Novel Maker" という英語名でリリースされています。

ちなみに、「ラノゲツクール」という先行品があるために、この分かりにくい名前になったようなのですが、中身は全くの別物です。

# 動作デモを作ってみた
Webアプリとして書き出されると聞くと、サポートプラットフォームの幅などが気になるので、簡単な動作デモを作ってみました。

→ http://vnmaker-demo.s3-website-ap-northeast-1.amazonaws.com/Sandbox/

ラノゲツクールMVに標準添付のアセットに加えて、[無償DLC](https://tkool.jp/lngmv/download/02.html)として提供されている "Live2D Cubism「フォトカノ」コラボレーションダウンロードコンテンツ素材" を利用しています。

## 作ってみた感想
JavaScript のアドベンチャーゲームエンジンの出来はかなり良い感じです。マルチブラウザで標準的なアドベンチャーゲームエンジンの持っている表現機能が違和感なく動いています。

一方で、サンプルやチュートリアルドキュメントの不足が目立ちます。

事前に提供を受けていたと思われる制作者による[サンプルゲーム](https://tkool.jp/lngmv/sample/index.html)がダウンロードでき、これらの出来は良いのですが、完成した後のゲームのソースは、決してチュートリアル代わりにはなり得ませぬ。。。

ビギナーズガイドというドキュメントはあるのですが、なんと、ビジュアルノベルを作るための心構えから始まる不思議なドキュメントでした。そうじゃなくて、ステップバイステップで使い方を説明したチュートリアルが欲しかったです。。。

まっさらな環境から実際にビギナーズガイドに沿って操作してみると、全てのリソースがからっぽで先に進めなくなることに気づいてほしい。そんな願いが通じることを祈っております。
（DLC の下の \_\_STaR\_\_ という怪しい名前のフォルダに大量の画像や音声などのリソースがあることに気づくまでに、かなりの時間がかかりました・・・）

## はまったところ

### 音声・動画フォーマット
動くだけなら Chrome/Firefox/Safari の最新版いずれでも動作しましたが、Safari では音声と動画の再生がうまく行きませんでした。
原因は、音声が ogg、動画が webm だったため。Sarafi と IE/Edge は対応していません。

ドキュメントを注意深く読むと、ブラウザによって対応フォーマットが違うので、拡張子だけ異なるファイルを作って複数回インポートすれば良い、と書かれています。

音声であれば、ogg に加えて m4a、動画であれば webm に加えて mp4 を用意すれば、最近のモダンブラウザでは大丈夫でしょう。

ただ、なぜか、ラノゲツクールMVに標準で付いてくる素材が ogg と webm だけなのですよね。。。もしも、Safari や IE/Edge でも動画や音声を再生させたければ、自分で変換する必要があります。

ffmpeg を使えれば一番簡単です。ffmpeg かつ zsh という非常にニッチな環境での話ですが、こんな感じで一括変換できるはず。

```zsh
> cd '~/Library/Application Support/Steam/steamapps/common/Visual Novel Maker/dlc/__STaR__/'
> for f ( **/*.ogg ) { ffmpeg -i $f ${f%.ogg}.m4a }
> for f ( **/*.webm ) { ffmpeg -i $f ${f%.webm}.mp4 }
```

公式でちゃんと m4a と mp4 でも音声と動画を入れてくれるようになるといいですね。
（RPGツクールMV収録の素材では、ちゃんと ogg と m4a 両方用意しているのですが・・・）

### Mobile Safari で音が出ない
上記の対応で、Mac 上の Safari ではうまく動くようになったのですが、iPhone の Mobile Safari では未だに音がちゃんと出ません。
Mobile Safari には固有の音声再生制限がありますので、これに引っかかっているのではと思うのですが、ちゃんと調べられていません。

タイトル画面あたりで touch イベントをトリガーに音声ロックの解除をする実装が入ると良いのですが、公式でサポートされることを願っています。
（RPGツクールMVでは、ちゃんとその実装が入っているのですが・・・）

参考: [iOSでのオーディオ再生制限解除を検証](https://qiita.com/pentamania/items/2c568a9ec52148bbfd08)

### フォントがアレ
どうも開発が海外の節がありまして、その分 i18n 対応がしっかりしているのは素晴らしいことなのですが、基本サンプルプロジェクトが微妙に日本向けに最適化されていません。

なぜか起動すると英語とドイツ語の言語選択メニューがでるサンプル、というのが一番典型ですが、それはそれとして、問題はフォントです。

マルチブラウザ環境で表示を安定させたければ Web Font を使うしかないわけですが、そのあたりの説明がたいへんおざなりです。標準のアセットでも woff は欧米フォントしか提供されていないのも残念。

上記のサンプルは、日本語フリーフォントの [Rounded Mgen+](http://jikasei.me/font/rounded-mgenplus/) を、[WOFFコンバータ](https://opentype.jp/woffconv.htm) で変換して利用しています。

日本語の web font も標準で準備されるようになるといいですね。
（RPGツクールMVでは [mplus-1m-regular.ttf](http://mplus-webfonts.osdn.jp/) が標準で入っているのですが……）

#### UI のフォントもアレ
また、本文のフォントはフォント設定できるので良いのですが、起動時のメニューなどの UI のフォントが、設定項目がなく、起動するブラウザによって全然違うというたいへん残念なことになっていました。

こちらはもう直接スクリプトを編集するしかありません。スクリプトの Layouts>Styles>Style_Default にフォント設定がありますので、ここを編集します。'Times New Roman' とベタ書きされているこれらを、せめて定数化しておいて欲しかった。。。

一番良いのは、システムの設定画面に設定項目として出しておいてもらえることです。いつかそうなることを願って……。

### Live2D のインポートがおかしい
Live2D のデータをインポートしてこようとすると、JSON 形式を要求するのですが、標準添付の Live2D のモデルデータは .live2d という拡張子のため、Mac のダイアログで選択できないという不具合があります。「全ての形式」を選ぶと選択できるようになりますので、それで開くとインポートは正常に行えます。

~~参考までに、"Live2D Cubism「フォトカノ」コラボレーションダウンロードコンテンツ素材" は json 形式で収録されているので、普通にインポートできるのですが、肝心の筆頭ヒロイン 01_HarukaNiimi のみ、json ファイルが収録されていないので利用できないというデータ作成時のミスもあったりします（2017/12/15現在)。どうしても使いたい場合は、json はリソースのファイル名を並べただけの物ですので、簡単に手で再現できるはず。~~

（追記 12/19）更新が入り、新見遙佳の json ファイルが補充されました。

### 「全般」の後ろで改行されている
だんだんバグレポートじみてきましたが、標準で i18n 対応している Visual Novel Maker は、メッセージを全て「言語設定」というメニュー下にコレクションしています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/151254/459c12da-91d2-82ec-d7c4-5169f8d1c7ca.png)

ここの「全般」という文字の行末にうっかり改行が入っているため、設定メニューがレイアウト崩れていました。
サンプル、ちゃんと日本のチームでチェックされているのか心配です。。。

#### メッセージのゴミが溜まっていくので要注意
メッセージが全て自動的にコレクション化されてくれるのはいいのですが、削除したときに自動で削除されないため、古いメッセージが残っていたりします。気になる方は、各シーンで右クリックすると「未使用のテキストを削除」と出てくるので、お掃除しましょう。

ローカライズのことも考えると自動削除されないほうがいいのですが、１言語だけで作っている場合は自動で削除された方が便利かもしれませんね。

### ヘルプの挙動がおかしい
かなり詳細なHTMLヘルプがアプリと一緒にローカルに保存され、ツールバーのボタンから開くのですが、どうも色々挙動がおかしいな、と思っていたところ、Safari ではテストされていないっぽい雰囲気でした。。。
ヘルプは Chrome で開くことをオススメします。
（ヘルプ内検索がうまく動かないことで気づきました）

### ゲームパッケージの出力先パス設定を覚えてくれない
毎回出力先パスを設定しないといけないのはたいへん苦痛です。RPGツクールMVであれば（以下略

### Mac 版をビルドしても動かない
ゲームの出力先を Mac OS X (NW.js) にしてビルドしたものを起動しても真っ暗なまま起動しません。(macOS High Sierra 10.13.2で確認)

新規プロジェクトからテンプレートで Sample 720p (Action-based UI) を選んだだけのものでも動かないので、おそらくバグじゃないかなぁ、と思っていますが、深くは追っていません。

そもそも署名がされないため、Mac に実行をブロックされるのを、「システム環境設定」>「セキュリティとプライバシー」から許可しないと実行ができないのですが。。。

ラノゲツクールMVで作ったゲームを Mac 向けに配布しようと思っている人はどうするんでしょうね？

（追記）Windows 10 上で Mac 向けにビルドしたパッケージは、Mac 上で問題なく動くことを確認しました。Mac 側のビルド環境の問題ですね。

### 量産がツラい
長編を作るときにはシーンエディタを一番使うと思いますが、その際は新しいメッセージをいかにスムーズに追加できるかが重要となります。いちいちコマンドパレットからドラッグ＆ドロップなんてやっていられないわけです。

そこに関しては、一応、シーンエディタ上にフォーカスを合わせて、「メッセージを表示」とキーボードを叩くと、キーボード操作のみでコマンド追加することが可能になっています。

が、これが使いづらいのです。

今、フォーカスがどこに当たっているのかが分かりづらい上に、マウス操作を混ぜてしまうと、しばしばメッセージのコマンドにテキストキャレットを持って行かれていて誤爆します。

また、日本語でコマンド名を打つ必要があるのもツラみを倍加させます。英語名も有効になっていれば良いのですが……。

ただ、このあたりはきっとプラグインで解決されるに違いないと信じております。
キーボードショートカットでちょっぱやでコマンドを追加できるプラグインか、あるいは、基本的なメッセージ関係のコマンドをKAG的なスクリプトでテキスト入力できるプラグインかに期待です・・・。

### （追記）ゲームパッケージ作成が終わらない
私は Steam 版を使っていたので知らなかったのですが、公式フォーラムの情報によると、ツクールストアで購入したDL版だと、ゲームのパッケージ作成が終わらない不具合があるようです。(Win7, Win10で確認されています）
ツクールストアで発行されたプロダクトキーはそのままSteamキーとしても使えるとのことですので、不具合に対応されるまでは、Steamから落とし直して使ってみると良いかとおもいます。（[ソース](https://forum.tkool.jp/index.php?threads/%E3%83%A9%E3%83%8E%E3%82%B2%E3%83%84%E3%82%AF%E3%83%BC%E3%83%ABmv%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E7%97%87%E7%8A%B6.578/)）

なお、Steam版は起動時にライセンス確認のためSteamが立ち上がるのが面倒ですが、自動的にバージョンアップもしてくれるので、ラクではあります。（特にこれだけバグが多い状況だと）

# 拡張性などについて

## プラグイン
シーンエディタに並べるコマンドをユーザが JavaScript で拡張していくことができるようです。

シーンエディタ上での表現も含めてプラグインで書ける上に、JSON ベースの UI フレームワークも内蔵されており、様々なビューが自由に書けるようですので、頑張れば拡張性は高そうです。

作ったプラグインを共有することもできるとか。楽しみですね。

## エンジン構造
基本エンジンの上に Visual Novel エンジンが載っている構造で、シーンコマンドなどを Visual Novel エンジンが解釈し、基本エンジンで実際の表示などをコントロールする、という構成になっているようです。

> 将来的には別のプラットフォームがサポートされ、同じAPIを使用した基本エンジンの実装が導入される予定です。

という記述があるのですが、何をサポートしようとしているのでしょうか。

# 他のアドベンチャーゲーム作成ソフトとの比較
最後に、他のアドベンチャーゲーム作成ソフトと比べてみます。

最近ちゃんとこのあたりを追えていなかったので、何かありましたらコメントなどでご指摘いただけるとうれしいです。

## 吉里吉里
http://kikyou.info/tvp/
> 誠に勝手ながら、kikyou.infoは2017年12月いっぱいをもって閉鎖します。ながらくありがとうございました。

というメッセージを見つけて震撼しているわけですが、日本の PC ADV シーンに NScrpiter と並んで大きな影響を与えた、Windows 向けADVエンジンです。今後は[吉里吉里Z](http://krkrz.github.io/)が引き継ぐのでしょうか。

TJS2 と KAG3 という２層のスクリプト言語層があることが特徴で、シナリオライター兼スクリプター的な人が KAG3 レイヤでシナリオを書き、細かい所はプログラマーが TJS2 でカスタマイズする、という分担ができました。

この TJS レイヤを JavaScript で実現し、KAG レイヤを残しているのが次に紹介する2つのシステムとなります。

当然ながら Windows 用のゲームしか作れません。

（追記）吉里吉里Zの新しいADVエンジンが2018年にOSSで公開予定とのこと（[ソース](https://twitter.com/ank0u1/status/942728021198356483)）

## ティラノスクリプト／ティラノビルダー
[ティラノスクリプト](http://tyrano.jp/)は、JavaScirpt で作られた HTML5 で動く ADV エンジンで、KAG に近しいスクリプト層を持っています。
HTML5 で動くというのは、ラノゲツクールMVと同じですので、同じような方法でアプリ化も可能です。

[ティラノビルダー](http://b.tyrano.jp/)は、ティラノスクリプトをベースに、ドラッグ＆ドロップだけでアドベンチャーゲームを作れるようにした統合開発環境・・・ということで、ラノゲツクールMVとガチ競合ですね。基本版は無料で、Pro 版が1480円。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/151254/218ff290-422f-5b11-36e6-d51777eeb6ad.png)

UI は正直なところティラノビルダーの方がこなれているところもあるのですが、ラノゲツクールMVはプラグインでの拡張性が魅力。ラノゲツクールMVの今後の展開に期待したいところ。
また、 ~~おそらく多言語対応はティラノビルダーは考えたこともない気がしますので、Steamなどで多言語に向けてADVをリリースしたい場合はラノゲツクールMVが良いのではないかと。~~ → [ティラノトランスレータ](https://tyrano.jp/usage/advance/translator) というツールが用意されていました！

なお、ADV エンジンとしては、吉里吉里用語でいうところのユニバーサルトランジション対応がないなど、ラノゲツクールMVに比べて微妙に弱いのですが、実装当時の CSS の表現力の限界だったのかと思われます。

あと、数年前にちょっと使ったときには、文字送りなどテキスト表示周りに微妙な違和感（HTMLっぽさ）があったのですが、最近は良くなっているのでしょうか。

## novelsphere.js
[novelsphere.js](https://developer.novelsphere.jp/doc/o2doc2/) は、まぁ、だいたいティラノスクリプトと同じようなものです。
ただ、こちらはスクリプト層を吉里吉里2の KAG3 と互換性がある、と言い切っているのが特徴です。
ユニバーサルトランジションにも対応しています。（ただしIE除く）

ノベルスフィア上で作品を発表する用途に使う限り無償利用可能、という非常に難しいライセンス。
[動作サンプル](http://js.novelsphere.jp/ja) を見ると、とても出来がよさそうですので、残念です。

## その他
- [LiveMaker](https://www.livemaker.net/)
    - LiveNovel というビジュアルプログラミングエディタがあることが特徴のノベルゲーム開発ツール。
    - Windows 向け。
    - 老舗の一つですが、サイトを見たら2017年現在も更新が行われていて驚きました。
        - 昔は Pro 版もあったのですが、現在では商用含め無料利用可能。
- [Light.vn （ライト・ヴィエン)](http://lightvn.net/)
    - Windows でしかツールが動かないので触れてないです。
    - ドキュメントによると、C++ でも HTML5 でも書き出せるらしい。
    - 独自スクリプト＋ライブプレビュー可能なIDEという組み合わせ。
        - `いちいち作業が必要な面倒なドラッグアンドドロップとは違い` と書かれていて、ですよねー、という気持ちに。
    - 完全無料とのこと。
- [Ren'Py](http://ja.renpy.org/doc/html/)
    - Python で作られたマルチプラットフォーム対応のノベルゲームエンジン。
    - 多言語対応があることもあって、海外のノベルゲームでよく使われていたりする。
- [ジョーカースクリプト](http://jokerscript.jp/)
    - Unity 上で KAG3 に似たスクリプトでアドベンチャーゲームを作れる。
    - Unity なので、スマートフォンにもPCにも出せます。
    - 個人での商用利用は可能。法人は要問い合わせ。
- [宴](http://madnesslabo.net/utage/)
    - Unity 上でヴィジュアルノベルを作るためのツール。
    - Excel 上にシナリオを書くのが特徴。
    - Unity Asset Store 上で $80.00。
- [Artemis Engine](http://www.ies-net.com/?page_id=24)
    - 初期のスマートフォンADVで採用例が多かったイメージがあります。
    - KAG に影響を受けたスクリプトで記述し、各プラットフォーム向けに書き出せるもの。
    - 一般公開されていないため、詳細は不明。
- [司エンジン](https://github.com/t-tutiya/tsukasa)
    - テキスト１文字単位で演出の制御ができることを目指して、実行モデルから新しい提案をする意欲的なエンジン。
    - DXRuby 上で動くので、Windows 専用。
    - Unity 上に移植しているという噂を聞いており、個人的にはとても楽しみにしている。