17

私はファイナルファンタジーの戦術のラインで小さなグリッドベースのターンベースの戦略を実装しています。

ターゲットの選択、動き、スキルの選択プロセスにどのようにアプローチできるかについて何かアイデアはありますか?

私は決定を切り離すことを検討していますが、これら3つの決定はすべて大部分が結合しています。(たとえば、誰を攻撃するのか、どの範囲のスキルを使用するのかを知らない限り、どこに移動するのかを決めることはできません。逆に、何回転するのかを知らない限り、誰を攻撃するのかを決めることはできません。各ターゲットに到達するために私を連れて行きます)

統一されたシステムに移行したいのですが、Killzone 1 AIのような方法で使用される潜在的なフィールド調査から物事を試してみると、ローカルの最大値にとらわれてしまいます。

===アップデート1

私は現在、潜在的なフィールド/影響マップを使用して、決定を下すデータを生成しようとしています。

多くのスキルや、ダメージを与えるのではなく、バフ/デバフまたは世界を変えるスキルをどのように扱うかがわかりません。

他の誰かが、現在Goゲームで使用されているモンテカルロ木探索の使用を提案しました。

ゲーム内の多くの動きは、攻撃して世界に影響を与えることができる位置にはならないため、俳優が使用するスペースは適切ではないと思います(私はファイナルファンタジーの戦術よりも大きな世界にいます)

ファイナルファンタジーの戦術では、それはうまく適用されるかもしれませんが、分岐係数は9x9 Goのそれよりもはるかに大きいです(私が理解していることから)

===

よろしくお願いします、Xtapodi。

ps.1-問題は、敵がどれだけ離れているかを正確に知るために、敵が近くにいるにもかかわらず、通行できない崖が私たちを隔てている可能性があるため、敵にパスファインドする必要があることです。さらに悪いことに、ユニットが橋のように道を塞いでいるので、実際には彼に到達する方法がありません。

4

3 に答える 3

15

私が使用したアプローチの1つは、2パスシステムを実行することです。

まず、ユニットがどこに行くことができるかを見つけます。A *などを使用して地形にフラグを立て、ユニットがこのターンに移動できる距離を確認します。

それがわかったら、利用可能な戦術(近接攻撃、味方ユニットの回復など)をステップ実行し、利用可能なすべての戦術の使用に適応度関数を割り当てます。フラグが立てられた地形を通過すると、可能な戦術のスペースをすばやく判断できます。

これにより、各移動で利用可能な戦術とその適応度関数のリストが表示されます。最適なものを選択するか、上からランダム化します。利用できる戦術がない場合は、地形に2回の移動のフラグを立てて、このプロセスを繰り返します。

適応度関数とは、特定のユニットまたは場所で戦術を実行することの「価値」を決定することを意味します。たとえば、「味方ユニットを癒す」戦術決定フェーズでは、すべての味方ユニットをステップスルーする場合があります。味方ユニットが範囲内にある場合(つまり、ユニットが到達できる場所から到達可能である場合)、それを可能な戦術のリストに追加し、たとえば100 *(1.0-ユニットの健康)に等しいフィットネス評価を与えます。ユニットの体力の範囲は0から1です。したがって、残りの体力がわずか10%になるまでキャラクターを回復することは、90ポイントの価値がありますが、5%だけ下がるユニットは、5の価値しかなく、ユニットは、損傷を受けていない回復を考慮しません。単位。特別なユニット(つまり、勝利条件を維持するために必要な「ボスを守れ」シナリオユニット)には、より高い基本数を与えることができます。

同様に、「近接攻撃」の決定フェーズでは、到達可能なすべての敵ユニットをステップスルーし、予想されるダメージを計算して、ユニットの体力と比較します。各ユニットに攻撃の「望ましさ」を与え、それをあなたが行う可能性のある残りの健康のパーセンテージで乗算すると、可能な場合はユニットを排除することを支持するが、それでも高価値を追求する非常に詳細な適応度関数が得られますターゲット。

このようなプロセスを使用すると、「ロケーションAに移動して友好的なユニットBを回復する:50ポイント」、「ロケーションCに移動して敵対的なユニットDを攻撃する:15ポイント」などのオプションのリストが表示されます。突然、次のようになります。戦術を選ぶのは本当に簡単です。

戦術の適合性に、それを実装するために必要なパスの適合性を掛けることで、さらに詳細を追加できます。たとえば、友好的なユニットを癒すために移動しなければならない場所が深刻な危険にさらされている場合(つまり、溶岩スペースなどに立っている場合)、その戦術の適合性に次の値を掛けることで、それを考慮に入れることができます。 .2かそこら、ユニットがまだそれを考慮することができるように、しかしそれが本当に重要である場合に限ります。これに必要なのは、特定の場所の適合性を評価するアルゴリズムを作成することだけです。事前に計算された「地形の望ましさ」の数値のように単純な場合もあれば、敵ユニットの「脅威マップ」を維持する場合のように複雑な場合もあります。

もちろん、難しいのは、エンジンをスマートにするための適切な手段を見つけることです。しかし、それはあなたのシステムの微調整の楽しい部分です。

于 2010-07-11T07:39:35.867 に答える
3

戦闘が発生する地形が事前に決定されているか、広すぎない場合は、ターン制ゲームの基礎として使用できるFPSの地形推論に関する記事があります。

つまり、マップの各セルについて、特定の方向での射撃への適合性、保護、可視性などの一連の値を事前に計算します。AIはこれらの値を使用して、正しいアクションを選択できます。たとえば、戦闘機は可能な場合は保護を使用して敵に向かってできるだけ速く歩きますが、泥棒は側面または後方から攻撃することを目的として、敵の方向からの視界ができるだけ低くなる経路を取ります。

ただし、地形がランダム化されているか、幅が広すぎる場合は、事前計算が長すぎて役に立たない可能性があります。

ギヨームよろしく

于 2010-06-28T17:55:17.280 に答える
1

良い質問ですが、答えはいたるところにあります。個人的にはあまり経験がありませんが、距離ではなくコンセプトを中心に戦略を立てていきます。

NPCごとにステートマシンを作成します。いくつかの設定を介して攻撃するキャラクターを予測します。

たとえば、NPCは、最も弱い攻撃、最も強い攻撃、または最も負傷した攻撃としてフラグが立てられます。次に、目的のターゲットにダメージを与えることができるように配置しようとします。

ヒーラーもいる場合は、ヒーラーターゲットに対して同じことを逆に行うことができます。

ターゲットの変更もこのシステムの重要な部分になります。だからあなたはそれについて考えたくなるでしょう。簡単なバージョンは、ターンの特定のパーセンテージで変化するターゲットを再評価することです。

そして最後に、システムにランダムなチャンスを追加します。たとえば、キャラクターは次のように設定できます

攻撃力が最も弱い.25攻撃力が最も強い.50攻撃力が最も負傷している.25

ターゲットを変更します。1

攻撃する時が来たとき。0-1から乱数を生成します。それがあなたの下にある場合は、ターゲットを変更し、攻撃するターゲットの別の乱数を生成することによってターゲットを変更します。

攻撃モードのパーセンテージを増やすことで、システムへの距離を考慮し始めることができます。たとえば、最も負傷した人を攻撃するのに3ターンかかる場合。その値を3で割り、その差を他の2つの可能性に分配することにより、ターゲットの割合を減らします。

于 2010-06-28T14:57:53.470 に答える