いのすけのウディタ改造録

ウディタの基本システムを改造してみた記録です。

【ウディタ】マダンテをブッぱなしてみる

こんにちは、いのすけです。

 

今回の改造は、「マダンテをドカンやりたい!」という単純なものです!

早速改造していきましょう!

 

①通常変数を一つ用意。

技能使用者の現在のSPを取得し保存しておく用の変数をひとつ用意します。

f:id:inosukeT:20220414180515p:plain

分かりやすい名前を付けておきましょう。

 

②技能を用意

f:id:inosukeT:20220414180721p:plain

範囲は敵全体(これはお好みで)、消費SPは0にしておきます。説明欄にSPを全消費することを書いておきましょう。

 

③コモン170の改造

コモン170は技能を使った場合にSP(またはHPやアイテム)を消費させる処理を行っています。ここに全消費させる処理を足してやりましょう。

f:id:inosukeT:20220414182234p:plain

①で作った変数に使用者の現在のSPを格納させ、マダンテの技能の番号でのみ、その分だけのSPを消費させています。

 

④コモン165の改造

コモン165はダメージ計算をするコモンです。フバーハなどを実装した際の記事でも改造しました。

inosuket.hatenablog.com

このコモンセルフ41に技能の効果量が格納されるので、ここに①で用意した通常変数の3倍(倍率はお好みで。ドラクエでもナンバリングによって倍率違いますよね。)のダメージを与える処理を加えます。

f:id:inosukeT:20220414192356p:plain

改造しているので、コモン番号が違いますが気にしないでください。ちょうど攻撃力などを計算した後に入れるといいです。

 

改造はここまでです!今回は非常に手軽でしたね!では早速挙動を見てみましょう!

f:id:inosukeT:20220414192727p:plain

SP300のキャラですから、ダメージは3倍の900ダメージになりますね!

f:id:inosukeT:20220414192849p:plain

技能選択です。

これを選択し、敵に撃ってみましょう!!ドキドキ…

f:id:inosukeT:20220414193104p:plain

ドカーン!!確かに900ダメージ出ていますね!SPもなくなっています。エフェクトはぴぽやさんのをお借りしています!

では、ちょっとSPが減っている場合はどうなるでしょうか?やってみましょう!

f:id:inosukeT:20220414193539p:plain

最大SPは300ですが、100減って200の状態です。600ダメージ出ればOKですね。

f:id:inosukeT:20220414193642p:plain

ドカーン!!600ダメージですね!いや~このエフェクトいいですね~

という感じで、マダンテを実装できました。私はこの技能は敵のロボットがエネルギーをためて撃つという設定にしたかったので、こんな名前になっているのですが、いずれにしても、ちゃんといいダメージで気持ちがいいです!

なによりぴぽやさんの素材がよすぎです!めちゃくちゃ強そうなエフェクトで感動です。ちなみにSP0でも撃てるので、そうするとこんなゴージャスなエフェクトで0ダメージという、めっちゃシュールな感じになりますよ。

 

では今回はこの辺で。

【ウディタ】固定ダメージの防御コマンドによるダメージ軽減とフバーハを作ってみる

こんにちは、いのすけです。

今回は、「基本システムのままだと、固定ダメージの技能のダメージは防御コマンドでもダメージが減らないという点」が気になったので、それを改造するのと、そのついでに固定ダメージ特技にも種類を付けて、ブレス攻撃という種類を作ってそのダメージを減らすような技能(ドラクエでいうフバーハですね。)を作っていきたいと思います!

 

①もろもろのDBいじり

いろいろとDBをいじって技能の種類やその被ダメ割合などの情報を格納する場所を作ってやらなくてはいけません。

まずはわかりやすいユーザーDBからいきましょう!!

技能の種類を入れる欄を作りましょう。

タイプの内容設定というところから、欄は増やせます!

f:id:inosukeT:20220323221135p:plain

タイプの内容設定は、左の真ん中あたりです。

f:id:inosukeT:20220323221255p:plain

このように特技の種類を決めました。攻撃力依存の技能が物理、精神攻撃依存の技能が呪文、固定ダメージの技能うち、ブレスっぽくないやつを体技、ブレスっぽいやつを息としました。

それから状態設定(状態異常の性質を決めるところ)にも同じように欄を増やします。

こちらには受けるダメージ量を設定します。

f:id:inosukeT:20220323221843p:plain

受ける体技ダメージと受ける息ダメージです。選択肢は受ける攻撃ダメージの選択肢をコピペするといいですよ

f:id:inosukeT:20220323222124p:plain

これを固定ダメージ技能の2種類(体技・息)に設定するんです。防御コマンドで固定ダメージを減らす作戦はもう見えますかね…。

ユーザーDBをいじるのはこんなもんで、続いては可変DBの方をいじりましょう。
前の記事でも軽く触れたのですが、戦闘時は可変データベースというところに敵味方の情報を読み込んで計算の処理のための数値としているので、こちらにも、ユーザーDBで設定した情報を入れる欄を作る必要があります。

inosuket.hatenablog.com

具体的には、可変DBの戦闘一時ステータスというところです。

f:id:inosukeT:20220323222626p:plain

可変DBの戦闘一時ステータスです。

ここでも先ほど同様にタイプの内容設定で、受ける体技ダメージ率と受ける息ダメージ率の欄を作ります。ここはただ数字を読み込んで代入するだけの場所なので、ユーザーDBのように選択肢を作る必要はありません。初期値100にしておくだけで大丈夫です。

f:id:inosukeT:20220324074308p:plain

ユーザーDBと同じように名前を【】でくくっておくとわかりやすいです。右のところで初期値を100に設定しておきましょう

DBいじりは以上です。

 

②コモン146、148(一時ステ計算)の改造

続いては、コモン146と148を改造します。このコモンはざっくりいうと、146はバトル開始時に敵味方の情報を可変DBに代入するコモンで、148は、状態変化を受けた場合に敵味方の情報を改めて代入するコモンです。要するにここをどういじるのかというと、ここにさきほど作った、ユーザーDBの【受ける体技ダメージ率】・【受ける息ダメージ率】を可変DBの方の【受ける体技ダメージ率】・【受ける息ダメージ率】の方に代入させるようにする、というわけです!

基本的に【受ける攻撃ダメージ率】・【受ける精神攻撃ダメージ率】と並べるように内容を追加していくだけです。これは画像見てもらった方が早いかと思います。

f:id:inosukeT:20220324075448p:plain

146の攻撃・精神攻撃の下に体技・息の項目を追加しています。【受ける攻撃力ダメージ率】をコピペでいいのですが、DB書き込み位置を体技なら体技、息なら息にしておいてください。コモンの番号違うのは気にしないでください💦

こうすることで、デフォルトではユーザーDB既定のダメージ量をそのまま受けるようになります。146は以上です。148も同じようにやっていきます。

 

f:id:inosukeT:20220324080103p:plain

空いているセルフ変数を二つ用意して、100を代入させます。【受ける攻撃力ダメージ率】と同じです。

f:id:inosukeT:20220324125851p:plain

可変DBに読み込んだ値を代入させます。これも上の【受ける攻撃力ダメージ率】のコピペでOKです。

f:id:inosukeT:20220324130101p:plain

一時変数に状態異常で補正された値が格納されているので、これを再び可変DBに入れ直します。これもすぐ上のコピペです。

これで、コモン146、148の改造は終了です。

③コモン165(単体処理)の改造

このコモンはダメージ量の計算を行う、一番重要なコモンです。これも画像で示していきます。

f:id:inosukeT:20220324131146p:plain

戦闘一時ステータスの【受ける体技ダメージ率】、【受ける息ダメージ率】を空いているコモン変数に取得させます。これも上のコピペです。特技種類の判定というのは、ユーザーDBで追加した、技能の種類(物理、呪文、体技、息)のやつです。

f:id:inosukeT:20220324131506p:plain

ここが一番大きくいじるところです。改造前のコモンでは受ける攻撃力ダメージ率を攻撃力ダメージにかける処理をしていますが、これを特技判定を取得し、それぞれの特技ごとにその特技ダメージ率をかける処理に変えています。


コモンの改造は以上です。

 

④状態異常の「防御」の仕様を変えて、さらにフバーハを実装

あとは、ユーザーDBをいじって、防御の仕様を変更して、さらにフバーハを作りましょう。

<防御の仕様変更>

状態設定の防御のページを開きましょう。

f:id:inosukeT:20220324175153p:plain

防御のページです。受ける攻撃力ダメージ率などはもともと入っていましたね。私は好みでダメージ半減に変えています。

f:id:inosukeT:20220324175324p:plain

さらに、後ろの受ける体技ダメージ率と、受ける体技ダメージ率も半減にしておきましょう。これで防御によって固定ダメージも半減します。

これで、防御の仕様変更は完了です。続いて、フバーハも作りましょう。

 

フバーハの実装>

まずは状態設定で「息軽減状態」を作りましょう。

f:id:inosukeT:20220324180018p:plain

息ダメージを半減する状態を作ります。これも好みで1/4に設定してもOKです。

そして技能です。

f:id:inosukeT:20220324180453p:plain

味方全体で回復、「何に影響する?は」なしに設定しておきましょう。名前はブレスガード(そのままですね💦)にしました。

f:id:inosukeT:20220324180727p:plain

そして付与する状態異常は「息軽減」にしましょう。

設定は以上です。

 

さて、うまく動くか見てみましょう。

以下の技能で実践したいと思います。

f:id:inosukeT:20220324191743p:plain

息の技能です。炎属性で敵一体に200ダメージ前後与える攻撃です。

まずは普通にダメージを受けてみます。

f:id:inosukeT:20220324191928p:plain

受ける側は炎耐性は等倍(そのままダメージを受ける)です。技能で設定した通りのダメージを受けています。

次に、防御をしてみます。

f:id:inosukeT:20220324192112p:plain

防御をするとダメージが半分に減りましたね。

続いて、先ほど作った息被ダメを軽減する技能を使用してダメージを受けてみましょう。

f:id:inosukeT:20220324192244p:plain

技能仕様で「息軽減」のポップアップが出ていますね。

f:id:inosukeT:20220324192341p:plain

確かにダメージが半分になっていますね。

最後に、息軽減状態で防御するとどうなるでしょうか?

f:id:inosukeT:20220324192511p:plain

息軽減で半減、防御で半減で、被ダメが1/4まで減っていますね!

というように固定ダメージ技能のダメージを軽減することに成功しました。

 

これを応用して、息をすいこむ(敵に与えるダメージを2倍にする、要するにちからためのブレスバージョン)なども実装できます。私はもうすでに実装していて、画像にもところどころ映ってたと思います。ぜひやってみてください!

 

では今回はこの辺で。

【ウディタ】敵専用のザオリクを作ってみる

こんにちは、いのすけです。

 

ウディタでゲームを作っていて気になった点の一つが、「味方の蘇生技(ザオリク)は戦闘不能を解除&回復で簡単に作れるけど、これを敵に使わせても味方を蘇生できない」という点でした!

今回は敵がちゃんと味方一体を蘇生するような技能を作りたいと思います!

①ユーザーDBの技能で敵用のザオリクを味方用とは別に用意

f:id:inosukeT:20220319174500p:plain

敵用の蘇生技です。余計な特技いっぱいでごちゃごちゃしててすみません💦

私の作っているゲームでは、蘇生(resuscitation)から、リーサスという名前にしています。

で、この技能を作るときに大事なのが、効果対象を「イベント呼出[バトルのみ]」にしておくということと、呼び出すコモン名ですね。下の「イベント番号指定」というところですが、コモンイベント上で蘇生処理を行うので、そのコモンの番号を設定してあげる必要があります。今回はコモンイベント232で蘇生処理をしているので、500000+(コモンイベント番号)で500232と入力しています。これは指定のコモンイベントを呼び出すための特殊な番号です。いくつかこういう数字がありますが、今はとりあえずこれだけ覚えておきましょう。

 

②バトル開始時の敵のIDを通常変数に格納

ここまで書いてきてあれなんですが、実は敵を蘇生させる処理というのはちょっと無理でした💦

じゃあもうこの記事も終わりかよ、というわけではないんです!私が考えたのは、バトル中に敵を追加するコモンが存在する(コモン29ですね。)ということは、「バトル開始時に、どの位置にどんな敵がいたかを覚えさせておいて、そこに欠員がいる場合に、その位置に覚えておいたキャラを追加させれば、あたかも蘇生したのと同じ結果を出せるのではないか!」というわけです!

というわけで、システムDBの通常変数に格納しましょう。通常変数はどのコモンでも共通の値で使えるので便利ですね。まずは敵の最大匹数分(7匹)の通常変数に名前を付けておきましょう。

f:id:inosukeT:20220319180916p:plain

通常変数7個に名前を付けました。ここに敵キャラのIDが入るようにします。

また、コモンイベント203はバトル開始時に行う処理を好きに入れられる場所なので、ここに先ほどの通常変数に敵キャラIDを格納する処理を作ってやりましょう。

f:id:inosukeT:20220319181354p:plain

通常変数に格納していきます。下の青色のは今回関係ありません。

このスロットとはなんぞやという話ですが、これは、バトルでの処理での敵味方の位置を決めている番号です。

f:id:inosukeT:20220319200637p:plain

戦闘一時ステータスです。表のとおり、スロット番号が0~9が味方、10~が敵です。

戦闘での敵味方の情報はこの可変データベースというところに格納されていて、上の画像にもありますが、戦闘スロットの数字で味方と敵を分けています。そのためCSelf10の値を10から始めて、CSelf11にそのスロットのキャラIDを取得させています。3行目で10000引いているのは、コモン141で取得される敵キャラは、10000+敵キャラIDで出てくるからです。その敵キャラIDを①で作った通常変数に格納したいわけですが、スロット10のキャラは通常変数50に、スロット11のキャラは通常変数51に、というように格納されてほしいので、スロット番号に2000040を足して、この番号の通常変数を呼び出すことで(2000000+YでY番の通常変数を呼べます。)これを、スロット10~16までの7回繰り返せば、7つの変数すべてに敵キャラIDが格納されます。

ちなみに、バトル開始時に敵がいないスロットは、キャラIDとして-1が出力されるので、そのスロットの通常変数には-10001が格納されています。

 

③敵用のザオリクで呼び出すイベントを作成

①で作った技能でコモンイベント232を呼び出すことにしていたので、コモン232をいじっていきましょう!大きく分けて2つの処理に分かれるので、2つに分けて処理します。

(ア)バトル開始時にはいたのに、ザオリクを使用しようとするタイミングで生きていないキャラがいれば、その場所に同じモンスターを呼び出す処理

f:id:inosukeT:20220319203648p:plain

コモンイベント232のうち、(ア)の処理の部分です。

f:id:inosukeT:20220319203900p:plain

(ア)の処理は「ループここまで」のところまでです。

CSelf0にザオリクを使用したスロットを取得させ、CSelf1に発動者IDを、CSelf5に使用スロットのキャラ名を入れています。CSelf5~CSelf9は文字を入れる変数となっています。それ以外のセルフ変数には数字しか入れられない設定になっています。

敵スロットの番号10~16でそれぞれ通常変数50~56が0未満(要は-10001で該当スロットにはバトル開始時誰もいなかったということ)である場合と、CSelf21に該当スロットのキャラが戦闘不能であるかを取得させ、これが0である(戦闘不能なら1、戦闘不能でないなら0が代入されているので、要は生きているということ)場合は、ループ開始に戻し、次のスロットを判定させています。この両方に該当しない場合というのは、「戦闘開始時にはいたが、技能使用時には死亡している場合」であり、この場合にその戦闘スロットに通常変数のキャラを追加する処理をしています。戦闘スロット番号と敵キャラ追加のコモンイベント29の追加位置の数字がずれているので10引いて合わせています。

追加するだけだと演出もメッセージもなく寂しいので、メッセージ「¥cself[5]はザオリクを唱えた!」(私のゲームだとリーサス)と、蘇生の演出を蘇生するスロットに表示させています。演出の位置はCSelf30とCSelf31でスロットごとに決めています。この数値は、コモンイベント175からコピペしただけなので、真似するときはこの値を完全コピーで問題ありません。あと、回復ポップアップも入れています。蘇生させたキャラの最大HPを取得してそれを表示させているだけです。ゲージも更新させて、ちゃんと蘇生した感が出るようにしています。

 

(イ)蘇生対象がいなかった場合の挙動

(ア)の処理の中で、一時変数Bって何の説明もしないけど何これ!?っていう風に思われたかもしれませんが、実はスロットごとに蘇生対象でなかった場合に1ずつ加算していって、ループを抜けてこれが7だった場合に蘇生対象がいなかったという、判定になるようにしています。要するに蘇生可能でないスロット数を数え上げていただけですね笑

敵AIの行動選択条件をいじってもよかったのですが、今回は、こっちのコモンで蘇生対象がいない場合の処理もしちゃいました。

攻撃技は自分で組むと耐性や狙われ度などさすがに面倒くさすぎるので、「ようすをうかがう(無駄行動。不敵に笑っている!とかでもいいです。)」と「反撃の構え(カウンター技です。防御とかでもいいと思います。)」と「漆黒の守り(無属性ダメージを受けないような状態にする効果です。)」にしています。さいころと名付けた変数は0~2の値のいずれかをランダムで出力していてこの値に応じて行動を一つ決めています。ここは好みで変えてください。反撃の状態設定などは今回の本題ではないので割愛します。

 

ここまで書いてて敵行動AIで死亡者がいないか判断させる方がいいような気がしてきました…orz

 

動作はこんな感じです。

f:id:inosukeT:20220319215807p:plain

蘇生の必要がないターンでは3つの動作のうちの一つを行います。

f:id:inosukeT:20220319215902p:plain

蘇生できるキャラがいる場合は蘇生します。番号が若いスロットから優先して蘇生します。

f:id:inosukeT:20220319220337p:plain

ポップアップもちゃんと表示されています。蘇生されたキャラの最大HPは4です。

うまく使えば、左手が頻繁にザオリクして顔を蘇生してきた某魔王様の動きも再現できそうですね!ボス戦でこの技を使わせてプレイヤーを絶望のどん底へ落としてやりましょう!

 

では今回はこの辺で。

【ウディタ】はじめに

こんにちは!いのすけです!

 

このブログではRPGゲームを手軽に作ってみたいという願望をかなえてくれる、Wolf RPG Editor(通称:ウディタ)を使ってゲーム作りをしている私いのすけが、ウディタを色々改造していったことを記していきたいと思います。

 

ウディタのインストールはこちら↓(無料です)

www.silversecond.com

 

このウディタ、改造せずとも基本システムという偉大なシステムが入っていて、一通り戦闘などは行えます。とはいえ始めたばかりの方は、右も左もさっぱりだと思うので、まずは、上のリンクの中にある、パーフェクトガイドなどを参照するといいと思います。ぴぽやさんの「はじめてのウディタ」などのサイトもおすすめです。私もお世話になりました。

pipoya.net

 

ウディタですが、少し慣れてゲーム作りをしていると基本システムの仕様にも少しずつ変えたいと思うところが出てきます。

そこで、いのすけが改造したいと感じて実際どのように改造したのかをまとめていこう、基本自分の記録用だけど、真似してうまくいく人が一人でもいたら大変すばらしいことじゃないか!ということでブログにまとめていこうというわけです。

 

次の記事から具体的な改造について書いていきます。

 

では今回はこの辺で。