인공지능 7

Absinthe 개발 일지 (22/01/06)

스타크래프트2 봇 Absinthe를 다시 데리고 온 오잎 클로버입니다. 원래는 Java를 사용하는 프레임워크인 Ocraft로 개발을 할려고 했으나 정보도 너무나도 부족하고 시간도 많이 없기에 기존에 2주정도 시간을 들여 개발하였던 적이 있었던 pysc2로 개발하고자합니다. (시간이 남는다면 Ocraft로도 새로운 봇을 만들려고 시도해보도록 하겠습니다.) 먼저 기존 코드를 활용하였습니다. 기존 코드 링크 제가 구현하고자하는 중요한 기능들은 관문 (차원관문) 에서 생산할 수 있는 모든 유닛을 생산하는 것 관측선 및 불멸자 사용 광전사 돌진 업그레이드 추적자 점멸 업그레이드 및 사용 고위기사 사이오닉 폭풍 업그레이드 및 사용 인공지능 아주 어려움 (랜덤) 승리 위와 같습니다. 먼저 천천히 테크를 정해서 관문에..

스타크래프트 2 봇 개발 일지-3(Ocraft)

지난 번에 건설 작업 후 놀고 있는 일꾼에게 다시 명령을 내리는 것을 했었습니다. 이번에는 배럭 건설 및 마린 생산, 그리고 최종적으로 공격이다. 필수 메소드 private int countUnitType(Units unitType) { return observation().getUnits(Alliance.SELF, UnitInPool.isUnit(unitType)).size(); } 위 메소드는 해당 유닛 종류가 몇 기나 있는 지 반환해주는 메소드이다. 병영 건설 private void tryBuildBarracks() { if (countUnitType(Units.TERRAN_SUPPLY_DEPOT) < 1) { return; } if (countUnitType(Units.TERRAN_BARRACKS..

스타크래프트 2 봇 개발 일지-2(Ocraft)

지난 번에는 SCV 건설, 그리고 보급고 건설을 하였습니다. 이번에는 건설 직후, SCV가 노는 경우, 다시 작업에 착수하기 위한 코드를 작성할 것입니다. 일꾼 관리 스타크래프트2 같은 경우, 게임시작과 동시에 미네랄로 자동으로 보내주지만 그이후부터는 플레이어가 알아서 조절을 해야합니다. 그렇기때문에 건물 건설 등과 같은 미네랄 채취 외에 작업이 주어진 후에는 수동으로 다시 채취하도록 해야합니다. 보통 건물이 다 지어지면 자동으로 shift + 미네랄 우클릭을 해서 건물이 다 지어진 후 즉시 미네랄 채취 명령합니다. 이와 같이 개발하기 위해 제일 가까운 미네랄 하나를 찾아서 반환하여 놀고 있는 SCV에게 다시 미네랄을 채취하도록 합니다. private Optional findNearestMineralPa..

스타크래프트 2 봇 개발 일지-1(Ocraft)

지난 번에는 기본적으로 스타크래프트2 봇을 테스트를 해보았습니다. 이번에는 일꾼 생산 및 보급고 건설을 해볼 겁니다. 일단 일꾼 생산 같은 경우에는 onUnitIdle 메소드를 오버라이딩하여 일하는 유닛들을 가져옵니다. UnitInPool 이라는 클래스가 어떤 클래스인지 그리고 어떤 방식으로 진행이 되어가는 지 잘 파악하지 못하였기때문에 원리를 제가 이해한 방식대로 한다면 UnitPool에 저장되고, UnitInPool에 인스턴스화된 것들을 가지고 오는 것 같습니다. SCV 생산 @Override public void onUnitIdle(UnitInPool unitInPool) { Unit unit = unitInPool.unit(); // 아직도 이해 못함 원리를 switch ((Units) unit...

스타크래프트 2 봇 개발 일지-1(Ocraft)

좋은 새해 아침입니다. 새해는 아침을 보기 위해 날을 새고 친구들과 디코 통화를 했습니다. 덕분에 카페인에 절여진 기분이 듭니다. 스타크래프트 2 봇을 개발 일지를 작성하기 전 확인해주세요! 먼저 언어는 C++로 할려고 했지만 아직 C++를 자세히 몰라서 JVM언어인 Java, Kotlin, Python으로 할 예정입니다. C++는 나중에 기회가 된다면 시도해보도록 하겠습니다. (죄송합니다. (>人<;)) Jvm 같은 경우에는 Ocraft-s2client라는 블리자드의 공식 api인 s2client-api를 자바로 Wrapper 처리한 api를 사용합니다. Python 같은 경우에는 구글의 deepmind팀의 api인 pysc2를 사용합니다. 일단 2가지 방식 둘 다 게시할 계획이기에 Ocraft-s2c..

스타크래프트 2 봇 개발 일지-0

스타크래프트 봇 개발을 마무리 짓고 스타크래프트2 봇으로 다시 돌아왔습니다. 압생트 봇 글을 보신 분들은 알겠지만 Python을 사용해서 개발을 하였습니다. 이제부터 작성할 글인 스타크래프트2 봇 개발 일지는 파이썬 외에도 자유롭게 스타크래프트2 봇 개발과 관련된 글들을 올리는 개발 일지입니다. 겨울 방학 기간(2022-01-01 ~ 2022-02-01) 동안 하루에서 이틀 사이마다 제가 개발을 하며 맞추친 버그, 오류, 그리고 구현한 기능, 해결 등등 스타크래프트2 봇과 관련해서는 무엇이든지 올릴 계획입니다. 현재 스타크래프트 봇 동아리가 터진 이시점에서 정보가 부족한 스타1 보다는 스타2로 넘어갈도 생각 중에 있어 혹여나 스타크래프트2로 하게 된다면 좋은 글로 남기를 바랍니다. 그리고 개발 일지를 하..

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

방학동안 종족에 상관없이 스타크래프트 봇을 완성하여 내전할 예정이라는 공고가 내려와 개발을 시작하기로 했다. 방학기간은 7/16 ~ 8/14 하지만 미리 개발을 한다고 하여 나쁠 것은 없기에 먼저 봇을 개발하고자한다. 또, 내전 1등 상품도 있기에 흥미가 생겼다. 저자의 주종족인 저그(Z)로 개발하려고 한다. 앞으로 작성할 스타크래프트 봇 일지들은 카테고리 '스타봇'에 넣을 예정이다. 알고리즘 경진대회 공식 깃헙에서 제공한 소스인 BasicBot을 사용하여 제작을 할 것이다. 언어는 자바로 할것이다. 최소 기본 AI는 이길 수 있도록 개발할 예정이며, 최대 목표는 준우승이다. 에디터는 인텔리제이를 사용할 것이다. 미리 코드나 전략이 새나갈 수 있기에 8월 15일이후에 블로그에 공개될 예정이다. 시작 20..

스타봇 2021.07.12