스타크래프트2 봇

압생트(Absinthe)봇 만들기 (#4)

오잎 클로버 2021. 8. 13. 12:00
728x90

이번에 구현하고자 하는 것은 사이버네틱스 코어 (인공 제어소) 건설입니다.

테크를 진행하는 건물 중 하나이자, 스타크래프트 2에서 프로토스를 더 포크로 만들어준 기능을 업그레이드를 할 수 있는 건물입니다. 공중 업그레이드와 차원관문을 업그레이드할 수 있습니다.

 

간단한 로직을 세워봅시다. 먼저 인공 제어소는 수정탑과 관문이 있어야지만 건설 가능한 건물입니다. 역시 당연하게도 주변에 동력이 공급되어야지만 건설 가능합니다. 이를 토대로 한 코드가 아래와 같습니다.

async def build_core(self):
    if self.structures(UnitTypeId.PYLON).ready:
    pylons = self.structures(UnitTypeId.PYLON).ready.random
    if self.structures(UnitTypeId.GATEWAY).ready:
        if not self.structures(UnitTypeId.CYBERNETICSCORE):
            if (
                self.can_afford(UnitTypeId.CYBERNETICSCORE)
                and self.already_pending(UnitTypeId.CYBERNETICSCORE) == 0
            ):
                await self.build(UnitTypeId.CYBERNETICSCORE, near=pylons)

already_pending 메소드는 특정 유닛 종류를 생산 혹은 건설을 하기로 예약이 되어 있는 지를 확인하는 메소드이다.

인공 제어소는 하나만 지어도 괜찮다.

(공중 유닛 업그레이드 시간이 길며, 공중으로만 공격을 할 지라도 딱히 많이 필요하지 않기 때문이다)

 

다음엔 관문에서 유닛 생산을 구현하겠습니다.