[JavaScript] RPGツクールMV購入を考えているツクラーが発売前に知っておきたいJavaScriptプログラミングの話
とかいう記事タイトルにしたもののJavaScriptでゲーム作ったことない……。
ので勉強をかねて調べてみようと思いました。
node.js
JavaScript の実行環境。
JavaScript で書かれたスクリプトをブラウザなしで実行できる。それがツクール MV で何に使えるの?って言うと別に直接ツクール MV でゲーム作るのに役立つわけではないんだけど、たとえば素材を管理するのに後述の npm とか使うと便利な予感がしてるんだけどそのために node.js を使おうとかそういう。
npm
node.js のパッケージ管理システム。
パッケージというのはひとまとまりのスクリプトを指す単位で、ツールとかライブラリとかそういうもののことを言う。JS で書かれたツールとかライブラリとかを管理するためのシステムという感じ。
npm を使うとツールとかライブラリとかをプロジェクトごとにインストールしたり最新版にアップデートしたり依存関係を解決したりということができる。
RGSS でスクリプト素材を利用していた感覚だと「ふつうにブラウザからスクリプトをダウンロードしてくりゃいいじゃん?」という感じの人もいると思うんだけど、依存スクリプトが入ってなくて動かないとかそういう悲しい出来事をなくせるのでぜひとも導入してほしい感じがある。
とはいえ MV 上で npm で入れたスクリプトをそのまま使うのはたぶんできないので、MV のプラグインフォルダにスクリプトをコピーする的なツールが必要になると思う。そういうのは node.js で動くツールを JavaScript で書いたらよくて、パッケージ管理が更新されたら自動的に MV のプラグインフォルダにコピーされるみたいな感じのことができればいいっぽい気がする。
ちなみにたとえば npm には禁則を考慮した改行処理を行うライブラリ とかが既にあって ADV 会話スクリプトみたいなものを作るときにめっちゃ役に立つのでまじで npm をどんどん活用しような!
Pixi.js
JS 用の 2D ライブラリ。
ツクール MV の HTML5 版で利用されてる。ネイティブ版はどうなるかわかんないんだけど、少なくとも HTML5 版については 2D 描画まわりは Pixi.js のことを知っておくのがよいと思う。
あと気になるのは Spine に対応してるとかそういうのがある。サイドビュー戦闘でデカい敵がアニメーションするとかなり楽しい予感がする。Spine のエッセンシャル版あたりは割と手が出せる価格なので検討の価値はあると思う。
ちなみに Pixi.js は WebGL を使って描画する。ので、分かる人だと「じゃあ 3D もできるんじゃ?」ってなると思う。ぼくもできる気がする。ので次。
three.js
JS 用の 3D ライブラリ。
「えっ MV って 3D 使えるの?」って思うかもしれないんだけどたぶん使えると思う。
RPG ツクール MV の公式サイト を見ると「グラフィックカード:OpenGL®に対応したもの」と記載がある。現時点では少なくとも HTML5 版では WebGL を使って描画しているので、 OpenGL に対応している必要がある。逆にいうと WebGL を使って描画してるんだから 3D の描画もできる、ということになる。ネイティブ版がどうなるのかしらんけど、OpenGL 任せにしておいたほうがクロスプラットフォーム対応はしやすいと思うのでそうなってるんじゃないかなあという気がする。
ツクール MV で 3D が使えても、エディタが 3D に対応しているわけではないので 3D 部分はほぼ自力で 3D プログラミングしてゲーム作るとかそういう感じになってしまうと思うんだけど、何も 3D ゲームを作るためだけに 3D ライブラリを使う必要はなくて、例えばエフェクトだけ一部 3D 使うみたいな感じのこともできるわけだ。
演出面で使うと立体的な表現ができていい感じかもしれない。
その気になればキャラはドットのままで 3D でマップ作って ワイルドアームズ 2nd とかブレスオブファイア 4 みたいな表現だってできるかもしれない(当たり判定どうすんのとかはある)。
Box2dJS
Angry Birds とかで使われてる 2D 物理演算エンジン、の JS 移植版。
2D 見下ろし RPG で物理演算なんか何に使うねんと言われそうなんだけど戦闘画面だけケリ姫っぽい感じにしたステージクリア型 RPG とかも作れるよね~とかそういう。
物理演算は何もゲームシステムとして使わなくても、プログラマブルエフェクトに利用するとかもできる。画面中を飛び回る弾丸のエフェクトとか作るときに物理演算を利用するとそれっぽいのが作れるかもしれない。
あと最近読んだ記事なんだけど 手続き型のダンジョン生成アルゴリズム っていう記事の中ではランダムに生成した部屋の重なり解除のために物理演算を利用していて目からウロコだったんだけど、Box2DJS があるから ツクールMV でもこういうアプローチでダンジョンのランダム生成ができるんじゃないかと思う。
Tiled Map Editor
フリーのマップエディタ。
JavaScript 製のゲームライブラリとかフレームワークでは定番っぽい。そのわりには単純に tmx ファイルを読むだけのツールはなかったりする。ツクール MV は Pixi.js を使っているので Pixi.js 向けの tiled 用ライブラリを使えばよさそう。
ところでツクールみたいに充実したマップエディタが存在する環境でマップエディタの話をするのはどうなんだという感じがあるんだけど、前述の three.js とか Box2DJS とか使ってゲーム作るってなると既存のマップエディタでは不都合があるかもしれない。それこそケリ姫っぽい戦闘画面を作るんだったら、ピクセル単位でオブジェクトを配置できるエディタのほうがよい。そう、Tiled ならね。みたいな。
Sugar
JS の組み込みオブジェクトに便利な関数を生やすためのライブラリ。
JS は Ruby と違って組み込みオブジェクトになんでもかんでもメソッドついてて便利みたいな世界ではないので、同じ感覚でいるとたぶんつらい。
そこで Sugar とかいうやつで JavaScript を甘くする。
たとえば Ruby だと max とか min とかなんにも考えずに使えるけど JS にはないんだけど、Sugar を使うと配列に max とか min を足してくれる。
今回英語の URL いっぱい引用したんだけど JS 界隈は日本語の情報も結構出てると思うのでこの辺のキーワードで Google 検索しまくるのがいいと思う。
こういうことを書くと「そんだけできるならもう別にツクール使わなくてもいいじゃん」って言われそうなんだけど、2D 見下ろし型の探索シーンとメッセージウィンドウを使った会話シーンがあるゲームを作るのってフルスクラッチだとめちゃくちゃ大変だからね。そういう部分だけ RPG ツクール任せにして、それ以外の部分をプログラミングでカバーするというのは戦略的に正しい。
ツクール MV ならヴァルキリープロファイルみたいに探索シーンは横スクロールアクションにするみたいなのもやりやすくなると思う。RGSS でももちろんそれはできなくはないんだけど、衝突判定を Ruby で書かないといけないのでそれはちょっとつらい。でも JS には Box2dJS があるからね。だいぶ楽ができる。
RPG は自由に作っていいんじゃよ~。楽しいツクールライフを送りましょう。