PGR21.com
- 경험기, 프리뷰, 리뷰, 기록 분석, 패치 노트 등을 올리실 수 있습니다.
Date 2005/11/13 10:19:56
Name 비상
File #1 일대다전투.hwp (0 Byte), Download : 76
Subject 일대다 전투 양상과 컨트롤
이 글은 한인님과 김연우님의 글을 보고(현재 추게 맨 위글) 좀 더 정량적인 수식 표현과 정확한 값을 알아보기 위해 작성된 것입니다.

1. 연우님의 전투력 계산과정에 있어서 작은 문제

연우님은 전투력을 공격력과 체력을 곱한값으로 정의하였습니다. 그런데 이 계산법에는 약간의 문제가 있는 것 같습니다. 다음 두 유닛의 경우를 생각해봅시다.

A유닛 : HP-30 공격력-9
B유닛 : HP-10 공격력-15

이 경우에 A유닛의 공격력은 270 B유닛의 공격력은 150이 되어 1:1 로 전투를 하였을 경우 A유닛이 승리를 해야합니다. 그러나 두 유닛의 공격속도가 같다고 가정할 때 실제 전투양상은

30   10 ----------------->15    1-------------------->0       0

으로 비기게 됩니다.(물론 이론적인 것입니다. 이에 대한 가정은 밑에서 밝히겠습니다)

2. 왜 이런 사소한 오류가 발생하였을까?

A유닛의 HP를 B유닛의 공격력으로 나눈 값이 정수가 아니기 때문입니다. 부연하면 B유닛이 A유닛을 파괴할 때 까지 필요한 공격회수가 분모가 1이 아닌 분수로 나왔고 그것을 정수 + 소수 로 표현할때 소수는 1로 생각해야 되기 때문입니다.

위의 예를 보았을 때 A유닛이 B를 파괴 하기 위해서 가격해야 하는 공격회수 10/9=1.xxx가 나오는데 소수점으로 표현된 부분 또한 1로 보아 1+1=2가 되야 한다는 말입니다. 0.xxx번 공격한다는 것은 없기 때문입니다.

3.전투에 있어서 중요한 한가지

연우님의 1:1 전투양상의 예나 1:다 전투양상의 예에서 공통적으로 가정한 것은 두 유닛의 공격속도는 같다는 것입니다. 물론 연우님이 논의를 단순화 시키기 위해서 그러셨겠지만 저는 전투 양상은 정량적으로 표현하고 싶어서 공격 속도까지 포함해서 생각해보기로 했습니다.

공격속도를 포함한 공격력 계산은 간단합니다.
A유닛-공격력 10 B유닛-공격력 5 이고 A유닛과 B유닛의 공격속도의 비가 3:1일때
A유닛-공격력 30 B유닛-공격력 10으로 보정해주고 데미지 산출 양상을 알아보면 됩니다. 스타크래프트 같은 경우에도 두 유닛의 공격속도의 비가 어떤지는 실제로 두 유닛을 서로 공격하게 한 다음 통계를 내면 알 수 있습니다. 물론 실제 데이터와 차이가 있을 수도 있습니다. 선제 공격을 누가 하는가 같은 외부 변수가 작용하기 때문입니다;;

4.위의 두 사항을 종합한 정량적인 수식 표현은 어떻게 구할 수 있는가?
여기서 다룰 내용은 1:다 전투양상을 볼 때 한 유닛이 다른 유닛 다수와 싸울 때 몇배의 유닛과 전투를 해서 비길 수 있느냐는 것을 알아보고자 합니다. 이 부분은 여러가지 방법이 있을 것 같습니다. 그런데 제가 수학을 별로 못하는터라;; 좀 복잡할 수 있을 것 같습니다. 일단 가정이 조금 필요합니다.

그리고 이 수식표현은 밀리 유닛간의 전투에만 해당되는 것입니다!

가정 1. 두 유닛이 전투를 시작할 때 서로의 상대 유닛에게 동시에 공격을 가한다고 생각한다.
가정 2. 서로의 HP가 상대의 공격 한번에 0이 될 시점에서는 양쪽 유닛이 모두 공격에 성공한다고 생각한다.
가정 3. 다수의 유닛인 쪽이 상대 유닛을 공격할 때 첫 공격부터 개개의 유닛이 모두 공격에 성공한다고 가정한다.
가정 4. 위의 세 개의 가정대로 전투가 벌어진 직후부터 다른 컨트롤은 해주지 않는다.

...

-_-;;; 음 여기에 수식 표현하는게 너무 어렵군요. 첨부파일로 해야 될 듯 합니다.

결론은 A유닛을 혼자 싸우는 유닛 B유닛이 다수인 유닛이라고 할 때
n=A유닛이 최대로 상대할 수 있는 B유닛
h1=A유닛의 HP
k1=A유닛이 B유닛 하나를 파괴하는데 필요한 공격 회수
a2=B유닛의 공격력(공격속도의 비에 따라 보정된 공격력)

n= {-1+sqrt(1+8h1/k1a2)}/2 가 나왔습니다 -0- (sqrt는 안의 수식에 루트를 씌운값을 뜻합니다.)

대충 질럿과 저글링에 넣고 산출해 보니 공격속도의 비가 1:2 일때는 2.8, 3:7일때는 2.5
가 나오더군요. 즉 저글링이 2마리 일때는 질럿 승, 3마리 일때는 저글링 승이라는 말입니다.

음...근데 실험을 해보니까 저글링이 3마리일 때 일렬로 달려갈 때는 질럿이 이기고 위에서 가정한 것과 비슷하게 전투가 이루어지면 저글링 승이었습니다. 질럿 실드 회복 속도까지(저글링은 체력이 회복되도 질럿이 3회 공격하면 파괴되므로 제외)고려해주면 좀 더 정확한 값이 나올 것 같지만 귀챠니즘에...혹시 기회가 된다면 수정판으로 찾아 뵙겠습니다.

5. 이런 계산을 해 본 이유
한인님의 글에 감명을 받았달까요. 제 생각도 한인님의 생각과 많이 유사합니다. 위에서 계산한 바를 토대로 할 때 가장 이상적인 컨트롤은 최소한의 공격횟수로 상대 유닛을 파괴하는게 중요합니다. 반대로 말하면 자신의 유닛은 죽기 직전에 뒤로 뺐다가 다시 전투에 합류 시키는게 중요하구요. 그리고 초과데미지를 남기지 않는 것이 중요합니다. 맨 처음 두 유닛의 HP양상을 비교한 것처럼 해서 질럿2과 저글링 6의 전투 양상을 보았을 때 경우에 따라서 저글링이 하나 더 살고 죽고가 갈립니다(물론 이론적인 결과입니다. 하지만 국소 전투에서는 충분히 적용가능하다고 봅니다.) 이와 같은 점 때문에 레인지 유닛이 밀리 유닛보다 컨트롤을 통한 이익획득이 훨씬 용이합니다. 게다가 HP가 적은 유닛은 미처 컨트롤을 하기 전에 파괴되어 버리기 때문에 상당히 까다롭다고도 볼 수 있습니다. 컨트롤을 해주기 위해서는 먼저 이동을 해서 공격하는 경우가 많은데 그 이동시에 파괴되는 경우가 대부분 이기 때문입니다.

6.분석할 때 포기한 부분
1.기술적인 문제 때문에 레인지 유닛을 분석에 포함하지 못했습니다. 이 말은 사정거리를 분석 대상에 포함하지 못했다는 말과 같습니다. 제 생각엔 레인지 유닛의 사정거리를 계산 해 본 뒤에 밀리 유닛이 자신의 사정거리에 레인지 유닛을 둘 때까지의 시간과 밀리 유닛이 실제로 공격을 가하는 순간의 시간을 나눠서 분석해야 될 것 같은데 이건 실제 전투 양상과 너무 차이가 큰 것 같아서 포기한 부분도 큽니다. 다시 말하면 어떤 유저가 자신의 레인지 유닛을 상대의 밀리 유닛이 다가 올 때까지 방치하겠습니까? 이론적인 계산이라면 마린3이 질럿1에게 패배합니다만 유저의 컨트롤이 개입 되어 있을 경우에는 전혀 틀려지죠.

2.또 스플레쉬 데미지는 전혀 분석 대상에 넣을 수 없었습니다. 음...밀리 유닛중에 스플래쉬 데미지 속성을 지닌 유닛이 없기도 하구요. 스플래쉬 데미지가 상대 유닛에게 어떤 식으로 데미를 가하는지도 잘 몰라서 포기했습니다.

3.그리고 모든 분석은 평지에서의 전투를 가정했습니다. 좁은 길목에서의 전투나 언덕에서의 전투는 고려하지 않았습니다.  

휴 한번 시작한 글이 여기까지 왔군요. 뭐 이런 거 분석하면 뭐하냐? 분석할 시간에 스타 연습이나 더 하라고 하면 할 말은 없지만 -0- 호기심이 이 글을 쓰게 됐네요. 감사합니다.

ps.중간에 계산 과정은 첨부파일로 등록해 놓았습니다.

  

  





  

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
05/11/13 10:26
수정 아이콘
쉽게 설명해주시지..
05/11/13 10:38
수정 아이콘
끙...나름대로 쉽게 풀어 쓴다고 한건데...
소나기아다리
05/11/13 11:07
수정 아이콘
제가 방금 한 행동을 디씨...인가요? 거기선 이렇게 표현하더군요..
"내렸다..."
무식깡통인 저로선 이해가 잘...ㅡ_ㅜ
다 읽어보긴했으나...흑흑...모르겠어요.
Return Of The Panic
05/11/13 12:41
수정 아이콘
렌체스터 법칙은 당연히 실제와는 약간 다릅니다. 렌체스터 법칙에서 병사들은 연속적인 체력을 가지고, 체력에 비례하는 공격력을 가지는 것으로 가정합니다. 즉, 마린이 체력이 40에서 20으로 떨어지면 공격력이 6에서 3으로 떨어지는 것으로 가정한다는 겁니다.
이 때문에 적은 숫자의 전투 결과를 렌체스터의 법칙으로 계산해볼려고 하면 잘 안 맞습니다.
그리고, 또 하나의 가정이 있는데, 그것은 한 유닛을 죽인 부대는 다음 공격목표를 선택하는 데까지 걸리는 시간이 0 이라는 가정도 있습니다. 이것은 밀리어택형 유닛에겐 해당되지 않죠. 또 장거리 공격 유닛이라도 사정범위 밖에 다음 공격 목표가 있으면 역시 해당되지 않습니다.

렌체스터의 법칙은 어디까지나 '근사적인 결과'를 계산하는 방법일 뿐입니다. 하지만 유닛의 숫자가 많아지면 많아질수록 놀라울 정도로 실제값이 가까워집니다. 맵 에디터로 200기의 마린과 100기의 마린을 세워놓고 싸움 붙여보세요. 렌체스터의 법칙에 따르면 173기 정도의 마린이 살아남아야 하는데, 실제로 해 보면 170 기 정도가 살아남습니다. 놀라울 정도로 정확한 방법이죠.
Return Of The Panic
05/11/13 12:42
수정 아이콘
위와 같은 가정을 하는 이유는, 렌체스터 법칙이 일차 미분방정식을 풀어서 나온 해이기 때문에 그렇습니다. 여기에 그 미방을 쓰기는 좀 복잡하고.. 하여튼 일차 미방으로 단순화하기 위해선 위와 같은 가정이 필요합니다. 공격력은 체력에 비례한다, 체력은 연속적이다. 등등..
Return Of The Panic
05/11/13 12:45
수정 아이콘
렌체스터의 법칙을 잘 이해하기 위해선, 한 군대를 하나의 유닛으로 생각하면 됩니다. 예를 들어, 마린 100기가 모인 부대는 체력 4000, 공격력 600 짜리 유닛 하나가 되는 겁니다. 대신 1000의 데미지를 전투 동안에 받았다고 하면, 공격력이 역시 같은 비율로 줄어들어서 450 이 되는 겁니다.
이런 가정에 당연히 유닛 하나짜리 부대를 대입시키면 오차가 클 수 밖에 없습니다. 질럿 한기는 체력이 1 남는 다고 그래도 공격력이 16이거든요..
Tormento
05/11/13 12:57
수정 아이콘
역시 렌체스터의 법칙은 많으면 많을수록 정확한 법칙이군요. 감탄하게 됩니다. ^ ^
05/11/13 13:15
수정 아이콘
당연히 렌체스터 법칙을 쓰면 오차가 생깁니다. 그래서 RTS게임에서 체력이 이산적이지 연속일리 없으니까요. 따라서 좀 더 RTS게임에 맞는 방법을 알아보고 싶었던 겁니다.
BeAmbitious
05/11/13 13:15
수정 아이콘
역시 피지알... 이런 분석글 올리시는 분들 진짜 멋져보이십니다.ㅠㅠ
05/11/13 13:59
수정 아이콘
아우~ 머리아뽀~
세리비
05/11/13 14:58
수정 아이콘
RTS 게임에 렌체스터 제2법칙을 적용시킬 수 없는 것은 컨트롤의 존재 때문이죠. 그리고 밀리유닛의 경우 축차적인 전투가 벌어질 수 밖에 없다는 것도 있겠구요. 컨트롤이 없다는 것은 전제로 한 레인지 유닛 간의 전투는 10단위만 되어도 렌체스터 법칙이 거의 들어맞을 것으로 봅니다.
공격의 집중도, 균등한 분산도 없는 상황에선 개별 유닛의 전투력은 전투력을 발휘하는 시간*전투력이고 시간=체력이므로 실제 전투력은 체력이 되죠.
05/11/13 16:30
수정 아이콘
휴...수식전개 할 때 좀 더 풀어서 설명할 걸 그랬나요?;;;
05/11/13 16:35
수정 아이콘
예전에 피지알에 란체스터법칙을 비롯해서 여러개 실험해서 자료 올리려고 했었는데 (1년 넘게 전이군요;) 패치가 되고 그러면서 포기... 실험까진 했었는데^^;
05/11/14 02:00
수정 아이콘
와 자세한 글이네요 그냥 적당히 질럿1 저글링 3 싸우면
질럿1:저글링3
질럿1:저글링2
질럿1:저글링1

질럿1=저글링6 전투력...
이렇케만 생각했었는데..^^:;
그걸 간단히 공식으로 잘 정리해 주셨네여..

그리고 Return Of The Panic 미분 방정식의 형태로 꼭 풀지는 않더라도
표현식만이라도 올려 주시면 안될까요...
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
18388 나의 다짐 (수능을 10일 남겨놓고......^^) [17] 히또끼리4451 05/11/13 4451 0
18387 문과/이과 그리고 이과생의 불만. [130] Mr.Children8627 05/11/13 8627 0
18385 발리앗 체제 안좋습니다 -_- (죄송합니다 제목 바꿧습니다) (재 실험 했습니다 보세요) [60] Yaco5529 05/11/13 5529 0
18384 더하기 빼기만 할줄 알아도 세상 사는데 지장 있냐? [41] 햇살의 흔적3747 05/11/13 3747 0
18383 [팬픽] 수련에 들어간 요환. [12] 쓰루치요3525 05/11/13 3525 0
18382 감기. [3] 루미너스4034 05/11/13 4034 0
18381 해쳐리 버그.... [12] 질럿공장장4839 05/11/13 4839 0
18378 PGR의 10대 여러분, '전태일'이라는 사람을 모르시나요? [39] BluSkai4069 05/11/13 4069 0
18377 여러분들은 인종차별에대해서 어떻게생각하십니까? [59] Hustla_Homie4204 05/11/13 4204 0
18376 영화속의 주옥같은 명 대사들 [23] 럭키잭5875 05/11/13 5875 0
18375 어제 스웨덴전을 보고.. [9] SkunK3822 05/11/13 3822 0
18374 15줄 꼭 채워야 하나? [37] 녹차3680 05/11/13 3680 0
18372 일대다 전투 양상과 컨트롤 [14] 비상3986 05/11/13 3986 0
18369 차기 시즌과 차차기 시즌을 생각해보면. [12] K_Mton3385 05/11/13 3385 0
18368 어진 사람과 어리석은 자, 그리고 노비 [5] 雜龍登天3997 05/11/13 3997 0
18367 [잡담] 토요일 잠못든 새벽 . [10] Cazellnu3561 05/11/13 3561 0
18366 프로토스의 세대교체? [21] 사신김치3729 05/11/13 3729 0
18365 여자가 좋아하는 남자. 남자가 좋아하는 여자. [39] jyl9kr9403 05/11/13 9403 0
18364 공지사항은 왜 있는가? [22] tsoRain3890 05/11/13 3890 0
18362 오늘 스웨덴전.. [241] skzl7450 05/11/12 7450 0
18361 정말로 무서운 온게임넷 우승자 징크스 [60] 남자이야기6072 05/11/12 6072 0
18360 대학교에서 후배랑 쉽게 친해지는법이 뭐죠? [54] 쓰루치요12410 05/11/12 12410 0
18359 여러분들은 게임을 할 때 사용하는 전투곡이 있습니까? [39] 워크초짜6111 05/11/12 6111 0
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로