풍선을 터뜨리는 것보다 더 재미있는 것이 있을까요? 지난주 카우치콘프 SF에서 저희는 카우치베이스 서버 2.0(베타)으로 구동되는 실험적인 소셜 게임 앱(Pop-it)을 데모했습니다. 이 앱은 C#.Net 게임 서버가 탑재된 HTML5 브라우저 앱입니다.

게임 플레이 영상 확인 http://www.youtube.com/watch?v=13nCv_AMCi0

이제 이 게임이 얼마나 중독성이 있는지 보셨으니, 실제로 어떻게 작동하는지 알아보겠습니다! 게임 서버는 손 관절 위치를 감지하기 위해 Microsoft 키넥트 센서 를 호출하고 웹소켓을 사용하여 손 관절의 좌표를 클라이언트에 스트리밍합니다. 클라이언트는 자바스크립트를 사용하여 풍선을 렌더링하고 풍선 오브젝트와 손 관절 지점 간의 충돌 감지를 수행합니다. 기본적으로 풍선을 터치하여 터뜨리면 점수를 얻습니다. 게임이 끝나면 카우치베이스 서버는 플레이어 점수를 저장하는 데 사용됩니다. 클라이언트는 점수와 플레이어 이름을 서버로 전송하고 C# 애플리케이션은 이 데이터를 Couchbase에 기록합니다. 점수를 저장하기 위해 아래와 같이 GameResult 객체를 생성합니다:

 

Kinect1

그런 다음 Couchbase Server 2.0용 C#.Net 클라이언트를 사용하여 이 데이터를 Couchbase Server에 씁니다:

var gameResult = new 게임 결과 { 이름 = 이름, 점수 = 점수 };

//타임스탬프 키 생성
타임스팬 t = (날짜/시간.UtcNow new 날짜/시간(1970, 1, 1));
int 타임스탬프 = (int) t.총초수;

//Couchbase에 점수를 저장하기 위해 StoreJSON 클라이언트 메서드를 호출합니다.
m_cclient.StoreJson(스토어모드.설정타임스탬프.ToString(), 게임 결과);

이제 점수가 카우치베이스 서버에 저장되므로 2.0의 인덱싱 및 쿼리 기능을 사용하여 실시간 리더보드를 생성하여 플레이어가 자신의 진행 상황을 추적할 수 있습니다. 카우치베이스 서버에서 리더보드를 생성하는 지도 기능은 아래와 같습니다: 

 LeaderboardPopIt

 

지도 기능은 플레이어의 점수와 플레이어의 이름을 표시합니다. C# 애플리케이션은 뷰를 쿼리하고 내림차순 수정자를 사용하여 정렬하고 결과 수를 제한할 수 있습니다(이 경우 상위 10명의 플레이어).

public ActionResult Index () {

var view = _client.GetView("scoreboard", "by_score", true).Descending(true).Limit(10);

Json(view.ToArray(), JsonRequestBehavior.AllowGet)을 반환합니다;

}

플레이하고 싶으신가요? 코드 다운로드 여기를 클릭하고 컴파일하여 즐기세요! (키넥트가 없더라도 풍선을 마우스 클릭해도 문제없습니다). 다음은 CouchConf SF의 최고 플레이어입니다. 

 

WinnersPopIt

팝잇 챔피언을 축하합니다!

 

작성자

게시자 돈 핀토, 수석 제품 관리자, Couchbase

돈 핀토는 Couchbase의 수석 제품 관리자로 현재 Couchbase Server의 기능을 발전시키는 데 주력하고 있습니다. 데이터 기술에 대한 열정이 대단한 그는 과거에 기술 블로그와 백서 등 Couchbase Server에 관한 여러 기사를 저술한 바 있습니다. Couchbase에 입사하기 전에는 IBM에서 수년간 근무하며 DB2 정보 관리 그룹에서 소프트웨어 개발자의 역할을 수행했고, 가장 최근에는 Microsoft의 SQL Server 팀에서 프로그램 관리자로 근무했습니다. Don은 캐나다 토론토 대학교에서 컴퓨터 공학 석사 학위와 컴퓨터 공학 학사 학위를 받았습니다.

댓글 남기기