Fast heuristic search for RTS combat scenarios (D.Churchill, 2017) ์ž„.


์Šคํƒ€ํฌ๋ž˜ํ”„ํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ๋‹› 8:8 ์ „ํˆฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€์ง€๊ณ  ์˜์‚ฌ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•˜๋Š” ๋…ผ๋ฌธ์ธ๋“ฏ.


์ŠคํŽ  ๊ฑฐ๋ฅด๊ณ  ํƒ„์†๋„ ์ด๋Ÿฐ๊ฑฐ ์—†์ด ์ก ๋ฐ€๋ฆฌ๋กœ ์ „ํˆฌํ•˜๋Š”๊ฑด๊ฐ€๋ด„. ใ„นใ…‡ ์œ ๋‹› ์ฒด๋ ฅ, ์ด๋™์†๋„, ๊ณต๊ฒฉ๋ ฅ, ๊ณต๊ฒฉ์†๋„๋งŒ ๊ฐ€์ง€๊ณ  ใ…‡ใ…‡



ํœด๋ฆฌ์Šคํ‹ฑ ์„œ์น˜๋ฉด ํ‰๊ฐ€ํ•จ์ˆ˜๊ฐ€ ์ค‘์š”ํ•œ๋ฐ, Kovarsky and Buro (2005)๊ฐ€ ์ œ์•ˆํ•œย life-time damage ๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ์ ‘๊ทผํ–ˆ์Œ.


์œ„ ํ‰๊ฐ€ํ•จ์ˆ˜ ๊ณ„์‚ฐ์„ ์œ„ํ•ด damage per frame ratio ๋ผ๋Š” ๊ฐœ๋…์ด ๋“ค์–ด๊ฐ€๋Š”๋ฐ,ย dpf = damage(unit)/cooldown(unit) ์œผ๋กœ ๊ณ„์‚ฐ๋จ.


LTD = Sum{ hp(u)*dpf(u), u in U1ย } - Sum{ hp(u)*dpf(u), u in U2 }


U1์€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ „์ฒด ์œ ๋‹›, U2๋Š” ์  ์œ ๋‹›์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์ฃผ์…ˆ.


๊ทธ๋ฆฌ๊ณ  Sum{ hp(u)*dpf(u), u in U1 } ๋Š” ... ์•Œ๊ฒ ์ง€๋งŒ ๊ทธ๋ž˜๋„ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ์“ฐ์ž๋ฉด


for unit in units:

sum += unit.hp * unit.dpf


์ด๋ผ๊ณ  ๋ด์ฃผ์‹œ๋ฉด ๋˜๊ฒ ์Œ.


๊ทธ๋ฆฌ๊ณ  ๋˜ LTD2 = Sum{ sqrt(hp(u))*dpf(u), u in U1 } - Sum{ sqrt(hp(u))*dpf(u), u in U2 } ๋„ ์žˆ๋‹ค.


LTD > 0 ์ด๋ฉด ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์œ ๋ฆฌ, LTD < 0 ์ด๋ฉด ์ ์ด ์œ ๋ฆฌ.



๊ฐœ๋ณ„ ์œ ๋‹›์˜ ์ธ๊ณต์ง€๋Šฅ์œผ๋กœ scripted behavior๋ฅผย 4๊ฐœ ์ œ์•ˆํ•˜๋˜๋ฐ ๊ฐ„๋‹จํ•œ๊ฒŒ ์“ธ๋งŒํ•ด๋ณด์˜€์Œ.


1. random ์ „๋žต: legal moves์—์„œ ํ•˜๋‚˜ ๋ฝ‘์•„์„œ ์“ฐ๋Š” ๊ฑด๋ฐ, ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ํ–‰๋™์ด ๊ฐ™์€ ํ™•๋ฅ ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ž„.


2. attack-closest ์ „๋žต: ๋ฌด๊ธฐ ์‚ฌ์ •๊ฑฐ๋ฆฌ ์•ˆ์— ์žˆ์œผ๋ฉด ๊ณต๊ฒฉํ•จ. ๋งŒ์•ฝ ์žฌ์žฅ์ „ ์‹œ๊ฐ„์ด๋ผ๋ฉด ๊ทธ๋ƒฅ ๊ฐ€๋งŒํžˆ ์žˆ์Œ. ๋งŒ์•ฝ ์ ์ด ์‚ฌ์ •๊ฑฐ๋ฆฌ ๋ฐ–์— ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ ์„ ํ–ฅํ•ด ์ผ์ • ๊ฑฐ๋ฆฌ๊นŒ์ง€ ์ ‘๊ทผํ•จ.


3. attack-weakest ์ „๋žต: attack-closest๋ž‘ ๊ฐ™์€๋ฐ, ์‚ฌ์ • ๊ฑฐ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ๊ฐ€์žฅ hp๊ฐ€ ๋‚ฎ์€ ๋†ˆ๋ถ€ํ„ฐ ๊ณต๊ฒฉํ•˜๋Š”๊ฒŒ ๋‹ค๋ฆ„.


4. kiting ์ „๋žต: attack-closest๋ž‘ ๊ฐ™์€๋ฐ, ์žฌ์žฅ์ „ ์‹œ๊ฐ„ ๋•Œย ์ ํ•œํ…Œ์„œ ์ผ์ •๊ฑฐ๋ฆฌ๋งŒํผ ๋„๋ง๊ฐ.



์—ฌ๊ธฐ์— ๊ฐœ์„ ๋œ ์Šคํฌ๋ฆฝํŠธ 3๊ฐœ๋ฅผ ๋” ์ œ์•ˆํ•จ, ์œ„์˜ dpf ๊ฐœ๋…์„ ์ด์šฉํ•ด์„œ.


1. attack-value ์ „๋žต: attack-closest๋ž‘ ๊ฐ™์€๋ฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์œ ๋‹›์ด ์•„๋‹ˆ๋ผ dpf/hp ๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์œ ๋‹›์„ ๊ณต๊ฒฉํ•จ. 1 vs. n ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ตœ์ ์˜ ์„ ํƒ์„ ํ•œ๋‹ค๊ณ  ํ•จ(Furtak and Buro, 2010)


2. No-Overkill-Attack-value ์ „๋žต: AV๋ž‘ ๊ฐ™์€๋ฐ ์ด๋ฒˆ ๋ผ์šด๋“œ์— ์ฃฝ๋Š”๊ฒŒ ํ™•์ •๋œ ์œ ๋‹›์—๊ฒŒ ๋”์ด์ƒ ๋ฐœํฌํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ˆœ์œ„ ์œ ๋‹›์„ ๊ณต๊ฒฉํ•จ. ๋ง์ด ์ด์ƒํ•˜๊ฒŒ ๋“ค๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์œ ๊ฐ€ ์žˆ์Œ.

์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ํ•œ ๋ผ์šด๋“œ์—์„œ ์„œ๋กœ ๋‹ค ๊ณต๊ฒฉํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ๋ฐ๋ฏธ์ง€๋ฅผ ๊ณ„์‚ฐํ•ด์„œ hp๋ฅผ ๊น๋Š” ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— (ํ„ด๋ฐฉ์‹์œผ๋กœ ๊ณต๊ฒฉ ๋ฐ ๋ฐ๋ฏธ์ง€ ์ •์‚ฐ๊นŒ์ง€ ํ•˜๋ฉด ์„ ์ˆ˜๊ฐ€ ํ›„์ˆ˜์— ๋น„ํ•ด ๋„ˆ๋ฌด ์œ ๋ฆฌํ•จ),ย for ๋ฃจํ”„๋กœ ์œ ๋‹›์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋Œ๋ฉด์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•  ๊ฒฝ์šฐย ์ฒซ ์œ ๋‹› ๊ณต๊ฒฉ์œผ๋กœ ๋ง‰ํƒ€์ณค๋‹ค๋ฉดย ๋‹ค์Œ ํƒ€์ž๋Š” ๊ทธ ์œ ๋‹›์— ๊ณต๊ฒฉ ใ„ดใ„ด ํ•œ๋‹ค๋Š” ๊ฒƒ์ž„. AV์™€ ๋‹ค๋ฅธ ์ ์€ ์œ ๋‹›๊ฐ„ ์‹ค์ œ๋กœ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค๋ฆ„.


3. Kiting-AV ์ „๋žต: ์œ„ kiting ์ „๋žต์ด๋ž‘ ๊ฐ™์ง€๋งŒ ์—ญ์‹œ ํƒ€๊ฒŸ์€ most valuable unit.



๋…ผ๋ฌธ์€ ์œ„์—์„œ ๋งํ•œ 7๊ฐ€์ง€ ์ „๋žต๊ณผ ABCD(Alpha-Beta Considering Durations)ย ์ „๋žต์„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ‰๊ฐ€ํ•จ์ˆ˜๋กœ ๋น„๊ตํ•˜๋Š”๋ฐ, NOK-AV ์ „๋žต์ด scripted behavior ์ค‘์—” ๊ฐ€์žฅ ์ข‹๋‹ค๊ณ ํ•จ. ๋” ์ข‹์€ ABCD ์ „๋žต์€ ๋‚ด๊ฐ€ ๋ฐฐ์›€์ด ๋ฏธ์ฒœํ•ด์„œ ๊ทธ๋ƒฅ ์•ŒํŒŒ ๋ฒ ํƒ€ ํ”„๋ฃจ๋‹ ๊ฐ™์€๊ฑฐ๊ฒ ๊ฑฐ๋‹ˆ ํ•˜๊ณ  ๋„˜์–ด๊ฐ”์Œ. AI ํ”„๋กœ๊ทธ๋ž˜๋จธ๋„ ์•„๋‹Œ๋ฐ ๊ณต๋ถ€ํ•˜๋Š”๊ฑด ๋„˜ ๋ฉ€๋ฆฌ๊ฐ€๋Š”๊ฑฐ๋ผ๋Š” ์ƒ๊ฐ์—.


ABCD ์ด๋Ÿฐ๊ฑฐ๋ณด๋‹จ life-time damage ๊ฐ™์€ ๊ฐœ๋…์ด๋‚˜ RTS ๊ฒŒ์ž„์˜ ์Šคํฌ๋ฆฝํŠธ ๋ถ€๋ถ„์„ ๋ณด๋Š”๊ฒŒ ์žฌ๋ฐŒ์—ˆ์Œ. ๋.