WiiFlash

나름 플래시와 외부디바이스 라는 주제로 쓰는 두번째 글입니다. 첫번째는 아두이노 와 플래시의 연동에 대해서 였습니다. 플래시와 연동가능한 외부디바이스들로는 플래시 자체에서 제공하는 웹캠, 마이크가 있겠고 아두이노와 이번에 다룰 위모트 등이 있습니다. 위모트는 닌텐도에서 나온 Wil 용 콘트롤러 입니다. 이 콘트롤러의 인터페이스가 블루트스로 되어 있다보니 일반 PC에 연결도 매우 간단히 할 수 있습니다. 또 기본적인 버튼기능외에 가속도센서라든가 중력센서라든가 내장된 진동기능등 컨트롤러 자체의 퀄리티도 매우 훌륭합니다.

위모트를 플래시에서 사용하기 위해서는 이전 아두이노 처럼 위모트와 플래시를 연결 해 줄 서버가 필요합니다. 아두이노의 경우 아두이노 자체 설정도 조금 해줘야 하지만 위모트의 경우는 단순 입력디바이스이기 때문에 서버만 실행하고 플래시에 클라이언트 설정만 해주면 매우 간단히 연결 할 수 있습니다. 얼마전 MAX 행사를 보니 앞으로는 플래시플레이어 자체에서 조이스틱을 지원할 듯 한데 위모트도 지원해 줄지는 모르겠네요. 뭔가 공통 인터페이스를 쓰는 조이스틱들을 지원해 주려나요? 여튼 그럼에도 불구하고 위모트는 참 매력적인 디바이스 입니다. 무선이라는 점도 큰 이점입니다.

1. Download
먼저 http://wiiflash.bytearray.org/?page_id=50 에서 WiiFlash 서버와 클라이언트를 다운 받습니다.

2. Wiimote
플래시 쪽에 클라이언트 세팅을 해줍니다. 위의 소스를 다운받으시면 상세한 예제가 있으니 그걸 참고해서 Wiimote를 만들어 주시면 됩니다. 아래는 최근 작업한 게임 소스 중 일부 입니다. 원래 키보드입력으로 작동하는 게임이라 간단히 ButtonEvent 를 KeyboardEvent 로 넘겨 주고 있습니다.

private var wiimote:Wiimote;

public function Player(x:int = 0, y:int = 0)
{
	// create a new Wiimote
	wiimote = new Wiimote();

	// connect wiimote to WiiFlash Server
	wiimote.connect ();

	wiimote.addEventListener( ButtonEvent.UP_PRESS, handleWiimotePress );
	wiimote.addEventListener( ButtonEvent.UP_RELEASE, handleWiimoteRelease );
	wiimote.addEventListener( ButtonEvent.DOWN_PRESS, handleWiimotePress );
	wiimote.addEventListener( ButtonEvent.DOWN_RELEASE, handleWiimoteRelease );
}

private function handleWiimotePress(e:ButtonEvent):void
{
	var keyCode:int;
	switch(e.type) {
		case ButtonEvent.UP_PRESS :
			keyCode = Key.LEFT;
			break;
		case ButtonEvent.DOWN_PRESS :
			keyCode = Key.RIGHT;
			break;
		case ButtonEvent.ONE_PRESS :
			keyCode = Key.SPACE;
			break;
		case ButtonEvent.TWO_PRESS :
			keyCode = Key.SPACE;
			break;
	}

	FP.stage.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, keyCode));
}

3. Bluetooth

위모트를 켜서 블루트스 장비에 등록합니다.

4. Server

서버를 실행해서 위모트를 연결합니다. 이제 이 서버를 통해서 플래시와 위모트가 통신을 할 수 있게 됩니다. 재밌는 것은 단순히 위모트에서 이벤트만 받는 것이 아니라 위모트로 피드백을 줄 수도 있다는 점 입니다. 위모트에는 기본적으로 진동기능이 있는데 이걸 플래시에서 제어 할 수 있습니다. 경험해보신 분은 아시겠지만 컨트롤러에 있는 진동기능은 사용자에게 확실한 피드백 경험을 할 수 있게 해서 매우 유용합니다.

5. Result
위모트와 플래시의 연동에 대해서 간략히 알아봤습니다. 위모트의 경우 당연겠지만 게임 컨트롤에 매우 좋은 사용자경험을 제공합니다. 물론 게임 컨트롤 외에도 다양한 시도가 이루어지고 있습니다. 위스프레이 같은 경우가 좋은 예일 수 있습니다. 키오스크 등의 프로모션 용으로의 활용도 괜잖을 것 같네요. 결국 아이디어 싸움이겠네요~ ^^

영상에 사용된 게임은 최근작업한 더블에이 게임입니다. 전체 게임은 아래 링크에서 즐길 수 있습니다.

더블에이 지구를 지켜라! 더블에이 쓰고, 이산화탄소 없애고~ Better Paper, Better World
http://www.doubleapaper.co.kr/betterworld/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.