Tutorial_Step1_JAVA
TutorialLevel1Bot 프로젝트를 통해, BWAPI 의 사용법을 익혀보겠습니다.
-
플레이어 정보 및 맵 정보를 Screen 화면에 표시
-
현재 FrameCount 를 Screen 화면에 표시
-
각 유닛 id 를 Map 화면에 표시
-
Eclipse 를 실행시킵니다
-
Package Explorer 에서 TutorialLevel1Bot 프로젝트를 선택합니다
-
메뉴 -> Run -> Run Configurations... -> 왼쪽 트리에서 Java Application 밑에 TutorialLevel1Bot 을 선택합니다
-
오른쪽 Arguments 탭 -> Working Directory : Others 에 C:\StarCraft 를 입력합니다
TutorialLevel1Bot 프로젝트를 구성하는 파일들은 다음과 같습니다.
파일명 | 설명 |
---|---|
Main.java | 봇 프로그램의 시작 지점입니다. MyBotModule을 실행시킵니다 |
MyBotModule.java | 스타크래프트 게임과 Connection 을 맺고, 스타크래프트 게임에서 발생하는 각 이벤트를 처리합니다. 스타크래프트 게임이 종료되면 봇 프로그램을 종료시킵니다 |
스타크래프트 게임 Screen 화면에 플레이어 정보를 출력하는 코드는 다음과 같습니다.
Broodwar.self() 는 아군 플레이어 객체를 반환하는 함수이고, Broodwar.enemy() 는 적군 플레이어 객체를 반환하는 함수입니다.
(MyBotModule.java)
public void onFrame() {
...
// 플레이어 정보 표시
Broodwar.drawTextScreen(5, 5, "My Player: "+Broodwar.self().getTextColor()+Broodwar.self().getName()+" ("+Broodwar.self().getRace()+")");
Broodwar.drawTextScreen(5, 15, "Enemy Player: "+Broodwar.enemy().getTextColor()+Broodwar.enemy().getName()+" ("+Broodwar.enemy().getRace()+")");
...
}
스타크래프트 게임을 실행시켜서, 아군 및 적군 플레이어의 이름 및 종족 정보가 제대로 표시되는지 살펴봅시다.
스타크래프트 게임 Screen 화면에 현재 FrameCount 를 출력하는 코드는 다음과 같습니다.
(MyBotModule.java)
public void onFrame() {
...
// 현재 FrameCount 표시
Broodwar.drawTextScreen(300, 100, "FrameCount: "+Broodwar.getFrameCount());
...
}
스타크래프트 게임 Map 화면 상의 모든 유닛들에 대해 id를 출력하는 코드는 다음과 같습니다.
아군 / 적군 플레이어의 건물 / 지상유닛 / 공중유닛 뿐만 아니라 Mineral, Gas Geyser 등에 대해서도 id 가 부여됨을 알 수 있습니다.
또한 id 가 출력되는 위치를 살펴보면 유닛 그래픽의 중앙부에 id 가 출력되는데, 이를 통해 unitgetPosition() 의 결과는 유닛 그래픽의 중앙부 임을 알 수 있습니다.
(MyBotModule.java)
public void onFrame() {
...
// 유닛 id 표시
for (Unit unit : Broodwar.getAllUnits()) {
Broodwar.drawTextMap(unit.getPosition().getX(), unit.getPosition().getY(), ""+unit.getID());
}
...
}
- 스타크래프트란?
- 게임 설치 및 환경설정
- Starcraft 설치
- BasicBot 설치
- 개발언어 선택
- 개발 IDE 설정 및 봇 프로그램 실행해보기
- 팀 협업환경 설정
- BWAPI & BWTA 소개
- 봇 개발 튜토리얼
- BasicBot을 활용한 봇 개발
- 참고사항