物書きが『ツクールMZ』で挑む、デジタルゲーム制作記1 〜サイバーパンク風UIをJavaScriptで構築〜
なぜデジタルゲームなのか?
まだ同人的な本を1冊(それもアンソロジー)しか出していないし、出る予定の本もまだ世に出ていない状態で果たして自分を「物書き」と称してよいのだろうかという疑念はあるのだが、「文芸叢書CAL」のメンバーにならさせてもらっているのだし、まあいいだろうといことで「物書き」で通させていただく。
そんな私が、本来のワークである小説の執筆がひと段落し、AIとの共創をはじめたことで書いている時間が短縮された。AIイラストは世に氾濫しすぎで、AI漫画も少々煮詰まり、AI TRPGは遊んだのを基本コピペしてればいいので、手持ち無沙汰になった。
読書やテレビゲームやアニメや漫画、動画かと言えば、ちびちびかじっているのがちょうどいい。それなら、何をメインに据えようーーと自分の棚卸をしてみたら、音楽、動画、ゲーム制作はまだだったなと。
デジタルゲームを制作すれば、すべて叶うのではと、AIとやりとりすると、拙作『MwILi』という小説がゲーム向きであることが分かった。
簡単に言ってしまうと、ひとつの魂(量子データ)が複数のボディを持てる、さまざまな物語(世界)が多奏している(重なり合い、層にもなり、複雑に絡み合っていること)舞台での冒険譚である。元のジャンルはSFである。
ゲームにするにあたって、TRPGにする手もあったが、多くの人に遊んでもらうにはデジタルゲームにしたほうがいいと考え、世界観、テーマを見せたかったので「ゲームブック型テレビゲーム」の形をとることにした。いわゆるノベルゲーム、ADVのようなものである。
ちょうど手元にはセールの時に手に入れておいた「RPGツクールMZ」があった。聞くところによると、これで望む形のゲームが作れるという。
Gemini NotebookとObsidianで世界観を構築
まずは『MwILi』をテキストファイル化するところから始まった。メモ帳に1話分ずつのを次々コピペしていく。合計320KBほどになった。
次にこれをGemini Notebookに喰わせる。ついでに、Fatecoresystemやstorypath Ultraといった汎用TRPGシステム、使えそうなものをかたっぱしから入れてゆく。

もちろん、著作権フリーのものはいいが、あるものはそのままは使えないのでAIにそう伝えておく。これであるていどやりとりして、ボディの基本構想まで持っていけた。よかったやりとりは、オブディシアンに「ゲーム制作」のフォルダを作ってコピペしてゆく。いわゆる「設計図」だ。

いざ、ツクールMZの画面構築へ
ボディ18種ができたところで、ツクールMZへ。並走して相談していたGeminiにUI画像を作成してもらう。
Geminiの言葉をヒントにhttps://plugin-mz.fungamemake.comを見つける。MZのプラグイン集のサイトだ。
ここから、NovelMessageMZ.jsをダウンロードさせてもらい、MZで新規作成した「MwILi_test」のjsのplugInフォルダに放り込み、プラグイン管理で右クリックし、有効化させる。ほかにもいくつか入れる。
つぎに、UIの常時表示に挑む。
Geminiとのやり取り。
「UIフレーム(枠画像)を「画面の最前面に固定してずっと表示させ続ける」仕組みですね!
ツクールMZでは、画像を画面に出すときに「ピクチャ番号」という管理用の番号を使います。この番号のルールさえ押さえればとても簡単です。
仕組みと設定手順を分かりやすく分解して解説しますね。
最前面に固定される「ピクチャ番号」の仕組み
ツクールMZでは、画像を画面に重ねるとき「番号が大きい画像ほど上に表示される(最前面に来る)」という決まりがあります。
ピクチャ1(背景や立ち絵など) ➔ 奥に表示される
ピクチャ99(UIフレーム枠画像) ➔ 一番手前(最前面)に表示される
イラストや立ち絵を「ピクチャ1」や「ピクチャ2」で差し替えても、UIフレーム枠を「ピクチャ99」などの大きな番号で一度表示しておけば、イラストの後ろに隠れることなく、常に一番手前に固定されて表示され続けます。
具体的な設定手順(1分でできます)
マップ上に「ゲーム開始時に1回だけ自動で動くイベント」を作ります。
① イベントを作る
マップ上の適当な場所(どこでもOK)をダブルクリックしてイベントを開きます。
画面左下にある 「トリガー」 を [自動実行] に変更します。
(※これでゲームが始まった瞬間に自動で実行されます)
② UIフレーム枠を表示する(ピクチャの表示)
右側の実行内容枠をダブルクリックし、2ページ目の [ピクチャの表示] を選択します。
設定画面で以下のように入力します:
ピクチャ番号: 99(※一番手前に出すため大きな番号にします)
画像: 作成したUIフレーム画像(MwILi_UI_Frame など)を選択
位置: 指定 ➔ X: 0, Y: 0
「OK」を押します。
③ 自動実行を止める(入れっぱなし防止)
自動実行イベントは、止めないとずっと同じ処理をループし続けてしまうため、最後に「消去」コマンドを入れます。
「ピクチャの表示」の下の行をダブルクリックします。
2ページ目の [イベントの一時消去] を選択します。
完成したイベントの見た目
イベントの実行内容は、以下の2行だけになれば完璧です!
Plaintext
◆ピクチャの表示:#99, MwILi_UI_Frame, 左上 (0,0), (100%,100%), 255, 通常
◆イベントの一時消去
これでどうなる?
この設定をしてテストプレイを起動すると、ゲームが始まった瞬間に画面全体にUIフレーム枠が「バシッ」と最前面に表示されます。
このあとシナリオが進んで「背景画像」や「立ち絵」を [ピクチャの表示:#1] や [ピクチャの表示:#2] で表示・変更しても、UIフレーム枠(#99)は常に一番手前に残り続けるため、画面を切り替えても崩れない完璧なノベル・ゲームブック画面が完成します!
まずはこの2行のイベントを作って、テストプレイで枠が固定表示されるか試してみてください!」
試したが、上手くいかない。どうやら邪魔しているプラグインがあるといので、オフにしてみたがうまくいかない。

「スクリーンショットありがとうございます!
今度のエラーは Player's starting position is not set(プレイヤーの初期位置が設定されていません) です。
先ほどプラグインのエラーを無事に突破できた証拠ですね!
このエラーはツクールMZで新規プロジェクトを作った直後に100%発生する、とても親切なエラーですのでご安心ください。
「ゲームを始めるための、主人公(プレイヤー)のスタート地点がマップ上に置かれていないよ!」という理由で止まっています。
直し方(3秒で終わります!)
ツクールMZのマップ画面を開く
マップ(格子状の画面)の上の、適当なマス目を右クリック(または画面長押し)します。
初期位置を設定する
出てきたメニューから [初期位置の設定] ➔ [プレイヤー] をクリックします。
Sマークが付いたことを確認
選んだマス目に、「S」という文字(または主人公のキャラクター画像)が置かれたら設定完了です!
この状態で、もう一度画面上の [▶](テストプレイ) ボタンを押してみてください。
今度こそエラーにならず、ゲーム画面(タイトル画面、または設定したイベント)が正しく起動します!」
それでも表示されない。
「スクリーンショットをありがとうございます!
実行内容(ピクチャの表示 ➔ イベントの一時消去)も、トリガー(自動実行)も、完璧に組めています!
画像が表示されない原因は、画面左下の「トリガー:自動実行」と「イベントの一時消去」の組み合わせによる処理スピードの問題です。
自動実行イベント内に「イベントの一時消去」が入っていると、画像が画面に描画される一瞬(1フレーム未満)の間にイベントが消去されてしまい、画像が表示されないという状態になります。
直し方(一番確実でキレイな方法)
「イベントの一時消去」を消して、セルフスイッチを使ってイベントを1回だけ実行させる形に変更します。
① イベントコマンドを調整する
実行内容の中にある ◆イベントの一時消去 をダブルクリック(または選択してDeleteキー)で消します。
代わりに、1ページ目の [セルフスイッチの操作] を追加します。
セルフスイッチ: A
操作: ON
これで、実行内容は以下のようになります:
Plaintext
◆ピクチャの表示:#99, Gemini_Generated_Image...
◆セルフスイッチの操作:A = ON
② 2ページ目を作る(1回動いたら終わりにする)
画面の上側にある [EVページ作成] ボタンを押します。
上のタブが「2」に切り替わるので、左側の 「出現条件」 の スイッチ(セルフスイッチ)にチェックを入れます。
条件:セルフスイッチ A が ON
トリガーは [決定ボタン] のままでOKです(実行内容は空欄のままで大丈夫です)。
なぜこれで解決するの?
これでゲーム開始時に「自動実行」でピクチャが表示され、そのままセルフスイッチAがONになって「空欄の2ページ目」に移行します。
イベントが一時消去されずに裏で残り続けるため、ピクチャ#99は画面に固定されたままずっと表示されるようになります!
ぜひこの手順で試して、テストプレイ(▶)を押してみてください!」
ちゃんとやっても表示されないと思ったら、ウインドウが隠れていた(汗
こんどは画像が大きすぎる!

拡大率を変え、「35パーセント」が最適だと判明する。

ここまでで、最初の1歩はよかろうと区切りをつけたのだった。
ちなみに始めたのは2日前である。
順調にはいかないと思う。他のものに浮気したり、停滞、煮詰めなどもあるだろう。それでもアドバンテージは、素材(完成品の小説、TRPG本など)がすでにそろい、結果を出してきているということだ。ツクールMZの一歩目も歩みだした。これから、少しずつでも、一歩一歩進めていきたい。
