トップページgamedev
638コメント231KB

リアルタイムストラテジーの話

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/17 12:31ID:EBHuprcv
age of empireとかstarcraftみたいな
リアルタイムストラテジーの開発の話題
0492名前は開発中のものです。2006/11/29(水) 08:12:07ID:soOhsA8/
>>491
関係あると思うけど。

戦略級だと、外交までサポートするのが普通だし、インターフェイス
デザインとかも変わってくる。
表現したいものが何か決まった時点で「級」が決まるから、
結局それは

「よっしゃ戦略級のゲームを作るぞー」

ってのと同じだよね。
好きなゲームを作ってみたら戦略級でした、ってのはあまりにも
行き当たりばったり過ぎない?
0493名前は開発中のものです。2006/11/29(水) 20:28:54ID:KbiGH7sb
まあ視点の違いかな。

俺は戦闘以外で敵のパラメータを変動させるゲーム内要素があって、ゲームが戦略級なら
それを『外交』と名付けるという風に考える。ゲームが戦術級なら同じ要素が別の名前に
マッピングされるだけ。

実現したいゲームシステムが先にあって、それをどういう『級』にマッピングするかは
どちらかというと後付けになる。
0494名前は開発中のものです。2007/01/28(日) 23:19:42ID:YKSIK3Su
10万人が戦うRTSを作りたいんですが。
0495名前は開発中のものです。2007/01/29(月) 00:32:37ID:BVq8GtPV
>>494
コサックスみたいなの?
0496名前は開発中のものです。2007/02/02(金) 20:56:11ID:IZZh/Lca
>>494
とりあえず土日スレにあった「小サックス2」みたいなのを作ってみれ。
0497製作神 ◆3C/O4odLsY 2007/02/02(金) 20:59:09ID:xDwCi00h
あれなかなか楽しめたな
0498名前は開発中のものです。2007/02/02(金) 21:13:26ID:lzt+WC6P
小サックスUは、総勢500人くらいだったか?
本家コサックスUは、最大6万4千ユニットが動き回るって触れ込みで
正に10万に近かったが、3ギガヘルツとゲフォ6でも重すぎて
4千人がやっとだった。
0499名前は開発中のものです。2007/02/13(火) 18:56:15ID:84wM7Wf9
HSPで、画面のスクロールとミニマップまで作れました。
次はBOIDみたいにユニットを集団行動させてみようと思います。
0500名前は開発中のものです。2007/02/13(火) 22:00:08ID:yBtFCDbL
ガンガレ
0501名前は開発中のものです。2007/03/10(土) 00:30:06ID:GxRPxtkb
経路探索から躓く俺(;´Д`)
0502名前は開発中のものです。2007/03/11(日) 02:31:35ID:v2U785kh
>>501
俺も初めて経路探索が必要になった時は躓いたよ。
で、もう一回ツリーからおさらいした。
A*一択だぜ!って言わずに、いろいろやってみるといいとおもう。
0503名前は開発中のものです。2007/03/11(日) 17:45:51ID:RIjSHdOe
オンラインゲーム & PCゲーム 情報サイト 4Gamer.net
http://www.4gamer.net/news.php?url=/patch/demo/cc3/cc3.shtml

そろそろ、コマコン3でるね・・・
0504名前は開発中のものです。2007/03/12(月) 21:06:18ID:HaMfwHZB
>>137を見本に作ってみたいんだけど
>node_successor.h = node_successorからnode_goalまでの移動コスト(適当なアルゴリズムで予想する)
ってところは障害物も考慮して計算するのでしょうか?

ただの障害物無視の最短距離で計算すると下のようになって、
さらに障害物を増やすとかなり時間がかかってしまう\(^o^)/

           □□□■
         □□□□■
○□□□□□□□□□■      ●
         □□□□■     □
           □□□□□□□

○スタート ●ゴール
□探査した場所 ■障害物
0505名前は開発中のものです。2007/03/12(月) 21:07:43ID:HaMfwHZB
「\(^o^)/」は無視してくださいorz
コピペしてたのを間違って貼っちゃった
0506名前は開発中のものです。2007/03/14(水) 10:46:47ID:LpYmKoVK
AIの話。
http://www.gamedev.net/community/forums/topic.asp?topic_id=436899
興味深い話してる感じだけど、英語苦手でなかなか読み進まないorz
↑の1の要約
「やぁ!RTSをはじめて作ってるんだけどさー、
経路探索とか障害物回避とか編隊行動(?)とか資源の探索&回収とかは
実装したけど、それをまとめて計画するにはどうすりゃいいんだぜ?」

たまに出てくるinfluence map(影響力マップ?)ってなんだろ?
0507名前は開発中のものです。2007/03/14(水) 12:41:45ID:qO5gJVjv
ZOCの事っぽいと予想
0508名前は開発中のものです。2007/03/14(水) 13:40:55ID:LpYmKoVK
>>507
あ〜!言われてみればそんな感じかも。
それにしても、
http://www.gamedev.net/reference/list.asp?categoryid=18#101
みたいな宝の山を前にして読むのに苦労するってのは涙がでるね;
0509名前は開発中のものです。2007/03/15(木) 00:40:29ID:Z7S6ODTm
やっぱり英語力は必要だよなぁ。
0510名前は開発中のものです。2007/03/15(木) 01:00:05ID:Bf6mTTQk
I am a pen,
0511名前は開発中のものです。2007/03/15(木) 07:03:06ID:lH+O/U1D
>>510
文学的な書き出しだな
0512名前は開発中のものです。2007/03/15(木) 07:28:14ID:IzEwV+lj
>>511
ワラタ
0513名前は開発中のものです。2007/03/15(木) 11:08:23ID:qutq4pqL
おまいらエキサイト翻訳つかえ
0514名前は開発中のものです。2007/03/15(木) 11:16:16ID:MsuBvrA5
心太(ところてん)を日→英、でてきたものを英→日。
0515名前は開発中のものです。2007/03/19(月) 09:48:35ID:hn2+5TAV
>>513
eciteよりlivedoorの翻訳サービスの方がすこし頭いい気がするよ
0516名前は開発中のものです。2007/03/23(金) 19:31:27ID:vv/ig8cS
AIを誰でも作れるようにするにはどうしたらいい?
0517名前は開発中のものです。2007/03/23(金) 19:36:17ID:3ZkET+cI
openaiとかAIのライブラリを使う、作る、公開する
0518名前は開発中のものです。2007/03/23(金) 22:42:50ID:ZMTXej+d
>>516
どこからがAIと言っているのかわかりにくいけど、
コアなところは誰にでも作れるってもんじゃないしなぁ。
誰にでも作れるようにするには教育しかないんじゃないか?
0519名前は開発中のものです。2007/03/24(土) 12:36:34ID:8TWMwAbC
重み付けの、パラメータ変数を外に出して弄らせるのが手っ取り早い
0520名前は開発中のものです。2007/03/24(土) 14:36:13ID:80gX/dq8
ブックマークがわりにして悪いが、参考になるしいいよな?
A*4beginners: http://www.gamedev.net/reference/articles/article2003.asp
KnowingPath: http://www.gamedev.net/reference/articles/article1841.asp
部隊行動1: http://www.gamasutra.com/features/19990122/movement_01.htm
部隊行動2: http://www.gamasutra.com/features/19990129/implementing_01.htm
AIstep: http://www.gamedev.net/reference/articles/article545.asp
ゲームに脳みそ作れ: http://www.gamedev.net/reference/articles/article574.asp
AIその1: http://www.gamedev.net/reference/articles/article784.asp
AIその2: http://www.gamedev.net/reference/articles/article785.asp
MotionPlanning: http://www.gamedev.net/reference/articles/article1125.asp
CognitiveModelingApproach: http://www.gamasutra.com/features/19991206/funge_01.htm
0521名前は開発中のものです。2007/03/24(土) 19:49:29ID:Y7ZQrt8M
オブジェクトが多いと当たり判定をするだけでも大変だな
ストホ見たいに城壁を作れるようにするつもりだからやたら多くなる・・・

ほんとRTSは開発の壁が多すぎる(;´Д`)
0522名前は開発中のものです。2007/03/24(土) 19:57:34ID:Bfk6h56b
完成した暁には腐るほどプレイしてやんよ
0523名前は開発中のものです。2007/03/24(土) 20:36:17ID:80gX/dq8
>>521
壁おおいよねw
これ見てモチベーション維持してくれ
前編 http://www.watch.impress.co.jp/game/docs/20050310/aoe3.htm
後編 http://www.watch.impress.co.jp/game/docs/20050313/aoe3.htm
俺、これ見てがんばってる
0524名前は開発中のものです。2007/03/24(土) 22:08:50ID:FGON7qzJ
empire of 豆腐のソース読みながらがんばる
0525名前は開発中のものです。2007/03/24(土) 22:17:32ID:hsn3NUXE
おまいらそんながんばってもこんなロジックのゲームが
場か売れしちゃうんだぞ

【爆死確定】聖剣伝説ヒーローズ オブ マナ葬式会場
http://game11.2ch.net/test/read.cgi/handygame/1173165865/l50

まずこの映像をごらんいただきたい。


敵敵□□□□□     ↓↓□□←←←    自□□□□□□
敵敵□□□□□     ↓↓□□←←←    自□□□□□□
□□□□□□□     敵敵□□□□↑    □□□□□□□
□□□□□□□     敵敵□□□□↑    □□□自□□□
□□□□□□□     □□□↑□□↑    □□□□□□□
□□□□□自自     □□□↑←自自    敵敵□□□□□
□□□□□自自     □←←←←自自    敵敵自□□□□


実はこれ、「聖剣伝説 ヒーローズ オブ マナ」で起こった事を写した決定的瞬間なのである
0526名前は開発中のものです。2007/03/24(土) 23:24:01ID:80gX/dq8
>>525
スレ見てきた。ヽ('A`)ノウンコーって言ってる人ばっかで
バカ売れしてるとは思えないんだけど、ほんと売れてんの?
0527名前は開発中のものです。2007/03/25(日) 00:47:18ID:xMsyePnC
あのスクエニが、こんなポカをやってしまうのが本当なら、
RTSってそんなに難しいのかね?
確かに国産じゃ、あまり出てないけどな(洋ゲーはたくさんあるけど)。
フリー同人じゃ、empire of 豆腐と小サックスくらいか?
外にもあったっけ?
0528名前は開発中のものです。2007/03/25(日) 01:12:21ID:ZgdXpXyd
俺はGPGを参考にしてA*とメッセージドリブンで普通に出来た
0529名前は開発中のものです。2007/03/25(日) 09:28:53ID:yog4MgBd
>>526
スクウェアの新作で、聖剣の名前を冠して、
初動1万五千本って売れてないってことだと思う・・・
中古で値段下がりまくりだし、安いから買ってこよう・・・
0530名前は開発中のものです。2007/03/25(日) 09:48:11ID:p9L77U61
LOMはよかった気がするよAIは並だった気が
0531名前は開発中のものです。2007/03/25(日) 09:49:36ID:iAjOgJKS
empire of 豆腐ってなんですか?
ググっても見つけられなかったのでよかった教えてください
0532名前は開発中のものです。2007/03/25(日) 11:55:17ID:sm5owYwd
gl_kanjiの作者が公開してるゲーム
luaが混じってるからluaの言語知識もいるよ
0533名前は開発中のものです。2007/03/25(日) 12:02:42ID:iAjOgJKS
>>532
見つけることができました。ありがとうございます。
0534名前は開発中のものです。2007/03/25(日) 12:05:24ID:I/9L2swx
つーか、このスレの上のほうにアドレスあった気がするけど
0535名前は開発中のものです。2007/03/26(月) 00:22:08ID:QP0b+gS5
そういやファルコムのモナークモナークはRTSに入るのかな。
0536名前は開発中のものです。2007/03/26(月) 17:14:07ID:dyca4YYm
>>527
アハリスは、内政要素がないからRTSとは言えないな。
0537名前は開発中のものです。2007/03/27(火) 10:03:12ID:KORunXqt
>>536
内政要素なくてもRTSはRTSだと思うけど
アハリスは知らんが
0538名前は開発中のものです。2007/03/27(火) 10:04:21ID:KORunXqt
アハリスって、コサックスが元ネタの奴かw
どうみてもRTSですw
0539名前は開発中のものです。2007/03/27(火) 11:19:49ID:olAzKk3T
>>536が言いたいのは

strategy = 戦略
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+
来月PS2で出るグリムグリモアってのがRTSだな。
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+jJMU
まぢれす
AIなんか誰にも作れない。
0548名前は開発中のものです。2007/04/04(水) 03:37:21ID:pelqchqa
>>547
いったい誰にマジレスしてるんだ?
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
>>549
どういうやり方やってるのかわからないけど、メモリの使用量と、処理量はトレードオフだから、現実的に利用できる落としどころを見つけて、後は最適化がんばるしかないんじゃないの?
0552名前は開発中のものです。2007/04/12(木) 00:18:57ID:7huQQ9Pj
>>544

中点変異ってダイヤモンド・スクエア アルゴリズムのこと?
ダイヤモンド・スクエア アルゴリズムだとheightの取り幅によるけど、
平坦か、とげとげした地形になりがちのような気がする。

例えば、ダイヤモンド・スクエア アルゴリズムで大体の地形を作った後、
1次元フラクタルで溝を掘ったりとか、段階ごとに複数のアルゴリズムを
組み合わせたりすればいいんじゃないか?
0553名前は開発中のものです。2007/04/20(金) 01:36:14ID:kjigcWnz
>>552
遅いレスですまん。見てなかった。
ダイアモンド・スクエアステップでもいいし、quadtreeっぽいのを作りながら
単純にどんどん分割でもいいんだけど細分化してくことを言ってた。
とげとげ地形は、xz平面の1辺1mとした時に高さも1m単位にすると
角度が急になりすぎるんでとげとげになるね。
そこから高さ成分は適当に縮小してあげれば
(y * 0.2とか)なめらか地形になるよね。
高さ8bitだと値の範囲が足りないけど、16bitとか32bit使えばそれなりに幅でるし。

やっぱり、地形作ったあとに谷とか川とかを作る作業が必要なのかな。
0554なんとなく張っとく2007/04/24(火) 06:49:27ID:9kXX4cmA
AI

* 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:9kXX4cmA
General and Specific Architecture Articles

General 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
Group AI
* 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:duRaxpSE
A*がいまいち理解できないのでageておく
0558名前は開発中のものです。2007/10/16(火) 01:37:08ID:EBLEskhE
実例で学ぶゲームAIプログラミングがいい感じです。
経路選択から、集団での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
>>557
総当りで、無駄を省いたものと思ったらいい。
0560名前は開発中のものです。2007/10/21(日) 21:26:00ID:3Jn9ooik
表紙の動物が気持ち悪い
0561名前は開発中のものです。2007/10/23(火) 23:27:40ID:rUkzCPPH
>>558
この本のソースコード試した人いる?
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:ixkIQIZC
保守

A*がわかりそうでわからない
当分は壁伝いねずみ方式のままだな
0563名前は開発中のものです。2007/12/07(金) 15:26:24ID:FEDlkfaA
質問です
以前、マップを升目で分割するとかいう話が出ましたが、これは
「画面には表示しないが、データ上はターン制シミュのように升目を単位に移動する」
ということですか?
0564名前は開発中のものです。2007/12/13(木) 15:25:21ID:aZE8qZRa
俺はRTS作った事ないからあくまで「自分が作るならこうするだろう」的憶測だけど、
「移動目標地点」を決める時に升目で計算して
おおざっぱな座標が求められればそれでいいんじゃないのかな?

「指定された座標の”近くまで”移動する」って感じで。
0565名前は開発中のものです。2007/12/14(金) 21:57:36ID:hsbU01NN
何をするのかはだいたい分かりました
それをやれば計算量がそれなりに減るのですか?
0566名前は開発中のものです。2007/12/14(金) 22:21:39ID:mcmX3NCO
それは、君が現在何をやっているかを知りえない私たちにはわからない
0567名前は開発中のものです。2007/12/16(日) 00:28:11ID:jtwlNS8h
というか本当に分かってるのか怪しい。
0568名前は開発中のものです。2007/12/30(日) 21:58:55ID:wplnxYnl
障害物が固定だと最適化の方法をいくつか思いつくことができるけど、
建物とかあとからあとから頻繁に作られる障害物のことを考えると・・・ほんと難しいな

今のところ、最初に大きく区切ったもので探索して、
通れそうなら小さいメッシュに区切ったもので探索
重くなる場合は何フレームかに分けて・・・AIや描画のことも考えると激重にならないか心配・・・
0569名前は開発中のものです。2007/12/30(日) 23:16:19ID:XC/qCMwP
A*使え。分かんない奴は何がわからないんだ?
そもそも再帰が分かってないんじゃないの?
0570名前は開発中のものです。2007/12/30(日) 23:30:08ID:g5CdMtbT
>>568
そうなんだよね 大雑把計算用のマップ作ると障害物が出来たり消えたりしたときに経路が変ったのを大雑把マップに反映させるのが大変
軽いいいアルゴリズムがなかなか思いつかない
市販のゲームはどうやってんだろ
0571名前は開発中のものです。2007/12/30(日) 23:59:39ID:wplnxYnl
>>569
ちょっと弄ってはいるけどA*を使ってる

ほんと昔のゲームはどうやっていたんだろう
0572名前は開発中のものです。2007/12/31(月) 03:33:28ID:Ja+o36Kw
AgeOfEmpire1 とか、適当だよ。
経路あるのに、凹凸があるとすぐに引っかかる。
0573名前は開発中のものです。2007/12/31(月) 16:34:44ID:nKgtOnB9
長い障害物は地形か壁ぐらいだし
接触したらある程度それに沿って探査するとよさそうなんだけど・・・A*にうまく組み込めない/(^o^)\

あと、ルートがない場所とかどうやって判断するんだろう
RTSじゃ壁で囲むとかよくありそうだけど
0574名前は開発中のものです。2007/12/31(月) 19:49:43ID:zG8TALS6
>>573
塗りつぶしアルゴリズムで閉じた領域を探すとかできそうだけど。
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:/HQTRHr3
ためになる
0578名前は開発中のものです。2008/01/01(火) 15:29:00ID:LLRAKXA2
なるほどー
0579名前は開発中のものです。2008/01/02(水) 03:08:33ID:JuBEjuNy
>>558で、A*の解説が載ってるね。
0580名前は開発中のものです。2008/01/02(水) 13:26:46ID:6R/nnppe
地形とかゲーム中はずっと固定なら最初に処理しておけばいいけど、
オブジェクト作るたびに調べるのは逆に処理が多くなったりしない?
0581名前は開発中のものです。2008/01/02(水) 14:09:35ID:6Z1ZT6TW
早くする方法あると思うけどそれは表に出てないのかも
0582名前は開発中のものです。2008/01/02(水) 15:27:52ID:VOmWBVJX
>>580
区画の分割で使うアルゴリズムはWindowsのペイントで画像の塗りつぶし処理するときの
アルゴリズムと同じ(シードフィルアルゴリズム)だから、そんなに遅くなることは無いと
思うけど・・・低スペックのPCも動作対象?(汗

具体的な処理の多さ、ゲームシステム的にどんなペースで障害物を作っていくか
(消えていくか)にもよると思う。
たとえばAoE系のRTSでは、森も障害物の一種で、採取されると消えていく。
また、「塔の死角を埋めるため」や「じっくり内政するため」に森と壁を組み合わせて
区画を作っていくこともある。総合的に見ると、イベントとして一番多いのは森の減少だと思う。

つまり、ほぼ森が減るたびに区画分け処理が必要になるはず。
たぶん最近のPCなら速度は問題にならないだろうけど、再帰が何度も走ることによる
メモリの細分化など、ゲーム特有の心配事が出てくる可能性はあるかもしれない。

この場合、森が減っても最低でもX秒の間隔を空けないと区画を更新しないとか、
そういう姑息な逃げ方もある。移動ルートの有無判定に使うなら、数秒くらい遅れても
気にする人はほとんどいないだろうし。
0583名前は開発中のものです。2008/01/02(水) 15:45:46ID:6Z1ZT6TW
それはAOEなめすぎ
0584名前は開発中のものです。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
>>589
そのページを見て思ったこと。
長方形にこだわる理由が薄いと思った。

そのページの手法とシードフィル(塗りつぶし)と比較すると、シードフィルは
常に高さ1の長方形を利用する、再帰的な空間分割アルゴリズムとみなせる。

なので、もし閉空間が無いマップなら、(たぶん)再帰の順序を記録していけば
一回でグラフ化までやれるはず。
(閉空間がn個ある場合は何も考えずに書くとn回の全検索が要るかもしれないが)

ただ、あんまり細切れの空間にしてしまうとA*を高速化するという
本来の目的から離れてしまう可能性がなきにしもあらず。

いくつかの「高さ1の長方形」を結合して「高さnの長方形+小さな空間」に
することで、全体的に見てそのページのアルゴリズムの欠点(空間分割の遅さ)
を改善できるんじゃないかと思った。
0591名前は開発中のものです。2008/01/04(金) 21:57:06ID:ucWFPrhw
つづき。

共通しているのは、凸凹が多いマップだと空間分割が遅くなる(または
小空間の結合がうまくいかない)だろうということ。
それでも、壁や木などのユニット以外の障害物が相手ならば有効だと思う。

----

しかし、ユニット(動く小さな障害物)を含めて処理しようとすると
マップは凸凹だらけになってしまい、空間分割をかなりの頻度で
行う必要が出てきてしまうのではないか?

なので、少し荒いマップ(4x4程度の大きなセル)を用意して
「障害物の密度」を集計し、50%とかの閾値を越えたら「壁」、以下なら「道」と
いうことにしてしまい、そっちの荒いマップで空間分割&グラフ化
→分割漏れのセルを周囲の空間グラフに結合。

みたいな最適化が必要になってくるのでは・・・
ただ、荒いマップを使う場合、アルゴリズムとして評価するのが
難しくなってしまうというデメリットがあるのでおいらも分からん・・・
■ このスレッドは過去ログ倉庫に格納されています