# Mulai cepat

Ralyoo adalah kumpulan minigame main bareng. Laptop atau tablet jadi **layar host**, HP tiap pemain jadi **controller** lewat browser: scan QR, tanpa install. Game kamu berjalan di layar host dan memberi tahu tiap HP apa yang harus ditampilkan.

Yang kamu butuhkan hanya Node 22 atau lebih baru. Tidak perlu meng-clone repo Ralyoo, tidak perlu server.

## 1. Buat game

```sh
npm create @ralyoo/game kejar-bintang
cd kejar-bintang
npm install
```

Ada dua template:

| Template | Untuk                                                     | Perintah                                          |
| -------- | --------------------------------------------------------- | ------------------------------------------------- |
| `dom`    | HTML dan CSS biasa: kuis, kartu, kata, game pesta         | `npm create @ralyoo/game nama -- --template dom`  |
| `pixi`   | PixiJS: sprite dan gerak 2D, dengan Rapier2D untuk fisika | `npm create @ralyoo/game nama -- --template pixi` |

## 2. Jalankan di simulator

```sh
npm run dev
```

Buka `http://localhost:5180/__studio/`. Kamu melihat layar host dan dua HP virtual; game langsung mulai. Simpan sebuah file dan game dibangun ulang lalu dimuat lagi. Lihat [Ralystudioo](ralystudioo.md) untuk menambah pemain, memutus HP, mensimulasikan latensi, dan main dari HP sungguhan.

## 3. Ubah gamenya

Seluruh game adalah satu panggilan `defineGame`:

```ts
import { defineGame } from '@ralyoo/sdk';

export default defineGame({
  locales: { id: { tekan: 'TEKAN!' } },

  onStart(ctx) {
    // Tiap HP menampilkan satu tombol besar.
    ctx.setController('all', {
      layout: 'stack',
      widgets: [{ type: 'button', id: 'A', label: ctx.t('tekan') }],
    });
  },

  onInput(ctx, player, input) {
    if (input.widget === 'A' && input.type === 'press') {
      // Pemain pertama yang menekan menang.
      ctx.end({ [player]: 1 });
    }
  },
});
```

- `ctx.setController` menentukan isi layar HP: lihat [Controller](controller.md).
- `onInput`, `onTick`, dan kawan-kawannya dijelaskan di [Siklus hidup dan alur layar](siklus-hidup.md).
- `ctx.end(skor)` mengakhiri game; platform menampilkan hasilnya.

Template memisahkan aturan (`src/game.ts`) dari tampilan (`src/view.ts`). Pemisahan itu yang membuat game bisa dites tanpa browser.

## 4. Tes

```sh
npm test
```

Tes menjalankan game terhadap SDK yang asli, dengan pemain dan frame yang dikendalikan tes: lihat [Pengujian](pengujian.md).

## 5. Bungkus dan unggah

```sh
npm run pack
```

`pack` membangun game, memeriksanya dengan aturan yang sama dengan saat diunggah, lalu menulis `kejar-bintang-0.1.0.ralyoo`. Berkas itulah yang diunggah ke Ralyoo: lihat [Publikasi](publikasi.md).

## Isi folder game

```
kejar-bintang/
  ralyoo.json        manifest: judul, deskripsi, cover, ikon, warna, jumlah pemain
  vite.config.ts     preset build dari @ralyoo/sdk/vite
  src/main.ts        pintu masuk: export default defineGame({ … })
  src/game.ts        aturan dan alur game
  src/view.ts        tampilan di layar host
  src/game.test.ts   tes
  assets/            disalin apa adanya ke bundel
  assets/meta/       ikon dan cover untuk katalog
```

Untuk agent: seluruh dokumentasi ini tersedia sebagai Markdown di [llms.txt](https://docs.ralyoo.com/llms.txt).
