Clearance-based Pathfinding and Hierarchical Annotated A* Search์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.


http://harabor.net/data/papers/harabor-aigamedev09.pdf


๋ ˆํผ๋Ÿฐ์Šค๋Š” ์—ฌ๊ธฐ๊ตฌ์š”. ๋‹น์—ฐํžˆ ์˜์–ด์ž…๋‹ˆ๋‹ค.


A* ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ œํ•œ ์‚ฌํ•ญ์ด ๋ช‡๊ฐ€์ง€ ์žˆ์ฃ . ๊ทธ์ค‘์—์„œ Clearance-based Pathfinding์™€ ์—ฐ๊ด€๋œ ์ œํ•œ ์‚ฌํ•ญ์€ '๋ชจ๋“  ๊ฐ์ฒด๋Š” ๊ทธ๋ฆฌ๋“œ 1์นธ์— 1๊ฐœ๋งŒ ์žˆ๋‹ค.'๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ๊ฒŒ์ž„์—์„œ ์–ด๋–ป๊ฒŒ ํ•œ ์œ„์น˜์— ํ•˜๋‚˜๋งŒ ์žˆ๋‚˜์š”? ์ผ๊ฐœ ๋ณด๋ณ‘์€ 1์นธ์— 1๋ช… ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ณ๋„, ๊ฑฐ๋Œ€ ํƒฑํฌ ๊ฐ™์€๊ฑด ์—ฌ๋Ÿฌ์นธ์— ๊ฑธ์ณ ์žˆ์–ด์•ผ ์ข€ ๋ฉ‹์ ธ๋ณด์ด์ง€ ์•Š๊ฒ ์๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ํฌ๊ธฐ์— ๋งž์ถฐ์„œ ์—ฌ๋Ÿฌ๋ฒˆ ๊ฒ€์ƒ‰์„ ํ•ด์ค˜์•ผ ํ•œ๋‹จ ๋ง์ด์ฃ . ์˜ˆ๋ฅผ ๋“ค์–ด 2x2 ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ํƒฑํฌ๊ฐ€ (0,0)์—์„œ (0,1)๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์‚ฌ์‹ค (0,1)์€ ๋ฌผ๋ก ์ด๊ณ  (0,2), (1,1), (1,2)๋ฅผ ๋ชจ๋‘ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ธ์ง€ ์ฒดํฌํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋ž˜์„œ ๋‚˜์˜จ๊ฒŒ ์ € Clearance-based Pathfinding์ž…๋‹ˆ๋‹ค. ํ•œ๊ธ€๋ช…์„ ๋ญ๋ผ๊ณ  ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. ์•„๋ฌดํŠผ ์ค„์—ฌ์„œ CP๋ผ๊ณ  ํ• ๊ป˜์š”.


CP์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์ธต์œ„์˜ ๋…ธ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘ก๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ํฌ๊ธฐ๊ฐ€ 1x1์šฉ์œผ๋กœ ๋งต์„ ํ•ด์„ํ•ด๋‘๋ฉด 2x2์šฉ์œผ๋กœ ๋”ฐ๋กœ ํ•ด์„ํ•ด๋‘๋Š” ๋ฐฉ์‹์ด์ฃ . 1x1์งœ๋ฆฌ ์œ ๋‹›์€ ๋งค ๊ทธ๋ฆฌ๋“œ๋งˆ๋‹ค ํ•œ๋ฒˆ๋งŒ ์ด๋™ ๊ฐ€๋Šฅํ•œ์ง€ ์ฒดํฌํ•œ๋‹ค๋ฉด, 2x2๋Š” ๋งค ๊ทธ๋ฆฌ๋“œ๋งˆ๋‹ค ๋ฏธ๋ฆฌ 2x2 ํฌ๊ธฐ์˜ ์œ ๋‹›์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌํ•ด๋‘๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋ฐฉ์‹์ด๋ผ๋ฉด ์œ ๋‹› ํฌ๊ธฐ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ๋ถˆ๋Ÿฌ์™€์„œ ๊ณ„์‚ฐํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ๋งค ์œ„์น˜๋งˆ๋‹ค ์œ ๋‹›์ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์ฒดํฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ ธ์„œ ์†๋„๊ฐ€ ๋น ๋ฅด์ฃ . ์ด๊ฒŒ CP์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.




์—ฌ๊ธฐ์— ๋”ํ•ด์„œ RTS ๊ฒŒ์ž„์—์„œ๋Š” ใ…ˆใ„ด ๋งŽ์€ ์œ ๋‹›์„ ใ…ˆใ„ด ๋น ๋ฅด๊ฒŒ ๊ธธ์ฐพ๊ธฐ๋ฅผ ์‹œ์ผœ์ค˜์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. CP๋ฅผ ์“ด๋‹คํ•ด๋„ ๊ฒฐ๊ตญ ์ „์ฒด ๊ทธ๋ฆฌ๋“œ ์ˆซ์ž๋Š” ๋ณ€ํ•จ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. 1x1์งœ๋ฆฌ ์œ ๋‹›์—๊ฒŒ 192x192 ํฌ๊ธฐ์˜ ๋งต์€ 3x3 ์œ ๋‹›์—๊ฒŒ๋Š” 190x190์งœ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๋˜๋Š”๊ฑฐ๋ผ์„œ์š”. ๊ทธ๋Ÿฐ๋ฐ RTS์—์„œ ์œ ๋‹›์˜ ๋ฐ˜์‘ ์†๋„๋Š” ๋นจ๋ผ์•ผ ํ•˜๊ณ , ๋‹น์‹œ CPU ์ˆ˜์ค€์€ ์ง€๊ธˆ๋ณด๋‹ค ํ›จ์”ฌ ๋ณ‘๋ง›์ด๊ณ .. ๊ทธ๋ ‡๊ฒŒ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ณ ํ†ต ๋ฐ›๋‹ค๊ฐ€ ๋ช‡๊ฐ€์ง€๋ฅผ ๋ˆˆ์น˜์ฑ•๋‹ˆ๋‹ค.


๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ธธ์ฐพ๊ธฐ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ์ง€ํ˜•์€ ๋‹ค ๊ณ ์ •๋˜์–ด ์žˆ๋‹จ ๋ง์ด์ฃ . ๊ธฐ์ง€์˜ ๊ฑด๋ฌผ์„ ์ง€์–ด์„œ ๋ง‰๊ธฐ๋„ ํ•˜์ง€๋งŒ ๋ง์ด์ฃ .ย 


๊ทธ๋ž˜์„œ ๋งต์„ ์ผ์ • ํฌ๊ธฐ์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ชผ๊ฐœ๋†“๊ณ , ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ๋งˆ๋‹ค ์ด๋™๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฏธ๋ฆฌ ๋‹ค ๊ณ„์‚ฐํ•ด๋‘” ๋‹ค์Œ์— A ํด๋Ÿฌ์Šคํ„ฐ์˜ a ์œ„์น˜์—์„œ B ํด๋Ÿฌ์Šคํ„ฐ์˜ b ์œ„์น˜๋กœ ๊ฐ€๊ฒŒ๋” ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฐพ๋Š” ๊ฒ๋‹ˆ๋‹ค.



๊ทธ๋Ÿฌ๋ฉด ๋Œ€๋ถ€๋ถ„์€ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ๊ฒฝ๋กœ๋งŒ ๋ฝ‘์•„๋‹ค๊ฐ€ ์“ฐ๊ณ , a์˜ ์œ„์น˜์—์„œ A ์ฒญํฌ์˜ ํƒˆ์ถœ์ ๊นŒ์ง€์˜ ๊ฒฝ๋กœ์™€ B์ฒญํฌ์˜ ์ง„์ž…์ ์—์„œ b๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋งŒ ์ฒดํฌํ•ด์ฃผ๋ฉด ๋‚˜๋จธ์ง€๋Š” ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ๊ฒฝ๋กœ์—์„œ ๋นผ์˜ค๋ฉด ๋˜์ฃ . ๊ณ„์‚ฐ์„ ๋งŽ์ด ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค.


์ด๊ฒŒ ์ € ๋ ˆํผ๋Ÿฐ์Šค์—์„œ ๋งํ•˜๋Š” Hierarchical Annotated A* Search ์ž…๋‹ˆ๋‹ค.