Mabarin

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.

javascript
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.

javascript
// 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 Online

3.

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

Lobby

Create Room (jadi Host)

OR

Join Room

Atau cek room publik yang tersedia:

javascript
// 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.

Live Sync Demo— Player A kirim, Player B terima via room:message
Player A— pengirim
x=0
0°
→ sent (lokal, bukan dari server)

geser slider…

Player B— penerima
← room:message (dari server)

menunggu data…

mabarin.room.send({ action: "move", x: 0, angle: 0 })
javascript
// ── 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.

javascript
// 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.