일일 보상

플레이어를 참여시키고 유지하는 일반적인 방법은 매일 게임에 로그인하면 일일 보상을 주는 것입니다.

이 예에서는 서버 런타임 코드를 사용하여 일일 보상 시스템을 구현하는 방법을 배웁니다.

필수 조건 #

튜토리얼을 쉽게 따라하기 위해서는 진행하기 전에 다음을 실시합니다:

RPC 등록 #

일일 보상 샘플은 자격을 확인하고 보상을 발행하기 위해 두 개의 RPC(원격 프로시저 호출)를 정의합니다.

그런 다음 RPC는 또는 main.ts, main.go 또는 main.lua의 Nakama 이벤트에 등록됩니다.

RPC를 서버에 등록하려면 클라이언트가 RPC를 호출할 때 실행할 함수와 문자열 식별자를 지정해야 합니다.

RPC 구현 #

RPC는 다음 로직을 구현합니다:

canClaimDailyReward #

  • Nakama 저장소 엔진에서 최신 일일 보상 객체 받기
  • 사용자가 마지막으로 보상을 청구한 시간이 00:00 이전인지 확인합니다.
  • 사용자가 일일 보상을 청구할 수 있는지 여부를 나타내는 JSON 응답을 반환합니다.

claimDailyReward #

  • Nakama 저장소 엔진에서 최신 일일 보상 객체 받기
  • 사용자가 마지막으로 보상을 청구한 시간이 00:00 이전인지 확인합니다.
  • 사용자의 지갑 업데이트
  • 사용자에게 알림 보내기
  • Nakama 저장소 엔진에서 일일 보상 객체 업데이트 또는 생성
  • 받은 코인 수와 함께 JSON 응답 반환

모듈 코드 #

이 섹션은 특히 Go 또는 Lua 사용자를 위한 것입니다. 각 언어의 일일 보상 모듈 스크립트에 포함해야 하는 몇 가지 추가 코드가 있습니다.

마지막 일일 보상 객체 얻기 #

Nakama 저장소 엔진에서 최신 일일 보상 객체를 검색하는 코드를 살펴보겠습니다.

사용하는 언어에 관계없이 핵심 로직은 동일합니다.

  • 컨텍스트를 확인하여 유효한 사용자 ID가 있는지 확인
  • 사용자가 페이로드에서 아무 것도 전달하지 않았는지 확인
  • 저장소 엔진에 대해 reward 모음의 daily 객체 쿼리
  • 일일 보상 객체 또는 기본 객체 반환

사용자가 일일 보상을 받을 자격이 있는지 확인 #

이 함수는 일일 보상 객체의 마지막 청구 Unix 타임스탬프 값을 확인합니다. 전날 자정의 타임스탬프 이전이면 true를 반환하고 그렇지 않으면 false를 반환합니다.

CanClaimDailyReward RPC #

두 개의 도우미 함수가 완료되면 첫 번째 RPC를 구현할 차례입니다. 이 RPC는 JSON 객체로 사용자의 자격을 확인하는 도우미 함수의 값을 반환합니다.

ClaimDailyReward RPC #

이 RPC는 사용자가 일일 보상을 받을 자격이 있는지 확인하고 사용자의 지갑을 업데이트하고 알림을 보낸 다음 저장소 엔진에서 사용자의 일일 보상을 업데이트합니다.

Nakama 콘솔에서 탐색 #

(Docker를 사용하여) 서버를 가동하고 Nakama 콘솔을 사용하여 RPC를 테스트합니다.

브라우저를 열고 http://localhost:7351로 이동하여 Nakama 콘솔에 액세스할 수 있습니다.

그런 다음 드롭다운에서 선택하고 사용자 ID를 컨텍스트로 지정하여 API 탐색기를 통해 RPC와 상호 작용할 수 있습니다.

마무리 #

이 두 개의 RPC가 구현되어 이제 간단한 일일 보상 시스템이 만들어졌습니다. 축하합니다!

더 복잡한 자격 기준이나 기타 기능을 추가하여 원하는 대로 실험해 보세요.