【MV講座】既存のシーンを改造したい

RPGツクールMVは楽しいですね。
最近はC#の方が好きになってきてしまいましたが、僕はプログラミングの基礎をほぼ全てをRPGツクールで学んだと言っても過言ではありません。
そんなプログラミングの学習にぴったりのRPGツクールですが、ほとんどの方はプログラミングの学習なんてどうでもよくて、「もっと自由にゲーム画面をデザインできたらなあ」とか「こんな追加機能を作れたらなあ」と考えているウェイトの方が大きいと思います。

そこで今回は既存の画面を改造するプラグインを制作してみましょう(前回の講座では、まっさらなシーンから色々と組み立てて行きました)。
この講座を読み終えるころには、こんな画面の制作もお茶の子さいさいですよ

注*誇張がかなりあります。

何を作るか

既存の画面を改造すると一言で言っても、何をどう作るかを決めなければお話になりません。
そこで今回は、タイトル画面を改造してみることにします。
僕の制作したプラグインにも、タイトル画面を改造するものがありますね(TitleSceneExtensions)。
このTitleSceneExtensionsについて説明する……というのは僕が楽しくないので、全然違うプラグインにしましょう。

何にしましょうか。
そうですね。
『タイトル画面の背景を自動でスクロールさせられるようにする』プラグインなんかどうでしょう。
ついでに『パーティクルっぽいものも表示させられる』ようにしてみましょうか。

はい仕様が決まりました。
では作っていきましょう。

注*ここだけの話、TitleSceneExtensionsは色々と不完全です。あんまり人気もないですし、他に色々と作りたいものがあるので更新が疎かになっていますが、そのうち更新したいですね。

まずはテンプレートを用意する

プラグインを制作するとき、どんなプラグインでだいたいそのまま使えるコードの雛形(テンプレート)をあらかじめ作っておき、使い回すと楽です。
今回もテンプレートを使用しますが、ここで用意したテンプレートは、説明を簡略化するために僕がいつも使っているテンプレートとは若干異なります。
その点だけご了承ください。

テンプレートのURLはこちら

以下では、このテンプレートをもとにプラグインを制作します(プラグインコマンドの説明とか、更新情報とかはあとで書き換えます)。
また、今回の講座の本質とは関係がないので、テンプレートのコードについての細かい説明はしません。

タイトル画面のコアスクリプトを読む

タイトル画面に機能を追加することが決まりました。
では、まずやるべきことは何でしょう?
それは「タイトル画面のコアスクリプトを読む」ことです。
これをやらないことには何も始まりません。
タイトル画面のコアスクリプトは、jsフォルダ内の「rpg_scenes.js」ファイルに記述されています

注*ここで「タイトル画面」と言っているのは、タイトルシーンのことです。

「rpg_scenes.js」は結構な分量がありますが、タイトル画面に関係する部分は「Scene_Title」と検索をかければ出てきます。
コメントで「The scene class of the title screen.」とズバリ書かれている行から下がそうです(一応翻訳しておくと、「タイトル画面のシーンクラスです」という意味です)。
ここを読んでいきましょう。

わりと分量が少ない

「タイトル画面って言っても、色々表示してるし、さぞ複雑なんでしょう? 自分じゃ読めないよ」と思った方、ちょっとお待ちください
まずは実際に見てみてください!
見ましたか?
見ましたね?
なんと100行程度しかありません(改行とか、ほぼ内容のない行もあるので、実際にはもっと少ない!)。

こんなに短くコードが済んでいるのにはわけがあります。
まず、このタイトル画面はScene_Baseというクラスを継承しています。
このクラスは前回の講座で用いたものですね。
このScene_Baseに色んな機能が詰まっているので、実際にプラグイン開発者が意識しなければならない部分がぐんと減っているわけです。

次にタイトル画面の選択肢の表示(スタートとかコンティニューとかオプションとか)について説明しておきます。
Window_TitleCommandというクラスのインスタンスが選択肢表示機能のほぼすべてを担っており、今回の目的(背景をいろいろ変えたい)を達成するにあたってはWindow_TitleCommandを理解する必要はありません。

注*とはいえ実際にコードを眺めてくださった方なら、「setHandlerってなんやねん。Scene_Titleの中でなんか処理しとるやんけ」とか思うかもしれませんね。
これは処理を委譲しているだけなので、今回は気にする必要はありません。無視しましょう!

実際に見るべき箇所は少ない

というわけで、無視できる箇所を除いて、簡単にそれぞれ解説しておきます。

initialize→初期化するヤツ
create →実際のオブジェクトを色々と作るヤツ
start →createのあとに実行されるヤツ
update →毎フレーム呼ばれる大切なヤツ(ここに処理をぶっこみまくると、重くなるので要注意)
terminate →タイトル画面からセーブ画面とかに行ったとき、タイトル画面の背景が表示されてますよね? アレを実装するためのヤツ。
createBackground→はいこれ。これが今回のプラグインで一番大事なヤツ。
createForeground→タイトル画面の文字とか画像とか表示するヤツ。

とざっと見てきましたが、「createBackground」が出てきましたので、ここらで止めましょう。
大事なのは「createBackground」ただ一つです。
この講座では、こいつを改造していきます。

まとめ

というわけで、今回はまだ全然プラグインを作っていませんが、既存のプラグインを改造するにあたっての大前提である「何を作るか」「どこを改造すればよいか」が判明しました。
大いなる一歩です。
はい、そういうことにして終わります。
ほな、また。

注*この講座は前回の講座を読んでいることを前提に書いています。
たぶん前回の講座で解説した用語しか使っていないと思うのですが、「なにその用語?」みたいなものがあればTwitterでもなんでもいいので教えてください!
どっかに追記します。たぶん。

フォローする