Developer Guide
⚡ Interactive SDK Guide
Coba simulasi interaktif di bawah ini untuk melihat bagaimana SDK bekerja di setiap langkahnya.
1.
Init API
Inisialisasi Mabarin Client dengan API Key kamu. Biasanya ini ditaruh di file config/setup awal agar bisa diakses secara global di kodemu.
import { MabarClient } from '@mabar/sdk';
// Bikin instance MabarClient global
export const mabarin = new MabarClient();
// Info: API Key kita set di config atau env
const API_KEY = 'mk_live_a1b2c3d4e5';
await mabarin.initialize({ apiKey: API_KEY });2.
Connect Player
Setiap player yang masuk ke game kamu harus dikoneksikan ke Mabarin. Ini akan memvalidasi API Key dan meregister profil player tersebut untuk sesi ini.
// Panggil initialize saat player berhasil login ke gamemu
await mabarin.initialize({
apiKey: 'mk_live_a1b2c3d4e5',
userId: 'uid-0000',
name: 'PlayerOne',
});
console.log('Player Online:', mabarin.name);
// Setelah ini, presence player otomatis jadi Online3.
Create, Join, & Get Rooms
Player bisa membuat room baru sebagai Host, atau join ke room yang sudah ada menggunakan kode. Setelah masuk, lihat siapa saja yang ada di dalam room.
Room Simulator
Create Room (jadi Host)
Join Room
Atau cek room publik yang tersedia:
// Create Room (jadi Host)
const code = await mabarin.room.createRoom(
'Aidan Room', // nama tampilan room
'ABCD', // kode unik join
4, // max players
true, // isPublic — muncul di getRooms()
);
mabarin.room.on('room:state', ({ room }) => {
console.log('host :', room.host);
console.log('members :', Object.keys(room.members));
console.log('state :', room.state); // 'waiting'
});
// ATAU: Join room yang sudah ada
await mabarin.room.join('ABCD');
// Ambil list room publik
const rooms = await mabarin.room.getRooms();4.
Sync & Send
Sistem sync pada dasarnya adalah mengirim data dari Player 1 dan meresponnya di Player 2. Pilih pendekatan yang cocok dengan tipe game kamu.
x=00°geser slider…
menunggu data…
mabarin.room.send({ action: "move", x: 0, angle: 0 })// ── Player A: kirim data posisi ─────────────────────────────
mabarin.room.send({ action: 'move', x: 40, y: 12 });
// ── Player B (& semua member lain): terima ──────────────────
// NOTE: room:message TIDAK dikirim kembali ke pengirim
mabarin.room.on('room:message', ({ from, payload }) => {
if (payload.action === 'move') {
playerObj[from].moveTo(payload.x, payload.y);
}
});5.
MabarDB (Database Proxy)
Fitur opsional untuk menyimpan data persisten seperti skor, inventori, atau profile player ke Firebase milik developer secara aman lewat API Mabarin.
// Inisialisasi instan tanpa auth (Guest Mode)
// Ideal untuk game cepat tanpa login account
await mabarin.initialize({
apiKey: 'YOUR_API_KEY',
userId: 'guest-' + Math.random().toString(36).substring(2, 9), // UID acak unik
name: 'Guest Player',
});Quick Reference
Events & Methods
Room — Events Diterima
mabarin.room.on(event, callback)
room:state{ room }State lengkap saat join/create. Berisi host, state (waiting|playing|ended), members, gameState.
room:member_joined{ member }Player baru masuk. member = { userId, name, ready, data }.
room:member_left{ userId }Player keluar atau disconnect.
room:member_ready{ userId, ready }Player toggle ready via setReady().
room:host_changed{ newHost }Host berganti otomatis saat host lama disconnect.
room:started{ gameState }Host memanggil start(). Semua terima ini.
room:message{ from, payload }Payload dari player lain via send(). Pengirim TIDAK terima ini.
room:state_updated{ patch, from }Host update shared gameState via updateState().
chat:message{ from, name, text, ts }Chat dari player lain via chat(). Pengirim TIDAK terima echo.
Room — Methods
mabarin.room.*
createRoom(name, code, maxPlayers?, isPublic?)Buat room baru. Caller jadi host.
join(code)Join room yang sudah ada via kode.
getRooms()HTTP — ambil list room publik aktif.
send(payload)Broadcast ke semua member LAIN. Pengirim tidak terima balik.
setReady(bool)Set status ready. Trigger room:member_ready ke semua.
start()HOST ONLY — trigger room:started ke semua member.
updateState(patch)HOST ONLY — merge patch ke gameState, trigger room:state_updated.
chat(text)Kirim chat. Semua member LAIN terima chat:message.
leave()Disconnect dari room.