コメントする前回に引き続き、ノベルゲームのベース的なものを作っていきたい。表示、操作周りを整えてついに本編のストーリーを考え始めるかと思いきや、まだまだベースのほうを調整します。カスタムメニュー周りの機能を充実させていくことによって実際にゲームを作り始めた際の負担をなるべく減らしていきたいみたいな考え方。言う訳で前回課題として残ったマウス操作周りを対処していこうと軽い気持ちで始めてみたらとんでもない大改修になってしまった。その作業量たるやメインテーマのチャート機能作成が途中で妥協してしまうレベル。見た目は地味な変更過ぎてまったく伝わらないのが悲しいけど、一応そのあたりを中心にまとめていきたい。ノベルゲームを作りたい名作アドベンチャーとか、ノベルゲーム制作プラグインなどに触れたことでなんだか熱が上がってきてしまったノベルゲーム制作欲。今時なら専門の製作ツールがいくつもあるのだけどせっかくなので日頃触れているRPGツクールMVの可能性を見てみたい。いうことで自作してみた、という流れ。ちなみに、前回分に関してはこちら【RPGツクールMV】ノベルゲームのベースを自作してみた基本的な構成、ゲーム内容、メニューの基本についてはこちらのほうでかなりざっくり説明してあるので今回は割と足早に本題へ行きたい。前回最大の問題点であるマウスクリック対応について。今回分でも改めて触れてみて感じたけどキーボート、パッド操作に比べて挙動が特殊過ぎるんだが何だろうこれ。入力系統としては同じもののはずなのに、マウスクリックだと誤動作したり、無反応になってしまうイベントがいろいろあり大苦戦。マウスはいいんじゃないかな。本気で思い始めているのですが、その上にさらにタッチ操作なる未知種が存在しているので向き合わないわけにもいかない。マウス操作対応まずはメインイベントから。今回からの大きな変更点として今まで自動イベントだった各シーンのイベントを並列処理イベントに変更しました(画像下、トリガーの部分)。後ほど触れますが、メニューに関してあるプラグインを追加で使うことにしたのですが、キーボード操作などでは割り込めるタイミングでもなぜかマウスだけは無反応という現象が発生しあれこれ調べてみたところ、並列処理イベント中ならば反応してくれるということが分かったので、変更という流れになります。メインイベントを並列処理で行ってしまうという非常に不安の残る変更ですが、今のところ順調に動いてくれているので何とか大丈夫かと思われます。その他変更点としては出現条件がプラスされていますが、これは並列処理ならではというか、メニューを開いている最中や、セーブ中でも隙あらばイベントを実行してくるアグレッシブさに対処するため、テキストを表示してほしくない場面などでイベントの切り替えが出来るように配置したものです。この辺は自動イベントなら何もしなくても問題なかった点なので微妙にマイナス点なのですが、マウス対応という大義の為には仕方ないですね。二ページ目は自動イベント。前回で触れたページのリフレッシュ系の処理をまとめてあります。後にチャートなどで自由にシーン切り替えを行う場合のことを考えてセルフスイッチはオフにして繰り返し同じシーンが見られるようにしてあります。管理上楽そうなのでそのままにしてみたり。ここまで完全に見た目に現れない変更点ばかりですが、残念なことにまだまだ続きます。カスタムメニューに関して。前回は一つのコモンイベントでほぼ作成されていたカスタムメニューですが、今回から起動時のイベントと中身が別になりました。次の画像を見て貰えばわかる通り、マウス対応の為です。中身に関しては前回適当に埋めていたその他のところにチャート関連のものが入るだけで大きな変更点はありません。クリック対応のカスタムメニュー。スイッチの名前にやたらクリックと書いてある辺りに怨念めいたものを感じますね。先ほども触れた通りなぜだかマウス操作とキーボードの操作で反応が異なる点があります。メニュー周りでも同様で通常のキーボード操作では問題ない場面でも、クリック操作だとなぜか並列処理イベントが割り込んできてしまったり、メニュー画面の選択肢が出ているのに文章送りのループがなぜか生きていて表示がバグるなどやりたい放題。キーボードとマウス操作を同時にしなければ問題ないので普通のRPGならあまり気にしなくてもいい点なのですが、ノベルゲームだと文章送りはマウスでスキップはキーボードみたいな操作もあり得そうなので意外に問題。今回の場合はメニューを開くイベントを完全に隔離して、なおかつ片方が実行されているときにはもう片方は実行されないような感じにして対処しています。画像的に見栄えのある追加要素、メニューボタン表示になります。前回かなり笑えない問題としてマウス操作でのメニューを開く難易度の高さがあったので、それの対応策として常時画面に表示されるボタンを導入しました。文章表示の際などメニューを開ける場面で表示し、マウス操作の人はそれをクリックしてもらうことによってメニューを開けるといった仕組みになります。メニューボタン作成には画像にコモンイベントを仕込めるようになるプラグイン『PictureCallCommon』を利用させてもらいました。プラグインコマンドの内容としてはピクチャ10番を押した際にコモンイベント11「カスタムメニュー(クリック対応)」を起動ピクチャ10番に対して右クリックのリリース時に「OK」キーを入力の二種類になります。後者はメニューを開く際に起こる、とある現象の対応策として入れてみましたが、効果のほどは微妙なので詳細に関しては割愛。今回初めての花のある画像やったー。画面切り替え時、メニュー画面を開いている最中などを除き同じ位置に配置して押せるようになっています。ボタンに関しては完全に自作。シンプルなものにしてごまかそうとしてますが隠しきれないデザインセンスのなさに泣いた。ゲーム本編に関係する変更点は以上となります。画面にボタンが一つ追加されるだけという変わり映えのなさなのですが、その一つの追加、通常のほうのメニューとの連動、テスト周りで思うようにいかないバグやら挙動やらが本当にもうわらわら出てきてですね。マウスでメニューを開いた後キーボードで閉じて見たら会話が一つ飛ぶバグみたいな理解できないところに影響が出るものもありてんやわんやでした。身の丈に合ってないことをしている感が出てきた感じもしますが、一応熱意があるうちは頑張りたいですね。カスタムフローチャートと言う訳で今回の本題、カスタムフローチャートについて。ノベルゲームと言えばフローチャートだろ。いうほどにはあまり見かけないような感じもしなくないですが、街みたいなマルチ視点アドベンチャーというのはいつの時代もあこがれるもの。今回はピクチャの描写を主に使ってフローチャートっぽいのを再現していきたいと思います。いう意気込みだったのですが、前のマウス対応で予想外に時間を使ってしまったので今回は割と中途半端な形になります。カスタムフローチャートの基本設計について。ノベルゲーなんだから、フローチャートをつけてみたい。全部画像で用意するのも、修正したりするのも手間だなあ。基本のパーツだけ用意してツクール側で適当に作ってくれるイベントを作っちゃえばいいんじゃね?という発想から生まれたものです。実際試してみたところまだまだビジュアル面に難ありといった感じですが、思ったよりは自動生成っぽくなっていると思っているので生温い目で見守ってください。実際の設定内部に関して。今後の取り回しのことを考えてイベントを複数のブロックに分けて作りました。シーンアイコンの配置イベント座標計算イベントシーン接続イベント接続総合管理イベントの四種類となります。理想形としてはシーンアイコンの配置イベントと接続総合管理イベントの二種類に数値を設定するだけで残り二種類のイベントが勝手に生成してくれるといった感じの設計になります。出来るだけ楽できるように作りたかった感だけでも伝われば幸い。コモンイベント「カスタムフローチャート」になります。基本的な設定の他、イベントとしての本体も兼ねており、実行時にはこちらのコモンイベントが読み込まれるという形になっています。いえ細かい処理に関してはほかのコモンイベントで行うのでこちらでやることは割と簡素、になる予定でしたがいろいろ詰め込んでいるうちにちょっと混雑してきたような。隙を見て整理していきたいです。表示する画像、シーンID(追加予定)を置くだけ。座標変数に関しては画面を48×48単位で割ったマス目単位で捉えて十の位にx座標、一の位にy座標を入れるという形式。ツクールでいうところの(2,4)マスなら24、(5,5)なら55といった感じ。この辺りは正直、数値を入れると勝手に向こうが計算してくれるという仕組みを作りたかっただけ感はある。後述する計算イベントによって割り出した座標にシーンアイコンをピクチャ表示して完了。一応該当シーンを閲覧するまでは非表示にしておくように条件分岐で囲ってみたりしました。シーンIDに関しては現状そのシーンに入ったことのある証明として採用を予定しているが、利便性を考えると別にした方がいいかも?といったところ。同コモンイベントの後半部分。コモンイベントでアイコン同士の接続を行ってフローチャート感を出していくといった感じ。表示を終えた後はお約束のループイベントで入力待ち。今回分では画面を閉じるためのみに使用していますが、後々キー入力などでアイコンを選択、シーンの説明とかジャンプ機能とかを入れられるようにしていきたいと前向きに検討中です。フローチャートを閉じる際にピクチャの消去を行うのですが、今回フローチャートの生成にやたらめったらピクチャを使用するので、その一つ一つを削除していたらやってられない。いうことでスクリプトに頼ってみました。チャートの表示周りに使っているピクチャ番号は11以降なので、カウント11から適当に100迄のピクチャを乱雑に削除。見た目簡単そうですが、基本機能のほうだと1行で一つの番号のピクチャ消去しかできない上に消去対象に変数を使えないので、消すだけでも90行近く並べないとできない処理が簡単にできます。前まで面倒でも安定性を考えてツクール内の基本機能で済ませておこうという考え方だったのに、最近行数的に面倒臭そうな処理があるとスクリプトを探す癖がついてしまった。これが慣れということなのか、悲しいね。こちらが座標計算のコモンイベント。引っ張ってきた座標IDをばらしてXY座標の変数にそれぞれ格納した後、マス目に合わせた数値調整をして返すといった形。ぶっちゃけ分ける程度でもない簡単な計算なのですが、この素材を投げて成型されて帰ってくるというやり取りが工場チックで素敵だと思うのですがどうでしょうか。テストしてみるとこんな感じ。画面の大半を使っているウィンドウがフローチャートの表示用。ここが内部的にマス目状に区切られているので場所を選んでシーンアイコンやら線とかを配置していくという形になる。背景画像は毎度おなじみMADOを使用して拵えたものを画像編集ソフトで無理やり組み立てたもの。スクリプトでもウィンドウの生成は意外に面倒らしくてプラグインだよりっぽいので今後もこういう形になっていく予定です。見えづらいけど左上にある青い四角がシーンアイコンになります。今回制作分のある意味肝と言えるシーン接続について。今後楽したいという一心で比較的簡単な設定のみでフローチャートを作れるようにしたい、というためのコア部分になります。小難しい表示は全部頼むといった感じの詰め込みようなので無駄が多いうえに長くなりますがご容赦ください。1枚目は変数埋め込み地獄やっていることは一つ前の座標計算とほぼ同じですが、線の描写に使う都合上微妙に数値設定が異なる点があり、使いまわしできず、畜生。距離を計算して後のループイベントで活用するといった形。接続先はアイコンの上部分を基点として利用するので微妙に計算が異なっています。二枚目は変数の設定を終えて最初のアクションから。今回のフローチャートでは基本的に接続元が上、接続先が下という形を想定して、接続する二点間に高低差がある場合のみ描画を行うという形になっています。最初の一歩は下に伸びる線になるはず、という思考でまずは直進。この線はマス目でいうところの一つ下にあるアイコンとのちょうど中間で止まるようになっているので、そこで、目標地点とX軸上の距離があるかどうか確かめます。あった場合はその方向の左右どちらかに向かって曲がり進んでいくという流れになります。今回のフローチャートではできる限り楽しようという概念から途中途中の障害物の感知を一切行わず、なるべくぶつからないようなルートどりをするというものになっています。各シーンアイコンは周囲一マスをあけてあるので、その隙間を縫って目的に向かうという感じでルート決定をするといった感じです。線の描写にはおなじみピクチャの表示を利用するのですが、今回は途中、ループを活用して多数のピクチャを扱う場面があったり、複数のルート接続を同時に行う処理上、ピクチャ番号の設定が大変なことになってきたので、変数を埋め込んで使えるスクリプトの力を借りることにしました。座標設定には各座標を足し引きして作ったチャート位置XY、各種判定には同じような形で用意した距離XYを用います。二枚目の時点で目標とのX軸が同じか、あるいは曲がって下が空欄になっている状態なので、Y軸方向に進んでいきます。目標地点は対象の上部付近なのでその高さになるように下に線を伸ばしていきます。対象との距離がマス目でいうところの一マスになったあたりでストップするといった感じです。この時点で高さに関しては目的位置にたどり着いているはずなので改めて左右判定。左右のどちらかが大きい場合はそちらのほうに向かって曲がるといった形です。最初のカーブと合わせて二度曲がる機会があるので、見栄えとしては少し奇妙な形になりがちですが楽するためには仕方ない。左右に曲がったうえで足りない分を再びループする形で伸ばしていきます。ここで線を引くのに使ったパーツは適当に画像編集ソフトで作ったのですが、なんかこれ以上ないってくらいシンプルに仕上げたのに素人感が半端ないんですけどどういうことなんでしょうか。見た目のいいパーツのつくり方が知りたい。ここまでくれば目標地点の上部に線がたどり着いてくれているはずなので、最後に下に線を伸ばして到着、といった形になります。調整してはズレ、数値を弄って、変な方向に線が飛び出して、画像を修正したらブツブツに途切れる、と作っていてうすうす感づいてはいたけど、これ普通に毎回手作りでチャート作っていった方が間違いなく楽。接続総合管理イベントのほうでルート接続の設定を行うといった感じ。ここでは接続元と接続先シーンのIDを入力して、先ほどのコモンイベントに投げ込むといった形。そのうえで条件分岐を用いて、シーンアイコンの表示と同時タイミングでルートがつながるようにしてみた。複数のルートから行ける、いわゆる共通ルートに関しては遷移元のシーンIDも条件分岐に入れてどちらのルートから来たのか判別するみたいな方式にしてみたけど、効果のほどは不明。基本形としては最初に説明した通り、カスタムフローチャートでシーンアイコン生成、ここで接続設定の二工程のみでフローチャートっぽいものが作れるのでこれからの作業がだいぶ楽になる、はず。シーンを進めてみてから、確認、無事つながる。この一歩は小さな一歩だが、フローチャートを楽して作りたいという自分にとっては大きな一歩なのだ。感動するのもつかの間、このあたりで根気が尽き始めたため、この後予定していたチャートの表示周りの作業は先送りに。なんというか、本当に今回ビビるくらい進展ないなコレ。適当に追加して、ごてごて伸ばしてみた。やって複数がちゃんと結べているのを見るとなんか出来たって感じが出てきますな。青色アイコンは既読、灰色アイコンは未読、もう一つ選択中アイコンみたいなのも用意していたけど今回は見送り。これだけだと狭いからページスクロール、はおそらく無理なので、改ページ機能とか、現在通っているルートだけ線の色を変えるとか、交差しちゃっているルートを判別できるようにするとかいろいろやりたいこと、改善点が出てくるけど、今回はここまで。以上カスタムフローチャートを作ってみるでした。ノベルゲーム制作に触れるなら一度は作ってみたいと思っていた要素で最悪お蔵入りする可能性もあるかも、とか思っていましたが、とりあえずちゃんと動いてくれるような出来になって一安心です。いえまだ見栄え自体はまあ、仕方ないけど機能面等でいろいろ遊べそうなので、ちくちく触っていきたいですね。おまけ画像編集ソフトで作った初期フローチャート構想案をペタリ。この位までゲーム上で自由にカスタマイズできるようになったら面白そうだけど、たぶん熱意のほうが先に燃え尽きそうですね。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。