開発日誌

ツクール情報

[ テクニック ] [ 素材 ] [ プラグイン/スクリプト ] [ ツクール情報 ] 敵の蘇生対象がランダムにならない不具合修正

2022-01-19 01:47:24

敵が蘇生スキルを使ってくる際に、死亡者が複数いたとしても、ランダムではなく必ず先頭の死亡者が対象になってしまうという、RPGツクールMZのコアスクリプトの不具合を修正します。

RPGツクールMVにも同様の不具合があるのですが、ターゲット選択部分のコアスクリプトの構造が微妙に異なるため、今回はMZ専用プラグインとなります。MVへの移植も容易なのですが、検証作業がめんd

以前にも「正しい蘇生術」で、RPGツクールVXに同様のプリセットスクリプトの不具合があることを解明し、修正スクリプトも公開していました。

当時の不具合は、Game_BattleActionのdecide_random_targetメソッドにおいて、対象が味方単体(for_friend?)ならば(生存中の)味方からターゲットをランダムに決定、対象が戦闘不能の味方単体(for_dead_friend?)ならば戦闘不能の味方からランダムに決定、としているつもりが、for_friend?にはfor_dead_friend?の場合も含まれるので、この判定順序では対象を戦闘不能の味方にしていても通常の味方単体で選ばれてしまう、というものでした。

実はMZが出た時に、この不具合がどうなっているのか、コアスクリプトを調べてみたことがあります。

対応するGame_ActionのdecideRandomTargetメソッドを見ると、ちゃんと戦闘不能の味方(isForDeadFriend)を先に判別しており、さすがに不具合は解消されているものだと思っていました。

ところが最近になって、蘇生魔法を使用する敵を作って戦闘テストをしていたところ、何度試しても先頭の死亡者ばかり蘇生してきます。

そこで改めてコアスクリプトを検証してみたところ、Game_ActionのdecideRandomTargetは敵の通常行動時に呼ばれるものではなく、敵がターゲットを決めるメソッドはmakeTargetsであることが判明しました。そしてここから呼ばれているtargetsForDeadを見ると、敵が蘇生スキルを使用するという前提がないせいか、先頭の死亡者が選ばれるような構造になっていました。

本プラグインはそれを修正して、敵が蘇生スキルを使ってくる際に対象者をランダムに選ぶようにしたものです。

質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

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

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のタイルを厳選するのが大変でしたね。

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

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

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

[ テクニック ] [ ツクール情報 ] RPGツクールMZでSAKANを使う

2020-09-21 18:22:44

RPGツクールMVには、専用ツールとして「SAKAN - タイルセットビルダー -」というタイルセット作成ツールが別売りであります。

MVのタイルセットを読み込んで、既存のタイルセットを組み替えたり、新たなパーツを追加したりして、新たなタイルセットを作成することのできるツールです。RPGツクールMVのメニューからも直接呼び出して使うことができました。

しかしこのSAKAN、最新版のRPGツクールMZには対応していないようで、MZのメニューから呼び出すことはできません。そもそもMZのプロジェクトファイルを開くこともできず、一見するとMZでは使えないように見えます。

が、MVとMZでタイルセットの仕様は一切変わっていないはずです。

プロジェクトファイルと言っても、中身は単に「RPGMV 1.6.2」とか「RPGMZ 1.0.2」とか、ツクールのバージョンが書いてあるだけのテキストファイルなので、どう考えてもこのファイルを起点に「data/Tilesets.json」と「img/tilesets」を読み込んでいるだけのように思えます。

▲MZの台座にSAKANの付属パーツを乗せてみた

というわけで試しにMZのプロジェクトファイルである「game.rmmzproject」をコピーし、それをMVの拡張子である「game.rpgproject」に名前変更。それをSAKANで読み込んでみたところ、問題なく動作しました。

規約上も、特にMV以外で使うなとは書いていませんし、ツクールシリーズであれば問題ないはずです。バグや不具合を突いてのセキュリティー解除行為でもないので問題ないはず。

あ、言うまでもないことですが、使用は自己責任にてお願いします。

おそらく近い将来、MZ対応のアップデートがなされるか、あるいはMZ対応版の「SAKAN MZ」がリリースされるか、どちらかだろうとは思うのですが、待っていられないので、しばらくはこの方法でタイルセットの作成をしていきたいと思います。

さて、RPGツクールMZのデフォルトのタイルセット。ぱっと見はイケてる感じがして好印象だったのですが、いざ実際にマップを作ろうと思うと、いまいち使いづらいことが多いです。

▲VX時代の阿石邸は庶民の一軒家

▲MZ時代の阿石邸は内装も豪華に

床やじゅうたんなどMVの時と比べて全体的に見栄えが良くなりましたが、こんな豪華なタイルセットは、貴族の大邸宅を作るには十分ですが、田舎の村や一般庶民の家を表現するには使いづらいです。

なので、適宜MVやバンドル版で付属してきた「MV Trinity素材集」のタイルセットを組み合わせて、独自のタイルセットを作ろうと思っていますが、正直そこからかよ!という気も……。

[ テクニック ] [ ツクール情報 ] 柵の向う側

2020-09-13 03:38:13

そう言えば、何の変哲もなさそうなこのマップですが。

実はこのマップを作るのは、ちょっと苦労と工夫があったんですよね。

というのも、何も考えずにこのマップを作ると、こうなります。

上と左右の柵が、何だかゴツいですよね。

柵はオートタイル扱いですが、マップの範囲外にも同じ柵タイルが存在するように扱われていて、それで柵が画面外に繋がっているわけです。下にある道タイルは画面外と繋がっていた方がいいのですが、柵がこうなっているのはちょっと困ります。

▲知らない人も多い機能の一つ、マップのシフト

というわけで、どうしたかと言うと、いったんマップのサイズを1回り大きくして、周囲を1マス空けた上で柵を張り巡らし、マップのシフト機能で上と左にそれぞれ1マスずつシフトして、最後にマップのサイズを元の17x13に戻しました。

あれ。VX版で同じマップを作った時は、こんな苦労をした覚えはないんだけど……と思って確かめてみたら、どうもRPGツクールVX Aceからの仕様のようですね。VXとVX Ace以降では、柵や茂みなどのタイルの扱いが変わったので、それに伴う仕様変更かなとも思うのですが、ちょっと厄介ですよね。

柵以外のオートタイルは、むしろ外側に繋がってくれた方がありがたいと思うので仕方ない気もしますが、一方で何とかならなかったのかという贅沢な気持ちも。

町や村の周囲を柵で囲む、みたいなことはよくあると思いますが、皆さんどうされているのでしょうか?

私の場合は、以前に述べた通り、必ず周囲に余白部分を残すようなマップ作りをしているので、こういう1画面に収まる特殊シーン用マップ以外では、あまり困ることはないのですが。

[ ツクール情報 ] スケールの不満

2020-09-08 00:50:14

RPGツクールMV/MZになってから、スケールに不満があります。

スケールの巨大な大長編RPGが作りにくくなったとか(それはもともと)、1マスの標準サイズが32x32から48x48になったとか(それも不満っちゃ不満だけど……)、そういう話ではありません。

メニューのお前だよ、お前。

そう。マップビューのスケールだよ。

▲VX Aceまでのスケール選択

VX Aceまではマップビューのスケールを、1/1(原寸大)、1/2、1/4、1/8の4種類から選ぶ方式でした。

大まかな形を描いたり広い範囲を一気に編集したい場合は1/4や1/8を、細かい部分の修正や小物の配置などは1/1や1/2を選ぶことで、便利にマップを描くことができました。

しかし、そこそこの広さのマップの場合、1/4だと微妙に全体が入りきらず、かといって1/8にすると小さくなりすぎて編集しづらい、という不満はありました。真ん中の1/6ぐらいのスケールがあればいいのに、と思うことはよくありました。

その不満の声を聞き入れてくれたのか、MVではついにスケールの指定方法が変わり、「拡大」と「縮小」で細かくスケールを指定することができるようになりました。

原寸の100%から、92% → 83% → 75% → 67% → 58% → 50% → 46% → 42% → 38% → 33% → 29% → 25% → 23% → 21% → 19% → 17% → 15% → 13% → 10%……って、細かく刻みすぎぃ!

92%とかってそんなちょっとだけ縮小してどうするとか、58%とか46%とかそんな中途半端な倍率にする人いるのかとか、25%と23%って何がどれだけ違うんだとか、いろいろと謎はありますが、問題は「拡大」と「縮小」を1つ1つ押して切り替えていかなければならない点。

1回で狙ったスケールに切り替えることはできません。できないよね?

※2020-09-09追記:
Ctrl+マウスホイールで比較的手軽にスケールの変更ができると、フォーラムで教えていただきました。確かにこれなら何とか……。

Excelみたいに、メニューの「スケール」か、下のステータスバーに表示されている縮尺をクリックしたら、倍率が選べるようになっていればいいのに。

100%に戻すには「原寸」で一気に戻せますが、100%から最小の10%にするためには「縮小」を19回連打しなくてはならないという、高橋名人でも1秒以上かかる煩わしさ(例えが古い)。1/2のスケールにするのでも6回押さないといけません。半分より大きいサイズに縮小したい人なんているんですかね。

ワールドマップやダンジョンマップを描くにあたって、スケールは切り替えることが多いですが、この操作感だとかなり骨が折れそうです。皆さん、どうされているんでしょうか。

そもそも謎なのは、75%とか67%、50%、33%、25%とかは分かるのですが、58%とか46%とか、いったいどういう計算で出てきた縮尺なのか。

決死の捜索により、ついに我々はその法則性にたどり着いたッ!

……やっぱり細かく刻みすぎぃ!

何だよ、.5とか.25とかって。

そしてこの計算でいくと、10%は10%ではなかった。10.4166…%だったという衝撃の事実。