starcraft AI competition

 

1. 개요
2. AIIDE(Artificial Intelligence and Interactive Digital Entertainment)
3. CoG(Conference on Games)
4. SSCAIT(Student Starcraft AI Tournament)
4.1. 공식 BOT
4.2. BOT 제작하기
4.2.1. 초기 설치
4.2.2. 이클립스로 BOT 파일 열기
4.3. BOT 대전
4.4. 관련 채널


1. 개요


위키
스타크래프트1 브루드워 인공지능 제작 및 경연 대회이다. 스타크래프트 1 인공지능 대회는 여러 개가 있지만 2017년 기준으로는 CIG, SSCAIT, AIIDE 3곳 정도가 세계구급 리그를 정기적으로 열고 있다.
JAVA언어나 C++언어를 알고 있다면 BWAPI를 이용하여 사용자가 직접 AI 명령어를 프로그래밍 할 수 있다.
스타1 인공지능으로 유명한 BWAI는 이런 대회가 상설화되기 한참 전인 2006년 이곳에서 만들어 졌다.
반면, BWAPI는 인공지능이 아니라 개발용 툴이다. 브루드워와 AI사이에서 입출력, 전/후처리 등을 도와준다. 공식 홈페이지에도 나오듯이 무허가 프로그램(Hack)이라고 말하고 있다. 1.18 버전부터 모든 무허가 프로그램들이 차단될 예정이니 업데이트가 더 이상이 불가능하다. 아니면 어차피 밸런스 패치는 없다고 밝혔으니 1.16 버전만으로 리그를 계속 유지 할지도 모른다. 실제로 스타크래프트: 리마스터 발표 이전에 독자적으로 리마스터를 만들던 OPEN BW 프로젝트 담당자 중 한 명인 tscmoo는 각 종족별 AI를 만들어서 브루드워 AI대회에 참가시키고 있는 만큼 블리자드 공식 리마스터가 아니라 OPEN BW로 대회를 이어나갈 싶은 듯하다. 그 밖에도 맵 인식을 돕는 BWEM 같이 브루드워 AI들을 위한 라이브러리가 생각보다 많다.
대회 영상을 분석해보면 알 수 있는 사실이지만 대부분의 AI가 마이크로 컨트롤(교전)보다는 매크로 컨트롤(운영)으로 승부를 보는 편이란 걸 알 수 있다. AI하면 주로 떠오르는 뮤짤이나 드라군 컨트롤은 극초기에나 반짝했고(한국의 Xenaga나 캐나다의 Skynet이 대표적) 2014년부터는 상위권에서 보기 힘들다. 아무래도 대전 랭킹이 있는 SSCAIT에서 교전 컨트롤 중심의 AI는 프레임 제한 문제로[1] 실력을 발휘하기 어렵고 맵빨도 많이 타기 때문인 듯 하다.
인공지능이 제대로 활약하여 인간 프로게이머를 이기기에는 많은 세월이 걸릴 것이라는 의견이 많았다. 많은 AI 연구자를 보유한 Facebook의 CherryPie가 2017 SSCAIT Mixed 토너먼트에서 우승하기는 했으나, 리그에서는 7등을 했고, 다른 대회에서는 두각을 나타내지 못했다. Wired 기사에서 Facebook 관계자도 당분간은 룰기반 봇이 대세가 될 것이라고 밝힌 바 있었다. 그런데 삼성SDS에서 내놓은 SAIDA가 룰기반봇에 머신러닝을 일부나마 결합시키면서 기존 AI들과의 대전에서 우수한 성적을 거두고 있다. 다만 알파스타가 스1이 아닌 스2를 택한 반동인지 금방 지원이 시들해지면서 2019년 대회엔 출전조차 안했다. 2019년 대회 결과는 프로토스 초 강세를 보인다. 마침내 봇 최적화에 성공했는지 프레임 제한에도 불구하고 드라군 마이크로가 엄청나게 발달한 것이 크다. 2019년 AIIDE와 SSCAIT 우승 봇의 예시

2. AIIDE(Artificial Intelligence and Interactive Digital Entertainment)


Association for the Advancement of Artificial Intelligence(AAAI)가 주최하는 학회로 2010년은 UC 산타크루즈가, 2011년부터 캐나다의 앨버타 대학교가 해당 학회에서 브루드워 AI대회를 주최하고 있다.
2010~2015 전적 출처
2017년 컨퍼런스 홈페이지
2010년 우승 : Overmind(Z, 미국 UC 버클리), 준우승 : krasi0bot(T, 불가리아 개인), 3위 : Chronos(T, 네덜란드 개인)
2011년 우승 : Skynet(P, 캐나다 개인)[2], 준우승 : UAlbertaBot(P, 캐나다 앨버타 대학교), 3위 :Aiur(P, 프랑스 낭트 대학교),4위: ItayUndermind(Z, 이스라엘 예루살렘 히브리 대학교)
2012년 우승 : Skynet(P), 준우승 : Aiur(P), 3위 : UAlbertaBot(P), 4위 : BroodwarBotQ(P, 프랑스 콜레주 드 프랑스)
2013년 우승 : UAlbertaBot(P), 준우승 : Skynet(P), 3위 : Aiur(P), 4위 : XIMP(P, 슬로바키아 개인[3])
2014년 우승 : ICEBot(T, 일본 리츠메이칸대학)[4], 준우승 : XIMP(P), 3위 : Letabot(T), 4위 : Aiur(P)
2015년 우승 : Tscmoo(Z, 노르웨이 개인)[5], 준우승 : ZZZKBot(Z, 호주 개인)[6], 3위: Overkill(Z, 중국 개인), 4위 : UAlbertaBot(R)[7]
2016년 우승 : Iron(T), 준우승 : ZZZKBot(Z), 3위 : tscmoo(Z), 4위 : Letabot(T)
2017년 우승 : ZZZKBot(Z), 준우승 : Purplewave(P, 미국 개인) , 3위 : Iron(T) , 4위 : cpac(Z)
2018년 우승 : SAIDA(T, 삼성SDS), 준우승 : CherryPi(Z, 미국 Facebook) , 3위 : CSE(P, 중국) , 4위 : BlueBlueSky(P)[8]
2019년 우승 : Locutus(P), 준우승 : Purplewave(P), 3위 : BananaBrain(P), 4위 : DaQin(P)
2020년 우승 : Stardust(P), 준우승 : Purplewave(P), 3위 : BananaBrain(P), 4위 : Dragon(T)[9]

3. CoG(Conference on Games)


전기 전자 기술자 협회(Institute of Electrical and Electronics Engineers, IEEE)가 주최하는 학회로 2010~2013년은 독일 도르트문트공과대학교가, 2014년부터 한국의 세종대학교가 해당 학회에서 브루드워 AI대회를 주최하고 있다. 2019년부턴 담당 학회가 CIG(Computational Intelligence and Games)에서 CoG로 변경되었고 추최측에 광주과학기술원이 추가되었다. 홈페이지 이름을 봐선 담당교수가 학교를 옮긴듯.
2010년은 순위가 공개되어 있지 않다.
2011년 우승 : Skynet(P), 준우승 : UAlbertabot(P), 3위 : Xelnaga(P, 대한민국 세종대학교), 4위 :BroodwarBotQ(P, 프랑스 INRIA연구소)
2012년 우승 : Skynet(P), 준우승 : UAlbertabot(P), 3위 : Aiur(P), 4위 : Adjutant(T, 미국 센트럴 플로리다 대학교)
2013년 우승 : Skynet(P), 준우승 : UAlbertabot(P), 3위 : Aiur(P), 4위 : Xelnaga(P)
2014년 우승: ICEBot(T), 준우승 : XIMP(P), 3위 : Letabot(T, 네덜란드 마스트리흐트 대학), 4위 : Aiur(P)
2015년 우승 : ZZZBot(Z)[10], 준우승 : Tscmoo(Z), 3위: Overkill(Z), 4위 : Letabot(T)
2016년 우승 : Tscmoo(T), 준우승: Iron(T, 프랑스 개인), 3위 : Letabot(T), 4위 : ZZZKBot(Z)
2017년 우승 : ZZZKBot(Z), 준우승 : Tscmoo(R)[11], 3위 : Purplewave(P), 4위 : Letabot(T)
2018년 우승 : Locutus(P), 준우승 : PurpleWave(P), 3위 : McRave(P), 4위 : tscmoo(R)
2019년 우승 : PurpleWave(P), 준우승 : McRave(P), 3위 : Locutus(P), 4위 : Iron(T)
2020년 우승 : Stardust(P)[12], 준우승 : PurpleWave(P), 3위 : BananaBrain (P), 4위 : BetaStar(P)

4. SSCAIT(Student Starcraft AI Tournament)


[image]
영문명을 보면 알 수 있듯이 학생들이 주축이 되어 개발한 AI를 주로 다루나 리그에선 일반인(이라고 쓰고 스덕후라고 읽는)들과 함께 Mixed 리그도 열곤 한다. 학생이라 할지라도 개인이 아닌 팀이라면 얄짤없이 Mixed 리그로 넘어간다. 위에도 언급된 ICEBot이 대표적
물론 학생이라 해도 대부분은 AI를 전공하는 대학원생들이다. 2011년부터 시작되었다. 다른 대회와는 달리 대전 서버를 상시 구축하고 있어 AI끼리의 전적이 실시간으로 갱신되는 게 가장 큰 차이점이다.[13] 트위치로 생중계도 한다. 프라하의 체코 공과 대학과 브라티슬라바의 코메니우스 대학에서 주최하는데, 코메니우스 대학은 아예 학교 AI 실습시간에 BWAPI로 브루드워 AI를 짠다고 한다.
2011년 우승 : Roman Danielis(P, 슬로바키아 코메니우스 대학), 준우승 : M.Piovarci(Z)[14]
2012년 학생 우승 : Dementor(T, 슬로바키아)[15], 준우승 : Marcin Bartnicki(Z, 폴란드 그단스크 기술대학), 3위 : UAlbertabot(P)
혼합 우승 : ICEbot(T), 준우승 : Marcin Bartnicki(Z), 4강 : XIMP(P), Killerbot(Z)
2013년 학생 우승 : XIMP(P), 준우승 : W.O.R.P(T), 3위 : UAlbertabot(P)
혼합 우승 : Krasi0bot(T), 준우승 :ICEBot(T), 3위 : W.O.R.P(T), 4위 : Tomas Cere(P)
2014년 학생 우승 : Letabot(T), 준우승 : W.O.R.P(T), 3위 : UAlbertabot(P)
혼합 우승 : Letabot(T), 준우승 : XIMP(P), 3위 : UAlbertabot(P), 4위 : ICEBot(T)
2015년 학생 우승 : Letabot(T), 준우승 : Carsten Nielsen(P, 덴마크 덴마크 공학대학), 3위 : UAlbertabot(P)
혼합 우승 : Killerbot(Z) , 준우승 : XIMP(P), 3위 : ZZZBot(Z), 4위 : Stone(T)
2016년 학생 우승 : LetaBot(T), 준우승 : WuliBot(P, 미국 남캘리포니아 대학), 3위 : Zia bot(Z, 대한민국 UNIST)
혼합 우승 : LetaBot(T), 준우승 :krasi0(T) , 3위 : Iron(T), 4위 : XIMP(P)
2017년 학생 우승 : WuliBot(P), 준우승 : LetaBot(T), 3위 :Carsten Nielsen(P)
혼합 우승 : Cherrypi(Z, 미국 페이스북), 준우승 : Killerbot(Z) , 3위 : Microwave(Z), 4위 : McRave(P)
2018년 우승 : Locutus(P), 준우승 : SAIDA(T), 3위 : Iron bot(T), 4위 : Purplewave (P) 이번 대회부터 학생부분 결과를 홈페이지에서 공개하지 않고 있다.
2019년 우승 : Locutus (P), 준우승 :PurpleWave (P), 3위 : BetaStar (P), 4위 : Hao Pan (T) 전대회와 달리 본선결과가 6위까지 예선전 결과와 동일하다, 2018년엔 한국의 SAIDA가 예선1위였으나 결승전에서 3:0 스윕을 당했다.

4.1. 공식 BOT


홈페이지에서 등록된 모든 봇을 확인 할 수 있다. http://sscaitournament.com/index.php?action=scores
개인 명의의 봇은 프로그램명보다 제작자 이름으로 등록하는 것을 선호하는 모양인데, 게임플레이시 이 이름을 아이디로 쓰기 때문에 대회 우승도 여러번 한 뼈대 있는(?) 봇을 보고 저 듣보잡은 누구냐? 하는 사람들이 간간히 생중계 채팅방에서 보인다. krasi0 등을 볼 때 강제사항은 아닌 듯. 아래는 제작자 이름으로 등록된 봇들의 프로그램명이다.
Marian Devecka(슬로바키아 코메니우스 대학) - Killerbot(Z)
Tomas Vajda(슬로바키아 개인[16]) - XIMP(P)
Martin Rooijackers(네덜란드 마스트리히트 대학)[17]] - Letabot(T)[18]]
Dave Churchill(캐나다 앨버타 대학교)[19] - UAlbertaBot(R)[20]
Simon Prins(네덜란드 유트레히트 대학교) - Tyr(T)
Andrew Smith(캐나다 프리랜서) - Skynet(P)
Sijia Xu(중국 개인) - Overkill(Z)
Soeren Klett(독일 빌레펠트 대학)- W.O.P.R.(T)
Aurelien Lermant(프랑스 EPITA) - GarmBot(Z)
Matej Istenik(개인) - Dementor(T)
Florian Richoux(프랑스 낭트 대학) - AIUR(P)
Kruecke(독일 카를스루에 공과대학) - KBot(T)
Bjorn P Mattsson(스웨덴 샬머스 공과대학) - Loki(Z)
Christoffer Artmann(개인) - RottiBot(P)
Rob Bogie(네덜란드 마스트리히트 대학) - Maascraft2(P)
Martin Strapko(슬로바키아 코메니우스 대학) - WryxoBot(P)
Gabriel Synnaeve(프랑스 INRIA연구소[21]) - BroodwarBotQ(P)
Henri Kumpulainen(핀란드 알토대학) - PenaBot(T)
Nathan a David(개인) - HadesBot(P)
Chris Coxe(호주 개인) - ZZZKBot(Z)

4.2. BOT 제작하기


이 글은 SSCAIT공식 홈페이지의 tutorial 부분을 번역한 것입니다.

4.2.1. 초기 설치


1. 스타크래프트 브루드워 1.16.1 버전을 설치한다. 다른버전은 제대로 실행되지 않는다.
2. SSCAI map pack을 다운하고 압축해제 한뒤 sscai폴더를 Starcraft/maps/ 폴더에 이동한다.
3. 32bit JRE (Java Runtime Environment) 를 다운로드 한다.Windows x86 Online를 선택하여 받으면 된다. 이미 설치되어 있다면 다음단계로 넘어가면 된다.
그리고 절대로 64bit 를 다운하는 일은 없도록 하자. 스타크래프트 자체가 32비트까지만 지원하는 게임이기 때문에 아예 호환이 안된다. 만약 평소에 자바로 프로그래밍 하던 사람이라 64비트 버전이 설치되어 있는 경우, IDE에서 32비트 버전을 쓰도록 지정해 줘야 하고, 별도로 실행할 때도 PATH를 적절히 잡아줘서 32비트 버전을 쓰도록 해야 한다.
4. Eclipse IDE for Java Developers를 다운로드 하여 설치한다. 이것도 projects를 실행하기 위해 32bit JRE를 사용가능한 버전이어야 한다.
5. BWAPI를 다운로드 한다.
6. BWAPI를 설치하기위해 아까 다운받은 BWAPI_412를 실행한다.
7. 설치된 'BWAPI\Chaoslauncher' 폴더에서 BWAPI_PluginInjectord.bwl 파일을 삭제한다. (이름 끝부분에 'd'가 붙은 파일이다.)
8. BWAPI\Chaoslauncher\ 에 있는 Chaoslauncher.exe 를 실행한다. 앞으로 BWAPI와 스타크래프트를 실행하기 위해 항상 카오스런처를 사용할것이다.
9. 카오스런처의 Plugins탭에서 'BWAPI 4.1.2 Injector [RELEASE]을 사용함 으로 설정해준다. 'W-MODE 1.02' 도 사용하는것을 권장한다.
10. (선택사항) 카오스 런처의 셋팅 창에서 Warn about missing admin privilegues을 사용안함으로 해주면 불필요한 오류 메시지창을 많이 없애준다.
여기까지 초기세팅 및 설치가 끝났으며, 아래는 예제 BOT 파일을 실행하는 방법이다.
11. Example Bot을 다운하여 압축을 푼다.
12. ExampleBot/lib폴더로 가서 bwmirror_v2_5.zip파일의 확장자를 bwmirror_v2_5.jar 으로 바꿔준다.
13. Starcraft/bwapi-data폴더에 있는 bwapi.ini 파일을 메모장으로 연다. 그리고 ai = bwapi-data/AI/ExampleAIModule.dll 이부분을 ai = NULL 으로 바꿔준다.

4.2.2. 이클립스로 BOT 파일 열기


1. 이클립스 (eclipse.exe)를 실행한다.
2. File → Import → General → Existing Projects into Workspace → Browse... → Locate ExampleBot folder.
The 'ExampleBot' project should appear in the 'Projects:' field. Make sure it's selected and click Finish.
3. In Package Explorer (left side of Eclipse IDE) navigate to ExampleBot → src → (default package) → TestBot1.java and double-click it. This is your bot's source code.
사실 공식홈페이지에는 이렇게 써있긴 하지만 자바따위 버려버리고 C++로 짜는 사람도 많다. 애초에 BWAPI자체가 C++기반이기도 하고.

4.3. BOT 대전


이렇게 만든 봇과 대전하려면 봇스크립트 파일과 1.16.1버전 스타를 구해다가 그걸 2개 동시에 켠뒤 하나는 런처로 봇을 로딩해서 LAN멀티 방을 파야 하는데 봇과 사람이 동시에 참여하는 래더를 구축하겠다는 목표로 이 모든 과정을 자동화한 프로그램이 나왔다.

4.4. 관련 채널


SSCAIT 유투브채널 https://www.youtube.com/user/certicky
SSCAIT 공식 홈페이지 http://sscaitournament.com/
SSCAIT 트위치 https://www.twitch.tv/sscait

[1] 프레임당 소요시간 55ms 이상 320번, 1s 이상 10번, 10s 이상 1번 중 어느 하나라도 걸리면 실격패다.[2] 제작자인 Andrew Smith가 2013년경 연락이 두절되었다.[3] SSCAIT를 주최하는 코메니우스 대학의 졸업생이다.[4] ICE는 Intelligent Computer Entertainment의 약자다. 대회에 출전한 AI최초로 핵을 쏠 줄 아는 AI라고 한다.[5] 저그로 참가했는데 후에 이 명의로 저그 테란 두 종족을 돌리다가 SSCAIT에서 저그 AI가 Tscmooz로 독립하였다.[6] 4드론날빌만 사용한다. 4드론을 하고서도 아주 기적같이 게임이 터지지 않은 경우는 노멀티 뮤탈을 쓴다고. 같은 해 CIG우승, SSCAIT 4강까지 올라갔다! 운영위주로 흘러가던 브루드워 AI의 메타를 정확히 파악하고 이용한 셈이다. 발업링 빌드도 사용하는데 하드코딩된 목록을 바탕으로 4드론이 안먹히는 상대한테만 쓴다고 한다.[7] 프로토스에서 랜덤으로 종족 변경[8] CSE와 BlueBlueSky는 CIG2018을 우승한 LocutusBranch한 봇임이 Locutus제작자인 Bruce에 의해 확인되었다. 이에따라 이들은 반칙패처리되어 결국 Locutus가 3위가 되긴 했다. 아이러니하게도 Locutus는 변종봇에 밀려 AIIDE에서 5위를 기록했다.[9] 제작자가 페이스북에서 CherryPi를 만들던 Vegard Mella로 알려져 있는데 독자적으로 만들고 있는지 사내 팀단위로 만드는 건지는 불명이다.[10] 2015년 10월 개명해 위의 ZZZKBot이 되었다. 물론 빌드는 4드론이다.[11] 랜덤으로 참가[12] Locutus가 개명[13] 2018년 대회없이 래더만 돌리는 BASIL래더가 등장했고 AIIDE측에서도 StarCraft AI Ladder란걸 돌리기 시작해서 유일은 아니다.[14] 대회 결과 홈페이지가 도메인이 만료되어 자세한 인적사항은 불명[15] 현재는 졸업했는지 혼합으로 넘어갔다.[16] 코메니우스 대학 졸업생이다.[17] 석사학위 논문으로 미네랄 채취 효율을 늘리는 방법에 대해 연구했다고 한다. 일꾼이 미네랄에 다가가기도 전에 지레 감속해버리는 등의 문제를 해결, 최종적으로 채취량은 약 15% 상승했다고[18] 신상문의 아이디 Leta에서 따왔다.[19] 현재 AIIDE 스타크래프트 AI대회 책임자이다.[20] 프로토스로 입상한 경력이 꽤 있다.[21] 콜레주 드 프랑스 졸업생이다.