リアルタイムストラテジーの話
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/17 12:31ID:EBHuprcvリアルタイムストラテジーの開発の話題
0630名前は開発中のものです。
2009/09/18(金) 13:37:39ID:VKzlhJpp3は最初に探索した結果に元づいて最後まで歩けばOK(プレイヤーが再指示しない限り再探索しない)
1は自身も言ってるけど、障害物の位置を覚くことで回避でいいんじゃないか?
RTSはプレイヤーごとに目視済みのマップを持っているものが多いし(別の問題ってなんだろう?)
でも、AOE2ではこの問題起こるんだよね。プレイヤーごとの目視済みマップ持ってるはずなのに、
見えない情報による経路探索を行ってる。で実際にチートライクに情報を得るために使用できる
これはAOE2の仕様の欠陥だと思う
2はプレイヤーの選択肢の話
これのポイントは障害物は障害をするためのものってことで相手を通さないことが目的(少なくともその概念で処理する必要がある)。
破壊したい場合もあるだろうが、破壊困難な障害目的のオブジェクトにひたすら攻撃されても困るだろう
いずれにしてもプレイヤーの選択肢に依るもの
もうひとつは、建物だけなく地形もあり得るってこと、木が伐採されて資源にされて通り道ができてるのに、ものすごく遠回りするっておかしくないか?
>>629 それってフレーム問題だよね
人の脳は閾値超えないと意識に上がってこないから、適度に無意識的に無視されてるってことじゃない?
0631名前は開発中のものです。
2009/09/18(金) 14:47:33ID:b8hoyw0a障害物のところまで見に行って情報を更新して、まだ障害物があったら別の障害物を見に行って、そこも残っていたら
また始めの障害物があるか見に行くとかやるのかな。スマートなやり方が思いつかない。
実際、>>628の問題は色々な解決方法があると思う
そもそもぼくが動的なものと静的なものの障害物回避を別アルゴリズムにしようと思ったのは、
経路探索でユニット同士の衝突回避する方法が思い浮かばなかったから…
>>630さんはユニット同士の衝突回避は経路探索でやっているの?
それが一番聞きたかったりする
0632名前は開発中のものです。
2009/09/18(金) 15:39:49ID:VKzlhJppユニットのごく近い移動の部分は遠いマップの移動の経路探索とは別に処理するのがいいと思う。そこは同じ
静的と動的を分ける線の引きかたが自分とは違うだけのように思えるな
1.ゲームの開始から終わりまで経路の障害として変化しないもの(生成・消滅しない地形)
2.生成も消滅もある。ただし、頻繁ではないもの(建物と生成・消滅する地形)
3.生成も消滅も頻繁で、場所がどんどん移動するもの(ユニット)
このうちの1.、2.を静的なものとして扱って、3を動的なものとして扱うのがいいんじゃないかという話ね
ユニットは移動だけでなく他にもいろいろな動作を行うので、近い範囲の探索(探査)ってたくさん必要になるのでそっちのほうが頭が痛い
衝突回避(近い距離の探索)はA*でなくてもっと単純な方法でもいいと思うよ
なんだか、>>621の言う遠いmapの移動をA*でやろうとするとえらいことになる問題、の話とは少し違う話だね
0633名前は開発中のものです。
2009/09/19(土) 09:52:44ID:22Nb82Snごりごり押して通ってくでいいんじゃね?
0634名前は開発中のものです。
2009/09/19(土) 10:22:54ID:IcY/o6ba入り口に中継ポイント置いて、部屋の中だけ細かく探索すれば良いのかな・・・。
オープンなフィールドタイプだとよく分からん。
>>633
アクションゲーならごり押しでもいい気がするが、
RTSってちゃんと迂回してよけてるよね。
止まってるやつはぶつかって壁沿い移動でも良いかと思ったが、
大勢が接近して動いてるとひっかかる・・・。
0635名前は開発中のものです。
2010/09/25(土) 22:22:43ID:0wOo+o0q0637名前は開発中のものです。
2011/09/15(木) 03:22:19.28ID:fDDSGBEh具体的には、静的な障害物の経路探索の結果得られた経路にそれぞれ経路ポイント
(例えば距離などから算出する重み)がついていて、その経路上に動的なオブジェクトが
いくつかあるなら、それぞれのオブジェクトが持つ重みを経路ポイントに加えていき、もっとも
ポイントの高い(または低い)経路を選択するって方法。
以下大文字は重みで、小文字はその重みに対するAIの係数だとすると
D: 目標までの経路が持つ距離の重み
A: 動的な障害物の種類A(例えば強敵)が持つ重み
B: 同B(例えば雑魚)
などとすると、障害物Aが2個、Bが1個ある経路の重みは
重み = D * d + 2*(A * a) + B * b
で得られる。
各オブジェクトの重みを適切に設定することが調整で、AIが支配するキャラクターによる
各行動や判断の際に掛ける係数を決めることがAIを編集することになる。
これ以前に必要な目標の設定も、行動の設定も同一の重み計算に帰結させるのが、
基本的なAIの設計だと思うけど。
0638名前は開発中のものです。
2011/11/15(火) 21:00:28.27ID:r/wJ2YaA一ヶ月前に衝動的にRTSを作りたくなって作ってみた
http://hnw.go2.jp/RTS10b.zip
見た目は重視せず最低限RTSとしての体裁を取ろうとしたけれど、
A*なんて複雑なものは使ってないしユニットは重なる、戦略級のAIは未搭載と
まだまだ改善点が多い
■ このスレッドは過去ログ倉庫に格納されています