티스토리 뷰

카테고리 없음

Haptic Game Platform

Quill. 2020. 1. 1. 16:19

본 글은 2006년 6월 2일에 작성한 것을 옮긴 것이다.


푸시 푸시(Push Push)를 대체할 햅틱 게임(Haptic Game)을 만들어 보기 위해 시작한 과제였다. 게임을 쉽게 만들어서 올려보기 위하여 애니메이션 저작 및 재생 환경인 플래시(Flash)를 선택했다. 플래시는 디자이너에게 친숙한 도구였기 때문에 게임 캐릭터만 의뢰하면 쉽게 게임을 만들 수 있을 것 같아서 선택했다. 또한 여러 운영환경(Cross-platform)을 지원하는 장점도 고려요소 였다.

제일 먼저 도전한 부분은 햅틱 장치(촉각 장치, Haptic Device)와 플래시 플레이어(Flash Player/Runtime)를 연결하는 부분이었다. 포스 피드백(Force Feedback)장치와 플래시를 연결하기 위해서는 먼저 OS와 장치를 연결하기 위한 프레임워크(Framework)를 결정해야 했다. 여러 방법 중 마이크로소프트 다이렉트 인풋(Microsoft Direct Input)이 가장 빠르고 쉽게 구현이 가능할 것 같았다. 리눅스(Linux)에서 구현하는 방법을 찾아보고 싶었으나 드라이버(Device Driver) 설치 및 연결하는 것만으로도 많은 시간이 소요되기 때문에 포기하였다. 과제에서 보여주고자 하는 부분은 햅틱 장치와 플래시 콘텐스를 연결하는 것이 었기 때문에 리눅스 환경에서 구현하는 것은 나중에 해보기로 했다. 다음의 그림은 다이렉트 인풋과 C#, 그리고 플래시 플래이어 액티브 엑스 콤포넌트(COM+) 를 연동한 어플리케이션의 실행 모습이다.

어플리케이션을 처음 시작하면 2개의 물체가 초기 위치에 나타난다. 그 다음 햅틱 조이스틱을 조작하면 두 개의 검정색 상자 중 한 개를 움직일 수 있다. 사용자가 검은 상자를 움직여서 나머지 검은 상자에 부딪히면, 충돌이 일어난 깊이만큼 탄성력을 계산해준다. 그리고 계산한 탄성력을 이용해서 사용자가 들고있는 포스 피드백 촉각 장치(Force-feedback Haptic Device)에 적절한 진동을 발생 시킨다. 만약 세게 부딪혔다면 탄성력이 클 것이므로 사용자는 그 만큼 센 진동을 느끼게 된다. 또한 동시에 촉각 효과에 맞는 시각 효과를 보여준다. 충돌이 일어난 힘에 맞추어 검정색 상자가 튕겨져 나가는 애니메이션을 볼 수 있다. 매우 기초적이지만 2차원 환경에서의 물리엔진을 구현한 것이다. 프로토타입(Prototype)으로써 충분히 의미가 있었다. 하지만 디자이너의 예쁜 캐릭터가 있었으면 보다 그럴듯한 게임이 되었을 것 같다는 아쉬움이 남았다.


공지사항