새로운 소셜 게임에는 무엇이 있나요? 기본적으로 게임은 플레이어, 콘텐츠, 다른 플레이어 간의 일련의 상호작용을 중심으로 구축된 '경험'입니다. 물론 게임의 콘셉트, 스토리라인, 캐릭터, 소셜 요소는 모두 게임 경험에 큰 영향을 미칩니다. 하지만 게임 매력의 핵심은 게임 세계의 오브젝트, 이러한 오브젝트와 관련된 메커니즘, 플레이어에게 제공되는 보상입니다. 이 모든 가상 활동을 지원하려면 고성능의 확장 가능한 데이터베이스가 필요합니다.
이 블로그에서는 카우치베이스를 사용하여 기본 게임 요소를 강화하는 방법을 공유합니다. 개체, 작업 그리고 보상
게임 오브젝트
| 게임 오브젝트 유형 | 문서 가치 |
|---|---|
| 플레이어 |
{
"type": "player", "uuid": "35767d02-???a958", "name": "DonPinto4540", "score":663, "level":4, "loggedIn": false } |
| 항목 |
{
"type":"item", "name":“Axe_e5890c94-???11”, "uuid":“e5890c94-???11c6-???”, "ownerId":"Dale9887" } |
| 몬스터 |
{
"type":"monster", "name":"Goliath9932", "uuid":“d10dfc1b-???0412-???41”, "히트포인트":370, "experienceWhenKilled":52, } |
카우치베이스에서 JSON 문서는 게임 오브젝트를 모델링하는 데 사용되며 문서 ID를 사용하여 식별됩니다. 이러한 문서의 경우 유형 필드는 저장되는 객체의 유형을 정의하는 데 사용됩니다.
게임 액션

게임 보상

카우치베이스 서버 2.0에서 게임 순위표는 다음을 사용하여 만들 수 있습니다. 조회수. A 보기 는 인덱스를 생성하는 맵/리듀스 함수를 사용하여 작성됩니다. 게임 개체 섹션에 표시된 JSON 게임 개체의 경우 아래 그림과 같이 맵 함수를 사용하여 플레이어 점수 목록을 생성할 수 있습니다. 문서의 jsonType 필드의 타입이 플레이어, 플레이어의 점수와 아이디를 출력합니다.
만약 (doc.jsonType == "player"){
emit(["점수", doc.점수], doc._id);
}
}
-
To REST를 사용하여 뷰 쿼리 다음 curl 명령을 사용할 수 있습니다.
curl -X GET -H '콘텐츠 유형: 애플리케이션/json'
'https://버킷명:비밀번호@localhost:8092/버킷명/_design/디자인 문서 이름/_view/
보기 이름?descending=true&connect_timeout=60000&limit=10&skip=0'
-
PHP를 사용하여 뷰를 쿼리하려면 아래와 같이 코드 조각을 사용하여 상위 10명의 플레이어 점수를 인쇄할 수 있습니다.
/* 카우치베이스 연결 개체 설정 */
$lbview = $cb->getView(“버킷명“, “보기 이름“);
$apage = $lbview->getResult(배열("내림차순" => true));
$rowCtr = 0;
foreach($apage->행 AS $row) {
만약($rowCtr <= 9)
{
printf("점수 %s 사용자 %s.n“, $row->키[1], $row->값);
$rowCtr = $rowCtr + 1;
}
else
break;
}
최종 생각
각 사용자의 Facebook 친구로부터 리더보드를 생성할 수 있을 만큼 조회수가 빠를까요?
보기로 플레이어 순위 확인하기:
https://www.couchbase.com/usin...