![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
どのジャンルで質問するのがベストなのか迷いましたが
C言語をやっている方なら詳しいんじゃないかと思いました。宜しくお願いします。
条件として
・敵が4人、プレーヤー4人(例えばわかりやすく、戦士、戦士、戦士、賢者とします)
・AIとして、ドラクエ4では「ガンガンいこう」や「呪文を使うな」などありますが、
今回は「みんながんばれ」で(要は、回復呪文、攻撃呪文、攻撃を均等に行う)
・賢者の呪文は「ヒャド(攻撃系)、ホイミ(回復系)、スカラ(守備系)、ルカニ(攻撃補助系)」が使えるとします
実際にプログラムを組んでいて分からないところは、呪文を使う時で、
その時、その時で何の呪文を使えば良いのか決める基準が分からないのです。
例えば、味方1人(戦士)のHPが70の時(MAXは100)、
1、その時点で回復した方がベストなのか?
2、敵にダメージを与えた方がベストなのか?
3、スカラを唱えて味方の守備を上げてこれから続く戦いに備えた方がベストなのか?
など、何がベスト(ベストじゃなくても限りなくそうなるように)なのかが分かりません・・・
例えば3だったら敵全員のHPや見方の攻撃力などを調べて、普通に攻撃してたら
あと何ターンで倒せるのかを計算しなくてはなりません(たぶん)
いやそれ以上に調べる個所があるかも・・・
そういうの(攻撃系、回復系、守備系、攻撃補助系)を全部ひっくるめて評価関数
みたいなのにかけれないでしょうか?攻撃した場合の評価(ヒャドなどの攻撃、ルカニなどの間接攻撃)
と守備に徹した時の評価(ホイミなどの回復、スカラなどの防御力UP)を分けるんじゃなくて、
全部一緒に評価して、その返ってきた1番大きい値のものを実行するみたいな。。
自分で言っててなんですが、その評価関数自体の内容もあまりイメージできていませんけど・・・
No.3ベストアンサー
- 回答日時:
★どうやら本格的にRPGゲームを作っていますね。
・『AI』はいろいろな方法があります。→質問者さんの自由ですよ。最終的にはね。
・今回は『みんながんばれ』のアルゴリズムですね。
●評価関数のアルゴリズム(一例)
・まず、味方1人(戦士)の HP が 70 の時に、最大攻撃(平均攻撃)であと何回で
『敵パーティ』を全滅させられるかの回数をはじき出します。→サブ関数で。
・それで、現在のターンで全滅させられるのならば、(2)番の『敵にダメージ』を
与えると評価します。→残りの仲間の攻撃数も考慮して。
・もしも、回数が数ターンの場合は、敵の中で一番攻撃力が高い、最大攻撃以下に
HPが下回っているか調べ、下回っていたら(1)の『回復系呪文』と評価します。
でも、『回復系呪文』が唱えられない場合も考えて MP の関係で『スカラ系』の
呪文を行うようにも評価させます。→残りの MP も調べて。
・上記以外で戦闘が長引きそう(敵の攻撃力が仲間よりも平均的に大きい場合)は、
スカラ系(攻撃補助呪文)がある時は、(3)の『攻撃補助呪文』と評価します。
・よって、『味方パーティ』と『敵パーティ』の平均攻撃から何ターンで敵を全滅
させられるかを中心に『敵に攻撃』か、『味方の守備力UP』そして、『味方回復』
と評価させていきます。→HP に余裕がある場合には『攻撃』、少なければ『回復』
戦闘が長引きそうならば『攻撃補助』の順に評価させます。でも残り MP も考えて
さらに、魔法を唱えられない場合の第二評価関数をサブ関数として作ります。
まとめ:
・何ターン(何回)で『敵パーティ』を全滅させられるかのサブ関数。
・HP を調べ『攻撃』か、『守備・回復』かの判定サブ関数。
・MP を調べ『回復』か、『守備(スカラ)』かの判定サブ関数。
・MP を調べ『魔法』か、『攻撃・防御』かの判定サブ関数。
・上記のサブ関数を呼び出しメイン評価関数。
・以上。最適でも 5 の関数(処理)に分ける必要がありそうです。
補足:
・また、味方の職業(戦士・賢者)でも判定サブ関数の状態を変化させるように、
職業別に処理を定義させると、さらに賢い『AI』システムを構築できます。
この場合は職業別にサブ関数を作って、関数のポインタで切り替えたりします。
つまり、転職(パーティ入れ替え時)のときに関数ポインタを切り替えるのです。
・素晴らしい『AI』システムを作るには、まず、人間(質問者さん)ならばどれが、
一番よい『攻撃・回復・守備』かを考え、それを元に判定サブ関数と評価関数を
作り上げていきます。→ソースファイルを分けて1つの『評価システム』という
感じで作っていきましょう。
・以上。おわり。参考にして下さい。→昔、RPG 作ったときのアルゴリズムです。
ご返答ありがとうございます。
全体のイメージが掴めたような気がします。
ありがとうございます。
>●評価関数のアルゴリズム(一例)
本来、このような決定は自分で決めるべきことなんでしょうけど、
RPGの製作経験者の方の具体的な決定の基準が分かって参考になりました。
No.2
- 回答日時:
すみません、回答の趣旨がおかしかったです。
先ほどのように乱数を最初に全て確認しておいて、最後までの攻撃シュミレートを把握します。
守備系魔法を唱えて防御力を1.5倍にする事でダメージが減ったりするのなら、
減らなかったときと減ったときのトータルの攻撃回数とHP,MPの差を計算すれば、単にそれでいいのではないですか?
4人に守備魔法を唱えるのに4ターン必要なら5ターン以上攻撃回数が減らないと意味が無い事になります。
HP,MPの差を取って(HPの差はMPで埋めましょう)ターンとMPを比較してはどうでしょう。
ご返答ありがとうございます。
こちらこそ、そういう意味で捉えられても仕方ない質問ですいません。
自分としては、最強のAIを作りたいわけじゃなくて、
そのAIの中の評価の仕方に対して曖昧なイメージしか持ってなくて
実際にどうプログラムを組めば良いのか分からないでいました・・・
たしかにランダムの比重を重くした方が面白いAIになりそうですね。
>4人に守備魔法を唱えるのに4ターン必要なら5ターン以上攻撃回数が減らないと意味が無い事になります。
このあたりの考えが基準になりそうです。自分なりに構築していきたいと思います。
No.1
- 回答日時:
私もよく趣味でゲームを作ります。
>あと何ターンで倒せるのかを計算しなくてはなりません(たぶん)
ということは、最後までどの攻撃があたって、どの攻撃がからぶるか、攻撃のダメージ数はいくらかといった乱数も最初に全部作っておくという事でしょうか?
そして最短で倒す方法を考えると?
全てのダメージとからぶる回数や敵の攻撃などわかっているのでしたら計算すれば最善の方法は作れるでしょうけど、それじゃおもしろくないんじゃないでしょうか・・。
ゲームにはランダム要素ほど大事なものはありませんし、
適当にHPが7割以下だったら回復で、前の奴が回復してるなら次の奴は攻撃とか、ってある程度適当に作った方がよさそうじゃないですかね。
すみません回答になってなくて。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 政治 立憲民主党の辻元清美や、社民の福島みずほ、がウクライナの大統領だったら戦争に負けてましたよね? 17 2022/12/22 16:00
- 政治 ロシアは対空ミサイルを地上攻撃に流用しています。日本もそうするべきですよね? 2 2023/02/23 21:18
- その他(ニュース・社会制度・災害) 『「大軍拡NO!」の声をあげよう』とのチラシ 玄関の清掃中、下駄箱の下に潜っていたチラシを発見、 『 3 2023/04/11 15:46
- 政治 プーチンはウクライナではなく、北海道に攻め込んでいれば、作戦は成功しましたよね? 7 2022/04/16 09:24
- その他(アニメ・マンガ・特撮) ワンパンマンの信者ってアホなんですか? 8 2022/11/13 02:58
- 政治 中国が最初に侵略するのは台湾ではなく日本ですよね? 29 2023/01/15 12:29
- 軍事学 【ロシアのウクライナ戦争でドローンを大量投入して戦っていますが】軍事衛星で人間が集結 2 2023/08/19 13:47
- 政治 核シェルターは戦争抑止力に成りますよね? 11 2022/10/06 17:31
- 歴史学 対米宣戦布告が遅くなった理由 9 2023/08/02 18:28
- 声優 どうして仮面ライダーの信者は、仮面ライダーを過大評価してまで全創作物最強と持ち上げるのでしょうか? 1 2022/06/04 00:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
妖怪ウォッチ2の質問です。 対...
-
ドラクエ5パーティの並び・攻撃...
-
スターオーシャン3の戦闘方法で
-
包囲殲滅陣って何が脅威なんで...
-
チョコボイーターでの勝敗でス...
-
鼻息で飛ばされる(FF6)
-
ブラスカの究極召喚の倒し方
-
sfc版ドラクエ5。お勧めパーテ...
-
ドラゴンズドグマ 理想の転職...
-
ペルソナ3ポータブルでは誰を...
-
ポケモンHG、パーティー編成の...
-
レベル上げ
-
BIOS設定の「No-Execute Memory...
-
FF9のオズマの倒し方について
-
ドカポン3・2・1で有利・不...
-
RPGの戦闘アルゴリズムについて
-
キングダムハーツ・黄色のトリ...
-
FF7で、最後のセフィロス(リバ...
-
ドラクエ4での「ガオン」という敵
-
テイルズオブシンフォニア最強...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
妖怪ウォッチ2の質問です。 対...
-
包囲殲滅陣って何が脅威なんで...
-
ドラゴンズドグマ 理想の転職...
-
FF10-2INT+L 魔物コロシアム
-
ブラスカの究極召喚の倒し方
-
ペーパーマリオRPGの影の女...
-
テイルズオブシンフォニア最強...
-
ドラクエ5パーティの並び・攻撃...
-
アクセレイが倒せないぃ!
-
鼻息で飛ばされる(FF6)
-
ポケモンで、はかいこうせんは...
-
ポケモンHG、パーティー編成の...
-
FF10のエフレイエが倒せない
-
スターオーシャン3の戦闘方法で
-
FF6の狂信者の塔のクリア方法
-
ファイナルファンタジー6で
-
BIOS設定の「No-Execute Memory...
-
【FF4】デカントアビリティ【D...
-
ドラクエ-イルルカ
-
幻想水滸伝(3)のラスボスについて
おすすめ情報