로보코드(Robocode)란

Download Report

Transcript 로보코드(Robocode)란

로보코드(Robocode)
한국 IBM developerWorks
([email protected])
로보코드(Robocode)란 ?
25년 게임을 해오면서 게임을 잘하는 방법을 배
우기 위해 수많은 시간을 투자했습니다. 매뉴얼
– IBM alphaWorks 에서 개발한
Java도움말
와 Game
을 접목시킨
을 읽고,
항목을
보고 게임프로그래밍
레퍼런스도
게임
꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습니
다.로봇이
물론 다른
게임과하기
마찬가지로
여러분들도
– 로봇 개발자는 자신이 만든
이기도록
위해 로봇의
기능을 로
때문에 그런 일을 하게 될 것입니다. 하
향상 시키면서 Java Skill 보코드
또한 향상됨
지만 큰 차이가 있습니다. 매뉴얼이 자바라는 것
– 재미와 기술을 동시에 얻을 수 있는 기회를 제공해 주어 초보자도 쉽게
입니다. 그리고 레퍼런스는 Javadoc이고, 도움
Java 를 배울 수 있음
말 메뉴는 자바 튜토리얼이 될 것입니다. 로보코
드 게임을 배우는 것은 자바를 배우는 것입니다.
로보코드란?
로보코드 창시자 : Mat Nelson
"Robocode를 개발한 동기 중 일부는 '자
바는 느리다', '자바로는 게임을 작성할 수
없다'와 같은 말이 더 이상 진실이 아니라
는 것을 세상에 입증하는 것이었다. 나는
목적을 달성했다고 생각한다."
로보코드 홈페이지
http://www.ibm.com/developerworks/kr/robocode
로보코드의 특징
Feature is ...?
–
–
–
–
–
–
–
–
자바 환경에서 작동하는 실시간 전투게임
각 로봇은 인공지능으로 움직이며 전투함
자신의 로봇을 직접 프로그래밍 할 수 있음
자신의 로봇으로 다른 사람의 것과 대결할 수 있음
전투 결과가 점수로 매겨짐
캐릭터의 전투 능력은 프로그래밍 Skill과 비례함
자바를 쉽게 배울 수 있다.
즉, 놀면서 공부한다.
로보코드 설치
로보코드 설치
– Robocode 홈페이지 에서 로보코드 설치 파일을 다운로드
(http://robocode.sourceforge.net/) 반드시 jar 파일로 다운로드...
– 로보코드 실행을 위해서는 JDK 가 사전에 설치 되어 있어야 함
(JDK v1.5 이상 권장)
– 설치 : “java -jar robocode-setup-1.2.6A.jar”
시스템 구성요소
– 전투장
– 로봇 편집기
로보코드 - 데모
My Robot 작성 방법
게임 진행 방법
소스 설명
로보코드 로봇의 해부
로보코드 로봇
로보코드 기본 명령어
[로봇, 총, 레이더의 움직임]




ahead(double distance)와 back(double distance): 지정된 픽셀 거리로 로봇을
이동시킨다.
turnRight(double degree)와 turnLeft(double degree): 지정된 각도로 로봇을
돌린다.
turnGunRight(double degree)와 turnGunLeft(double degree): 로봇의 방향과 상관
없이 총의 방향을 돌린다.
turnRadarRight(double degree)와 turnRadarLeft(double degree): 총과 로봇의
방향에 상관없이 총 위의 레이더를 돌린다.
[로봇의 정보 얻기]


getX()와 getY() : 로봇의 현재 좌표를 보여 준다.
getHeading(), getGunHeading()과 getRadarHeading() : 로봇, 총, 레이더의 현재
방향과 각도로 알려준다.




ScannedRobotEvent : 이 메소드는 레이더가 적 로봇을 스캔했을 때 호출된다.
HitByBulletEvent : 이 메소드는 내 로봇이 총알을 맞았을 때 호출된다.
HitRobotEvent : 이 메소드는 내 로봇이 적 로봇을 쏘았을 때 호출된다.
HitWallEvent : 이 메소드는 내 로봇이 벽과 충돌했을 때 호출된다
[전투 중 이벤트 발생시]
로보코드 – 기본 정보
시간 단위 : tick (= frame = turn)
– 30 FPS (초당 30 Frame)
거리 단위 : pixel
– 시작 위치 (0, 0) : 좌측 하단
로봇의 움직임
–
–
–
–
가속
감속
속도
거리
a = 1 pixel/tick
a = 2 pixel/tick
v = a * t (Max 8)
d=v*t
로봇의 최대 회전율 = 10 – 0.75 * abs(v) degrees/tick
총의 최대 회전율 = 20 degrees/tick
레이더의 최대 회전율 = 45 degrees/tick
로보코드 – 기본 정보
총알
– firepower : 0.1~3
– 데미지 = 4 * firepower
– firepower 가 1 이상이면 2 * (firepower -1) 추가
총알 발사시 로봇의 에너지 소모 = firepower
총알 속도 = 20 – 3 * firepower
로봇의 움직이는 방향이나 속도는 총알의 속도에 영향을 주지 않는다.
총의 가열 (gunHeat) = 1 + firepower / 5
명중시 돌려받는 에너지 = 3 * firepower
상대와 충돌시 = 둘 다 -0.6
내가 충돌시 = + 1.2
벽과 충돌시 = abs(v) * 0.5 – 1
– AdvancedRobot 이상
로보코드 – 기본 정보
Constant
–
–
–
–
–
–
–
getBattleFieldHeight()
getBattleFieldWidth()
getGunCoolingRate()
getHeight()
getWidth()
getName()
getNumRounds()
// 전투장 높이
// 전투장 너비
// 총이 식는 속도
// 로봇의 높이
// 로봇의 너비
// 로봇의 이름
// 몇 라운드
Variable
–
–
–
–
–
–
–
–
–
–
–
getEnergy()
getGunHeat()
getGunHeading()
getRadarHeading()
getHeading()
getVelocity()
getOthers()
getRoundNum()
getTime()
getX()
getY()
// 현재 로봇의 에너지
// 총의 온도
// 총의 방향의 각
// 레이더의 각
// 로봇이 향하고 있는 방향의 각
// 로봇의 속도
// 남은 상대방의 수
// 몇 번째 라운드
// 게임진행 시간
// 로봇의 X 좌표
// 로봇의 Y 좌표
로봇 만들기 실습
각자 PC 에 로보코드 설치
샘플 로보코드 작성, 기본 알고리즘 적용, 디버그 창의 활용
대전
로보코드 제출
무적 로봇 만들기 Tip!
아래 URL 에서 제공되는 로보코드 기본 알고리즘을 적용
 developerWorks : Secrets from the Robocode masters
(http://www.ibm.com/developerworks/java/library/j-robotips/)
 Wikipedia Robocode
(http://en.wikipedia.org/wiki/Robocode)
로보코드 코리안컵 History





2001 :
2003 :
2004 :
2006 :
2007 :
alphaWorks의 Mat Nelson 개발
제 1회 로보코드 코리안컵 개최 (우승 : 고려대 황준식)
제 2회 로보코드 코리안컵 개최 (우승 : 전주대 김형찬)
제 3회 로보코드 코리안컵 개최 (우승 : 성균관대 김정훈)
제 4회 로보코드 코리안컵 개최 (예정)
로보코드 코리아컵 2007
행사 일정




2007.
2007.
2007.
2007.
상품
07. 15
07. 20
07. 27
08. 01
:
:
:
:
로봇 접수 마감 ([email protected])
64강 결과 발표
16강 결과 발표
챔피언쉽 결승대회 및 우승자 시상
로보코드 - 경기 규칙
Battle Filed Size : 1000 * 800
Gun Cooling Rate : 0.1
Inactivity Time : 450
예선전 : 그룹전투 (그룹당 10 로봇)
64강부터 1 대 1 토너먼트 적용
Total Score 가 높은 로봇이 승리 (오래 살아남는 것이 아님)
로보코드 - 점수항목
점수항목
Total Score
점수내역
점수의 총합. 순위의 기준
Survival Score
다른 로봇이 죽을 때 마다 살아남은 로봇은 50점 획득
Last Survival
Bonus
최후까지 살아남은 로봇은 이전 로봇이 죽을 때 마다 보너스로 10점씩
추가 획득(ex : 전투에 참여한 로봇이 5개 일 경우 – 4 X 10 점)
Bullet Damage
적에게 총알로 입힌 타격 Point 만큼 점수 획득
Bullet Damage
Bonus
총알로 적을 죽였을 때 그 동안 적 로봇에 입힌 타격
Point 의 20% 를 추가 획득
Ram Damage
적 로봇을 육탄으로 공격했을 때 2 점 획득
Ram Damage
Bonus
육탄공격으로 적을 죽였을 때 그 동안 적 로봇에 입힌 타격
Point의 30% 를 추가로 획득
요약 및 질의 & 응답
로보코드란 IBM alphaWorks 에서 개발한 Java 와 Game 을
접목시킨 프로그래밍 게임
로보코드 게임을 배우는 것은 자바를 배우는 것.
자바를 쉽게 배울 수 있다. 즉 놀면서 공부한다.