전체 글 200

스타크래프트2 인공지능 봇을 만들어보자 (#4)

정찰 코드를 만들고 나서 생각을 해보니 딱히 필요하진않겠지만, 응용할 수는 있을 것이라 생각하였다. 그래서 정찰 코드를 사용은 하지않지만 남겨는 둘 예정이다. 해당 코드는 scout으로 옮기기로 하고, 서플라이 디폿과 배럭을 짓는 코드를 구현하고자한다. 저그를 제외한 종족들은 일꾼이 건물을 짓지만 사라지지는 않기에 가만히 있는 IDLE 상태가 된다. 해당 IDLE상태인 일꾼을 다시 일하도록하여야하지만 저자의 실력이 좋지않아 다시 일하도록 하지 못하였다. 다시 서플라이디폿에 대한 로직을 간단히 세워보자면 1) 서플라이 디폿을 건설 가능한가 2) 최대 보급량 - 현재 사용된 보급량 > 4 가 충족됐는가 3) 현재 서플라이 디폿을 건설 중일 때에 또 건설할 필요는 없다. 4) 미네랄 캐고 있던 일꾼 하나를 선..

스타크래프트2 인공지능 봇을 만들어보자 (#3)

필요한 내용들도 있고, 구현하고자 하는 초반 기능들이 있었기에 보급고를 짓는 코드는 다음번으로 미루었다. 먼저 세분화를 먼저 시켜야 추후 작업할 때 편할 것을 생각하여 Config과 Absinthe, 그리고 main으로 나누었다 Config에서는 맵 설정, 스크린 및 미니맵 사이즈 조절, APM 조절 및 자신의 종족, 상대의 종족 등을 세팅하는 곳이다 Absinthe는 Config에서 필요한 내용을 가져와 사용을 하여 모든 것을 조종하는 곳이며, main은 실행하는 곳이다. 먼저 Config 부터 살펴보자면 from pysc2.env import sc2_env from pysc2.lib import features # 맵 이름 MAPNAME = "Simple64" # 스크린 및 미니맵 사이즈 조절 SCR..

스타크래프트2 인공지능 봇을 만들어보자 (#2)

스타크래프트 2 인공지능을 본격적으로 구현하고자 갈치와 서로 머리를 맞대어 생각한 결과 봇의 이름과 종족을 정하였습니다. 종족은 테란으로 하기로 결정하였습니다. 이름은 '실험용 기계', '더 봇 (The Bot)', '스타 플레티넘 봇'등의 안건이 나왔으나 어차피 재미로 만드는 봇이기도 하고, 구현하고 싶은 모든 기능들을 다 넣는 잡동사니처럼 만들 것 같기에 '하울의 움직이는 성'도 생각하였으나, 위 모든 안건들과 생각들을 잊어버리기 위해 술 이름으로 하기로 하였습니다. 소주나, 막걸리 같은 술도 생각하였으나, 테란 설정 상 제정신이 박혀있는 사람들이 거의 없다는 점을 참고하여 봇의 이름을 '압생트'로 결정하였다. 먼저 #1에서 설정한 것을 토대로 먼저 모듈을 불러오고 작업을 시작하겠습니다. from p..

스타크래프트2 인공지능 봇을 만들어보자 (#1)

스타크래프트 2 인공지능 세팅을 하는 데 있어 개인적으로 어려움이 있었으나, 다행히 해결하였다. 이 글을 참고하는 것을 추천합니다. 저는 위 글을 최대한으로 참고하였지만 스타크래프트2 설치를 F드라이브에 하여 적용시키는 데 고생하였으나 방법을 알아냈습니다. 저처럼 스타크래프트2 의 위치가 참고글과 다른 분들을 위해 작성합니다. 더보기 1) 배틀넷에 들어간뒤, 스타크래프트2 플레이 버튼 옆에 있는 설정에서 '탐색기에서 보기'로 들어갑니다. 2) 스타크래프트2 위치로 이동되었으면 해당 파일 안에 'Maps'라고 파일을 추가해주세요. 3) 'Maps' 안에 맵 파일을 넣어주세요. ※ 맵 파일들은 다운이 안 되는 경우가 있기에 첨부 파일로 넣어두겠습니다. 맵 설정을 다 끝내셨다면 파이썬을 다운받아주세요 3.4 ..

스타크래프트2 인공지능 봇을 만들어보자 (#0)

친구와 함께 산책을 하며, 수다를 나누는 중에 스타봇에 대한 얘기가 나왔고, 친구는 스타크래프트 2가 스타크래프트 브루드 워 보다 더 쉬우니, 한 번 만들어보는 거 어때? 라고 말을 하였습니다. 현재 할 것은 많지만, 충동적이게 개발을 하고 싶기에 개발을 할 예정입니다. 8월 2일부터 개발을 하여 방학이 많이 남아있지 않은 관계로 빠르게 8월 15일에 마무리를 지어야 합니다. 모든 것을 저 혼자 하기에는 무리가 있어 스타크래프트 2 봇을 만들어보기를 제안한 친구와 함께 개발을 할 것입니다. 저는 프로그래밍 및 테스트 역할을 수행할 것이고, 갈치(제 친구의 별명입니다.)는 저에게 피드백, 전략, 자료들을 찾아줄 것입니다. 1일 1 커밋처럼 1일 1 블로그를 할 계획입니다. 종족은 아직 정하지 못 하였습니다..

스타크래프트 봇 동아리, 내전용 봇 개발 (#14)

이번 글은 내전용 봇 개발의 마지막 글이다. 구현하고자하는 기능은 반드시 필요한 일꾼과 인구수를 계속 보충하는 기능을 구현하고자한다. // 일꾼 계속 추가 생산 public void executeWorkerTraining() { // InitialBuildOrder 진행중에는 아무것도 하지 않습니다 if (!isInitialBuildOrderFinished) { return; } if (MyBotModule.Broodwar.self().minerals() >= 50) { // workerCount = 현재 일꾼 수 + 생산중인 일꾼 수 int workerCount = MyBotModule.Broodwar.self().allUnitCount(InformationManager.Instance().getWor..

스타봇 2021.07.25

스타크래프트 봇 동아리, 내전용 봇 개발 (#13)

스타크래프트의 자원 줄을 계속 늘려주는 것은 병력을 쌓는 것 다음으로 중요하다는 것은 누구나 아는 사실이다. 그래서 내전용 봇에게 영역 확장을 하는 코드를 넣고자 한다. 먼저 종족이 저그인만큼 해처리를 늘리는 데에는 두 가지 이유가 있다. 1) 보다 많은 라바를 채우기 위해서 2) 자원 줄 3) 인구수 확보 먼저 영역 확장에 대해서부터 작성하도록하겠다. ※다른 종족에 비해 앞마당을 빨리 먹는 저그이기에 앞마당을 확장은 영역확장에 포함하지않았습니다. 유의해주세요. 물론 타 종족에서도 사용할 수 있게 코드상으로는 앞마당 확장은 영역확장에 포함하였습니다. 영역확장은 시간이 조금 지난 후, 중반쯤되어있을 때부터 확장을 하는 일반적이다. 또, 자원이 어느정도 확보가 되어있어야한다. 필자는 본진으로부터 가장 가깝지..

스타봇 2021.07.24

스타크래프트 봇 동아리, 내전용 봇 개발 (#12) | 디파일러 파트 (2)

파트1을 확인하고자하면 아래의 링크를 참고하시길 바란다. 디파일러 파트 (1) 파트1과 동일하게 영상을 시작으로 개선된 코드를 작성하겠다. 파트1에 작성되었던 코드 중 다크스웜은 문제가 아니었음을 파악하였다. 컨슘 파트가 문제였다. 컨슘파트도 메소드로 나누었다. private Unit nearestMyUnit(Unit unit, UnitType unitType) { double minDist = Double.MAX_VALUE; Unit nearestType = null; for (Unit findType : MyBotModule.Broodwar.self().getUnits()) { if (findType.getType() == unitType) { if (unit.getDistance(findType) ..

스타봇 2021.07.23

스타크래프트 봇 동아리, 내전용 봇 개발 (#11) | 디파일러 파트 (1)

퀸 다음으로 컨트롤이 어려운 유닛이자, 저그의 심장이라고도 불리우는 유닛, '디파일러'. 디파일러는 테란전에서 빠질 수 없는 유닛입니다. 퀸과 마찬가지로 공격은 따로 없으나, 3가지의 특수한 능력이 있습니다. '다크스웜', '플레이그', '컨슘'으로 순서대로 '다크스웜'은 저그의 연막탄이라고 할 수 있다. 생성된 구름안에 있는 유닛들은 원거리 공격의 타점을 빗나가게 한다. 즉, 타점을 빗나가게 하는 무시하는 것은 아니다. 타점은 본 유닛의 앞쪽으로 타점이 변경되기에 뒤쪽에 있는 유닛을 겨냥하면 타점 변경으로 앞쪽에 있는 유닛이 맞게된다. 시즈탱크의 공격을 무력화시키는 데 있어 좋다. '플레이그'는 지속형 피해를 주는 능력 중 하나이나, 스타크래프트 내에서 가장 강력한 능력 중 하나이다. 퀸의 브루들링은 ..

스타봇 2021.07.22

스타크래프트 봇 동아리, 내전용 봇 개발 (#10)

사용하기 매우 까다롭지만 사용만 잘하면 이득을 최대한 취할 수 있는 유닛 '퀸' 퀸에게 4가지의 특별한 능력인 '패러사이트', '브루들링 스폰', '인스네어', '인페스트 커맨드 센터'가 있다. 패러사이트는 적군에게 기생충을 심어 해당 적군의 시야를 엿 볼 수 있다. 패러사이트를 제거하는 방법은 해당 적군이 죽거나 메딕의 리스토레이션으로만 제거가 가능하다. 브루들링은 모든 적군을 즉사를 시킬 수 있는 강력한 능력이다. 적군 1기를 죽여 공생충(브루들링)을 2기 생성한다. 인스네어는 적군의 발을 묶는 데에 매우 효과적이다. 광역으로 적군의 이동속도를 50%만큼 감소시킨다. 인페스트 커맨드 센터는 파손되가는 커맨드 센터에 퀸이 들어가 커맨드 센터를 저그로 감염시킬 수 있는 능력이다. 위 4가지 능력들 중 저..

스타봇 2021.07.21