1 / 17

로보코드 (Robocode)

로보코드 (Robocode). 한국 IBM developerWorks (dwkorea@kr.ibm.com). 로보코드 (Robocode) 란 ?.

herbst
Download Presentation

로보코드 (Robocode)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 로보코드(Robocode) 한국 IBM developerWorks (dwkorea@kr.ibm.com)

  2. 로보코드(Robocode)란 ? 25년 게임을 해오면서 게임을 잘하는 방법을 배우기 위해 수많은 시간을 투자했습니다. 매뉴얼을 읽고, 도움말 항목을 보고 게임 레퍼런스도 꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습니다. 물론 다른 게임과 마찬가지로 여러분들도 로보코드 때문에 그런 일을 하게 될 것입니다. 하지만 큰 차이가 있습니다. 매뉴얼이 자바라는 것입니다. 그리고 레퍼런스는 Javadoc이고, 도움말 메뉴는 자바튜토리얼이 될 것입니다. 로보코드 게임을 배우는 것은 자바를 배우는 것입니다. • 로보코드란? • IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임 • 로봇 개발자는 자신이 만든 로봇이 이기도록 하기 위해 로봇의 기능을 향상 시키면서 Java Skill 또한 향상됨 • 재미와 기술을 동시에 얻을 수 있는 기회를 제공해 주어 초보자도 쉽게 Java 를 배울 수 있음 • 로보코드 창시자 : Mat Nelson "Robocode를 개발한 동기 중 일부는 '자바는 느리다', '자바로는 게임을 작성할 수 없다'와 같은 말이 더 이상 진실이 아니라는 것을 세상에 입증하는 것이었다. 나는 목적을 달성했다고 생각한다."

  3. 로보코드 홈페이지 • http://www.ibm.com/developerworks/kr/robocode

  4. 로보코드의 특징 • Feature is ...? • 자바 환경에서 작동하는 실시간 전투게임 • 각 로봇은 인공지능으로 움직이며 전투함 • 자신의 로봇을 직접 프로그래밍 할 수 있음 • 자신의 로봇으로 다른 사람의 것과 대결할 수 있음 • 전투 결과가 점수로 매겨짐 • 캐릭터의 전투 능력은 프로그래밍 Skill과 비례함 • 자바를 쉽게 배울 수 있다. • 즉, 놀면서 공부한다.

  5. 로보코드 설치 • 로보코드 설치 • Robocode 홈페이지 에서 로보코드 설치 파일을 다운로드 (http://robocode.sourceforge.net/) 반드시 jar 파일로 다운로드... • 로보코드 실행을 위해서는 JDK 가 사전에 설치 되어 있어야 함 (JDK v1.5 이상 권장) • 설치 : “java -jar robocode-setup-1.2.6A.jar” • 시스템 구성요소 • 전투장 • 로봇 편집기

  6. 로보코드 - 데모 • My Robot 작성 방법 • 게임 진행 방법 • 소스 설명

  7. 로보코드 로봇의 해부 • 로보코드 기본 명령어 [로봇, 총, 레이더의 움직임] • 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 : 이 메소드는 내 로봇이 벽과 충돌했을 때 호출된다 • 로보코드 로봇

  8. 로보코드 –기본 정보 • 시간 단위 : 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

  9. 로보코드 –기본 정보 • 총알 • 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 이상

  10. 로보코드 –기본 정보 • Constant • getBattleFieldHeight() // 전투장 높이 • getBattleFieldWidth() // 전투장 너비 • getGunCoolingRate() // 총이 식는 속도 • getHeight() // 로봇의 높이 • getWidth() // 로봇의 너비 • getName() // 로봇의 이름 • getNumRounds() // 몇 라운드 • Variable • getEnergy() // 현재 로봇의 에너지 • getGunHeat() // 총의 온도 • getGunHeading() // 총의 방향의 각 • getRadarHeading() // 레이더의 각 • getHeading() // 로봇이 향하고 있는 방향의 각 • getVelocity() // 로봇의 속도 • getOthers() // 남은 상대방의 수 • getRoundNum() // 몇 번째 라운드 • getTime() // 게임진행 시간 • getX() // 로봇의 X 좌표 • getY() // 로봇의 Y 좌표

  11. 로봇 만들기 실습 • 각자 PC 에 로보코드 설치 • 샘플 로보코드 작성, 기본 알고리즘 적용, 디버그 창의 활용 • 대전 • 로보코드 제출

  12. 무적 로봇 만들기 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)

  13. 로보코드 코리안컵 History • 2001 : alphaWorks의 Mat Nelson 개발 • 2003 : 제 1회 로보코드 코리안컵 개최 (우승 : 고려대 황준식) • 2004 : 제 2회 로보코드 코리안컵 개최 (우승 : 전주대 김형찬) • 2006 : 제 3회 로보코드 코리안컵 개최 (우승 : 성균관대 김정훈) • 2007 : 제 4회 로보코드 코리안컵 개최 (예정)

  14. 로보코드 코리아컵 2007 • 행사 일정 • 2007. 07. 15 : 로봇 접수 마감 (dwkorea@kr.ibm.com) • 2007. 07. 20 : 64강 결과 발표 • 2007. 07. 27 : 16강 결과 발표 • 2007. 08. 01 : 챔피언쉽 결승대회 및 우승자 시상 • 상품

  15. 로보코드 - 경기 규칙 • Battle Filed Size : 1000 * 800 • Gun Cooling Rate : 0.1 • Inactivity Time : 450 • 예선전 : 그룹전투 (그룹당 10 로봇) • 64강부터 1 대 1 토너먼트 적용 • Total Score 가 높은 로봇이 승리 (오래 살아남는 것이 아님)

  16. 로보코드 - 점수항목 점 수 항 목 점 수 내 역 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% 를 추가로 획득

  17. 요약 및 질의 & 응답 • 로보코드란 IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임 • 로보코드 게임을 배우는 것은 자바를 배우는 것. • 자바를 쉽게 배울 수 있다. 즉 놀면서 공부한다.

More Related