Logo
Panduan Teknis · Backend & Integrasi

Integrasi Roblox Server ke 
External API (Kaabaverse)


Roblox Text Doc : Ver 1.0
Konteks

Mengapa integrasi ini penting?

Sinkronisasi Game–App

Menghubungkan aktivitas bermain player di Roblox dengan aplikasi gamifikasi luar.

Leaderboard Global

Menampilkan skor tertinggi server dan mini-game secara real-time.

Keamanan Data

Mencegah player melakukan eksploitasi atau manipulasi skor (anti-cheat).

Logo
Roblox Text Doc : Ver 1.0
Arsitektur

Arsitektur & Flow Data in Gameplay

01

Gameplay

Player menyelesaikan mini-game di server Roblox.

02

Telemetri

Roblox Server mengirim data secara latar belakang (asynchronous).

03

Verifikasi

API Gateway memvalidasi Bearer Token agar data resmi dari server kita.

04

Penyimpanan

Kaabaverse datastore mencatat riwayat permainan & memperbarui ranking.

Doc Reference from official Roblox Creator : 
https://create.roblox.com/docs/en-us/reference/engine/classes/HttpService

Seluruh aliran berjalan satu arah, terverifikasi, dan non-blocking.
Logo
Roblox Text Doc : Ver 1.0
Setup

Langkah pengaturan di Roblox Studio

1

Aktifkan HTTP

Buka Home › Game Settings › Security. Centang Allow HTTP Requests menjadi ON.

2

Tambahkan Secret Key

Di menu Secrets, klik Add Secret. Name: ROBLOX_API_KEY · Value: token production gameapps kaabaverse

3

Simpan & Publikasikan

Klik Save, lalu publikasikan game server agar konfigurasi aktif di production stage.

Logo
Roblox Text Doc : Ver 1.0
Referensi API

Endpoint URL

https://gamerobloxapi.kaaba.co.id/api/roblox/score

Method POST
Headers

Authorization: Bearer <ROBLOX_API_KEY>

Content-Type: application/json

JSON Payload
{
  "userId": 12345678,
  "username": "NamaPlayerRoblox",
  "minigameId": "obby_1",
  "score": 250

}
Logo
Roblox Text Doc : Ver 1.0
Database

Daftar ID mini-games

coin_hunter
Purpose for MiniGame

Coin Hunter

speed_run
Purpose for MiniGame

Speed Run

quiz_floor_n
Purpose for MiniGame

Quiz in Floor ke n

tarik_tambang
Purpose for MiniGame

Tarik Tambang

Catatan Penting

Gunakan ID di samping  (huruf kecil semua,) memakai underscore saat mengirim data sebagai parameter body request ke API roblox kaabaverse

Mini-game baru akan otomatis terdaftar ke database saat skor pertama kali dikirim.

untuk minigames tower kita memiliki 7 lantai ( floor) ganti n dengan nama floor. e.g quiz_floor_1 / quiz_floor_2 ... quiz_floor_7

Logo
Roblox Text Doc : Ver 1.0
Best Practice

Keamanan & performa (anti-lag)

Keamanan

Server-Side Only

Pengiriman skor wajib lewat Server Script (ServerScriptService). Jangan pernah lewat LocalScript.

Secret Store

Token API tidak boleh di-hardcode di script. Gunakan fitur Secrets di Roblox Studio.

Performa

Non-Blocking

HTTP dikirim via task.spawn (asynchronous) sehingga tidak membekukan game loop utama.

Retry Queue

Dilengkapi sistem antrean dengan Exponential Backoff jika server API sedang tidak stabil.

Logo
Roblox Text Doc : Ver 1.0
Roblox Studio

Sample files directory

EXPLORER
Explorer
└─ServerScriptService
├─RobloxAPIService
└─GameManager

RobloxAPIService · ModuleScript

Library utama yang menangani seluruh komunikasi luar dan antrean pengiriman skor.

GameManager · Script

Mengatur logika game pada roblox dan memanggil layanan API saat dibutuhkan.

Logo
Roblox Text Doc : Ver 1.0
SAMPLE BEST PRACTICE RobloxAPIService

GameManager.lua
local ServerScriptService = game:GetService("ServerScriptService")
-- 1. Import Module API
local RobloxAPIService = require(ServerScriptService.RobloxAPIService)
-- 2. Panggil fungsi saat player menyelesaikan game
-- Parameter: (PlayerInstance, minigameId, score)
RobloxAPIService.SubmitScore(player, "speed_run", 150)
Logo
Roblox Text Doc : Ver 1.0
SAMPLE BEST PRACTICEGameplay Trigger

Trigger in Game

FinishObby.server.lua
-- Contoh: Menyelesaikan SpeedRun Minigames saat menyentuh FinishPart
local FinishPart = workspace.FinishPart
local RobloxAPIService = require(game.ServerScriptService.RobloxAPIService)
FinishPart.Touched:Connect(function(hit)
local character = hit.Parent
local player = game.Players:GetPlayerFromCharacter(character)
if player then
-- Kirim skor 500 poin untuk minigame "speed_run"
-- Parameter: (PlayerInstance, minigameId, score)
RobloxAPIService.SubmitScore(player, "speed_run", 500)
-- Teleport player kembali ke Lobby
player:LoadCharacter()
end
end)
Logo
Roblox Text Doc : Ver 1.0