Melengkapi sisi online game: membangun leaderboard, sistem akun pemain, dan game services dengan backend yang bisa diskalakan, lalu praktik membuat fitur online Rimba Runner mulai dari REST API hingga integrasi di game

Setelah multiplayer membuat pemain bermain bersama (episode 13), episode ini membuat game terhubung: online services & backend. Leaderboard yang menampilkan skor dunia, akun pemain yang menyimpan progres lintas perangkat, dan game services seperti cloud save dan achievement — semua ini adalah sisi backend yang membuat game terasa hidup dan terukur.
Di episode ini kalian akan memahami apa saja game services yang umum, bagaimana backend game dibangun dan diskalakan, serta praktik membuat fitur online Rimba Runner: API leaderboard + integrasi di client. Kalian tidak harus jadi backend engineer, tapi game developer yang paham backend bisa berkomunikasi dengan tim server dan merancang fitur yang layak produksi.
Sebuah game modern biasanya butuh beberapa service berikut:
| Service | Fungsi | Contoh |
|---|---|---|
| Accounts | Identitas pemain, login, cross-device | Email, Google, Steam sign-in |
| Cloud Save | Progres tersimpan di server | Save lintas perangkat (episode 11) |
| Leaderboards | Ranking skor | Skor tertinggi global & teman |
| Achievements | Penghargaan & target | Achievement "kumpulkan 100 buah" |
| Analytics | Data perilaku pemain | Retention, funnel, crash |
| Live Config | Konfigurasi tanpa update game | Event multiplier, harga item |
Strategi umum: mulai dengan backend-as-a-service (BaaS) seperti PlayFab (Azure), GameSparks, atau Supabase/Firebase untuk fitur dasar, lalu pindah ke backend custom saat butuh kontrol. BaaS menghemat bulan-bulan kerja infrastruktur — fokus ke gameplay, bukan login flow.
Backend game berarsitektur mirip backend web biasa, dengan satu perbedaan penting: traffic sering spiky dan tidak seimbang (lonjakan saat rilis event). Arsitektur referensinya:
Lapisan-lapisannya:
POST /scores, GET /leaderboard/top.Pola penting yang jarang dibahas pemula: client tidak pernah boleh dipercaya. Skor yang dikirim client (POST /scores { score: 999999 }) tidak bisa diterima mentah-mentah — harus divalidasi server (cek sesi game, aturan skor maksimum, dan bahkan verifikasi komputasional untuk game tertentu). Kita akan dalami di episode 18.
Mari rancang API leaderboard Rimba Runner. Skema endpoint:
GET /leaderboard/top?limit=10 → 10 skor tertinggi
GET /leaderboard/rank/:playerId → peringkat & skor pemain
POST /scores → kirim skor baru (dari client)Contoh respons GET /leaderboard/top:
{
"leaderboard": [
{ "player": "Ayu", "score": 12400, "rank": 1 },
{ "player": "Bimo", "score": 9800, "rank": 2 }
]
}Di sisi game client (Godot), panggil API dengan HTTPRequest:
func fetch_top_scores() -> void:
var http := HTTPRequest.new()
add_child(http)
http.request_completed.connect(_on_fetched)
http.request("https://api.rimbarunner.dev/leaderboard/top?limit=10")
func _on_fetched(result: int, code: int, headers: PackedStringArray, body: PackedByteArray) -> void:
if code == 200:
var data = JSON.parse_string(body.get_string_from_utf8())
populate_leaderboard_ui(data["leaderboard"])Catatan arsitektur: client game tidak boleh menampung API key rahasia — API key untuk layanan pihak ketiga (analytics, payment) wajib tinggal di backend. Client hanya boleh memegang token sesi pemain (lihat bagian akun di bawah). Kunci yang bocor di binary game bisa diambil siapa pun yang membongkar file — ini topik anti-tamper di episode 18.
Sistem akun menjawab pertanyaan: "siapa yang sedang bermain, dan boleh memakai data apa?" Alur standarnya:
Login → server verifikasi → return token → client simpan token
→ tiap request bawa token → server cek siapa & boleh/tidakKenapa tidak sekadar kirim playerId? Karena token bisa diverifikasi server (tanda tangan kriptografis) tanpa perlu query DB setiap request, dan bisa dicabut (revoke) saat curiga disalahgunakan. Prinsip ini — identity via token, bukan ID polos — adalah dasar keamanan akun.
Game yang tiba-tiba viral bisa meledakkan traffic. Prinsip skala yang wajib dipahami sejak awal:
Tip
Mulai dengan satu instance + database managed (Supabase/Firebase/PlanetScale). Fitur skala (cache, queue, multi-instance) baru ditambah saat metrik benar-benar menuntut. Arsitektur sederhana yang berjalan lebih baik daripada arsitektur rumit yang tak pernah selesai — prinsip yang sama berlaku untuk kode gameplay.
Rakit fitur leaderboard end-to-end:
POST /scores (validasi input) dan GET /leaderboard/top.Warning
Jangan mengirim password atau data sensitif tanpa enkripsi HTTPS — seluruh API game wajib HTTPS. Selain itu, jangan pernah meletakkan secret (API key backend, credential DB) di dalam client game; semuanya harus di server. Dua aturan ini menyelamatkan dari kategori kebocoran data paling umum.
Backend mengubah game dari produk menjadi layanan.
Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita akan menjaga kualitas: game testing & QA — playtesting, bug tracking, dan automated testing, lengkap dengan praktik QA pass untuk Rimba Runner. Sampai jumpa di episode 15!