投稿記事

2019年 08月の記事 (6)

まるちゃん 2019/08/31 11:17

ステータスと武器の攻撃力の決定

魔法の属性の数について悩んでいます
自動で最高ダメージを算出してくれるので数は多いほうがいい
これは僕の中で変わらない結論です
で、僕が悩んでいるのは魔法剣のアニメーションって
デフォルトだとなんで3種類しかないんですか!?ってことです
属性が3つしかないのは少なすぎるからだめ!

素晴らしいサイトがあっておぉって思ってます
真・なまものノなにか
魔法のアニメーションはこれでいいんだけど
確かに属性の斬撃があるんだけどデフォルトのほうがかっこいい
炎、氷、雷はしっかりグラフィックが用意されてる
やっぱりこれと見比べると見劣りしちゃう
かっこいいのがいい!バタバタバタ

武器とステータスの関係(持論)

基礎ステータスの決定と武器のステータス

とりあえず今はステータスをある程度決定できました
武器の上昇値を決定するのにステータスを決定する必要がありました
デフォルトだと武器の最大数値は 500 までしか設定できません
最大HPとMPは 5000 まで設定できます
(僕の能力値自由設定のスクリプトは限界を突破できるし小数点も使えます)
ネプテューヌしか見てないんだけどやっぱりこれもだと思います
武器のステータスは攻撃力の半分くらい
ゲーム作れない人はこれぐらいいってもらわないと本当にわからない
感覚的にすべてゲーム作れる人が憎い

例えが悪いんだけど xy の二次元座標で直線を決めるには
最低2つの点が必要です。もしくは傾きと1つの点

アクターのステータスとエネミーのステータスは関係がある
これはゲームが作れない人でもわかることだけど
アクターのステータスとエネミーのステータスをどう決めるの?
これがゲーム作れない人にとってはわからない

関係があるから直線を引きたいんだけど点はどこなの?って感じ
傾きは何回で敵を倒せるかってことなんだとわかっている
点はどう決定すればいいの?
感覚の人はこう返す。「え?好きに決めればいいじゃん」
決められないんだよおおおぉぉぉぉぉ

自分はこう決めました。ステータスの最大値が 9999 とわかったからです
xy 座標で x はレベル y はステータス( Atk, Def, Mat, Mdf, Agi, Luk )
0 < x < 999, 0 < y < 9999 とすれば理数系の人はわかりやすい
攻撃力の高いアクターが武器を装備した状態で 9999 程度になればいい
さらにバフがかかるのでバフを考慮する必要もある
9999 / 1.5( バフ ) / 1.5 ( 装備 ) = 4444
レベルの最大値は 999 なのでこのときに 4444 程度になれば良い
また装飾品とかである程度上昇する分もあるかもしれない
最低でも 3000 ~ 4000 程度の数値を取るべきかな
4000 / 999 ( レベル ) ≒ 4.0
ステータスの上昇値は 4.0 以下にするべきだ
僕はこれでやっとレベルアップによるステータス上昇が決められました
初期値はデフォルトを使用することにしました 15 です
15 + level * d ( d は定数 0.0 < d < 4.0 )
1次職は d の最大値を 2.0 最小値を 1.0
2次職は d の最大値を 3.0 最小値を 1.0
3次職は d の最大値を 4.0 最小値を 1.0
とすることにしました
さらにステータスの合計値が同じになるようにしました
1次職は 9.0 とすることにしました。0.2 刻みで考えました
戦士は今こういう感じです

戦士 Atk 2.0, Def 2.0 Mat 1.0, Mdf 1.0, Agi 1.8, Luk 1.2
Mdf の魔法防御力が低いかなぁと思います
でも盾で魔法防御力を大きく上げることができます

とりあえず最大値の上昇を考えて
その半分となる数値を武器と防具の能力値とすることにしました
斧(Cri 0 %).csv (斧(Cri 0 %).csv) ダウンロード | ゲームデータ
デフォルトにあった斧の武器データから他の武器の性能を考えました
同値になるように会心率の決定とか能力値を決めました
明日つくる予定のダメージ計算でまた話します

価格の決定は 価格 / 攻撃力 が徐々に大きくなる形にしました
1攻撃力あたりの価格が大きくなるので損していく形です

HPとMPの決定

そして忘れていけないのがHPとMPの決定です
HPは狙われ率を考慮すると同値になるようにしました
例えば狙わ率が 100% の人の最大HPを 1000 としたとき
狙われ率が 50% の人の最大HPを 500 にするという感じです

HPも最大値から考えてもいいかなぁと思いましたが
やはり考えるべきは回復との関係だと思うことにしました

ネプテューヌから持ってきたアイテムの価格と効果です
100 ゴールドで 1000 回復できるアイテムを購入できる
ネプテューヌの初期武器は 100 ゴールドで同値でした
ネプテューヌの初期HPは 1000 でした
デフォルトは 50 ゴールドで 500 回復する
初期武器の値段は 100 ゴールドで、HPの初期値が 400 です
(レベルアップによる上昇は 50 で初期HPは 450)

わかっちゃいました。初期HPは 1000 で決定です
デフォルトでハイポーションの値段は 150 ゴールドで 2500 回復します
レベル 42 で最大HPが 2500 になります(ベースだと)
あんまり参考になりません

1500 ゴールドでHPを 5000 回復するアイテムがありました
1500 ゴールドで買える武器の想定レベルが 75 としていました
これに合わせる形にすることで1次職のHPの成長値を決めました
1000 + 75 * 定数 = 5000 となる定数は 53.333 と出ました
じゃぁ、50 でいいかなと 50 と決めました
1000 + (level - 1) * 50 をベースとなるHPとすることで決定しました
2次職、3次職も決める必要がありました
でもこれは最大値が 99999 とすることで適当に決めちゃいました
99999 / 1.5(バフ)= 66666 に装飾品を考慮する必要があります
66666 / 999(レベル)= 66.6 が最大上昇値だと思います
でもバフは考慮しなくていいかなぁってなって思っています
それというのも最大HPバフを作るのですが特定の職業だからです
そうすると最大上昇値が 100 程度になるので3次職の上昇値をこれにしようと
結果として1次職は 50 の上昇値
2次職は間を取って 75 にして3次職を 100 にしました
職業チェンジによる恩恵を出したかったのでそうしました
あとは狙われ率を考慮してHPを変化させようと思います

MPは正直まだ決めていません。取り合えず最大を 9999 としました
ネプテューヌがそうだったというのもあるのですが
戦闘画面の大きさ的に4桁が妥当じゃないかと思いました
もちろん 640 x 480 のサイズにすればいいのですが
戦闘背景はデフォルトを使う予定なので4桁で妥協しました

ステータスの決定の仕方は使えるスキルのコストを考えることです
どのスキルを1回の戦闘で何回使うことを許して
その戦闘回数が何回なのかを決定するやり方です
とりあえず今はスキルの威力とコストを表示して後で決定します

■ 1次職が使用可能なスキル
1.2:4「2回攻撃」0.6 * 2
1.6:6「強攻撃」「魔法攻撃」
2.0:8「属性魔法」

■ 2次職が使用可能なスキル
2.4:10「3回攻撃」 0.8 * 3
2.8:12「強攻撃Ⅱ」
3.2:14「属性魔法Ⅱ」

■ 3次職が使用可能なスキル
3.6:16「4回攻撃」 0.9 * 4
4.0:18「強攻撃Ⅲ」
4.4:20「属性攻撃Ⅲ」
4.8:22
5.2:24
5.6:26「属性攻撃Ⅳ」

威力 / コスト
0.300, 0.266, 0.250, 0.240, 0.233, 0.228, 0.225, 0.222, 0.22

威力 / コストなので単位コストあたりの威力です
これは数値が低いほど損しています。高いほど得をします
コスト4の威力 1.2 の技を2回使用するとコスト8で威力は 2.4 となります
威力 2.4 のコストは 10 なので損をしています
コストを偶数にしているのはMP消費が半減する装備を見ているためです

ネプテューヌもMPの最大値は 9999 なのですがコストは高く設定しています
(最大のコストは 1250 あたりだったと記憶。低いのでも 100 程度はある)
そうすることによってMP消費スキルの価値を高めています

しかし自分は長い戦闘を自動で行うのでコストを低く設定して
何度も戦闘で使えるようにしました




とりあえず今は色々考えてるのですが戦闘アニメーションで躓いています

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

まるちゃん 2019/08/25 13:51

ステートの作り方。継続ターンについての考え

スクリプトをいくつか更新した
ちょうどゲーム制作にも詰まっているので
一度整理するためにも記事を作ろうと思ったけれど
ちょうどアマゾンの接続障害?の影響なのか Ci-en が落ちてた
気分的に今やろうと思ったのでスクリプトをまず公開して
あとはステートに関する自分の考えを書いておこうと思う

限界突破.txt (限界突破.txt) ダウンロード | VXace スクリプト 【 作成者:まるちゃん 】
職業欄に最大レベルの設定、能力値自由設定を使用、スキル習得の上限突破をつけた
自動戦闘.txt (自動戦闘.txt) ダウンロード | VXace スクリプト 【 作成者:まるちゃん 】
自動戦闘はパーティーコマンドにオート出るようにちゃんとした
確認はしてない!限界突破も…
今度…、今度からする…かも


ドラクエは7ぐらいまでしかしたことがないけれど
ドラクエにはステートという概念がない。薄いといったほうが正確だと思う
毒になったり麻痺になったりするが
スクルト、ルカニといった魔法にステートという感じではない
でも僕たちは今スクルトとルカニがどういふうについてるか把握できている
テリーのワンダーランドもやったことがあるので
他にもボミオス?とかあるのは知っているが
スーパーファミコンのドラクエの話をしようと思う

他にはマヌーサとか睡眠状態もあった。でもやっぱり把握できている
そこにはまず優先度がある
戦闘不能、麻痺、睡眠の順に優先度がついている
行動できるかどうかがプレイヤーにとってほしい状態だからだ
行動できない場合はキアリクやザオラルで解決する必要がある
だからそこは戦闘のステータスに表示している

次にステータスの変動があるのにステートがないけれど
やはりプレイヤーは状態を把握していると思う
それというのも、この状態というのが戦闘中ずっとだからだ
しかし敵はルカニを使うので、使った瞬間にプレイヤーは
「あ、スクルトもう一度かけておくか」と把握できる
次にスクルトをもう一度かけないといけない状況というのが
敵がいてつく波動を使った場合だ。音も大きくわかりやすい

ドラクエには継続ターンという概念が薄い
麻痺も治療しない限り戦闘後もずっと続く。毒も同様に
多分これがわかりやすいという状況だと思う

自分もこれに習って戦闘中ずっとというのもいいかと思ったけれど
バフやデバフは TP を消費して使用するので
何回かプレイヤーに使用させて TP を消費してもらいたい
そうすれば他の強いスキルを使えなくさせることができる
なのでバフやデバフは継続ターンをもたせたい
けれども VXace のバフはドラクエと比べて多い。そして全部使いたい
ステータスは MP を除いて7つもある
そして戦闘中に表示できるステートの数は2つしかない

全ステート表示.txt (全ステート表示.txt) ダウンロード | VXace スクリプト 【 作成者:まるちゃん 】


しかたないからスクリプトを使用してゲージを廃して
ステートだけを表示することができるようにした
今思ったらステートの優先度を考慮するのを忘れていた
ステートを付与するとき(add_new_state) sort_states というので
優先度順にソートをしていました。問題ないです

でもやはり多すぎるステートをプレイヤーはいつ着けたのか把握できない
なのでこのターン中に解除されるステートだけ半透明にして表示した
ある程度はこれで理解できると思う。外れるタイミングがわかればいいはずだ
他にステートはできるだけ次のターンまでの間このターンの間
これにすることにした。そうすれば戦闘ログを見ていれば把握できる
他所のスクリプトに継続ターンを表示するものがあったので使おうと思ったが
自分は目が良くないので把握することが難しかったのでやめた

今回のゲームでは継続ターンをできるだけ持たないようにすることにした
状態異常は毒と呪いのスリップダメージは戦闘後も継続
麻痺はすぐわかるように優先度を高くする
混乱はこのターンの間だけにすることにした
継続ターンがあるステートは以下の3つにすることにした
・HP自動再生
・状態異常防止
・魔法習得(これは次のランクの魔法を習得する)
そうすればバフデバフに加えて上記の3つのステートの優先度を高くすればいい
10個程度のバフが表示できればいいと思う。幅にして 240 px だ
240 の残りは HP を表示してもいいかなぁと思っている

MP と TP の自動再生がないのは戦闘を長引かせると考えたからです
MP はターン毎に 10 %回復するとしても5ターン戦闘を長引かせれば
半分の MP を回復させることができる。プレイヤーは戦闘を長引かせるだろう
HP の自動回復だけ許したのは戦闘終了後に HP を全回復させるからだ
今回のゲームは戦闘が多いので終了後にいちいち回復させる手間を取らせたくなかった
そうするとザコ敵を少し強くする必要があるので大変そうだ
戦闘を長引かせるステートは作らないほうがいいと思う

以下は進捗状況
今は武器と防具の名前を考え終わったから価格と強さを決める必要がある
ここらへんでモチベが少し下がった
今回は限界突破してレベル500程度を目安にしている
そのせいで武器と防具を多く作る必要がある
自分は名前を考えられないので歴代ツクールのものから持ってきて
さらに武器にグレードをつけることにした
熟練度をつけて武器を成長させればいいのだが
プレイヤーに武器をアップグレードするために金を消費させたかった

ショップについて悩んでいる8種類の武器があって
さらにそれぞれ6つの強さがある。更にレベルがあり24この武器がある
CACAO のショップ分類を使い合成システムを使えば楽だと思う
でもつけている武器のランクを上げたいから個別に作ってもいいかなぁって
CACAO の合成システムは難しくて嫌だなぁってわがまま

アイテム合成.txt (41.11kB)

ダウンロード

これは KGC にあった rgss2 のスクリプトを rgss3 にしました
問題があったらコメントで知らせてください
利用規約を見る限り自分は問題ないと思いました

これを使いたいなぁって思ってるけど分類と噛み合わない
武器の種類ごとにイベントを作ってもいいのかなぁと考えています
他には限定的に今のレベルに応じて表示できる武器を変えたりとか?
金を払って武器屋のレベルを変更して品揃えを良くしたり
ネプテューヌでは全て表示していて使いづらかったけど
女神様がそうなら僕もそれでいいかなぁって…
色々考えすぎてモチベが下がっています

あとスキルも考えられていないのでスキルを考える必要がある
そしてやったことがない敵のステータス作成だ
もちろんレベルも増やしたので敵の数も増やす必要があるのだが
面倒なので敵にレベルを作ることで回避した

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

まるちゃん 2019/08/21 09:32

アイテムの完成。そのリストと価格

アイテムを昨日こねくり回して完成させました
ネプテューヌが好きだったのでパクることにしました
アイテム - 超次次元ゲイム ネプテューヌ Re;Birth1 Wiki*
参考(パクり)となる物があるといいですね
女神様は偉大だなぁって思いました

自動戦闘はとりあえずこれで完成でいいと思いました
それに加えて高速戦闘のスクリプトもついでに作りました
他サイトでも色々あるのですが設定が面倒そうなので適当なやつ
戦闘速度に倍率してボタン押してると更に2倍 ドーン みたいな感じです
画面のシェイクは邪魔なんで消しちゃいました
アクターがダメージを受けると画面が揺れるやつです

自動戦闘.txt ダウンロード | VXace スクリプト 【 作成者:まるちゃん 】
戦闘高速化.txt ダウンロード | VXace スクリプト 【 作成者:まるちゃん 】

いまスクリプト確認したらパーティーコマンドにオートのコマンドだすものが
自動戦闘と別になっていたのでこっちの方でアップロードしておきます
後日修正します。他にはアクターコマンドを変化させるものもおいておきます
内容はオート、スキル1、スキル2、アイテムとなるように変化させます
通常攻撃>敵を選択 と2回押すのが面倒なので…
アクターコマンドはアップロードして気づいたんですけど
Shift 押しっぱなしだとオートを選択してくれるんですけれど
エラー吐くのですがまだ直してません。そこだけ許して
これもアップロードして気づきました

パーティーコマンド.txt (2.64kB)

ダウンロード

アクターコマンド.txt (2.74kB)

ダウンロード

他に進捗状況と見てくれる人を増やすために SS と必要なスクリプト


限界突破.txt (13.27kB)

ダウンロード

これは一応自分のアップローダーにもあるんですけど修正されてない…
<MHP 400 + level * 50> みたいに書くと能力値がそうなります
他には武器のメモ欄につけてもそうなります
その代わり職業の能力値成長曲線が使えなくなります
デフォルトの基準となるステータスを記しておきます
<MMP 80 + level * 10>
ATK, DEF, MAT, MDF
<ATK 15 + level * 5/4>
AGI, LUK
<AGI 30 + level * 5/2>
F1 を押したときに出るヘルプの RPG::Class に書いてあります
他には追加能力値と特殊能力値の設定もできます

アイテムの名前と価格

ヒールグラス(100):単体のHPを1000回復する。
ヒールポッド(500):単体のHPを2500回復する。
ヒールドリンク(1500):単体のHPを5000回復する。
ヒールボトル(4500):単体のHPを10000回復する。

ポーション(750):単体のHPを30%回復する。
ハーフポーション(3000):単体のHPを50%回復する。
ハイポーション(5500):単体のHPを70%回復する。
フルポーション(8000):単体のHPを100%回復する。

ヒールサークル(3500):味方全体のHPを30%回復する。
ヒールレイン(7500):味方全体のHPを50%回復する。
ヒールフィールド(16000):味方全体のHPを70%回復する。
ヒールライト(32000):味方全体のHPを100%回復する。

パフューム(2500):単体のSPを30%回復する。
ハーフパフューム(6500):単体のSPを50%回復する。
ハイパフューム(13000):単体のSPを70%回復する。
フルパフューム(32000):単体のSPを100%回復する。

解毒薬(250):単体の毒状態を治療する。
聖水(250):単体の呪い状態を治療する。
目薬(250):単体の暗闇状態を治療する。
気付け薬(250):単体の麻痺状態を治療する

アンチドーテ(1500):単体のHPを30%回復し、毒状態を治療する。
アンチカース(1500):単体のHPを30%回復し、呪い状態を治療する。
アンチダーク(1500):単体のHPを30%回復し、暗闇状態を治療する。
アンチパラライズ(1500):単体のHPを30%回復し、麻痺状態を治療する。

ディスペルハーブ(1500):戦闘不能以外の状態異常を治療する。
万能薬(5000):味方全体のHPを30%回復し、全状態異常を治療する。
超万能薬(1200):味方全体のHPを50%回復し、全状態異常を治療する。

スティミュラント(500):単体の戦闘不能を解除する。
トニック(3000):単体を最大HPの30%で復活させる。
ハーフトニック(5500):単体を最大HPの50%で復活させる。
ハイトニック(8000):単体を最大HPの70%で復活させる。
フルトニック(12000):単体を最大HPの100%で復活させる。

マジックウォーター(5000):単体のHPとSPを30%回復する。
エナジードリンク(12000):単体のHPとSPを50%回復する。
ミラクルドロップ(25000):単体のHPとSPを70%回復する。
エリクサー(50000):単体のHPとSPを100%回復する。

インテリブースター(3500):味方全体のINTを大幅に上昇させる。
インテリブースターZ(8000):味方全体のINTとMDFを大幅に上昇させる。
クイックブースター(3500):味方全体のAGIを大幅に上昇させる。
クイックブースターZ(8000):味方全体のAGIとLUKを大幅に上昇させる。
マッスルブースター(3500):味方全体のSTRを大幅に上昇させる。
マッスルブースターZ(8000):味方全体のSTRとDEFを大幅に上昇させる。

うーん見づらい
パフュームはツクール XP では SP を回復するアイテムの呼称でした
マジックウォーター、ミラクルドロップを入れたくて無理やり入れました
エリクサー、ハーフエリクサーとしたほうが自然な気がします
同様にディスペルハーブもそうです
HPを30%回復させて戦闘不能を除く状態異常を治療する
このアイテムも作るべきなのですが名前が思いつきませんでした
トニックという名前もツクール XP の復活アイテムの名前からもってきました

ネプテューヌではアンチカースというものの価格が 5500 ですが
解毒薬(250):単体の毒状態を治療する。
ポーション(750):単体のHPを30%回復する。
この2つの組み合わせで作れるアイテムで 1000 の価値しかありません
一緒にできることは強力ですが 5500 は高すぎると感じました

ヒールボトル(4500):単体のHPを10000回復する。
これはHPの回復は 9999 までしかできませんが
もう一つHPの回復 1 を設定することで合計して10000回復できます

説明文の書式については全角で統一しました
デフォルトも全角で統一してあったからです
マッスルブースターは攻撃力とするべきなのですが
ステータスを4桁にするためにATKと表記する必要がありました
なのでこれも全角で統一することにしました
本当は「5ターンの間、」が最初に入ります

細かいところですがすべてカタカナの名前にしようと思いましたが
無理なので妥協することにしました
一番悩んだところはこれです
気付け薬(250):単体の麻痺状態を治療する
ポケモンの麻痺を治すときのアイテム
ブレイブフロンティアというゲームでは気付け薬という名前でした
これは失神したときに使う道具のようです
スメリングソルトとか言う名前でもあるらしい
それを言うとパフュームも香水なのに瓶の形をしている

アイテムの名前で悩んでいる人の制作の一助になればと
こういう名前をつけるのが難しいのにそういう参考は少ないですよね
自分は検索するとき
「アイテム 名前 一覧 攻略 wiki」とかで検索しました
他にいいやり方があればコメントで教えて下さい

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

まるちゃん 2019/08/16 17:05

自動戦闘を効果的にするルールのもとのスキル制作

前回の記事で、今も更新しているんですが
自動戦闘の難しさを改めて痛感しました
何度か作っていてそのたびに気づかなかったことに気付かされます
ゲーム業界界隈では評価関数という呼び方をしてドラクエが有名です
いくつか調べたのですがそこまで高級なプログラムはほしくないという感想です
高級と感じるのはこのターン以降も考えているという点です

敵が最大ダメージで攻撃したときにパーティーが全滅するまでのターンと
パーティーが攻撃して敵を倒せるまでのターンを考慮して
回復するべきか攻撃するべきかを考えているみたいです
自分としてはこのターンに効果的な回復ができればいいという浅い考えでした
専門的なことを言うとゲーム木をつくり探索するというのが必要みたいです
自分は構造体が本当にだめで赤黒木?とか言うのを学んだのですが全然だめでした
読んでいたわかりやすかったのがこれでした
ドラクエ4の戦闘のAIが知りたい
この質問ではステートによるバフを戦闘時間の長さで考えるみたいです
毒になっても戦闘時間が短ければ解除する必要がないみたいなことだと思います

ここまで出来るとステートの評価も自動にできてより楽に遊べて楽しいと思います
だけど自分ではこれができるようには思えなくて悔しいです
言っていることは何となく分かるけど作れないみたいな

自動戦闘.txt (6.84kB)

ダウンロード

とりあえず暫定の自動戦闘をアップロードします

自分はこれ以上はもう無理だと思い、他に理由を探しました
ヴァンパイアと戦い思うことはブリザードⅡを連続で使うのやめろよ!!!
そのせいで自動戦闘がおかしな動きしているように見えるんだ
じゃぁ敵の行動を弱くしようと思い
モンスターのAI(と呼んでいいの?)をつくりました
これは完成しているのでメインのアップローダーに保存しました
モンスターAI


自分が作った自動戦闘で守るべきルールは4つ
○ MP を消費するスキルを回復とダメージだけにする
○ 自動戦闘で選択されるスキルはMPを消費するものだけ
○ TP を消費するスキルで MP を回復できるようにする
○ TP を消費するスキルはプレイヤーの判断が必要なもの

今回の自分のゲームでは3次職まで作りそれぞれ
レベル100、300で転職できるようにしようと思います
また自動発動スキルを作りバフやデバフをこれに振り分け戦闘を楽にしました
自動発動スキルとは戦闘開始、ターン開始、ターン終了に通常の行動に加えて
確率で行動が発生するスキルのことを言います

MP 消費スキルは体系的にまとめて好きなように職業に振り分ける予定です
しかし TP 消費スキルはどの職業も2つを上限として作りました
MP 消費スキルは以下のようなものがあります
属性魔法、魔法剣、暗黒魔法、神聖魔法、呪術、武技、連撃
TP 消費スキルにダメージスキルもありますがコモンイベントを使用するので
スクリプトにすればいいんだけど面倒だからしてなくて、いや言い訳か…
ランダム要素があるので TP 消費スキルにしました
また強いスキルなので MP を消費して連打するということもしてほしくなかった

戦士

・(自動発動:戦闘開始/50%):敵全体を攻撃する
・(自動発動:ターン終了/25%):次のターン攻撃回数が1増える

戦士の上級職

ウォリアー

・力を貯める(30):攻撃力が大幅に上がる。SPが回復する
・(自動発動:ターン終了/25%):ランダムな敵を1体攻撃する

騎士

・(10):このターン狙われ率があがる
・(自動発動:ターン終了/25%):物理ダメージが大幅に減少する

ウォリアーの上級職

魔法剣士

・(100):魔法剣をランダムに4回使用する
・(自動発動:ターン開始/25%):このターン魔法を反射する

バーサーカー

・(100):武技をランダムに4回使用する
・(自動発動:ターン終了/25%):次のターン2回行動する。自動戦闘

騎士の上級職

暗黒騎士

・(75):自身のライフが減る。暗黒魔法をランダムに4回使用する
・(50):自身のライフが減る。攻撃力、魔法力が大幅に上昇する。
すべての自動再生がつく

パラディン

・(自動発動:ターン開始/25%):味方全体は防御状態になる
・(50):HP が自動回復。状態異常を防止する

僧侶

・(25):味方単体の状態異常をすべて治療する
・(50):味方全体の状態異常をすべて治療する
まだ考え中。全体の状態異常をすべて治療するは強すぎる?

僧侶の上級職

プリースト

・(25):5ターンの間、味方全体をHP自動回復状態にする。
・(100):味方全体のSPの25%を回復する。

モンク

・(自動発動:ターン終了/25%):次のターンまで攻撃をキャンセルして反撃する
・(25):連撃をランダムに2回使用する

プリーストの上級職

ビショップ

・(100):10ターンの間、味方全体の防御力と魔法防御を大幅に上げる。
・(50):味方単体を全回復する(戦闘不能を解除する)

ドルイド

・(25):MP を自動回復。能力低下を防止、能力上昇無効を無効
・(50):TP 自動再生。最大 HP、俊敏性、運を大幅に上昇する
まだ微妙な職業

モンクの上級職

ゴッドハンド

・(25):自身にすべての自動再生がつく
・(50):次の攻撃回数が3回増える。狙われやすくなる

阿修羅

・(自動発動:ターン終了/25%):TP が増える。攻撃力と俊敏性が上がる
・(50):連撃を5回使用する

盗賊

・(自動発動:ターン開始/25%):敵全体を暗闇状態にする
・(自動発動:ターン終了/50%):次のターンまで、俊敏性が3倍になる

盗賊の上級職

ローグ

・(自動発動:ターン終了/100%):死んでいたら残り HP 1 で復活。次のターンまで、俊敏性が3倍になる
・(25):ランダムな消費アイテムを入手する

スカウト

・(自動発動:ターン終了/50%):隠れる。ダメージを受けると解除される
・(25):隠れているとき使用可能。敵全体をスタン状態にする。隠れ状態を解除する

ローグの上級職

吟遊詩人

・(50):ランダムなステータスの2つを大幅に上昇させる
・(25):ランダムな歌を歌う。HP 回復、MP 回復、TP 回復のどれか

トリックスター

・(100):味方全体はこのターンの間、2回行動する。自動戦闘
・(50):味方全体の自動発動スキルの確率が上昇する

スカウトの上級職

レンジャー

・(100):攻撃力と防御力を大幅に上昇する。HP と MP に自動回復
未定

アサシン

・(25):隠れているとき使用可能。味方単体に大ダメージ。隠れ状態を解除する
・(自動発動:ターン終了/25%):隠れているとき、ランダムな敵2体に攻撃する

魔法使い

・(25):MP の 25 %を回復する
・(20):潜在能力を開放し新たな魔法を習得する
職業によって習得できる魔法が異なる
MP を消費する魔法で大体は次のランクのものが習得できる

魔法使いの上級職

ウィザード

・(50):習得している魔法を3回唱える
・(40):魔法力が大幅に上昇する。MP の 25 %を回復する
2つ目のスキルが少し微妙

ソーサラー

・(50):敵単体にすべての能力低下の呪いをかける
・(25):敵単体の MP の 50 %を吸収する

ウィザードの上級職

アークメイジ

・(50):MP を全回復する
・(50):魔法力が2倍になる。消費コストが2倍になる

錬金術師

・(50):ランダムなアイテムを5個生成する。戦闘終了時に破棄される
HP、MP、TP の全体回復。単体の復活。味方全体の状態異常をすべて治療
・(自動発動:ターン終了/50%):このターンの間、味方全体に薬の知識

ソーサラーの上級職

ネクロマンサー

・(25):敵全体に復活魔法。復活した敵は敵を攻撃する
・(25):敵全体に MP ダメージ。ランダムな状態異常を付与
今書いてみると意外と微妙そう
1つ目のスキルがうまくいかないときは不死のスケルトンナイトを召喚する

賢者

・(100):習得しているすべての魔法を5回使用する
・(100):新たな魔法を作り出す
味方全体にすべての自動再生。状態異常防止
すべての能力上昇をつける。能力低下を防止する
敵全体にすべての状態異常と能力低下をつける

2つ目が難しい。こういう感じにしたい。でもこれは MP を消費する分類にならない
かといってランダムに選択されるのも嫌だ
賢者はすべての魔法を習得するものということで回復魔法も使える
すべての魔法を5回使用するはどうなるかわからない


とりあえず長くなりましたがすべてのスキルを書きました
他の人のゲーム制作のヒントとなれば幸いです
レンジャーのスキルが決まらない…
決まっているのは妖精たちのポルカというドラクエ10のスキルです
なにか思いつくかなぁと思ってたら駄目なところだけわかってしまった

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

まるちゃん 2019/08/14 11:15

ツクール VXace の自動戦闘のスキル評価について

ゲームを作るときにどこから手を付けますか?
自分は戦闘システムにどうしてもなってしまいます
こういうシステムの戦闘が面白いんじゃないかって
戦闘なんてものはRPGの1つの要素に過ぎないのにそこだけを見てしまう
やはりここをゲーム制作で追求するべきなんだと思いました

そのくせ戦闘でコマンドを人数分入れるのが嫌いなんです
そのために自動戦闘のスクリプトを作りそこに任せました
自動戦闘をする際に VXace ではどのように判断しているかというと
スキルのダメージ量を評価することで判断しています

ツクール VXace でやっている自動戦闘について

ダメージ量による評価と問題点

ファイアのスキルのダメージ計算はこうです
150 + a.mat * 2 - b.mdf * 2 のとなっています
昨日いったレベルの上昇によるダメージ量の低下というのは
a.mat * 2 しかダメージが入らないというところです
さらに敵の HP が 10000 とかになると 150 というのは小さい数字になります

話を戻します
このダメージが敵にはどれだけダメージとして入るのかと評価します
敵は属性耐性、魔法防御力がそれぞれ違います
それを内部で評価してどれぐらいのダメージ量が入るのか算出します

しかし、ここで問題がありファイアⅡの魔法を使用したとします
これはファイアより強力な魔法であり
400 + a.mat * 2 - b.mdf * 2 のダメージ計算になります
もちろん、ファイアⅡを使用したほうが評価値が高い値になりますが
問題というのは敵の HP が 200 程度しかなかった際
ダメージ効率を考えるとファイアのほうが良いのです
つまり、ザコ敵に対して使えるからと強力な魔法を使ってしまうところです

自分はこの問題に対して現在の敵の HP から余剰分を評価値から
減算させることで解決しました
また現在の MP 量を考慮してある程度減算させたりしました

(2019/08/14)ダメージの余剰分の評価が微妙だ
以前は余剰分も加算していたがオーバーキルしすぎると弱くなることに気づいた
しかし、敵を倒せるということは評価値が高くなる要素だ

ダメージ量と回復量の優先度

回復とダメージのどちらを優先するべきかというところです
味方の 300 の回復と敵に与えるダメージ 300 はどちらが評価が高いのか
以前紹介した自作したゲームでは戦闘状況を考慮していたみたいです
戦闘状況とは味方全体の HP の割合と敵全体の HP の割合を除算したみたいです
両方とも 1.0 ならば均衡した状況と捉えたみたいで
味方の状況が不利ならば、つまり味方全体の HP の割合が 0.2 で
敵全体の HP 割合が 0.8 としたとき回復を優先するみたいな処理をしてました

だけど正確にこれを判断できるかというと違います
仲間が死ぬことを許容しても勝てるから攻撃してしまうプレイヤーと
経験値を手に入れたいから仲間が死ぬことを許容できないプレイヤーがいます
この差は実際のプレイヤーでなければできないところです

(2019/08/15)回復がわからないです。不足分や余剰分を考慮して
それっぽい動きをしたりするんですが、ときたま変になる
もうわからなくなってきた…辛い…

(2019/08/16)復活魔法を評価するのがとても難しいです
回復の評価のしかたは現在の HP に対して回復量がどれぐらいの割合なのか調べます
つまり死んでいる人は HP が 0 なので評価値は Inf を取ります
ダメージ( MHP - HP )に対して回復量がどれくらいかを調べれば
Inf を取ることもないのですがプログラム作成していて
現在の HP に対しての回復量を評価値としたほうが正確だと思っています

ステートの評価は難しい

例えばブラインドのスキルはどれぐらいの評価値を出すべきなのか?ということです
ダメージを与えるよりも優先するべき状況とは?これが計算できません
もちろん接着率を考慮すればある程度は出せますが
ダメージを与えれば倒せる状況でブラインドを使用しても意味がありません
戦闘に勝利したほうが良いに決まっています
もう1つは MP の消費率をどれぐらい考慮するか
効果的な戦略ですが長いダンジョンを歩くときに
すべての戦闘にブラインドを使用することは効率が悪いに決まっています
解決としては状態異常の魔法のコストを0にすれば考慮する必要がなくなります

他にはステートを解除する評価値の計算が難しいということです
毒のステートは解除するべきなのか、麻痺のステートの解除する評価値
そういうのを1つ1つのステートについて考える必要があります

プレイヤーの事を考えて重み付けを考えるのは悪いことではないですが
自分は嫌なので諦めることにしました
今流行のディープラーニングみたいなので出来るのでしょうか?

他のアクターの行動を考慮できない

あるアクターのピンチなので他のアクター A がヒールの魔法を使用します
しかしアクター B もヒールの魔法が使えるので評価した結果ヒールを選択します
デフォルトでは行動順序を決める必要があるので
最初にすべてのアクターの行動を決定してから順序を決める必要があります
例えば軌跡シリーズや FF のようなアクティブバトルのような
行動順ならば考える必要がありません
この場合、A がヒールをしたあとに B もヒールをするという結果になります
この B は余分な行動をしています

私は行動する前にもう一度選択したスキルを評価し直して変化があった場合
以前より極端に小さくなったと評価された場合スキルを選択し直しました
しかしこれは、プレイヤーにはできないズルをすることになります
戦闘形式を変更したほうがフェアです


おかしいなぁ。自分が話したいのはこんな話題じゃないのに…
僕の技術で自動戦闘でプレイヤーより正確な判断ができるところは
・ダメージ量の算出
・回復とダメージの優先
・ステートの評価はできない
・行動を再評価して変更してしまう

僕はこれをメインにしてゲームを制作することに決めました
他の人では考えられないかもしれないけれどシステムが優先です
以下のルールを自分のゲームでは作ることに決めました
・MPを消費して使用するスキルはダメージと回復だけにする
・TPを消費して使用するスキルはステーの付加、解除、
コモンイベントを使用しないと作れないものや MP の回復
・自動戦闘では MP を消費して使用するスキルだけを選択する

TPは戦闘をするごとに貯まるので MP を回復できるようにしました
自動戦闘で違う行動をして MP を無駄に消費したとしても
TP を消費することで MP を回復できれば
プレイヤーのストレスも貯まらないと考えました

またできるだけコマンドの選択を減らすために自動発動スキルを作成しました
これは戦闘開始、ターンの開始、ターンの終了時に確率でスキルを発動させます
味方全体にバフをかけたり自身を強化するものはこれに分類しました
まだ途中ですが作成したスキルを紹介したいなぁと思ったら
こんなに長くなるなんて思いもしませんでした
しかも画像なし

[オート戦闘]の暫定スクリプト(https://ux.getuploader.com/Rpg_Maker_VXace_Maruchan_Uploard/download/29)
実際の動作を動画にしました。ナタリーのタックルがすごく強い
アリスが死ぬともちろん勝てない
レベルはアリスがレベル 22 でそれ以外は 15 だけど勝てる
レイズの評価値が Inf になる時があるからこれが難しい
なので復活魔法は TP 消費スキルに入れることにした


(2019/08/15)色々いじっているうちにわからなくなってしまった
今時分が何をやっているのかわからない
例えば回復量の半分が余剰だったときの評価値って半分でいいんじゃない?とか
不足しすぎる回復って無駄な行動じゃないのか?
ヒールⅡとリカバーを習得しているときの優先度がわからない
(リカバーⅡを習得していない)
何より復活魔法は評価できないと考えていい
今は動画と同じ状況で調整しているけれど、レイズだけ評価値を決めている
これを考えると、死にそうな状況はだめ

Evaluate.txt (4.28kB)

ダウンロード

Game_Action の evaluate_item_with_target をこんな感じにしてます
ツクールフォーラムで聞くとなにかいい返事がもらえるのかな?

(2019/08/16)俺の自動戦闘のスクリプトは間違っていない
そう…、間違っているのは敵の戦闘 AI だ!
謎の開き直りと責任転換を発動させることにした
ブリザードⅡを連続して打たれるとか酷すぎる!!!
敵は最大のレーティングから3を減算させた数値以下の行動は実行しない
これを利用して利用したスキルのレーティングを3減算させて
行動終了時に減算させた数値に1を加算させ更新していくことにした
すごくいいです

モンスターAI.txt (2.22kB)

ダウンロード

他に狙われ率に現在の HP の割合を考慮して決定するスクリプトも作ったけど
以前作ったものなので、まだ調整中です
でもこれすごくいいです。ブリザード2回使うのはひどすぎる
俺は悪くない。ブリザード2回使うほうが悪い

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

« 1 2

月別アーカイブ

限定特典から探す

記事を検索