PGR21.com
Date 2008/09/11 01:50:01
Name 상호씨
File #1 protoss_vs_zerg.jpg (40.6 KB), Download : 213
File #2 protoss_vs_terran.jpg (32.6 KB), Download : 144
Link #1 http://antiroot.tistory.com/19
Link #2 http://antiroot.tistory.com/31
Subject 스타크래프트 컴퓨터 인공지능 프로그래밍 방법을 다뤄볼까요?




** 먼저, 위에 보이는 캡쳐 화면은, 실제로 수정된 컴퓨터 인공지능으로 동작하는 프로토스입니다.
    (병력을 상당히 많이 (?) 보유하고 있죠.)
------------------------------------------------------
안녕하세요?

가입한 지는 한 2년 넘은 것 같은데, 답글 한 개 정도 달아본 것 빼고는, 첫 글입니다. ^^;;

(자음 이모티콘을 못 쓰게 되어있던가요? 흠흠)

아무튼, 과거에 (약 3년 전 부터,) 스타크래프트의 컴퓨터 인공지능을 바꿔보고자 노력해온 내용을 PGR21에 공개할까 합니다.

가끔 시간 날 때, 게임이 지겨울 때, 띄엄 띄엄 연구하다보니, 연구 내용도 빈약하긴 하지만요.

예전, BWAI PROJECT (BroodWar AI Patch Project), 혹은 향상된 AI 라고 해서 배포된 인공지능 패치를 아실 것입니다.

이것도 인공지능 향상 관련 연구의 하나입니다. (비록 치트 코드를 써서 자원을 무한대로 사용하긴 하지만요.)
----------------------------------------------------

이제, 본론으로 들어가죠.

배틀넷을 가끔 접속해서 게임을 하던 저는, 어느날 부턴가 배틀넷 공방 양민 수준이 된 저의 실력을 깨닫고는, 게임을 열심히 해봐야 따라잡기는 힘들다는 생각을 하게 됩니다.
(한 때는, 프로게이머 친구도 있었고, 대회 우승도 했었지만요;; 1.03 버전의 오리지널 시절이죠 그게;; )

그래서, 생각을 바꿔서, 컴퓨터의 인공지능을 개선시키기로 마음을 먹습니다.

먼저, BWAI PROJECT 관련 문서를 찾아본 결과, 스타크래프트 게임 시스템에서 '컴퓨터 인공지능'을 수정할 수 있음을 알게 됩니다.

이것은, Patch_rt.mpq 파일 내에 존재하는 aiscript.bin 파일을 수정함으로써 가능합니다.

자세한 설명은, 제가 예전에 발표했던 여러 논문들에 자세히 나와있는데, 이것은 제 블로그 (링크 참조) 를 참조해 보시면 되겠습니다.
- http://antiroot.tistory.com 혹은, 본 글의 링크 1, 2번을 참조하세요.

수정 가능한 인공지능의 수준은, 전략 & 전술 중, '전략' 부분 입니다.

예를 들면, 1) 빌드 오더, 2) 공격 & 수비 시점, 3) 실시간 전략 선택 정도가 되겠군요.

'전술' 에 해당되는 부분인, 1) 유닛 컨트롤, 2) 지형 활용, 3) 건물 배치 등은 수정하기 어려운 형태로, 스타크래프트 게임 시스템 내부에 감춰져 있는 상태입니다. (물론, 이것도 크래킹에 성공하면, 수정할 수는 있겠죠?)

어쨌든, 수정해 봤습니다.

빌드 오더를 프로그래밍 하는 방법은 블로그에 잘 써놨으니, 한번 참고해 보세요. 재미있을겁니다.

수정된 컴퓨터 인공지능 (수정된 프로토스) vs. 기존 컴퓨터 인공지능 (기존 테란) 을 실험한 결과,

수정된 컴퓨터 1 vs. 기존 컴퓨터 1의 싸움은 거의 90% 중후반의 확률로 수정된 컴퓨터가 이깁니다.

수정된 컴퓨터 1 vs. 기존 컴퓨터 2의 싸움은 거의 4~50% 의 확률로 수정된 컴퓨터가 이깁니다. (1 대 2 싸움이 비등비등 하죠)

이를, '렌체스터 공식'을 적용해서 평가해 보면, 수정된 컴퓨터는 기존 컴퓨터에 비해 4배정도 성능이 뛰어납니다.
(렌체스터 공식은, 병력과 공격력의 관계가 제곱 관계라는 것입니다.)


현재까지, 약 4편의 논문이 발표된 바 있으니, 시간 되는대로 블로그, 혹은 이곳에 정리해서 올려보겠습니다.

관심 있으신 분은 제 블로그에 있는 글을 자세히 읽어보시기 바랍니다. ^^

(너무 성의 없이 포스팅을 해놔서, 좀 다듬어야 할 필요가 있는데, 조만간 하겠습니다.)

/* 멀티라인 주석을 남발하는 copyleft yi_sang */

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
와후-만세
08/09/11 18:53
수정 아이콘
와, 정말 대단합니다. 컴퓨터의 인공지능이 향상된다면 그보다 즐거운 일이 없겠군요.
좋은 결과 내시기를 기대합니다!
08/09/12 10:30
수정 아이콘
이 인공지능에다 aiw3프로그램였나요? 하여튼 insane 모드처럼 5분마다 자원 2000씩 주면 꽤나 할만할 것 같습니다.
A certain romance
08/09/12 14:46
수정 아이콘
자원주는건 별로 안좋아 보입니다.
인간만큼 강한 컴퓨터랑 붙는게 매력이 아니라
인간처럼 정찰하고 인간처럼 전략전술을 쓰는 컴퓨터랑 붙는게 매력이죠.
상호씨
08/09/12 19:57
수정 아이콘
와후-만세// 좋은 결과를 내고 싶습니다만, 제가 골수까지 테란 유저인지라, 플토는 어떻게 해보겠는데, 저그는 정말 못해먹겠더군요. 저그 빌드오더 트리좀 사뿐하게 그려주실 수 있는 분이 필요해요. ^^

특히, 저그는 해처리 - 오버로드 - 드론 숫자를 잘 맞춰야 유닛이 팍팍팍 잘 나올텐데, 그걸 잘 못하겠더라구요. 테크 타기는 저그가 젤 쉬워보이는데.;;;

저그 종족에 대해서 도와주실 분을 찾습니다! ^^

생각 있으신 분은 제 블로그에 있는 참고 문헌들 보시면 도움이 될 것 같습니다.

필요하다면, 제가 자세한 프로그래밍 방법 설명을 글로 올릴 수도 있구요. ^^
상호씨
08/09/12 20:05
수정 아이콘
뻘이// 저는 그 자원 2000 씩 주는 것이 별로 좋아 보이지 않아서, 이걸 하게 되었습니다.

지금 어느 정도 까지 되냐면,

완전 지상형 맵에서 (헌터나 신 개마고원), 상대방 (컴퓨터던 테란이던) 테크트리 쌓아가는 것, 혹은 유닛 뽑는 상황에 따라, 방어 및 공격, 그리고 테크트리의 빌드 오더를 결정합니다.

예> 상대방이 저그이고, 4드론 내지는 9드론을 한다. (4, 5, 6, 7, 8, 9 드론)
- 스포닝 풀이 빨리 완성될 것이고, 이는 인공지능 스크립트의 명령어 (enemyowns_jump spawning_pool label1) 로 알 수 있다.
- 스포닝 풀이 빨리 완성된 사실을 알았다면, 벙커를 짓고 마린을 넣는다.
(컴퓨터 테란은 마이크로 컨트롤이 안되므로, 매크로 컨트롤?인 벙커로 방어해야 하겠죠.)
(컴퓨터 저그도 마이크로 컨트롤을 못 하므로, 아마 벙커를 먼저 부시려고 할 것입니다. ^^)

예> 상대방이 플토이고, 초반에 테크 건물을 안 올리고 더블 넥서스를 시도한다.
- 캐논을 지었다면, 공격 명령을 내리지 않고, 빠른 테크를 탄다.
(테란이라면, 투팩을 바로 갈 수 있겠죠)
- 캐논이 없다면, (게이트웨이도 없다면), 내가 가진 공격 유닛으로 선제 공격을 시도한다.
(테란이라면, 초반 마린 2~3기 정도 보내면 되겠죠. 어짜피 컴터대 컴터 싸움이니 컨트롤의 대상이 되지 않는 일꾼은 싸움을 하기 어렵습니다.)

뭐 이정도입니다.
- 업그레이드, 확장, 기타 등등도 가능하긴 하죠.

공중 공격 유닛에 대한 프로그래밍은 아직 되어있지는 않습니다.

개선의 여지가 많은데, 저 혼자 하기가 좀 벅차군요.

누군가 저그 종족에 대해 도와 주시면, 서로 간에 테란 vs 저그 인공지능 대결도 해볼 수 있을 것 같은데요. ^^
실루엣게임
08/09/12 21:58
수정 아이콘
그 몬티홀같은 미네랄로 막혀있는 지형에서 확장이나 공격을 못하고 뱅뱅 돌던문제.. 수정이 되었...을까요 (..)
와후-만세
08/09/13 00:46
수정 아이콘
저그(...)는 일단 정형화된 빌드오더가 없어서... 정말 까다롭겠습니다.
상호씨
08/09/13 01:14
수정 아이콘
미네랄로 막힌 지형은 해보지 못했지만, 아마 뱅뱅 돌지 않을까 하네요.
상호씨
08/09/13 01:19
수정 아이콘
일단, 이 토론 게시판에 올린 사연은 다음과 같습니다.

1) 인공지능 성능 향상을 위해 인공지능 프로그래밍 대회를 열어보면 어떻겠느냐는 것입니다.
- 자바 프로그래밍으로, 탱크의 인공지능 프로그래밍 대회가 있죠? 로보코드라고.. 이는 IBM에서 스폰서를 하는 거라 대회 참여가 활발하죠.
- 일단, 인공지능 프로그래밍 대회를 PGR21내에 있는 사람에서 부터 시작해보면 어떨까 합니다.
- 프로그래밍 방법을 이해하는 것은 매우 쉽습니다. 스타크래프트의 빌드 오더를 명령어 화 해놓은 것일 뿐이니까요.

2) 저그 인공지능 성능 개선을 도와주실 분을 찾습니다.
- 앞의 1)번에 써놓은것 처럼 프로그래밍 대회를 열어도 좋지요. 그럼 저그 종족을 선택하는 사람도 있을테니깐요.

일단, 다른 분들의 의견을 들어보고 싶습니다.
답글을 달아주세요!!~~
꿀호떡a
08/09/13 02:10
수정 아이콘
재밌겠는데요 :)~ 추진해보시면 어떨까요?
바보탱이
08/09/14 13:50
수정 아이콘
호기심에 한번해봤는데 생각보다 문법은 간단하더군요 재미있어요~
근데 문법 좀 더 자세하게 나와있는 메뉴얼 같은건 없나요?
노가다로 일일히 하려니까 조금 힘드네요
08/09/14 14:32
수정 아이콘
오 재미있을 것 같네요. 한번 해보고 싶은데 혹시 패치파일 받아볼수 없을까요.
즐거운하루
08/09/15 13:15
수정 아이콘
컴퓨터 vs 컴퓨터의 대결을 옵저버로서 관찰이라 마치 예전 카이스트 드라마에서 나오던 로봇 축구를 보는 듯한 기분일 거 같네요.
마술사얀
08/09/15 21:12
수정 아이콘
질문이 있는데요.. Patch_rt.mpq 파일을 WinMPG 1.64 로 열어보았는데.
파일 이름이 모두 unknown 으로 나와요.
BrooDat.mpq 를 열어보면 제대로 나오는데. 뭐가 문제인지 모르겠네요..
Dementia-
08/09/15 22:03
수정 아이콘
컴퓨터는 뮤탈 컨트롤을 할 수가 없는 관계로 저그는 좀 어렵겠군요.
상호씨
08/09/16 02:03
수정 아이콘
꿀호떡/ 넵, 조만간 추진해 보겠습니다.
상호씨
08/09/16 02:03
수정 아이콘
바보탱이/ 제가 작업했던, 여러 소스코드와 주석 등을 살펴보시는게... 일단 메일 주세요.
상호씨
08/09/16 02:05
수정 아이콘
axon/ 패치파일은, 블로그에 답글 달아주시면, 일괄 메일로 보내드릴게요.

즐거운하루/ 네, 그런 기분입니다. 로봇 축구도 한때 다뤘었는데, 딱 그기분이 들더라구요. 하하하.
상호씨
08/09/16 02:10
수정 아이콘
마술사얀/ unknown 으로 나오나요? 그럴 때는, 잘 열리는 예전 버전의 Patch_rt.mpq 를 열어서, 거기서 인공지능 수정 후, 버전을 1.15.3 으로 패치하는 방법이 있습니다. 이렇게 하면, 이후에 WinMPQ 를 써서 압축을 풀면, 스크립트파일을 볼 수 있을겁니다.
위의 방식이 어렵다면, 기존 unknown 들에 scripts\aiscripts.bin 을 추가로 탑재시키면, 수정된 인공지능으로 동작합니다.

Dementia-/ 뭐, 컴퓨터는 어택땅 시, 프로토스가 가장 유리한 듯도 싶습니다.
08/09/16 16:18
수정 아이콘
인공지능 싸움하면 가장 쎈것이 초반에 일꾼 한마리 빼서 상대방 본진 공격하고 튀기... 일꾼 다 따라 나오죠 -_-;;
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
1636 운영진실명제에 대해서 [24] Memex11871 09/05/23 11871
1635 스타크래프트2의 e-sports화에 대한 구체적 비전이 필요합니다. [17] 카프카11708 09/05/09 11708
1633 스타크래프트 2, 한글화되어야 하는가? [185] 유유히21616 09/03/26 21616
1630 논란이 된 서기수 vs 정명훈 경기를 보며.. [13] 미소속의슬픔18234 09/02/06 18234
1629 GG규정에 대한 토론 [17] Memex11128 09/01/19 11128
1627 워크래프트3리그의 활성화방안 [21] 성상우9897 08/12/27 9897
1623 내년시즌 프로야구 순위을 예상해 주세요 [65] 접니다10659 08/12/17 10659
1622 외국 커뮤니티와의 교류에 대하여 [10] 종합백과9872 08/11/10 9872
1621 이번 인크르투 스타리그 2008결승전에서 송병구 vs 정명훈의 실력에 관한고찰 [19] 포풍저그12268 08/11/08 12268
1619 프로리그는 개인리그와 다를게없는 E-SPORT 그 해결책은??! [20] 포풍저그11351 08/10/05 11351
1618 본좌론에 대한 문제점과 그에 따른 해결책 [22] 쌈장9457 08/09/21 9457
1617 스타크래프트 컴퓨터 인공지능 프로그래밍 방법을 다뤄볼까요? [20] 상호씨18857 08/09/11 18857
1615 세레모니에관해서 [39] 날으는씨즈9942 08/08/11 9942
1614 한빛스타즈 인수를 통한 '아이템매니아'의 E-Sport 진출시도, 어떻게 생각하시나요. [67] The xian12303 08/08/04 12303
1610 스타크래프트 툴의 존재. 어떻게 보십니까? [41] Southpark15932 08/06/17 15932
1609 미성년자에게 투표권을 줘야 할까요? [44] choro716384 08/06/15 16384
1608 스타리그의 르네상스를 위해 - 1. 시니어 대회의 창설 [19] darkzerg8714 08/06/12 8714
1607 * 스타크래프트발란스패치 협상론 * [50] 성상우11219 08/06/12 11219
1604 전교조는 친북 좌빨? 촛불시위의 배후? [19] 태을천상원군9108 08/06/08 9108
1603 MB의 현재 행동의 진의는? [35] lxl기파랑lxl8426 08/06/06 8426
1602 [6월 23일 16차 업데이트]1100만원 광고 프로젝트 입금이 마감되었습니다. ^^ [23] 분수12072 08/05/31 12072
1600 더이상 진보가 없는 e스포츠 [18] 플토빠9094 08/05/31 9094
1598 한국이 e스포츠계의 종주국으로 남기 위하여. [38] 성상우8869 08/05/26 8869
목록 이전 다음
댓글

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