아래는 Ajaxian에 있는 글을 그대로 번역했습니다. 즉, "저"라고 하면 Dion씨인 것이고, "우리"라고 하면 Ben씨와 Dion씨입니다. 이 글을 보고 나니 더더욱 Wii 를 사고 싶어지네요. 그전엔 소년의 혼(?)이었다면 이번에는 개발자의 혼(?)으로요. ^-^
_________________________
Ben과 저는 JavaOne에서 Ajax의 새로운 점에 대한 프리젠테이션을 진행했습니다. 이 행사가 JavaOne이기 때문에 우리는 Java쪽 주제를 조금 더 다루었는데, 주제 중 하나가 웹 페이지 밖이나 브라우저 종료후에도 계속 애플릿를 실행할 있는 멋진 새 기능을 지원하는 Java Plugin 사용에 관한 것이었습니다. Java는 이제 "Java가 전체 브라우저를 종료"하던 문제를 일으키던 프로세스 내부 실행을 벗어났습니다.

어쨌든, 다시 데모 이야기를 하겠습니다. For some context, 지난해 JavaOne에서 우리는 스테이지에서 기타 히어로(Guitar Hero)를 시연했었는데, 이 때 어떤 식으로든 게임 콘솔을 사용해야겠다라고 생각했습니다. 올해에 컨트롤러를 사용하기로 결심했지만, 그 다짐은 콘솔대신 Wii가 되었습니다.

그 컨트롤러를 이용해서 웹 페이지를 컨트롤 할 수 있으면 끝내주지 않을까? 라고 생각했고, 작업을 시작했습니다. 블루투스를 통해 Wii 모트와 교신할 수 있는데, 우리는 그를 가능하게 해줄 스택이 필요했습니다. Java에는 블루투스 스택이 있었죠. 우리는 Java 스택과 교신할 애플릿을 구할 수 있었습니다. 흠.

다양한 스택을 테스트하는 것은 실제로 시간이 꽤 걸렸습니다. 결국 우리는 많은 Wii 해커들이 사용하는 Wiiuse라는 네이티브 시스템을 사용했습니다. Wiiusej라는 wrapper 라이브러리는 정확하게 우리가 필요로 하던 것이었습니다.

간단한 테스트 후에 리모트와 프로그램간 통신을 하는 응용프로그램이 만들어졌습니다. 메인 컨트롤러가 Wii 센서바에 있는 일련의 IR(적외선) 빛들을 감지하기 때문에, 적당한 IR 소스만 있으면 시스템을 시뮬레이션할 수 있습니다. 프리젠테이션 룸에서 무대를 비추던 커다란 빛은 센서바의 역할을 할만큼 충분히 강해서 우리는 그것을 사용할 필요가 없었습니다.

어쨌든, 다시 프로그램 얘기를 하죠. 우리는 리모트가 무엇을 하고 있는지 알려줄 상태 머신 역할을 할 Java 클래스를 작성했습니다. 그것은 움직임과 어떤 버튼이 눌렸는지, 장치가 얼마나 빨리 움직이는지 감지할 수 있었습니다. 이 데이터로 우리는 간단한 다트 게임을 작성했습니다. 상태 머신 Java 코드와 정보를 노출시키는 Applet wrapper로 프로그램의 Ajax 부분을 완료했습니다.

우리는 화면에 다트판을 그리고 JSObject를 통해 JavaScript가 Applet을 폴링하도록 했습니다(이것처럼 간단하게: document.nameofapplet.pollmethod()). 이벤트 드리븐 대신 폴링을 하긴 했지만, 다른 방식의 통신보다 더 안정적이었습니다. JavaScript 코드가 애플릿을 폴링할 때 리모트의 좌표 데이터를 포함한 데이터 구조체를 되돌려 받았습니다. 리모트의 움직임에 따라서 화면상의 다트 이미지를 이동시켰고, 발사하면 다트판을 향해 날아가는 다트의 애니메이션을 시작했습니다.

처음에는, 상당히 단순했습니다. 조준하고 쏘면 항상 그 자리에 정확히 맞습니다. 재밌는 게임은 아니었죠. 우리는 몇가지 간단한 물리법칙을 Ajax 게임에 추가하기로 하고, 던지는 속도(힘이 약하면 떨어집니다)와 경로(얼마나 일직선으로 던지는지)를 추가했습니다. 만약 던질 때 흔들렸다면 다트는 정확하게 날아가진 않습니다.

아래의 동영상이 프로그램의 데모입니다. 설명과 함께 소스코드도 포함하고 있으며 보다 자세한 사항을 볼 수 있습니다.

Wii Darts in Ajax from Dion Almaer on Vimeo.

from Wii Darts: Powering Ajax applications with Wii Controllers on Ajaxian
Posted by 행복한고니 트랙백 0 : 댓글 1

댓글을 달아 주세요

  1. addr | edit/del | reply BlogIcon 리카르도 2008.05.15 01:42 신고

    ㅋㅋㅋㅋㅋ 안되는게 없네요
    보면볼수록 물건인것같습니다.