ลีดเดอร์บอร์ด

อันดับคะแนนพร้อมการรีเซ็ตอัตโนมัติ คลังรอบที่ผ่านมา และระบบกันโกงฝั่งเซิร์ฟเวอร์

คอมเมนต์ในโค้ดและชื่อ API ยังคงเป็นภาษาอังกฤษเพื่อให้ตรงกับ SDK

ในหน้านี้

สร้างลีดเดอร์บอร์ด#

สร้างลีดเดอร์บอร์ดในหน้า ลีดเดอร์บอร์ด ของโปรเจกต์ แล้วใช้ slug ในโค้ด

การตั้งค่าตัวเลือก
Slugตัวระบุตัวพิมพ์เล็กที่ใช้ในโค้ด เช่น coins
ลำดับการจัดเรียงDESC (สูงสุดก่อน) หรือ ASC (ต่ำสุดก่อน เช่น เวลาแข่ง)
โหมดคะแนนBEST เก็บคะแนนดีที่สุดของผู้เล่นแต่ละคน ส่วน LATEST จะแทนที่ด้วยคะแนนล่าสุดเสมอ
รีเซ็ตNONE, DAILY, WEEKLY หรือ MONTHLY
คะแนนต่ำสุด / สูงสุดคะแนนต่ำสุดและสูงสุดที่ยอมรับ (ไม่บังคับ)
คูลดาวน์การส่งคะแนนจำนวนวินาทีขั้นต่ำระหว่างการส่งคะแนนสองครั้งของผู้เล่นคนเดียวกัน (ไม่บังคับ)

ส่งคะแนน#

ชื่อผู้เล่นมาจากบัญชี ไคลเอนต์จึงส่งคะแนนแทนผู้อื่นไม่ได้

C#
var submit = await Majacloud.Leaderboards.SubmitScoreAsync("coins", 340);
if (submit.Ok && submit.Value.Accepted)
    Debug.Log("New rank #" + submit.Value.Entry.Rank);

อ่านอันดับ#

รายการอันดับต้นๆ อ่านได้โดยไม่ต้องเข้าสู่ระบบ ส่วนอันดับของผู้เล่นเองและรายการรอบๆ อันดับนั้นต้องมีผู้เล่นที่เข้าสู่ระบบแล้ว

C#
var top = await Majacloud.Leaderboards.GetTopAsync("coins", limit: 10);
var me = await Majacloud.Leaderboards.GetMyRankAsync("coins");
var around = await Majacloud.Leaderboards.GetAroundMeAsync("coins", radius: 3);

if (me.Ok && me.Value.Entry != null) Debug.Log("You are #" + me.Value.Entry.Rank + " of " + me.Value.Total);

การรีเซ็ตและรอบก่อนหน้า#

ลีดเดอร์บอร์ดรายวัน รายสัปดาห์ (วันจันทร์) และรายเดือนจะรีเซ็ตเวลา 00:00 UTC รอบที่จบแล้วจะถูกเก็บถาวร และอ่านได้ด้วยรอบ previous:

C#
var yesterday = await Majacloud.Leaderboards.GetTopAsync("coins", 10, 0, MajacloudLeaderboardPeriod.Previous);
จำนวนรอบที่ผ่านมาที่เก็บไว้ และจำนวนรายการที่ลีดเดอร์บอร์ดคืนค่า ขึ้นอยู่กับแพ็กเกจ (ดู ขีดจำกัด)

การกันโกง#

  • คะแนนที่อยู่นอกช่วงต่ำสุดหรือสูงสุดจะถูกปฏิเสธด้วย validation
  • การส่งเร็วกว่าคูลดาวน์จะได้ rate_limited
  • ไคลเอนต์ส่งคะแนนได้เฉพาะของผู้เล่นที่เข้าสู่ระบบอยู่เท่านั้น
  • สำหรับเกมแนวแข่งขัน ให้เซิร์ฟเวอร์ของคุณเป็นผู้ตัดสินคะแนนและส่งด้วยคีย์ลับ

ส่งคะแนนจากเซิร์ฟเวอร์#

เมื่อใช้คีย์ลับ ให้ส่ง player_id และคะแนน ผู้เล่นต้องมีอยู่ในระบบแล้ว

JavaScript
// Node.js with secretKey: submit after your server validated the match
await admin.server.submitScore('coins', 'player_3f9c…', 980);

ค้นหาจากชื่อหน้า หัวข้อ และเนื้อหา

↑↓ เพื่อเลื่อน ↵ เพื่อเปิด Esc เพื่อปิด