タグ付けされた質問 「ai」

ゲーム内エンティティがその動作について決定を行う方法の設計および/またはロジック。

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

3
加速度が制限されているオブジェクトのパスを計算するにはどうすればよいですか?
たとえば、車があり、車に特定の最小回転半径があり、その車を点aから点bまで運転したいが、車が点bに向いていないとします。ポイントbへのパスを計算するにはどうすればよいですか?ポイントbで方向を指定できることも良いでしょう(たとえば、私道に車を運転してからガレージに車を引き込みたいとします-芝生の上をドライブして車道に着いたとしても、あまり役に立ちません。横向きです:) ドキュメントへのポインタ(または名前だけでも)は完全に問題ありません-私は何も見つけることができません。 私の試みでは、それらは単純なケースで機能しますが、ポイントbが最小回転半径よりもaに近い場合などの状況では無残に失敗します。 たとえば、次のようなパス(太字のパス)をどのように決定しますか。 編集:私の実際の問題では、いくつかの単純なパスの制約がありますが、私はすでに機能しているA *アルゴリズムを用意していますが、それは瞬間的な方向変更を可能にするので、車が突然90°回転するのを見るのはばかげているように見えます彼らが転換点に到達したとき、ダイムで。

2
ナビゲーションメッシュ全体の「見通し線」の経路
ナビゲーションメッシュの視線を計算したい。 下の画像を見てください。黄色の線はA *のみの結果であり、赤い線は黄色の線を入力として使用する見通し線アルゴリズムの結果です。これで、ユニットは「ジグザグ」することなく直接移動できます。 その「視線」を計算するアルゴリズムは何ですか?

3
AIエージェントはどのようにして環境に関する情報にアクセスしますか?
これはちょっとささいな質問かもしれませんが、私はこれを理解するのに苦労しています。よろしくお願いします。 オブジェクト指向設計を使用したゲーム開発で、AIエージェントがアクションを実行するためにゲームの世界から必要な情報にアクセスする方法を理解したいと思います。 誰もが知っているように、ゲームではAIエージェントが「環境を認識」し、周囲で何が起こっているかに応じて行動する必要があることがよくあります。たとえば、エージェントは、プレイヤーが十分に近づいたらプレーヤーを追跡する、移動中に障害物を回避する(障害物回避のステアリング動作を使用する)などのようにプログラムされている場合があります。 私の問題は、それを行う方法がわからないことです。AIエージェントは、ゲームの世界について必要な情報にどのようにアクセスできますか? 可能なアプローチの1つは、エージェントが必要な情報をゲームの世界から直接要求することです。 GameWorldというクラスがあります。重要なゲームロジック(ゲームループ、衝突検出など)を処理し、ゲーム内のすべてのエンティティへの参照も保持します。 このクラスをシングルトンにすることができます。エージェントがゲームワールドからの情報を必要とするとき、それは単にGameWorldインスタンスから直接それを取得します。 たとえば、エージェントSeekはプレーヤーが近くにいるときにプレーヤーにプログラムされます。これを行うには、エージェントはプレーヤーの位置を取得する必要があります。そのため、直接要求することができますGameWorld.instance().getPlayerPosition()。 エージェントは、ゲーム内のすべてのエンティティのリストを取得し、それをニーズに合わせて分析することもできます(どのエンティティが近くにあるか、またはその他の何かを把握するため): GameWorld.instance().getEntityList() これは最も簡単な方法です。エージェントはGameWorldクラスに直接連絡して、必要な情報を取得します。しかし、これが私が知っている唯一のアプローチです。良いものはありますか? 経験豊富なゲーム開発者はこれをどのように設計しますか?「すべてのエンティティのリストを取得し、必要なものを探す」アプローチは単純ですか?AIエージェントがアクションを実行するために必要な情報にアクセスできるようにするには、どのようなアプローチとメカニズムがありますか?
9 architecture  ai  oop 

3
AIを動かすときに重力を考慮する方法
2Dゲームを作っています。現在、プレイヤーが操縦するヘリコプターが飛び回っています。矢印キーを使用して制御されます:上、左、右。 Y軸に沿った速度はdy、X軸に沿った速度はdxです。 物理は次のとおりです。 たびUPが押されていない、dy、一定の加速度で加速し、無期限にダウンに向けました。(重力)。dx現在の値のままです。 場合UPが押され、dyそれが現在、あるものは何でもから一定の加速度で加速4まで(それは速度4に達するまで、上向きに)。dx現在の値のままです。 場合LEFTが押され、dxそれが現在、ある何から、一定の加速度で加速-4まで。 場合RIGHTが押され、それが現在、ある何から、一定の加速度で加速DX、4まで。 (私が言ったように、左または右が押され、同時に上が押されていない場合:dy重力がヘリコプターに影響しているため、ますます小さくなります) これにより、ヘリコプターは直線ではなく、空中のアーチに追従することがよくあります。 これにより、非常に現実的な物理が作成されます。 私の質問は: AIである敵のヘリコプターも同じ物理システムを使用して移動する必要があります。 AIが現在の場所からポイントBに移動したいとします。 ゲームに重力も緩やかな加速もなければ、それは簡単でしょう。AIの位置からポイントBまでのベクトルを描き、AIにそれを追跡させるだけです。 以来、しかし、そこにある重力と徐々に加速、AIは直線的に移動することはできません(ほとんど)。可能な限り時間効率的にAIをポイントBに移動させる最良の方法は何でしょうか? AIを特定の目的地に向けて移動するときに、重力をどのように考慮することができますか? (説明しやすい場合は、B点がAIと対角線ではなく、AIと同じy軸上のレベルにあると考えてください。) ありがとう
9 2d  physics  ai 

2
パスをスムーズにたどる
私は現在、敵が従う静的な所定のレーンを使用して2Dタワーディフェンスゲームを作成しています(つまり、タワーはパスをブロックできず、パス検索は解決しようとしている問題ではありません)。 私は、ユニットがこのレーンをスムーズに進む方法を正確に理解しようとしています。私はこれを行う方法について2つの大まかなアイデアを持っていますが、実装が容易である/より標準的なテクニックである可能性が高いいくつかの入力が好きです。またはもちろん、まったく考えていない方法がいくつかある場合は、それについても学びたいと思います。 ウェイポイント: 私の最初のアイデアは、パスを一連のハードコードされたウェイポイントとして定義することでした。次に、ユニットは基本的な「シーク」ステアリングアルゴリズム(このアルゴリズムなど)を使用して、パスに沿った各ウェイポイントに連続して移動します。しかし、ユニットが私が従うべきレーンから大きく逸脱しないようにするのは難しいのではないかと思いました。十分に鋭く曲がることができないと、希望のレーンから「滑空」する可能性があるのではないでしょうか。比較的強い操舵力をかけることでそれを防ぐことができるのではないでしょうか? ベジエ曲線: 私が検討した2番目のソリューションは、ベジエ曲線でパスを定義し、各タイムステップでユニットの現在の位置から(dt *速度)離れた曲線に沿ったポイントを計算することです。このテクニックを使用すると、ユニットがたどるパスを正確に定義することがはるかに容易になると思いますが、これを実装する方法を正確に知ることはできません。助言がありますか? また、これで誰かの答えが変わることはありませんが、ユニットはパスに沿って一定の速度で移動できなければなりません。さらに、私はpygletフレームワークを使用してこのゲームをpythonでプログラミングしています。 質問について不明な点がある場合はお知らせください。 編集:また、その価値にかかわらず、私は王国ラッシュでの敵の移動行動を再現しようとしています。

1
コンポーネント/エンティティベースの設計+ビヘイビアツリー=>統合方法
私の現在のプロジェクトでは、コンポーネント/エンティティベースのシステムを実装しました。基本的に、このかなり未定義の領域にあるベストプラクティスのほとんどに従っています。 だから私は(少し拡張された)エンティティを取得しました。これは基本的にintID、人間が読める名前、std::mapコンポーネントのa 、およびlong存在するコンポーネントを示すために使用される「タイプインジケーター」です(私はenumすべてのコンポーネントに対して2の累乗を持っています)タイプと、コンポーネントがエンティティに追加されるときはいつでも、ビット単位の演算によってその長さを自動的に変更し、比較しますます。この回答を)。 次に、Componentsもあります。これもかなり単純です。コンポーネントタイプとしてのintID enum、親エンティティポインター、およびstd::mapこのコンポーネントが保持するすべてのプロパティのa です。 最後に、実際のロジック処理を処理するいくつかのシステム/マネージャー。彼らは最初に、現在処理されているエンティティに一致するlong「タイプインジケーター」があるかどうかをチェックします=そのシステムに必要なすべてのコンポーネントが存在します。次に、必要に応じていくつかのプロパティにアクセスし、それぞれのコンポーネントの関数を直接呼び出すか、メッセージディスパッチャを介してメッセージを送信します。 結論:ここまでは、かなり標準的なイベント駆動型のコンポーネント/エンティティベースのシステムとデータ駆動型のアプローチを組み合わせたものです(比較すると、コンポーネントにはハードコードされたデータ変数がなく、(一部の)コンポーネントとして一般的なマップがありますコンポーネントの/ archetypesは後で、実際のコンポーネントコードの一部ではない追加データを追加するオプションを使用してファイルから読み取られます。 次に、そのプロジェクトに(AiGameDev BTSKに基づく)動作ツリーも導入したいと思いますが、それらを既存のコンポーネントにリンクする必要があるかどうか、どのようにリンクするべきか、またはそれらのデザインを一般的に統合する方法はわかりません。 いくつかの関連するアイデア/ポイント/質問が頭に浮かびます: 私のBTはファイルから(再び)読み込まれます。現在BT Action、ツリー内のとアプリケーションの実際のコーディングとの間の接続を最適にする方法を確認するのに苦労しています。BTファイルで使用されるアクション名と実際のロジック実装への関数ポインターとの間に何らかのマップを作成する必要がありますか?それを解決するための通常のアプローチは何ですか? 私はすべての異なるEntityタイプ(つまり、ゲームロジックとAIに関連するコンポーネントの組み合わせのそれぞれについて、何度も言及した長い「タイプインジケーター」で示されるように)に対してBTを作成する必要があると思います。結果として、BT Actionアクションごとに多くのコンポーネントが関与する可能性が最も高いため、コンポーネントに実装を配置することは意味がありませんか? それで、BT Actionロジックは複数の個別のシステムに配置する必要がありますか(アイデア#1からのマップが指し示すメソッドに)。次に、システムは私のlong「タイプインジケーター」ごとにEntity、BTが現在チェックされており、特定のアクション(=システム内のメソッド)の実行が実際に許可されている(=必要なコンポーネントがある)かどうかをチェックします。しかし、そうでない場合(たとえば、BT作成者が特定の状況を見落とし、実行時に必要なコンポーネントがエンティティにアタッチされなくなる可能性があるため)、何も起こりません。 質問: そのような統合のための実証済みの概念はありますか? 上記の3つの点についてどう思いますか? コンポーネント/エンティティベースのデザイン全般に関して、他に思い浮かぶことはありますか?

2
GOAPシステムでのコストの見積もり
現在、JavaでGOAPシステムを開発しています。GOAPの説明はhttp://web.media.mit.edu/~jorkin/goap.htmlにあります。基本的に、A *を使用して、世界の状態を変化させるアクション間をプロットします。 すべてのアクションと目標を実行するための公正な機会を提供するために、私はヒューリスティック関数を使用して何かを行うコストを見積もります。他のすべてのコストと比較できるように、このコストを見積もる最良の方法は何ですか? 例として、敵から逃げるコストとそれを攻撃するコストの見積もり-コストを比較できるように計算するにはどうすればよいですか?
9 java  ai  path-finding 

2
ヘビAIの設計
私はこのgamedev stackechangeを初めて使用しましたが、以前に数学およびcsサイトを使用しました。 だから、私は5ラウンドで他の4つのヘビと競合するヘビのAIを作成するコンテストに参加しています。ルールは、5つのヘビがあり、ボードが30x30であり、フィールド上の小さな障害の数。 ノキアのゲームのように、果物に到達するとヘビが成長し、自分にぶつかった場合、別のヘビまたは壁が死にます。ゲームは移動と移動の間に30ミリ秒の遅延で実行され、サーバーは50ミリ秒ごとに新しいゲームの状態を送信します。 勝者は、ゲームのどの時点でも最長のヘビです。タイブレーカーはキルによって決定されます。 これまでのところ、私のヘビがリンゴに最も近いかどうかを判断するために、各ヘビからのA *グラフ検索が実装されています。それ以外の場合は、次のリンゴを予測するために、ヘビが使用するボードの最も空いている領域を特定するために、きちんとした小さなアルゴリズムを作成しました。 これ以外にも、蛇が抜けないトラップに足を踏み入れていないことを確認するために、いくつかの生存可能性チェックを行っています。引っかかった場合は、抜ける可能性を高めるための何かを用意しています。 ... とにかく、私はテストサーバーでヘビをテストしましたが、非常にうまくいきます。一般的に、リンゴが確実な場合にのみ行き、そうでない場合にスペースを見つけるという私の戦略は、他のどのヘビよりも速く成長します(一部のヘビは同じようなことをしますが、多くの場合、真ん中または隅に行くだけです)。これらのトライアルゲームですが、生存率に優れているように思われる同じヘビに打ち負かされることがよくあります(私のヘビはより速く成長しますが、その後なんとか死に、この他のヘビはゆっくりと増殖し、一貫性に勝ちます。 だから私は誰かが私のヘビを改良しようと試みなければならないアイデアについて疑問に思っていました。それとも、新しいアプローチのアイデアかもしれません。私の関数とクラスは優れているので、劇的に見えるかもしれない変更も悪くないはずです。私はすべてのアイデアを奨励します。 何かご意見は?
9 ai  snake 

1
アクション指向のAI:回避アルゴリズムには時間がかかる
回避、つまり回避のプロセスは、追跡の反対です。ターゲットまでの距離を短くしようとするのではなく、最大化しようとします。 複数のオブジェクトを同時に回避している間は時間がかかります。ここではBFSを使用します。より速くするために、どのアルゴリズムを使用すればよいですか?

1
複雑な動きの車両をターゲットにしていますか?
既知の一定速度で車両を標的とすることは簡単であり、衝突がある(保証されているオブジェクトがその目標を導く有するために敵の位置を予測する、(一定の)速度と傾きを知ること、(d)に2つのオブジェクトのポイントを満たす検索します)。不正確なAIは、小さな誤差要因を追加することでモデル化できます。 しかし、動きがより複雑な車両をどのようにターゲットにするのでしょうか?おそらく、それはAIまたは別のゲームオブジェクトを回避しています。 私はFPS(弾丸の速度が有限である)で自分でそれをどのように行うかについて考えていましたが、直前の1秒程度のターゲットの動きに基づいて、少なくともいくつかのターゲットモードが必要になる可能性があると思います。 線形モデルで、線形に近い(特定の範囲のピーク加速度)ターゲットの場合 非常に不規則な場合(おそらく、最近の位置のバウンディングボックスのサイズを使用できますか?) 今のところ、私は2D空間を想定できます。AIは静止しており、発射体は誘導されず、直線的に移動します。
9 ai  aiming 

2
エンティティの状態がenter()、execute()、exit()を完全に利用しない場合の設計上の欠陥はありますか?
私はMat BucklandのプログラミングゲームAIの例をフォローしていますが、エンティティの状態で常にenter()、execute()、exit()を使用する必要はありません。たとえば、RPGでは、武器に装備状態がある場合があり、その状態に対してenter()およびexit()を使用して、プレーヤーの能力モディファイアに加算または減算することができますが、実際にはexecute()の必要はありません)。これは私のエンジンの設計上の欠陥ですか、それともこのアプローチの欠点ですか?

1
ボードゲームAIの作成
私はOkeyという名前で、主にトルコで人気のあるボードゲームをコーディングしたいと思っています。http://en.wikipedia.org/wiki/Okey しかし、私はAIについていくつかの問題を抱えています。 最初にゲームについて説明させてください。 ゲームは4人のプレーヤーでプレイされます。 このゲームには106のタイルがあり、そのうちの2つは偽のジョーカーです。他の104のタイルは、一般的に緑、黒、青、赤の4色に分かれています。すべての色には2セットのタイルがあります。セットiseには、1から13まで順番に番号が付けられた13のタイルが含まれています。 各プレーヤーは14タイルを開始し(1つは開始15で最初に開始)、最も不要なタイルの1つを次のプレーヤーに投げます。次のプレーヤーは、このタイルを取得するか、テーブルの中央にあるスタックから別のタイルを取得できます。ゲームは反時計回りに再生されました。 このゲームの目的は、14タイルの有効なシーケンスをできるだけ早く見つけることです。プレーヤーは、タイルを13まで同じ色で連番で並べることができます。たとえば、緑1、緑2、緑3の場合は例外です。ここでは例外があり、1は13に続くことができます。たとえば、赤12、赤13、赤1は有効なセット。ただし、赤13、赤1、赤2は無効です。 または、プレーヤーは同じ数の色でタイルを揃えることができます。たとえば、緑1、黒1、赤1、青1などです。 各セットを有効にするには、3つ以上のタイルである必要があり、このセットのそれぞれに「Per」という名前を付けます。仕上げには3タイル未満は無効です。有効な仕上げセットは次のようになります。G:緑、B:青、R:赤、BL:黒G1 | G2 | G3 B2 | R2 | BL2 R9 | R10 | R11 | R12 BL13 | R13 | G13 最後に、ゲームを開始するときに、ジョーカー(オーケー)を決定するために選択されたタイル。たとえば、Blue 3を選択した場合。青4はジョーカー(オーケー)となり、プレーヤーは、セットを獲得または完了するために必要なタイルの代わりに、このタイルを使用できます。 もちろん、これらの規則は一般的な規則であり、質問を説明するために要約されています。英語が読める場合は、このリンクで詳細を確認できますhttp://tr.wikipedia.org/wiki/OkeyまたはGoogle Translateによる翻訳ページhttp://translate.google.com/translate?js=n&prev=_t&hl= en&ie = UTF-8&layout = 2&eotf = 1&sl = tr&tl = en&u = http://tr.wikipedia.org/wiki/Okey では、どのAIアルゴリズムを使用できますか?ミニマックス理論とアルファベータ剪定を探しました。しかし、これらの理論は通常、チェスや三目並べのような2人のプレーヤーによるゲームです。 元の質問は、stackoverflowにあります。https://stackoverflow.com/questions/4419628/creating-a-board-game-ai

4
どのようにして車両をポイントに移動させ、行き過ぎたり振動したりせずに停止しますか?
では、この質問に対する私の回答で説明したような、2Dの位置、速度、角速度、および抗力/摩擦を備えた車両があるとします。それは加速し、可変の量で壊すことができますが、すぐに完全に停止したり、すぐに最高速度に達したりすることはできません。オーバーシュートや振動なしに、特定のポイントに移動して停止させるにはどうすればよいですか? 私は次のようなことを考えていました: 目標位置に向けます。 加速する 1ティック先を見て、「次のティックにブレークを適用した場合、ターゲットをオーバーシュートしますか?」と尋ねます。 オーバーシュートする場合は、ここである程度の間隔をあけてください。 これは解決された問題であり、おそらく私が説明した方法よりも優れた方法があるでしょう。
9 physics  ai 

3
レーシングAI動作のパターン
それでは、スプラインベースのレーシングAIがあるとします。トラックの周りのブレーキングとステアリングの基本をすでに処理できると仮定します。 衝突回避、追い越し、ドラフティング、ブロッキング、その他の動作をどのように構成および実装して、車の競争力を維持しながら興味深いレースを行いますか? 論文/実装へのリンクは素晴らしいでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.