リアルタイムストラテジーの話
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/17 12:31ID:EBHuprcvリアルタイムストラテジーの開発の話題
0533名前は開発中のものです。
2007/03/25(日) 12:02:42ID:iAjOgJKS見つけることができました。ありがとうございます。
0534名前は開発中のものです。
2007/03/25(日) 12:05:24ID:I/9L2swx0535名前は開発中のものです。
2007/03/26(月) 00:22:08ID:QP0b+gS50536名前は開発中のものです。
2007/03/26(月) 17:14:07ID:dyca4YYmアハリスは、内政要素がないからRTSとは言えないな。
0537名前は開発中のものです。
2007/03/27(火) 10:03:12ID:KORunXqt内政要素なくてもRTSはRTSだと思うけど
アハリスは知らんが
0538名前は開発中のものです。
2007/03/27(火) 10:04:21ID:KORunXqtどうみてもRTSですw
0539名前は開発中のものです。
2007/03/27(火) 11:19:49ID:olAzKk3Tstrategy = 戦略
tactics = 戦術
とした時にRTSは戦略だから内政無いとおかしいってことだろ
strategyには意味として戦術も戦略も含まれてるからどっちでもいい気もする
個人的にはジャンルのくくりなんてそもそもどうでもいいと思うが
0540名前は開発中のものです。
2007/03/27(火) 11:31:21ID:9UXSSmobと、うちの犬が言ってました。
0541名前は開発中のものです。
2007/03/27(火) 17:14:07ID:M2kyERm+自機がパワーアップするシューティングも、RTSだと言えるようになってしまうのだが
0542名前は開発中のものです。
2007/03/27(火) 18:03:41ID:e1SbkbMZ下らん定義づけはゲハでやれ
0543名前は開発中のものです。
2007/03/28(水) 00:11:58ID:gB6U61fq別に誰かが用意してなかったっけ?
それ以降、こっちのスレは技術的な話をすることになったはず
0544名前は開発中のものです。
2007/03/28(水) 00:33:33ID:gB6U61fqマップをランダム生成するときに特に深く考えずに中点変位とかで
作ると自然といえば自然な地形にはなってくれるんだけどさ
いい具合に崖があったりとか谷があったりとか、
説明しにくいんだけどアクセントがつきにくい気がするんだけど
普通、どうやって地形生成してるんだろ?
0545名前は開発中のものです。
2007/03/29(木) 19:00:32ID:hf0ldla+0546名前は開発中のものです。
2007/03/29(木) 21:16:18ID:zRCFBDOm技術的な話でないものはこちらでお願い。
RTS のデザインについて(実装技術は除く)
http://pc11.2ch.net/test/read.cgi/gamedev/1007303109/
0547名前は開発中のものです。
2007/04/03(火) 18:07:24ID:UR4+jJMUAIなんか誰にも作れない。
0548名前は開発中のものです。
2007/04/04(水) 03:37:21ID:pelqchqaいったい誰にマジレスしてるんだ?
0549名前は開発中のものです。
2007/04/05(木) 19:19:40ID:1g3oaznN経路探査を遅くしたくないから2次元にしてみたいんだけど恐ろしくメモリ食っちゃう
0550名前は開発中のものです。
2007/04/05(木) 19:35:20ID:YJxOOL5F戦術シムのなら作ったんだけどなー
RTSでもマップをヘックスとかスクウェアとかに分割してやるんだろうか
0551名前は開発中のものです。
2007/04/06(金) 12:58:59ID:fj96UAC8どういうやり方やってるのかわからないけど、メモリの使用量と、処理量はトレードオフだから、現実的に利用できる落としどころを見つけて、後は最適化がんばるしかないんじゃないの?
0552名前は開発中のものです。
2007/04/12(木) 00:18:57ID:7huQQ9Pj中点変異ってダイヤモンド・スクエア アルゴリズムのこと?
ダイヤモンド・スクエア アルゴリズムだとheightの取り幅によるけど、
平坦か、とげとげした地形になりがちのような気がする。
例えば、ダイヤモンド・スクエア アルゴリズムで大体の地形を作った後、
1次元フラクタルで溝を掘ったりとか、段階ごとに複数のアルゴリズムを
組み合わせたりすればいいんじゃないか?
0553名前は開発中のものです。
2007/04/20(金) 01:36:14ID:kjigcWnz遅いレスですまん。見てなかった。
ダイアモンド・スクエアステップでもいいし、quadtreeっぽいのを作りながら
単純にどんどん分割でもいいんだけど細分化してくことを言ってた。
とげとげ地形は、xz平面の1辺1mとした時に高さも1m単位にすると
角度が急になりすぎるんでとげとげになるね。
そこから高さ成分は適当に縮小してあげれば
(y * 0.2とか)なめらか地形になるよね。
高さ8bitだと値の範囲が足りないけど、16bitとか32bit使えばそれなりに幅でるし。
やっぱり、地形作ったあとに谷とか川とかを作る作業が必要なのかな。
0554なんとなく張っとく
2007/04/24(火) 06:49:27ID:9kXX4cmA* FEAR
o http://fear.sourceforge.net/
* PathLIB
o http://pathlib.hildebrand.cz/pathlib.html
* MicroPather
o http://www.grinninglizard.com/MicroPather/
AI Links repositories
* Generation5 - Articles
* GameDev.net -- AI
* AI on the Web
* AngelCode.com - reference database
* Game Research and Technology
* IGDA - AI SIG
* The Game AI Page
* aboutAI.net
* aboutAI.net
* Generation5 - Competition
* AI Center - Site Map
* gameAI_news
[edit]
SDKs
* FEAR :: Foundations for Genuine Game AI
* MetaAgent, A Steering Behavior Template Library - Compiling Meta Agent
* OpenSteer
* OpenAI
* OpenSkyNet
0555なんとなく張っとく
2007/04/24(火) 06:50:04ID:9kXX4cmAGeneral Architectures
* Half-life AI (MUST READ)
* AI Horizon: Essays on Artificial Intelligence, from the Basics to the Advanced
* AI Halo
* Gamasutra - Features - Handling Complexity in the Halo 2 AI
* Gamasutra -"Decision-based Gameplay Design"
* Complete Game AI: Volume I
* Item Management Systems
PathFinding
* Huge Theorical exhaustive Book on pathfinding
* Terrain analysis on age of empire (MUST READ)
* AI terrain
* Amit's A* Pages
* An optimal pathfinder for vehicles in real-world digital terrain maps
* Smart Moves: Intelligent Path Finding
* Toward More Realistic Pathfinding
* All FPS pathing problems in a presentation
* 3d path
* C++ Group Pathfinding Basic Library and Test Tool
* ASTAR pathfinding algorithm in Ogre - Nice example with source
0556なんとなく張っとく
2007/04/24(火) 06:52:54ID:9kXX4cmA* Boids (Flocks, Herds, and Schools: a Distributed Behavioral Model)
Tactic
* Game AI and Tactical AI
Steering
* List : steering Behaviors For Autonomous Characters
Rule-Based System (RBS)
* Rule-Based Systems and Identification Trees
Neural Networks (NN)
* tensor (small NN)
Fuzzy logic (FL)
* aiGuru.com
Finite State Machine (FSM)
* Visual Finite State Machine AI Systems
Decision Tree (DT)
* generation5 - Binary Decision Tree implementation in C++
Emotion
* generation5 - VPI: Virtual Personality Interaction
Lag
* Defeating Lag With Cubic Splines Or AI path moves Cells
Expert Systems
* Expert Systems
Learning Systems
* AI character learning
0557名前は開発中のものです。
2007/10/15(月) 00:17:15ID:duRaxpSE0558名前は開発中のものです。
2007/10/16(火) 01:37:08ID:EBLEskhE経路選択から、集団でのAIまでカバーという・・・
障害物ありの2Dマップで、メッシュに区切って、A*での経路選択も解説されてる
サンプルのAIは、アクションゲームよりなので、
そのまんまとはいえないけど、かなり使えると思う
目次と、サンプルプログラムのダウンロードはこちらから
http://www.oreilly.co.jp/books/9784873113395/
Amazon.co.jp: 実例で学ぶゲームAIプログラミング: 本: Mat Buckland,松田 晃一
http://amazon.co.jp/dp/4873113393/
0559名前は開発中のものです。
2007/10/18(木) 11:26:43ID:3BAlF19V総当りで、無駄を省いたものと思ったらいい。
0560名前は開発中のものです。
2007/10/21(日) 21:26:00ID:3Jn9ooik0561名前は開発中のものです。
2007/10/23(火) 23:27:40ID:rUkzCPPHこの本のソースコード試した人いる?
http://www.wordware.com/files/ai/files/Buckland_AISource.zip
HandyGraphFunctions.hの中のCreateAllPairsTable()が失敗しちゃうんだけど誰かわからないかなぁ。
//グラフ作成
SparseGraph<NavGraphNode<>, GraphEdge> graph( false );
//グリッド作成
GraphHelper_CreateGrid<SparseGraph<NavGraphNode<>, GraphEdge> >( graph, 32, 32, 16, 16 );
//パステーブル作成
std::vector<std::vector<int> > table = CreateAllPairsTable<SparseGraph<NavGraphNode<>, GraphEdge> >( graph );//実行時エラーが出る
Graph_SearchDijkstra<graph_type>::Search()の中のconst Edge* pE=ConstEdgeItr.begin()で
_DEBUG_ERROR("list iterator not dereferencable")が出てるっぽい。
0562名前は開発中のものです。
2007/12/06(木) 04:12:24ID:ixkIQIZCA*がわかりそうでわからない
当分は壁伝いねずみ方式のままだな
0563名前は開発中のものです。
2007/12/07(金) 15:26:24ID:FEDlkfaA以前、マップを升目で分割するとかいう話が出ましたが、これは
「画面には表示しないが、データ上はターン制シミュのように升目を単位に移動する」
ということですか?
0564名前は開発中のものです。
2007/12/13(木) 15:25:21ID:aZE8qZRa「移動目標地点」を決める時に升目で計算して
おおざっぱな座標が求められればそれでいいんじゃないのかな?
「指定された座標の”近くまで”移動する」って感じで。
0565名前は開発中のものです。
2007/12/14(金) 21:57:36ID:hsbU01NNそれをやれば計算量がそれなりに減るのですか?
0566名前は開発中のものです。
2007/12/14(金) 22:21:39ID:mcmX3NCO0567名前は開発中のものです。
2007/12/16(日) 00:28:11ID:jtwlNS8h0568名前は開発中のものです。
2007/12/30(日) 21:58:55ID:wplnxYnl建物とかあとからあとから頻繁に作られる障害物のことを考えると・・・ほんと難しいな
今のところ、最初に大きく区切ったもので探索して、
通れそうなら小さいメッシュに区切ったもので探索
重くなる場合は何フレームかに分けて・・・AIや描画のことも考えると激重にならないか心配・・・
0569名前は開発中のものです。
2007/12/30(日) 23:16:19ID:XC/qCMwPそもそも再帰が分かってないんじゃないの?
0570名前は開発中のものです。
2007/12/30(日) 23:30:08ID:g5CdMtbTそうなんだよね 大雑把計算用のマップ作ると障害物が出来たり消えたりしたときに経路が変ったのを大雑把マップに反映させるのが大変
軽いいいアルゴリズムがなかなか思いつかない
市販のゲームはどうやってんだろ
0571名前は開発中のものです。
2007/12/30(日) 23:59:39ID:wplnxYnlちょっと弄ってはいるけどA*を使ってる
ほんと昔のゲームはどうやっていたんだろう
0572名前は開発中のものです。
2007/12/31(月) 03:33:28ID:Ja+o36Kw経路あるのに、凹凸があるとすぐに引っかかる。
0573名前は開発中のものです。
2007/12/31(月) 16:34:44ID:nKgtOnB9接触したらある程度それに沿って探査するとよさそうなんだけど・・・A*にうまく組み込めない/(^o^)\
あと、ルートがない場所とかどうやって判断するんだろう
RTSじゃ壁で囲むとかよくありそうだけど
0574名前は開発中のものです。
2007/12/31(月) 19:49:43ID:zG8TALS6塗りつぶしアルゴリズムで閉じた領域を探すとかできそうだけど。
0575名前は開発中のものです。
2007/12/31(月) 19:54:28ID:zG8TALS6■■□□□■□□□□□
□□□□□■□■■■■
□■□□□■□■□□□
□■□□□■□■□□□
□■□□□■□■□□□
↑あらかじめ塗りつぶすと、以下のように区画分けができる。
省略しているが、区画IDはその区画の全地点に書かれている。
1 ■2 □□■3 □□□□
■■□□□■□□□□□
□□□□□■□■■■■
□■□□□■□■4 □□
□■□□□■□■□□□
□■□□□■□■□□□
これで、ユニットがある区画IDにいるとして、目的地の区画IDと
同じかどうかによって。移動できるか否かを一瞬で判断できる。
0576名前は開発中のものです。
2007/12/31(月) 20:21:36ID:zG8TALS6壁(通り抜けできないオブジェクト)が作られたときに周囲のマスを見て
同じ区画IDを分割してたら、その区画だけ塗り直し。
壁が破壊されたときに違う区画IDを接続してたら、区画IDの小さいほうで
大きいほうを塗り潰す。(IDの連番化のタイミングはお好みで)
A*で探索するときには、開始地点と同じ区画IDの領域しか探索しない。
などがあると思われる。
0577名前は開発中のものです。
2008/01/01(火) 09:32:52ID:/HQTRHr30578名前は開発中のものです。
2008/01/01(火) 15:29:00ID:LLRAKXA20579名前は開発中のものです。
2008/01/02(水) 03:08:33ID:JuBEjuNy0580名前は開発中のものです。
2008/01/02(水) 13:26:46ID:6R/nnppeオブジェクト作るたびに調べるのは逆に処理が多くなったりしない?
0581名前は開発中のものです。
2008/01/02(水) 14:09:35ID:6Z1ZT6TW0582名前は開発中のものです。
2008/01/02(水) 15:27:52ID:VOmWBVJX区画の分割で使うアルゴリズムはWindowsのペイントで画像の塗りつぶし処理するときの
アルゴリズムと同じ(シードフィルアルゴリズム)だから、そんなに遅くなることは無いと
思うけど・・・低スペックのPCも動作対象?(汗
具体的な処理の多さ、ゲームシステム的にどんなペースで障害物を作っていくか
(消えていくか)にもよると思う。
たとえばAoE系のRTSでは、森も障害物の一種で、採取されると消えていく。
また、「塔の死角を埋めるため」や「じっくり内政するため」に森と壁を組み合わせて
区画を作っていくこともある。総合的に見ると、イベントとして一番多いのは森の減少だと思う。
つまり、ほぼ森が減るたびに区画分け処理が必要になるはず。
たぶん最近のPCなら速度は問題にならないだろうけど、再帰が何度も走ることによる
メモリの細分化など、ゲーム特有の心配事が出てくる可能性はあるかもしれない。
この場合、森が減っても最低でもX秒の間隔を空けないと区画を更新しないとか、
そういう姑息な逃げ方もある。移動ルートの有無判定に使うなら、数秒くらい遅れても
気にする人はほとんどいないだろうし。
0583名前は開発中のものです。
2008/01/02(水) 15:45:46ID:6Z1ZT6TW0584名前は開発中のものです。
2008/01/02(水) 16:43:51ID:eQIwOl4H少なくともAOCでは
0585名前は開発中のものです。
2008/01/02(水) 17:34:12ID:6R/nnppeそういえば、なにかのゲームで壁に穴を開けてもすぐに通れなかったことがあった
ストロングホールドだったかな
0586名前は開発中のものです。
2008/01/02(水) 20:43:29ID:6R/nnppeよく考えて質問すればよかった。スマソ
0587名前は開発中のものです。
2008/01/02(水) 23:01:47ID:W1bZAQI9やればいいという投げやりな最適化もある。この方法なら、細かい森や壁の増減は
パフォーマンスに影響しない(はず)。
0588名前は開発中のものです。
2008/01/04(金) 16:18:54ID:U38EPRLH隣接した空白マスから探索を始めて、全て繋がっているか調べればいいんじゃ?
"探索は通り抜けられないオブジェクト沿いにする"って条件をつければ探索するマスも少なくて済みそう。
これならどうだろう?
0589名前は開発中のものです。
2008/01/04(金) 16:32:34ID:pabnnvk7閉路をA*でまともに探索したら全探索になるからそういう意味では意味もあると思うけど、RTSのマップって閉区間への移動ってあんまり多くない気もするしなあ
http://www.o440.info/developing/findpath/
ここでやってるようなやり方でオブジェクトが頻繁に変更されても対応できるようなのがベストだと思うんだが
0590名前は開発中のものです。
2008/01/04(金) 21:20:34ID:ucWFPrhwそのページを見て思ったこと。
長方形にこだわる理由が薄いと思った。
そのページの手法とシードフィル(塗りつぶし)と比較すると、シードフィルは
常に高さ1の長方形を利用する、再帰的な空間分割アルゴリズムとみなせる。
なので、もし閉空間が無いマップなら、(たぶん)再帰の順序を記録していけば
一回でグラフ化までやれるはず。
(閉空間がn個ある場合は何も考えずに書くとn回の全検索が要るかもしれないが)
ただ、あんまり細切れの空間にしてしまうとA*を高速化するという
本来の目的から離れてしまう可能性がなきにしもあらず。
いくつかの「高さ1の長方形」を結合して「高さnの長方形+小さな空間」に
することで、全体的に見てそのページのアルゴリズムの欠点(空間分割の遅さ)
を改善できるんじゃないかと思った。
0591名前は開発中のものです。
2008/01/04(金) 21:57:06ID:ucWFPrhw共通しているのは、凸凹が多いマップだと空間分割が遅くなる(または
小空間の結合がうまくいかない)だろうということ。
それでも、壁や木などのユニット以外の障害物が相手ならば有効だと思う。
----
しかし、ユニット(動く小さな障害物)を含めて処理しようとすると
マップは凸凹だらけになってしまい、空間分割をかなりの頻度で
行う必要が出てきてしまうのではないか?
なので、少し荒いマップ(4x4程度の大きなセル)を用意して
「障害物の密度」を集計し、50%とかの閾値を越えたら「壁」、以下なら「道」と
いうことにしてしまい、そっちの荒いマップで空間分割&グラフ化
→分割漏れのセルを周囲の空間グラフに結合。
みたいな最適化が必要になってくるのでは・・・
ただ、荒いマップを使う場合、アルゴリズムとして評価するのが
難しくなってしまうというデメリットがあるのでおいらも分からん・・・
0592検証1/2
2008/01/04(金) 22:14:49ID:ucWFPrhw□□□□□□□□
□□□■■■■□
□□□□□■□□
□□■■□■■■
□□■□□□□□
□■■■□□□■
□□■■□□□□
■□■□□□□□
これを左上から単純に塗っていくと以下のようになる。
1 1 1 1 1 1 1 1
2 2 2 ■■■■E
3 3 3 3 3 ■F F
4 4 ■■9 ■■■
5 5 ■A A A A A
6 ■■■B B B ■
7 7 ■■C C C C
■8 ■D D D D D
悪くはないが、左上、右下などに疑問が残る結果となった。
0593検証2/3
2008/01/04(金) 22:19:28ID:ucWFPrhw壁の個数を集計する。
・4x4のマップ(各セルの最大は16)
3 7
8 1
・2x2のマップ(各セルの最大は4)
0 1 2 1
0 2 2 2
1 3 0 1
1 3 0 0
それぞれ、閾値を50%(8、2)とし、それに満たない領域は
「壁が無い」と見做して優先的に塗る。それ以外は普通に塗る。
0594検証3/3
2008/01/04(金) 22:19:55ID:ucWFPrhw2 2 2 ■■■■3
2 2 6 6 6 ■5 5
2 2 ■■7 ■■■
2 2 ■8 1 1 1 1
2 ■■■1 1 1 ■
2 2 ■■1 1 1 1
■2 ■9 1 1 1 1
1)4x4の右下の1に対応
2)2x2の左上の0、1の部分に対応
3)2x2の右上
得られたグラフ
2−4−3−5
└6−7−1−8
└−9
なんとなく最初よりマシになったような気もするが、
これは「へこみのない空間に分割する」を満たしていないので、
A*適用後の経路探索が遅くなったりするのかも・・・???
改行が多すぎて3レスになってしまった。検証終わり。
0595名前は開発中のものです。
2008/01/04(金) 22:30:10ID:1B2gtP5p壁の数がセルの幅未満だったら(4x4なら4未満だったら)、に訂正しておきます。
(幸運にも上の例では結果は変わらず)
0596名前は開発中のものです。
2008/01/04(金) 23:24:17ID:pabnnvk7ざっとみた限りでとりあえず気づいた問題となりそうなこと
・4x4の荒いグリッド内に3以下の壁で閉区間になっている可能性があるので、その荒さのみでは判断できない
□□■□
□□□■
□□□□
□□□□
・塗りつぶした区画の面積の幅が大きく、また縦や横に長くなる可能性があるので、経路を探索結果が最短でない可能性がある。(このあたりが凹みのない形にこだわる理由だと思う。たぶん方形または円に近い形での分割が理想)
0597名前は開発中のものです。
2008/01/04(金) 23:44:09ID:U38EPRLH経路探索するとき探索したノード数が一定以上になったら強制的に終了って感じにするかな。
0598名前は開発中のものです。
2008/01/05(土) 00:59:27ID:DWnOTY5Lやっぱり方形か円のほうが都合がいいんだね。
速度を無視するなら簡易ライフゲームを使うとかなり最適に近い分割ができるかも。
全ての地点に種を蒔いて、風船みたいに膨らませてゆく。全部が限界まで膨らんだら、
大きい順に被ってないものを確定させて、残った空間で繰り返し。
遅いかもだが、他アルゴリズムとの比較には使えそう。
0599名前は開発中のものです。
2008/01/05(土) 01:25:45ID:DWnOTY5L0600名前は開発中のものです。
2008/01/12(土) 11:51:10ID:IT6ibzlX衝突判定によく使われるだろうから、マップを大き目のメッシュに区切って
その範囲にあるオブジェクトごとにまとめる方法しか思いつかないんだけどなにかいい方法ないかな
0601名前は開発中のものです。
2008/01/12(土) 19:20:27ID:hEqKucAj0602名前は開発中のものです。
2008/03/12(水) 04:48:44ID:qd0viGkL移動不可能地形を踏んだらその座標を記憶(a,b)
そのまま真っ直ぐ進んで再び移動可能地形を踏んだらその座標を記憶(c,d)して止まる
(a,b)と(c,d)の中間地点にジャンプしてそこからもともとの移動方向の左右90°方向に
腕を伸ばしていき、その先端が先に移動可能地形を踏んだら、先端の座標を
中継地点として記憶(e,f)、直前の点と向かっていた点の間に挿入
母機に戻って、今度は母機−(e,f)−移動先の順で以下ループ
移動先まで一度も移動不可能地形を踏まなかったらループ脱出、母機がトレース
検索に時間かかるけど、これでかなり複雑な地形も避けれた
0603名前は開発中のものです。
2008/03/12(水) 09:19:36ID:2gVZEmZ80604名前は開発中のものです。
2008/06/04(水) 19:44:06ID:xVETCOHbTopPage - game-develop.com wiki
http://wiki.game-develop.com/
GameDevWikiを何とかするスレ
http://pc11.2ch.net/test/read.cgi/gamedev/1156117275/
0605名前は開発中のものです。
2008/12/13(土) 08:25:05ID:cgk67oNk0606名前は開発中のものです。
2009/02/14(土) 09:00:22ID:tlIUVtpz0607名前は開発中のものです。
2009/02/14(土) 12:15:06ID:YNh7Hq3A空間をうまいことユニット量の扁りに合わせてインデックス付けして、とかじゃない?
0608ううううううううう
2009/03/20(金) 13:40:37ID:fumyNFsN0609名前は開発中のものです。
2009/03/20(金) 15:23:24ID:SKg/aFx30610名前は開発中のものです。
2009/03/22(日) 17:24:58ID:9ppwVol50611名前は開発中のものです。
2009/04/16(木) 22:46:15ID:PbgwUxSo0612名前は開発中のものです。
2009/08/11(火) 22:42:15ID:sQbOWnZnRTSっていろんな技術の集大成みたいなプログラムだな。
0613名前は開発中のものです。
2009/08/12(水) 20:31:40ID:nD4qvmJk0614名前は開発中のものです。
2009/08/15(土) 14:15:27ID:rbwkkWCO0615名前は開発中のものです。
2009/08/15(土) 18:31:11ID:fNTYYbsV0616名前は開発中のものです。
2009/08/16(日) 17:59:36ID:lEqnVWVfゲームシステムを自由にカスタマイズできるツクールなんてできるわけないので(処理速度要求されるRTSでは特に)、実現不可能だろうね。
絵とシナリオだけ差し替えたRTSなんてなんの面白みもない。
0617名前は開発中のものです。
2009/08/17(月) 10:34:20ID:Iq/i6CUr0618名前は開発中のものです。
2009/08/22(土) 23:57:29ID:FHc1a/dsRTSでよく使うシステム…ユニット選択とか管理とか指示とか地形、視界、経路探索、AI諸々のスクリプトサンプルを
シリーズで出そうとしたことがある
全部まとめるとblizzard式ウォーシミュの骨格が出来る予定だったが…
本体のほうでやることが多すぎて手がつけられませんでしたとさ
0619名前は開発中のものです。
2009/08/23(日) 06:49:23ID:fpmJyPHD0620名前は開発中のものです。
2009/08/23(日) 15:00:05ID:iFWgU0ct俺、昔 RPGツクール2000でRTS作ってたよww
今となっては良い黒歴史だ。
0621名前は開発中のものです。
2009/09/17(木) 23:09:29ID:dP/tTAbdどういう方法が良いんだろうか。
256x256くらいなら素直にできなくもないが、
1024x1024くらいになると絶望的。
中継点置いたり、ノード数を減らすしか無いのかな。
動的マップだと方法が思いつかん・・・。
0622名前は開発中のものです。
2009/09/17(木) 23:44:00ID:rLw6XjO+0623名前は開発中のものです。
2009/09/18(金) 07:32:11ID:Sq5wG8G7建物や壁が建ったりする事。
グリッド単位のA*なら、塞ぐだけで良いんだけど、
マップがでかくなると計算量が爆発してしまう。
普通のRTSはどうやって管理してるのかなぁ・・・。
0624名前は開発中のものです。
2009/09/18(金) 09:06:43ID:VKzlhJpp基本的には中継点設置とノード粒度の粗化が効果的な気がする
どっちの場合も、動的変化時の再設置or再計算のアルゴリズムが単純にならないんだよな
他には、一回計算した経路探索結果を記録しておいて後から使う方法とか
これも動的に変化した場合の対応が面倒そうなのは変わらないんだけどね
0625名前は開発中のものです。
2009/09/18(金) 10:00:07ID:b8hoyw0aぼくは経路探索と障害物回避は別アルゴリズムでやるのが良いと思ってるのだが
建物とか壁とか木とかは、ユニット同士の衝突回避ができてれば同じ方法でいけないか?
0626名前は開発中のものです。
2009/09/18(金) 10:29:24ID:VKzlhJppそうだとすると、地形が変化してが経路が分断・接続された場合に、
実際の状況と異なって、行けないor行けるを判定できないよね?
0627名前は開発中のものです。
2009/09/18(金) 10:31:03ID:VKzlhJpp>そうだとすると、地形が変化してが経路が分断・接続された場合に、
↓
そうだとすると、地形・建物の状態が変化して経路が分断・接続された場合に、
0628名前は開発中のものです。
2009/09/18(金) 12:55:05ID:b8hoyw0a細い道を建物とかで塞いだ場合、経路探索アルゴリズムの決定によってそこを通ろうとするユニットは建物にひっかかる
もしそうしないと何か気持ち悪いことになりそうな気がする
例えば、現在地と目的地の間に経路Aと経路Bの2つがあったとする
経路Aの方が近道なので、ユニットは経路Aに向かって移動している
敵が建物(またはユニット)で経路Aを塞いだ場合、動的なオブジェクトについても経路探索するならユニットは経路Bに向かうことになる
問題点その1、この時点でユニットは知っているはずのない情報に基づいて行動している
問題点その2、プレイヤーは敵の建物を破壊して進むことを望んでいるかもしれない
(アタック移動ならむしろ建物に攻撃するのが正しいのではないか)
問題点その3、敵が経路Aを塞いだり、開けたりすることでユニットは経路Aと経路Bの間を行ったりきたりすることがある
1については、最後に視界に入った障害物の位置を覚えておき、それに基づいて経路探索する方法もあるけど、
例をあげると長くなるので端折るが、それはそれで別の問題が起きる
なので、静的な障害物は経路探索で回避して動的な障害物は別の方法で回避するのがいいのではないかと思った
まあ経路探索以前にユニット同士の衝突回避で詰まってるんだけど
0629名前は開発中のものです。
2009/09/18(金) 13:02:33ID:KXYHKk6sまあ、する人もいるけどな
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*でやろうとするとえらいことになる問題、の話とは少し違う話だね
■ このスレッドは過去ログ倉庫に格納されています