API Reference

SDK methods dan backend endpoints.

Multiplayer (static class)

using Mabar.Multiplayer.Core;

Initialize()

void

Inisialisasi SDK dengan settings asset. Wajib dipanggil pertama sebelum method lain.

Multiplayer.Initialize(MultiplayerSettings settings);

LoginGuest()

Task<AuthResponse>

Login anonymous. Dapat playerId + token yang dipakai untuk semua operasi berikutnya.

var auth = await Multiplayer.LoginGuest();
// auth.PlayerId  → "player_abc123..."
// auth.Token     → session token (auto-disimpan SDK)
// auth.ExpiresAt → Unix timestamp expiry

RefreshToken()

Task<AuthResponse>

Perpanjang session tanpa harus login ulang. Panggil sebelum TokenExpiry tercapai.

// Panggil sebelum token expired (cek Multiplayer.TokenExpiry)
var auth = await Multiplayer.RefreshToken();

CreateRoom()

Task<RoomRecord>

Buat room baru. Pembuat otomatis jadi host dan giliran pertama.

var room = await Multiplayer.CreateRoom(
    name: "Chess Match",
    maxPlayers: 2,        // 2-16
    isPrivate: false
);
// room.Id          → roomId untuk dibagikan ke lawan
// room.CurrentTurn → playerId yang giliran sekarang

JoinRoom()

Task<RoomRecord>

Join room yang sudah ada. Room private butuh invite code dari host.

// Public room:
var room = await Multiplayer.JoinRoom(roomId);

// Private room (butuh invite code):
var room = await Multiplayer.JoinRoom(roomId, inviteCode: "AB12CD");

GetRoom()

Task<RoomRecord>

Ambil state room terkini. Gunakan ini untuk polling — cek apakah giliran kamu atau cek state game terbaru.

// Poll state room — panggil tiap 1-2 detik untuk cek giliran lawan
var room = await Multiplayer.GetRoom(roomId);
if (room.CurrentTurn == Multiplayer.PlayerId)
    Debug.Log("Giliran kamu!");

SubmitTurn()

Task<RoomRecord>

Submit giliran kamu. Server validasi bahwa ini memang giliranmu (403 jika bukan). State tersimpan di server dan bisa diambil semua player via GetRoom().

var state = new Dictionary<string, object> {
    { "board", "rnbqkbnr/pppp..." },
    { "lastMove", "e2-e4" },
};

// Auto-advance giliran ke player berikutnya (round-robin):
var room = await Multiplayer.SubmitTurn(roomId, state);

// Atau tentukan siapa yang giliran berikutnya:
var room = await Multiplayer.SubmitTurn(roomId, state, nextTurn: specificPlayerId);

LeaveRoom()

Task<RoomRecord>

Keluar dari room. Room dihapus otomatis jika player terakhir keluar.

await Multiplayer.LeaveRoom(roomId);
// Kalau kamu host, host otomatis pindah ke player berikutnya
// Kalau player terakhir, room dihapus otomatis