게임 시스템

게임 내 리더보드: 순위, 라운드, 보상

iDos Games의 준비된 리더보드가 작동하는 방식: 라운드가 있는 보드, 순위와 점수에 따른 보상, 부풀린 점수 방지, 그리고 대시보드에서 설정하는 방법.

리더보드는 준비된 순위 시스템입니다. 라운드가 있는 보드와 순위, 점수에 따른 보상. 점수, 순위, 보상은 서버가 계산합니다. 보드는 대시보드에서 설정하고, 게임은 결과를 제출하고 순위를 보여 줍니다.

플레이어가 보는 것

  • 탭으로 된 보드: 각 보드에 플레이어의 점수, 순위, 라운드 종료까지의 시간이 나오는 카드가 있습니다.
  • 상위 플레이어, 플레이어 강조 표시, 상위 3명 메달.
  • 창으로 보는 순위 보상과 점수 보상. 점수 보상은 그 자리에서 받습니다.
  • 지난 라운드 보상 창: 라운드가 끝나면 "받기" 버튼과 함께 저절로 뜹니다.
  • 게임에 점수를 얻는 모드가 있으면 카드의 "플레이" 버튼.
  • 보상이 기다릴 때 탭의 배지.
리더보드
12 450
320
주간!
시즌
내 점수12 840
순위#7
2일 04:13 후 종료
보상
플레이
ShadowFox25 120
2Mira22 980
3KnightOwl19 400
4Pixel_Pete15 210
5Luna14 030
6Arrow13 115
7나12 840
8Grizzly11 900
켜진 리더보드마다 탭이 있고, 배지는 받을 보상이 있다는 뜻입니다.
플레이어 카드: 점수, 순위, 라운드 종료까지 남은 시간.
순위와 점수 보상은 여기서 열고, ‘플레이’는 게임 모드로 이동합니다.
상위 3명에게 메달, 목록에서 플레이어가 강조됩니다.
예시. 리더보드 화면: 라운드 타이머가 있는 플레이어 카드와 상위 목록.

보드의 구조

  • 라운드. 보드는 주기적으로(예: 매주) 반복되거나, 일정에 따라 돌거나, 라운드 체인으로 진행됩니다.
  • 점수 계산 방식. 모든 결과의 합, 최고 결과, 최고 기록 시간, 마지막 값.
  • 순위 보상: 라운드가 끝날 때 순위 구간별로. 1위, 23위, 410위 등.
  • 점수 보상: 라운드 안의 마일스톤. "이번 주에 1000점 얻기".

점수는 어디서 오나

점수는 보드에 설정한 출처에서 옵니다:

  • 게임의 결과(ClientScore). 게임이 숫자를 보냅니다. 예를 들어 달리기 점수. ⚠ 출처에 한도를 거세요. 제출당 최대치, 하루 최대치, 제출 사이의 간격. 이 출처가 없으면 보드는 게임의 숫자를 아예 받지 않습니다.
  • 서버가 직접 세는 이벤트. 예를 들어 구매나 끝낸 퀘스트. 이것은 게임에서 조작할 수 없습니다.

단계 01프로젝트에 리더보드 추가하기

AI 코더에게 말하세요: "최고 점수 기준 주간 리더보드를 추가해 줘". 준비된 시스템을 설치하고 게임이 결과를 제출하게 합니다. 대시보드에서 보드가 하나라도 켜지면 탭이 플레이어에게 보입니다.

단계 02보드 설정하기

대시보드를 열고 프로젝트를 고른 뒤 라이브 운영 → v2 → 리더보드로 가세요.

  1. 리더보드 추가를 누르고 ID를 정하세요. 예: weekly_score.
  2. 라운드 일정과 점수 계산 방식을 고르세요.
  3. 점수 출처를 추가하세요. 게임이 점수를 제출한다면 한도를 건 ClientScore를 쓰세요.
  4. 순위 보상과, 원하면 점수 보상을 정하세요.
  5. 저장을 누르세요.

페이지의 AI 버튼은 어시스턴트를 엽니다. 보드를 말로 설명하면 변경을 제안하고, 확인한 뒤 저장하면 됩니다.

단계 03테스트하고 출시하기

테스트 버전에서 결과를 몇 번 제출하고 순위가 바뀌는 것을 보세요. 설정은 별도 작업으로 라이브 앱에 보내집니다. 공개와 링크를 참고하세요.

개발자용

리더보드는 @idosgames/core의 client.leaderboard로 작동합니다.

TypeScript
// 결과 제출: 서버가 계산 규칙과 한도를 적용합니다
const sub = await client.leaderboard.submitScore('weekly_score', 150)
if (!sub.ok) return showError(sub.error)
sub.data.NewScore // 계산 후의 점수

// 보드가 여러 개인 화면: 상위 목록과 플레이어 진행도를 한 번의 요청으로
const overview = await client.leaderboard.getOverviewBatch(['weekly_score', 'season_pvp'])

// 기다리는 모든 것 받기: 순위 보상과 점수 보상
await client.leaderboard.claimAllRewardsBatch(['weekly_score', 'season_pvp'])
  • SDK는 0 이하의 점수를 요청 없이 스스로 거부합니다.
  • 새 점수는 응답의 NewScore에서 가져오세요. "최고 결과" 방식에서는 더 나쁜 결과가 점수를 바꾸지 않습니다.
  • 친구 순위는 getFriendsLeaderboard(leaderboardID)입니다.

모든 필드는 SDK의 MCP 서버가 제공하는 leaderboard-system 스킬에 설명되어 있습니다.

자주 묻는 질문

플레이어가 게임에서 엄청난 점수를 보내 속일 수 있나요?

보드를 제대로 설정하면 안 됩니다. 보드는 ClientScore 출처를 통해서만 게임의 숫자를 받고, 이 출처에는 한도가 있습니다. 제출당 최대치, 하루 최대치, 제출 사이의 간격.

게임에 리더보드가 몇 개까지 있을 수 있나요?

여러 개입니다. 켜진 보드마다 리더보드 화면의 별도 탭이 되며 자체 라운드와 보상이 있습니다.

친구 리더보드가 있나요?

네. SDK가 같은 보드를 플레이어의 친구로 걸러서 돌려줍니다.

함께 보기

나만의 게임을 만드세요

아이디어를 한 문장으로 설명하면 AI 코더가 만들어 주고, 게임은 고유 링크로 바로 공개됩니다.