며칠전 소모임 게시판에 갔다가 다음과 같은 재미있는 프로그래밍 대회가 있다는 것을 알게 되었다.

로보코드 코리아 컵 2007

Java 로 만들어진 로봇전투 플랫폼에서 제공하는 API 를 가지고 유저가 각자 자신의 인공지능 로봇을 만든 후, 상대 로봇과 전투를 벌여서 이긴 측이 승리하는 게임이다.

기본적인 이동, 무기발사, 적위치 파악과 같은 API 는 제공되지만 이러한 API 를 기반으로 전략적인 이동과 적의 이동패턴을 예측하여 패턴매칭을 적용한 사격 및 회피 알고리즘은 유저가 고안해서 구현해야 하기 때문에 인공지능과 알고리즘에 많은 공부가 된다. 원래 이 게임을 고안된 것도 자바 언어를 손쉽게 익히고 프로그래밍 공부를 재미있게 해 주기 위한 교육 목적에서 창안되었다 한다.
외국에서는 여러 대회들이 개최되는 듯 한데, 이번에 한국 IBM 에서 상품까지 걸고 개최한다 하여 도전해 볼 마음이 생겼다.

다만 이런 대회가 있다는 사실을 너무 늦게 안 까닭에... ( 기회란 사실 주위에 찾아보면 참 많다. 다만 그 기회들이 언제 어떻게 나타나는지 모르기 때문에 사람들이 기회를 못잡는 경우가 많다. 뭐... 알면서도 귀차니즘 때문에 걍 냅두는 경우도 많지만 ㅡ,.ㅡ ) 준비할 시간이 너무 적은게 아쉽다. 기본적인 설정과 몇가지 변수만 주의하면 일반적인 코딩과 객체지향 개념은 자바가 C++ 과 유사하여 다행히 언어에 적응하는 시간은 많이 소요되지 않았다. 원래 Java 는 꼭 열심히 공부해서 C++ 만큼 익숙해 지려고 생각하고 있던터라 이번 기회에 Java 에 많이 익숙해지는 기회로 삼고도 싶고...

항상 느끼지만 JVM 기반으로 자바 바이너리 코드를 생성하는 JAVA 는 C++ 로 exe 를 빌드하는데 익숙해 있는 개발자들에게는 혼란을 준다.. =)

Eclipse 에서 robocode 설정 방법

우선은 자바 IDE 로 많이 쓰이는 Eclipse 를 활용해 보려 한다.
Eclipse 은근히 쓰기 번거롭네... 그냥 UltraEdit 에서 코딩하고 콘솔에서 컴파일/디버깅 중.. 

로보코드에서 제공하는 기본 API 들을 사용하기 위해서는 robocode.jar 을 include 해서 같이 패키징 해야 한다.

java 설치 후 환경변수 설정 방법

javac -cp D:\Data\Programming\robocode\robocode.jar -d . *.java

실행시키면 게임 화면은 아래와 같다.
현재 작년과 재작년 대회에서 우승했던 로봇의 소스코드 및 포럼에서 유명 로봇의 알고리즘을 다운받아서 분석해보고, 직접 게임을 돌려보면서 전략 구상중이다. 

예선은 10 대의 로봇을 동시에 한 stage 에서 전투를 벌여서 서바이벌 식으로 최종 1 ~ 2 등만 예선을 통과해 64강을 선출하고, 64 강 부터는 1 on 1 으로 대결을 벌이는 듯 하다. 지금은 melee 에서 살아남기 위한 좋은 전략을 집중적으로 공부 중이다. (그런데 50 게임 정도를 시뮬레이션으로 돌려보니 워낙 melee 는 난전이라 운칠기삼 같다는 느낌도 들고... 처음에 1등하던 로봇이 그 다음 게임에서는 하위권으로 처지는 경우도 허다하다. )

 로봇제출 마감시간은 이번주 일요일. 시간이 너무 짧은 관계로 밑바닥부터 전부 코딩은 못할 것 같고... 다행히도 오픈소스로 좋은 예제 코드들과 전략들이 많이 공개되어 있으므로 여러번 시뮬레이션 해 봐서 melee ( 아래 캡쳐 화면에서 처럼 10 마리의 로봇이 동시에 싸우는 방식 ) 에서 가장 좋은 알고리즘을 적절하게 내 로봇에 맞게 적절히 수정해서 적용하고 있는 중이다.


사용자 삽입 이미지


 인터넷 서핑하면서 정보를 수집해보니 몇달 씩 준비한 사람들도 수두룩한데 뒤늦게 참가에 의의를 두는 내가 좋은 성적을 초장부터 기대하면 과욕이고... 로보코드를 출전하면서 자바에 익숙해지는 좋은 기회가 됐으면 싶다... =)
댓글을 달아주세요!
  1. BlogIcon JongsooLee 2007.07.18 10:53  댓글주소  수정/삭제  댓글쓰기

    로보코드 대회 나가는구나...난 옛날에 집에서 좀 해보다가 말았었는데...ㅡㅡ;;
    좋은 성적 거두기를 바란다~!!! 1등 해야되~!!!

이름 암호 홈페이지