Home/Getting Started

Getting Started

Dari nol ke multiplayer dalam 5 menit. Satu key, selesai.

1

Dapatkan App Key

Seperti Photon App ID — kamu terima satu key unik per game

Hubungi SDK owner (kamu beli / request key) atau buat sendiri via endpoint admin:

http
POST https://api.mabar.studio/apps/register
X-Master-Key: your-master-key

{
  "name": "My Awesome Game",
  "ownerEmail": "dev@example.com"
}

Response kamu dapat:

json
{
  "appKey": "mk_a1b2c3d4e5f6g7h8i9j0k1l2",
  "name": "My Awesome Game",
  "message": "AppKey created. Share this with the developer."
}

Simpan AppKey ini. Ini satu-satunya credential yang kamu butuhkan — tidak ada Firebase, tidak ada service account, tidak ada private key.

2

Install Unity SDK

Via UPM — satu URL, langsung masuk ke project

A

Via Git URL (Recommended)

  1. 1Open Package Manager (Window → Package Manager)
  2. 2Klik + → "Add package from git URL"
  3. 3Paste URL di bawah
  4. 4Klik Add
git url
https://github.com/AzhariMabar/mabar-multiplayer-unity-sdk.git
B

From Disk

  1. 1Clone repo unity-sdk
  2. 2+ → "Add package from disk"
  3. 3Select package.json
  4. 4Open
3

Set App Key di Inspector

Ini satu-satunya config yang kamu butuhkan

  1. 1
    Buka Setup Wizard: Mabar Multiplayer → Setup Wizard
  2. 2
    Buat Settings Asset (atau pilih yang sudah ada)
  3. 3
    Di tab "Set App Key", paste App Key yang kamu dapat di Step 1
  4. 4
    Done — tidak ada config Firebase, tidak ada env vars di Unity
Field di InspectorValue
App Keymk_a1b2c3... (dari Step 1)
API URLhttps://api.mabar.studio (default)

Itu saja — dua field. Tidak ada Firebase, tidak ada WebSocket URL, tidak ada private key di Unity.

4

Tulis Kode Multiplayer

Assign settings asset, Initialize, connect — selesai

Buat script baru, assign MabarSettings ke field Settings:

csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Mabar.Multiplayer.Core;
using Mabar.Multiplayer.Models;

public class GameManager : MonoBehaviour
{
    public MultiplayerSettings Settings;  // assign di Inspector

    private string roomId;

    private async void Start()
    {
        Multiplayer.Initialize(Settings);

        // Login — dapat playerId + token (otomatis disimpan SDK)
        var auth = await Multiplayer.LoginGuest();
        Debug.Log($"Logged in as {auth.PlayerId}");

        // Buat room (atau JoinRoom jika sudah punya roomId)
        var room = await Multiplayer.CreateRoom("Chess Match", maxPlayers: 2);
        roomId = room.Id;
        Debug.Log($"Room: {roomId} | Giliran: {room.CurrentTurn}");

        // Mulai polling giliran lawan
        StartCoroutine(PollRoom());
    }

    // Submit giliran kamu
    public async void OnMyTurn(string move)
    {
        var state = new Dictionary<string, object> { { "lastMove", move } };
        var room = await Multiplayer.SubmitTurn(roomId, state);
        Debug.Log($"Turn submitted. Sekarang giliran: {room.CurrentTurn}");
    }

    // Poll state tiap 2 detik — cukup untuk turn-based
    private IEnumerator PollRoom()
    {
        while (true)
        {
            yield return new WaitForSeconds(2f);
            var task = Multiplayer.GetRoom(roomId);
            yield return new WaitUntil(() => task.IsCompleted);

            var room = task.Result;
            if (room.CurrentTurn == Multiplayer.PlayerId)
                Debug.Log("Giliran kamu!");
        }
    }
}

Selanjutnya