Lunatlazur Mar/31/2026 22:38

次回作に向けて【記:あおたく】

ロストアンファウンド、プレイいただきありがとうございます。おひさしぶりです、あおたくです。

ロストアンファウンドではメニューをはじめとしたUIまわりの実装とか、プラグインの調整とかをやりました。ロストアンファウンドを作りながら、プラグインまわりで「もっとこうなっていたら作りやすい」などいろいろ考えたことがあり、今は次回作に向けて、ツクールMZのシステムに大きく手を入れています。

手始めに、ウィンドウをイベントコマンドから作れるようにするプラグインを作っています。従来、イベントで自作のシーンを作ろうと思うと、ピクチャボタンや文字列ピクチャを使ってUIを組むことが多かったと思います。マウス操作はそれでいいんですが、ゲームパッドやキーボード対応を含めてイベントだけで組むのはけっこう大変です。

かといって、自作シーンを作るのは、それはそれで骨です。停滞中のガストロノーツはここがちょっとしんどくてなかなか先に進めていなかったし、ロストアンファウンドのメニューを作るときもそこそこ大変だったこともあり、方針から見直すべきだと感じました。

なぜUIを作るのは大変なのか

一つには、ツクールのウィンドウシステムはシーンクラスと強く結びついていて、シーンクラス側からウィンドウに対してレイアウト情報を渡すし、ウィンドウクラスは特定のシーンで呼び出されることを想定して実装されます。相互に結びつきあっているので、両方書かないといけなくなっています。

あるいは「マップシーンにウィンドウを追加したい」というときに、やはりマップシーン専用のウィンドウクラスを作って呼び出して配置します。メニューシーンと同じような内容を表示するのに、マップシーンでもウィンドウを作らないといけない。両方で使えるようにしようとすると、分岐をたくさん書く必要がある。

そして最大の問題は、座標が絶対値指定であることです。相対指定できないか、できてもとても弱い。たとえば、右のメニューは幅300pxにして、左のコンテンツ本体はウィンドウの残りの幅全部、みたいな書き方をしようと思ったら Graphics.boxWidth - 300 みたいなコードを書かないといけないわけです。実際にはこれにマージンやパディングの計算が入る。画面を見ながら微調整を繰り返す。コード上で。これが一番のしんどさのもとになっています。

世の中にはウィンドウやシーンを自作できるプラグインもあります。いくつかは見てみたことがあるのですが、ウィンドウ設定を手書きできるようなものではなかったので、結局画面を見ながらポチポチボタンを押す作業からはそれほど解放されません。

どうすれば解決できるのか

私は長らくウェブページの制作をやっていて、HTML/CSSで狙ったレイアウトを書くことは割と得意な方です。そしてなぜ楽かというと、flexboxのような「制約ベースの記述」が充実しているからです。そしてiOSのStoryboardやFigmaなどのUI/UXツールが、やっぱり「制約ベースの記述」を採用しています。これにはデバイスサイズの違いという解決したい課題があるからというのはもちろんそうなのですが、結果として絶対値で目視でピクセル合わせをするという苦痛から解放されやすくなっています。これがほしい。

そういうわけで、今作っている汎用ウィンドウレイアウトシステムでは、レイアウトをJSONで書いて画面サイズや親ウィンドウに対する相対サイズ指定ができるし、描画座標の相対ピクセル指定もできます。それをプラグインコマンドからマップシーンのどこでも呼ぶことができて、データベース項目を条件で絞り込んでリストで描画するようなこともできます。記事の最初でお見せしたスクリーンショットがまさしくそうです。シーンクラスを書かなくても、専用のウィンドウクラスを書かなくても、プラグインコマンドからJSONでレイアウト定義を書けば任意のシーン、任意のウィンドウが作れます。

とはいえ、画面を見ながら調整する作業自体はゼロにはなりません。でも、減らせます。ぐっと減ります。調整しやすい。「一箇所変えたらほかも全部直さないといけない」が起きにくい。

コマンドリストは、アイテム選択のイベントコマンドのように、選択結果を変数に格納して条件分岐できるようになっています。イベントコマンドだけでシーンが作れる……かもしれません。その実証はこれからやる予定です。

これでツクールMZの寿命を5年伸ばすつもりだったのですが、どうも新しいツクールが出るみたいです。まあそれはそれとして今作っているものは新しいツクールが出る前に完成させたいし、もしかしたらプラグインシステムに互換性が……あるかどうかはあんまり期待しないほうがいいかもしれませんが、まあ、知見は生きるでしょう。

今回はここまで

次回作に向けて作ったプラグインは、公開したり、あるいは販売したり、何かしら考えています。ちょっとまだアルファ版にも満たない状態なので、もう少し先になるとは思います。汎用ウィンドウレイアウトプラグイン以外にもいろいろ作っていて、そちらについてもいずれお話できればなと思っています!

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

Monthly Archive

Search by Exclusive Perks

Search Articles