일일 보상 #
플레이어를 참여시키고 유지하는 일반적인 방법은 매일 게임에 로그인하면 일일 보상을 주는 것입니다.
이 예에서는 서버 런타임 코드를 사용하여 일일 보상 시스템을 구현하는 방법을 배웁니다.
필수 조건 #
튜토리얼을 쉽게 따라하기 위해서는 진행하기 전에 다음을 실시합니다:
- Nakama 프로젝트 템플릿을 다운로드하거나
- TypeScript 설정 가이드를 따릅니다
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가 구현되어 이제 간단한 일일 보상 시스템이 만들어졌습니다. 축하합니다!
더 복잡한 자격 기준이나 기타 기능을 추가하여 원하는 대로 실험해 보세요.