스타봇

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

오잎 클로버 2021. 7. 12. 14:10
728x90

스타크래프트는 유즈맵으로 더 많이 알려져있으나 원래는 전략게임이다.

스타크래프트 수도 셀 수없이 많은 빌드들이 있고 또, 저자가 구현하는 봇 역시 빌드를 구현하고자한다.

봇에게 부여할 빌드는 9드론 빌드를 부여하고자한다.

공격도 자주할 수 있고 후속 빌드를 이어가서 최대한 빠르게 게임을 끝내고자 9드론 빌드를 선택하였다.

Strategy에서 setInitialBuildOrder메소드에서 미리지정을 하면 그에 따라 순차적으로 작동한다.

자신의 종족에 따라 초반 빌드오더가 미리 짜여있겠으나 저자는 저그만 구현할 예정이기에

이를 다 지우고 9드론 초반 빌드만을 작성하였다.

public void setInitialBuildOrder() {
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(UnitType.Zerg_Spawning_Pool,
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(UnitType.Zerg_Overlord,
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(UnitType.Zerg_Extractor,
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
	BuildManager.Instance().buildQueue.queueAsLowestPriority(InformationManager.Instance().getWorkerType(),
			BuildOrderItem.SeedPositionStrategy.MainBaseLocation, true);
 }

InformationManager.Instance().getWorkertype()은 자신 종족에 따른 일꾼을 반환해주는 메소드이다.

 

초반 빌드는 아래와 같다

[초반빌드]

더보기

드론

드론

드론

드론

드론

스포닝풀

오버로드

드론

익스트랙터

드론

9드론 - 9 - 8오버로드 - 8드론 - 9익스트랙터 - 8드론

2021-07-12