開発日誌

テクニック

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 特定のセルフスイッチをリセット

2020-09-29 01:11:12

先月、プラグインコマンドで任意のセルフスイッチを消去できる「セルフスイッチ操作プラグイン」を公開しました。

今回はそれの応用編として、マップに入った際、そのマップにあるイベントのうち、指定した名前に合致するイベントのセルフスイッチをOFFにできるプラグインを作成しました。MV/MZの両方に対応しています。

セルフスイッチをOFFにしたいイベント名を、正規表現で指定します。

マップに入った際、具体的にはGame_MapのsetupEventsが呼ばれた際に、その正規表現にマッチするイベント名を持ったイベントのセルフスイッチを消去しています。

セルフスイッチはA-Dから任意のものを複数指定可能です。

マップに出入りするたびに復活する宝箱とか、開けた扉や押したスイッチを元の状態に戻したい時とかに使えると思います。

自分の制作中の作品では、扉のイベント名を「@Door」としておき、このプラグインで正規表現^@(@で始まるものにマッチ)としています。こうすることで、マップに入り直した際、開けた扉が閉まっている(誰が閉めた?とかいうのはナシ)ようにすることができます。

映像も貼れるようにしてみた。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 選択肢表示時にSEを鳴らす

2020-09-27 22:14:14

イベントコマンド「選択肢の表示」で選択肢ウィンドウが表示される際に、効果音を鳴らすプラグインを作成しました。MV/MZの両方に対応しています。

天下御免!からくり屋敷』ではスクリプトで選択肢ウィンドウを拡張したついでにSEを鳴らすようにしていました。

そのせいで、選択肢が現れた時に無音だと、何だか物足りない気がしたので作りました。

実際、RPGツクールVX Ace以降の選択肢ウィンドウは、標準だと右の方に出てくるので、特に「はい」「いいえ」だけの短い選択肢だと目立たなくて、ついうっかり決定キーを連打していて、選択肢があることを見逃してしまうといったことが起こりがちだと思います。

そんな時も、SEがあれば選択肢が出てきたことを喚起できるのではないかと思います。

SEの種類や音量などはプラグインのパラメータで指定できます。個人的にはピッチ150%にした「Saint5」が好み。『天下御免!からくり屋敷』でもこのSEを使っています。

あまり派手さはないですが、今後もこんな感じのちょっとした、かつ汎用的なプラグインを公開していきたいと思いますので、どうぞよろしくお願いいたします。

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] 職業の代わりに二つ名を表示

2020-09-25 20:00:21

長編RPGを作っていてよくあるのが、最初はただの村の自警団兵だった若者が、王国兵として取り立てられ、最終的に世界を救う勇者になる、といったストーリーです。

そしてそのストーリーに応じて変化する立場を、職業名としてステータス画面等に反映したくなります。

普通に実装するとなると、中身は全く同じで、名前だけが「自警団兵」「王国兵」「勇者」などと異なる職業を用意しておき、イベントコマンドの「職業の変更」で「レベルの保存」にチェックして、職業を変更すればよいと思います。

ただこの方法だと、名前しか違わない職業を複数用意する必要があり、途中でパラメーターやスキル習得等を変更する場合は、同じ変更を全ての職業に忘れず反映しないといけないため、非常に手間がかかります。

しかしアクターの属性にはもう一つ、RPGツクールVX Aceから登場した「二つ名」という属性があります。こちらは単純に文字情報のみでゲームには何も影響を与えないですし、イベントコマンドの「二つ名の変更」で簡単に変更できます。

なので、ストーリーに応じて二つ名を「自警団兵」「王国兵」「勇者」などと変更し、ステータス画面等では職業名の代わりにこの二つ名を表示するようにしてやれば、やりたいことが楽に実現できます。

というわけで、プラグインを作りました。MV/MZ両対応です。

このプラグインを導入すると、ステータス画面等で職業名の代わりに二つ名が、二つ名の代わりに職業名が表示されるようになります。後者はプラグインパラメータで非表示にすることもできます。

具体的な使用イメージはこんな感じ。

  1. 本来の二つ名の名称で職業を作成(二つ名を非表示にするなら適当な名前で可)
  2. アクターにその職業を割り当て、二つ名に本来の職業名を設定
  3. イベント中に「二つ名の変更」で本来の職業名を変更

そうするとこんな感じで、ステータス画面上は職業名のところに二つ名が、二つ名のところに職業名が表示されます。

スキル選択画面などではもともと職業名しか表示されませんが、そこでは職業名の代わりに二つ名が表示されます。

やっていることとしては、アクタークラスの二つ名(nickname)を返すところで、「二つ名の表示」パラメータがONなら職業名を、OFFなら空文字列を、二つ名の代わりに返しているのと、ウィンドウクラスの職業名描画(drawActorClass)で、職業名の代わりに二つ名を描画しているだけです。

なので、drawActorClassに手を入れているプラグインとは、競合するかもしれません。

ちなみにdrawActorClassは、MVではWindow_Baseのメソッド、MZではWindow_StatusBaseのメソッドで違いがあるのですが、両方含めることでMV/MZ両対応としました。この方法、間違ってないですよね?

厨二っぽいゲームでもない限り、いまいち存在意義が分からなかった二つ名ですが、有効な使い方が発見できて良かったです!

[ テクニック ] [ ツクール情報 ] タイルセットと戯れる

2020-09-24 23:11:10

先日は「SAKAN - タイルセットビルダー -」をRPGツクールMZで使う方法について書いたわけですが、そもそもSAKANがMZで普通には使えないことに不満を言う人も見当たらなければ、MZ発売から1ヶ月も経つのにアップデートパッチも提供されないことが、不思議だったわけです。

でも実際に使ってみて分かった。SAKAN、恐ろしく使いづれーわ。

書き出しの際に1回ずつ保存しないといけないのはまだ許すとして、直前に保存したファイル名を覚えていてくれないので、毎回ファイル名を選ぶ必要があるのが面倒くさすぎます。一般の画像編集ソフトを使った方がはるかに楽で、パーツ素材集として以外に誰も使ってないんじゃないの? これ。

と言いつつ、「GIMP」だと画像ファイルによってはアルファチャネルの透過処理が上手くいかないこともあったりで、結局タイルセットの組み替えはSAKANで行うことに……。

あらかじめ書き出すタイルセットのファイル名を「!A1.png」とかにして先頭に来るようにしておけば、いちいちファイル名を選び直すのも幾分かは楽になります。他のタイルセットからピックアップしてくる際はドラッグで範囲指定もできるので、本当に1タイル1タイル保存していく必要もありません。

こうして出来上がったタイルセット画像は、このままだとRGBカラーで重いため、「PNGoo」を使ってインデックスカラーに圧縮しました。「GIMP」だとやはりアルファチャネルの処理が上手くいかなかったため、専用のフリーソフトを使用しました。

なんか書いてるだけでもめんどk……

▲外から直接室内に入れる

そもそも何か違和感あるなと思ったら、『小さな大冒険』の時は外観と内装が別々のマップになっているのではなく、ファミコン時代のドラクエみたいに建物の中が素通しになっていて、外と室内が繋がっているタイプのマップにしていました。

現在もこういうのが通用するのか分かりませんが、いちいちマップ移動が発生しないので、街歩きは確実にしやすくなるはずです。

お屋敷とか特別な建物はちゃんと外観を作る予定ですが、普通のお店や民家にいちいち外観を作らなくてもいいんじゃないかな? 外から室内の様子や人物が見えるので、この家はもう入ったっけ?というのも減らせるのではと思います。

しかし、それをするためには、現状の外観と内装が分かれたタイルセットは不向きです。

外観のB、C、および内装のB、CはそのままB〜Eのタイルセットに割り当てるとして、問題はAのタイル群。外観と内装で使うタイル、使わないタイルを厳選して、組み替えました。

床や壁などは先日の日誌で述べたように、MV版の方が一般庶民の家向けで汎用性があるため、主にそちらを採用しました。それとのバランスを考えると他のタイルもMV版の方が合うため、結局ほとんどMV版のタイルセットを生かすことに。

とにかくタイルセットが完成しないことにはマップもイベントも作れないので、何とか連休後半で奮闘。A5のタイルを厳選するのが大変でしたね。

というわけで完成したタイルセットを使って少しマップを組んでみたところ。

▲レイヤーを駆使して屋上を作る

▲村唯一のお店。周囲はもう少し木で飾る予定

[ テクニック ] お行儀良く寝ましょう in MZ

2020-09-22 19:45:55

RPGツクールMZのサンプルゲームである『ウェスプラウ戦記』のスタッフルームで、いかにキャラを自然にベッドに寝かせるか、ということに苦心した残骸が紹介されていました。

▲『夫婦戦争MZ』HAPPY END後の様子
※ ゲーム内には登場しません

確かに言われてみると、明らかに頭がベッドからはみ出しています。ヘッドボード(頭部分にある板)すら乗り越えていますね。逆に足元は余りすぎ。

これは何もMZに限ったことではなくMVでもそうですし、何ならVXの時もそうでした。ただVX時代はキャラのサイズが小さかったため、そこまで気にならなかったのだと思います。

しかし、一度気になってしまった以上はもう後戻りできない!

一番楽な方法は、前述の『ウェスプラウ戦記』でも採用されていたように、キャラの画像ファイルに「!」を付けて、キャラクターが6ドット上にずれて表示される仕様を無効にすることでしょう。これなら頭部は一応収まりますし、画像加工の必要もありません。

しかしこの方法の場合、寝かせる必要のあるキャラ画像全てに!なし版と!あり版の両方を用意せねばなりません。また、寝た状態から起き上がって動き出す、みたいなイベント(オープニングがその予定)を組む際に支障が出そうなので、不採用となりました。

キャラの方を変更しないとすると、後はベッドの方を加工するしかありません。

ベッドの位置をずらして縦3マス分使うようにすれば、歩行グラそのままでちゃんとベッドに収まってくれます。

しかしそうすると今度は、ベッドの頭部分に阻まれて、明らかに後ろを通れそうなのに通れなくなってしまいます(1)。

頭部分を通行可[ ○ ]にすると、ヘッドボードを踏みつけて歩けてしまうので、明らかにおかしいです(2)。

下をくぐれる[ ★ ]にすると、寝ている人の頭が枕の下に隠れてしまうため、これもおかしいです(3)。

いろいろ思案した結果、こうなりました。

まずベッドの頭部分を、下6ドットとそれより上とで別々のタイルにします。ベッドになんと4マスも使う贅沢さ!

ついでに、ベッドの間8ドット分くらいを削って短くします。削った部分が不自然にならないか心配しましたが、MZでなくMVのタイルであれば元がややぼやけているため、そんなに気にはなりませんでした。茶色い布団のベッドは、ヘッドボード部分が他より長いため、削らなくてもそのままいけました。

次にタイルセットの通行設定は、ヘッドボード部分を[ ★ ]に、頭と足部分を[ ○ ]に、中央部分を[ × ]にします。こうすることで、ベッドの前と後ろを自然に通行することができるようになります。

マップエディターでは、ヘッドボード部分をレイヤー3に、それ以外をレイヤー4に配置します。あれだけ4層もいるのか?と言っていたレイヤー機能を、最大限に使っていくスタイル。

以上で、寝ている人も、後ろを通る人も、前を通る人も、自然な形になりました。

うーん……。

キャラの頭身とか、崖のカクカクとか、タンスが壁に寄ってないとか、そんなこだわりでシステムを大改造している様を目にするたびに、プレイする側はどうせ大して気にしてないので、そんなところに労力を使わなくても……と思っていたものですが、これも似たような話じゃなかろうか。

ベッドを直したことによって、他の部分とかも気になり出したりしないかな……。

とりあえず、入口をくぐる時に、明らかに頭をぶつけてるように見えるのは気になるw