관리 메뉴

Define You

Robocode 마스터의 비밀: Robocode 전략 본문

Insight for 기획/기획을 하고싶은 학생

Robocode 마스터의 비밀: Robocode 전략

하루10분 2007.06.07 10:59
출처 : http://www.ibm.com/developerworks/kr/library/j-tipstrats.html

Gladiatorial League의 기원에 대해 알아보고, 다양한 움직임 전략 레벨, 슈팅, 정보 모으기 등을 설명합니다.

본 자료는 2002년 5월 IBM developerWorks journal에 실린 기술자료, "Cloak and turret: Learn secrets from the Robocode masters"의 내용입니다.

Gladiatorial League

필자가 Robocode를 알게 되었을 때, 어떤 로봇이 가장 으뜸인지를 가려내는 공식적인 대회는 없었다. 그나마 존재했던 토너먼트도 새로운 버전의 로봇들이 속출하면서 바로 구식이 되어버렸다. 필자가 로봇을 개발하는 동안 수행했던 테스트는 공식 대회 데이터보다 완벽했고 최신의 것이었다. Christian Schnell은 자동으로 시합을 실행하는 RoboLeague를 출시했고, 필자도 고유의 리그 기반 시합을 만들기 시작했다. 필자가 만든 로봇을 테스트 하는 동안에, 다른 사람들이 Robocode Repository에 업로드 했던 50개 이상의 로봇들을 다운로드 했다. 이 로봇들을 10개의 디비전(division)으로 나누었다. 그런 다음, 각 디비전 마다 100 회의 전투 라운드를 실행했다. 각 디비전에서 1등 로봇은 다음 시즌으로 올라갔고, 최하위 로봇은 강등되었다. HTML로 생성된 결과를 웹 사이트로 업로드 하기는 쉬웠다. 이곳에서 Robocode 커뮤니티는 자신들의 로봇과 다른 로봇들을 비교할 수 있다. 이렇게 해서 Gladiatorial League가 탄생했던 것이다.

리그 기반 포맷은 두 개의 긍정적인 측면을 갖고 있다. 우선, 비교적 적은 전투를 통해서 많은 로봇들이 시합을 하는 방식인데, 실행하는데 시간이 많이 걸린다. 두 번째는, 비슷한 표준을 가진 로봇들은 결국 같은 리그에 있게 된다. 따라서, 로봇을 처음 만드는 사람들은 비슷한 표준의 로봇과 경쟁할 수 있는 좋은 기회를 갖게 된다. 초반에 훨씬 진화된 로봇과 경쟁해서 대패의 쓴맛을 보지 않아도 된다.

움직임 전략

다음은 움직임 전략 레벨이다.

  1. Stay still. 공격하기가 쉽다. 일반적으로 가장 낮은 수준의 전략이다.

  2. Move in a straight line. Stationary 타켓팅에 의한 공격을 피한다.

  3. Move in a circular curve. Stationary 타겟팅과 Linear 타겟팅에 의한 공격을 피한다.

  4. Move backwards and forwards in an oscillating motion. Linear 타겟팅 및 Circular 타겟팅을 사용하여 공격하기 어렵다. 하지만 Stationary 타겟팅이 매우 효과적이다.

  5. Move in a random direction. 모든 레벨의 타겟팅에 의한 공격을 줄이는데 효과적이지만, 일반적으로 이 같은 방식을 실행하기가 어렵다.

  6. Advanced movement. 다른 로봇들에 대한 모든 종류의 데이터를 활용하여 최상의 이동 방향을 찾는다. 이것은 지금까지 로봇 전략 중에서 최상의 전략이다. 최상의 로봇과 최악의 로봇을 구분하는 주요한 요인이 된다.

슈팅

다음은 타겟팅 레벨이다.

  1. Stationary. 목표 로봇의 현재 위치를 슈팅(shoot) 한다. 가장 단순하고 비효율적인 타겟팅 전략이다. 어떤 총알이든 빗나가게 되어있다.

  2. Linear. 목표물이 일정한 속도로 직선 이동한다고 가정하고 앞으로 갈 곳을 조준하여 맞춘다. 이러한 타겟팅 방식은 목표물이 비교적 근접해 있을 경우에 매우 효과적이다. 모든 로봇 움직임은 짧은 시간 동안에는 일직선으로 움직이는 것으로 추정될 수 있다. 하지만, 이러한 짐작은 믿을 수 없을 정도로 매우 빠르다.

  3. Circular. 일정한 속도와 등각속도(constant angular velocity)로 움직인다고 가정하고 목표물이 앞으로 위치할 곳을 맞춘다. Linear 타겟팅 보다 약간 낫다. 출발과 중지, 앞뒤로 빠르게 움직이기 같이 속도를 빠르게 변경함으로써 타겟팅을 피할 수 있다.

  4. Oscillatory. 목표 로봇이 끊임없이 앞뒤로 움직인다고 가정하는 전략이다. 그러한 유형의 움직임을 보이는 로봇에 매우 효과적이다. 극소수의 로봇들만이 이러한 타겟팅 유형을 사용한다.

  5. Movement pattern matching. 이러한 접근 방식은 로봇의 과거의 움직임을 기록하고 이 로봇이 반복적인 패턴으로 움직일 것이라고 가정한다. 예견되는 미래의 위치로 슈팅한다. 이러한 유형의 타겟팅은 이전의 방식들 중에서 가장 큰 잠재력을 갖고 있다. 단점은 전체 검색에 걸리는 프로세싱 타임이다.

정보 모으기

다음은 스캐닝(scanning) 레벨이다.

  1. Simple. 총과 같은 방향으로 레이더를 조준한다.
  2. Circular. 레이더를 계속해서 회전시킨다.
  3. Tracking. 하나의 목표물로 레이더를 고정시킨다.
  4. Optimal. 가능한 빠르게 모든 로봇들을 스캐닝 할 수 있도록 레이더를 이동시킨다.

전투장에서 다른 로봇들에서 수집한 데이터는 움직임과 발사에 고급 전략을 세우는데 있어 매우 중요한 요소가 된다. 다음은 다른 로봇들에서 얻을 수 있는 데이터들이다.

  • 위치
  • 헤딩
  • 속도
  • 각 속도
  • 에너지
  • 피해를 입힌 정도 -- 전투장의 다른 로봇들과 비교하고 가장 쉽게 공격할 수 있는 것을 조준하는데 유용하다.
  • 피해를 입은 정도
  • 전사시킨 회수와 시간
  • 총알을 발사할 때(에너지 차이를 사용하는 기술)

이러한 전략 리스트들이 결코 완전한 것은 아니다. Gladiatorial League에서 상위에 랭크 된 로봇들은 위에 설명한 대부분의 전략들을 활용했다. 하지만, 누구나 새로운 개념이나 간단한 전략을 세울 수 있다. 가장 단순한 아이디어가 매우 큰 성공을 거둘 수도 있다.



참고자료

  • " Robocode 마스터의 비밀": 로보코드 마스터들이 주는 힌트, 팁, 조언 (한글)

  • 로보코드 창시자, Mathew Nelson은 로보코드 공식 사이트를 관리하고 있다. 로보코드에 대해 진지하게 검토중인 사람이라면 한번쯤은 들러야 한다.

  • Christian Schnell의 RoboLeague는 로보코드 리그 매니저 겸 시즌 매니저이다. 여러가지 그룹핑을 통해서 시합을 펼치고, 결과를 관리하며, HTML로 된 현황 리포트를 만들어 낸다.

  • "Rock 'em, sock 'em Robocode (한글)" (한국 developerWorks, 2002년 1월) 총알을 피하고 정확한 공격 작전을 수행하면서 상속, 다형성, 이벤트 처리 및 내부 클래스를 배울 수 있다.

  • "Rock 'em, sock 'em Robocode: 제 2 라운드 (한글)" (한국 developerWorks, 2002년 5월), 고급 로봇 구현과 팀 플레이로 기본에서 나아가기.

  • 한국 developerWorks: 자바 프로그래밍 관련 다양한 기술자료 보기


필자소개

Simon Parker는 호주, 시드니 소재 Neopraxis Pty. Ltd의 디자인 엔지니어이다. 바이오메디컬 시스템을 위한 임베디드 코드를 작성하고 있다.


0 Comments
댓글쓰기 폼