 |
|
난이도 : 초급 Dana Triplett, 자유기고가
2002 년 5 월 01 일 developerWorks와 alphaWorks를 면밀히 살펴보았다면, Robocode라고 하는 것에 많은
에너지를 보았을 것이다. Robocode는 자바 프로그래밍을 가르치면서 우연히 생긴 중독성의 게임이다. Mat Nelson은
지난 18개월 동안 대부분의 시간을 Robocode 개발에 헌신하였고 결국 IBM alphaWorks의 촉망받는 프로젝트로 정착시키기에
이르렀다. 그는 현재 많은 보상을 받고 있다. Robocode의 성공은 시작일 뿐이다.
Mat Nelson
Mat Nelson은 1995년 부터 자바언어를 다루었다. 그 당시 IBM에 근무하기 직전이였다. 언어가 발전해가면서 이 열광적인
게이머는 "그가 늘 하고 싶었던" 게임을 구현할 기회를 포착했다. Robocode는 2000년 말에 개인적인
노력으로 시작되었지만, 2001년 7월 IBM의 alphaWorks 다운로드 페이지가 생겼을 때 전문적인 게임이 되었다. 게임과
창시자 모두 유명해지면서 (121,000회 이상 다운로드 기록) developerWorks 담당자인 Dana Triplett은
Mat에게 인터뷰를 요청하게 되었다. Robocode를 만드는데 어떤 것에 영감을 받았는지와 앞으로의 전망에 대해 들어보도록
하자.
developerWorks: Robocode의 중심 개념은 무엇입니까?
Nelson: Robocode는 재미를 위한 프로그래밍입니다. 재미라는 것은 매우 중요한 단어입니다. 간단한
몇 줄의 코드로 로봇이 스크린 여기저기를 휘젓고 다니면서 자기 경로에 있는 무엇이든 박살내는 것을 보게 됩니다. 그러는 동안
사람들은 진짜 언어를 배우게 되는 것이고 진짜 문제를 해결하게 되는 것입니다.
dW: 좋아하는 게임에는 어떤 것들이 있으며 그 중 가장 좋아하는 것이 있다면?
Nelson: Worms for the Commodore 64는 게임은 어떻게 움직여야 하는 지에 대해 내가
무엇인가를 지시해야 한다는 것을 발견한 게임입니다. 그리고나서 플레이하는 것을 지켜보는 것입니다. 나는 또한 전략 롤 플레잉
게임광입니다. 수 년 동안 내가 중독되다시피 한 게임이라면 Civilization, Master of Orion, Sim City,
Command and Conquer 시리즈, Warcraft/Starcraft 시리즈, Ultima 시리즈, Diablo 시리즈
등입니다. 물론, 나는 수 백 가지의 다른 게임들을 다뤘지만 내가 가장 좋아하는 것은 어떤것을 구현하고 게임 환경에서 자유롭게
설정을 하여 어떻게 움직이는 가를 보는 것입니다.
dW: Robocode를 만들기 시작하면서 영감을 주었던 게임이 있다면?
Nelson: Worms과 C64 game Mail Order Monsters 같은 것들입니다. 그러한 고전적 게임은
정말 대단합니다. 그래픽이 없어서 모든 것이 게임이 가능한 것이어야 했습니다. 그것이 바로 Robocode에서 다루려했던 접근방식입니다:
시작하기 쉽게, 게임은 재미있게, 그리고 매우 중독성있는 것으로.....
하지만 무엇보다도 Robocode의 가장 큰 영감이 되어준 것은 Brad Schick의 Robot Battle이라는 게임입니다.
나는 1995년에 Robot Battle을 알게되었습니다. 그리고 내 로봇인 "The Cleaner"를 만들기 위해 수 많은
시간을 보냈습니다. 놀랍도록 재미있었습니다. 다른 사람들이 만든 로봇들이 전투에 나가서 내가 세운 전략을 수행하는 것을 보았습니다.
그 당시 주요 경쟁상대는 seesaw 봇이라고 알려진 로봇이였는데 이것은 앞뒤로 움직이기 때문에 치기 어려웠습니다.
Cleaner는 그들을 치는데에 많은 어려움을 가지고 있었습니다. seesaw의 각을 측정하기 위해 작은 고정장치를 이용했고
그 각 밑에서 강타했습니다. Cleaner 3이 토너먼트에 올라가는 것을 결국 보고야 말았습니다.
dW: Robocode 개발을 시작하면서 어떤 사용자층을 염두해 두셨습니까?
Nelson: 시작할 당시엔 온전히 나만을 위한것이였습니다. Robocode는 내가 늘 하고 싶었던 게임이였고
그래서 작성하게 되었습니다.
나는 이 로보코드가 아무것도 모르는 상태에서도 할 수 있는 게임이 되길 바랍니다. 그리고 배워가면서 성장하는 것이지요. 체스처럼
배우기 쉽고, 완전히 마스터 하기엔 어려운.. 그런 것을 기대합니다. API를 가능한 가장 단순하게 디자인 했고 사용방법을 보여
줄 샘플 로봇을 제공했습니다. 누구나 간단한 로봇을 실행시키고 "자바 프로그램을 작성했다"라고 말할 수 있기를
기대합니다. 반면 고급 사용자들이라면 자바 프로그래밍 언어의 완전한 파워를 그들이 십분 활용하기를 기대합니다.
dW: 실제 Robocode 사용자들이 어떤 방식으로든 당신을 놀라게 한 적이 있었나요?
Nelson: 가장 큰 놀라움은 성공 그 자체가 될 것 같습니다. 그렇게 많은 사람들이 Robocode 게임에
관심을 가지고 있을 지를 확신하지 못했습니다. 현재 십만 이상의 다운로드라는 것이 매우 놀랍습니다. 로보코드가 다른 방식으로
사용되고 있다는 것도 즐거운 현실입니다. 커뮤니티가 저를 지속적으로 놀라게 할 것 같습니다.
dW: 로보코드 플레이어들이 구현한 천재적인 로봇의 예를 들자면?
Nelson: 다양한 종류의 예견방식의 타겟팅(직접 로봇을 격파시키는 것과는 다름), 적의 행동을 트래킹하고
기록하기, 로봇의 다른 부분들을 제어하는 다중 쓰레딩, just-in-time 알고리즘, 총알 피하기, 영속성, 최적화된 레이더
트래킹... 나열자면 끝이 없습니다. 최근에 전혀 새로운 장르의 전략을 소개하면서 팀들을 소개했습니다. 앞으로 기대가 됩니다.
dW: Robocode에 어떤 기능을 추가하고 싶으십니까?
Nelson: 훨씬 간단하고, 객체 지향적이며, 확장성이 더욱 풍부한 자유로운 API를 재구현하고 싶습니다.
예를 들어, setTurnRadarRight() 보다는 radar.setTurn()를
원합니다. Radar가 객체가 되면 다른 유형의 Radar를 갖게됩니다: setRadar(new Radar(range,speed)).
API 재구현의 일환으로, 두 개의 큰 문제를 해결하려고 합니다: 도(degree)와 라디안(radians), 그리고 unit
circle math. 로봇은 도(degree)나 라디안 중 어떤 것을 사용할지 결정하는 단일 호출과, unit circle
math 또는 compass math 둘 중 하나로 변환하는 또 다른 호출을 갖게됩니다.
또 다른 큰 문제는 물리학입니다. Robocode의 물리학은 매우 단순합니다. 좀더 현실적인 느낌을 위해서 force 벡터를
도입하려고 합니다. 예를 들어, Acceleration은 공기 저항과 회전 마찰로 오프셋 될 것입니다. 마찰의 법칙과 반 탄성
충돌에 기반한 것입니다. 이것과 관련한 초기 실험은 게임의 신선함을 더해주는 측면에서 많은 향상을 보여주었습니다. 또한, 포워드
acceleration과 백워드 acceleration도 바뀔 것입니다. 로봇의 전진 움직임이 더욱 빨라질 것입니다.
래밍(Ramming)은 현재 비교적 덜 사용되기때문에 다른 것을 도입할 예정입니다. 측면 공략이 좀 더 파괴력을 갖추게 될
것입니다.
전투장에 벽과 장애물을 넣을 생각도 하고 있습니다. 전혀 새로운 전략을 세워야 하는 다른 모양의 전투장도 계획하고 있습니다.
이러한 변화가 복잡한 프로그래밍을 야기하기 때문에 로봇 확장을 좀 더 쉽게 할 생각입니다. 전문가는 경로를 찾을 수 있는 재사용
가능한 로봇 클래스를 작성하고 초보자는 그것을 사용하여 좋은 로봇을 쉽게 만들 수 있습니다.
dW: 앞으로, Robocode가 alphaWorks가 호스팅하는 분산 게임이 될 것으로 보십니까?
Nelson: 현재로서는 단순함에 포커스를 맞추고 있습니다. 게임의 재미에 도움이 되지 않는 복잡함을 도입할
필요가 없습니다. 분산환경에서 로보코드가 현재의 로보코드 보다 재미있을까요? 아직까지는 그런 확신이 없습니다. 훨씬 재미있는
분산 자바 프로그래밍 게임이 있다고 생각하지만 이것은 어디까지나 새로운 게임이지 로보코드는 아닙니다.
dW: 자바로 로보코드를 작성한 이유는?
Nelson: 1995년 자바를 처음 만났을때 단숨에 매료되었습니다. 깨끗하고 고급스러운 언어입니다. 다른 언어에서
소비했던 시간을 반으로 줄일수 있게 되었습니다. 게다가 완벽히 다른 시스템에서도 작동합니다. 예를들어 로보코드는 Mac OS
X에서도 실행됩니다. 참고로 Mac을 한번도 다뤄본적이 없습니다.
요즘 자바는 가장 빠릅니다. 물론 많은 사람들이 이를 깨닫지 못하고 있는것도 사실입니다. 컴퓨터 속도는 놀라울 정도로 증가하고
있습니다. JVM은 전보다 훨씬 빨라졌고 자바도 성장했습니다. 자바는 클라이언트에 대한 준비가 되어있습니다. 로보코드가 이를
증명할 수 있기를 기대합니다.
dW: 재미가 아닌 교육적인 게임을 만들겠다는 결정을 하게된 이유는?
Nelson: 없습니다. 저는 그저 재미있는 플래시 게임을 작성했을 뿐입니다. 교육적인 측면은 나중에 발견하게
된 것입니다.
25년 게임을 해오면서 게임을 잘하는 방법을 배우기 위해 수 많은 시간을 투자했습니다. 매뉴얼을 읽고, 도움말 항목을 보고
게임 레퍼런스도 꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습니다. 물론 다른 게임과 마찬가지로 여러분들도 로보코드 때문에 그런
일을 하게 될 것입니다. 하지만 큰 차이가 있습니다. 매뉴얼이 자바라는 것입니다. 그리고 레퍼런스는 Javadoc 이고, 도움말
메뉴는 자바 튜토리얼이 될 것입니다. 로보코드 게임을 배우는 것은 자바를 배우는 것입니다. 저도 처음에는 그것을
깨닫지 못했습니다.
초급 프로그래밍을 가르치는 교수와 강사들이 로보코드가 자바를 배우도록 고무하는데 큰 영향을 줄 수 있다는 것을 깨달았으면 좋겠습니다.
몇 개의 튜토리얼을 활용하면 로보코드가 훌륭한 자습 툴이 될 수 있다고 확신합니다. 게임 튜토리얼도 완성시킬 계획입니다. 약간의
지침서로 누구나 자바 프로그래머가 될 수 있습니다.
참고자료
필자소개  | |  | Dana Triplett은
정보 아키텍쳐, 디자인, 휴머니티 컴퓨팅에 관심이 있는 프리랜스 작가이다. |
기사에 대한 평가
|