---
type: explanation
title: Jalankan game-mu sendiri
summary: Apa itu pengembangan game kustom, dua cara mengirim game-mu sendiri (slot manual atau iframe swahosting), dan apa yang ditambahkan dasbor (skema, preset, dan artefak putar-ulang yang membiarkan sebuah game kustom menggerbang).
---

Sebuah game kustom adalah game yang **kamu** bangun dan hosting, dipakai di widget Caputchin alih-alih game [marketplace](/marketplace). Tak ada orang lain yang bisa memasangnya, tak ada topik GitHub dan tak ada langkah terbit, dan kamu menyimpan kodenya. Bagian ini adalah panduan rinci, bangun-sendiri untuk jalur itu. (Jika kamu ingin mengirim sebuah game untuk *siapa pun* sematkan, itu adalah [pengembangan game marketplace](/docs/marketplace-game-development/overview), jalur terpisah.)

Ada dua cara mengirim game kustom, dan mereka sungguh permukaan berbeda dengan batas berbeda. Pilih berdasarkan apa yang kamu butuhkan:

```mermaid
flowchart TD
  Q{Apa yang kamu butuhkan}
  Q -->|Hanya DOM-ku sendiri di widget,<br/>tanpa gerbang verifikasi| M[Mode manual]
  Q -->|Game sungguhan yang bisa MENGGERBANG verifikasi<br/>diputar-ulang-server| S[Game iframe swahosting]
  M --> MX["&lt;caputchin-game trigger=manual&gt;<br/>kamu menyelipkan markup-mu sendiri<br/>kemudikan pass() / fail() sendiri"]
  S --> SX["sebuah bundel JS memakai @caputchin/game-sdk<br/>dihosting olehmu, dimuat lewat game-src<br/>+ artefak putar-ulang diunggah ke dasbor"]
```

## Mode manual: DOM-mu sendiri, tanpa gerbang

[Mode manual](/docs/custom-game-development/manual-mode) adalah opsi ringan. Kamu menyetel `trigger="manual"` pada `<caputchin-game>`, menaruh markup-mu sendiri di dalamnya, dan memanggil metode `pass()` / `fail()` elemen dari kodemu sendiri saat pengunjung berhasil atau gagal. Tak ada iframe dan tak ada game SDK; widget sekadar memberimu shell tata-letaknya dan pipa verifikasi di sekitar markup-mu.

Tukar-tambahnya: ronde mode-manual **tak bisa diputar-ulang-server**, jadi game mode-manual **tak bisa memenuhi [gerbang game](/docs/site-keys/games)**. Ia hanya berjalan pada key tak-bergerbang (verifikasi proof-of-work, dengan interaksimu sebagai UX), atau hanya-game tanpa verifikasi sama sekali. Pakai ia untuk interaksi bermerek, bukan untuk gerbang keamanan yang kamu butuh diputar-ulang.

## Game iframe swahosting: bisa menggerbang

[Game swahosting](/docs/custom-game-development/self-hosted-game) adalah game sungguhan ber-sandbox: sebuah bundel JavaScript yang dibangun terhadap paket `@caputchin/game-sdk` yang berjalan di iframe widget, berbicara ke host lewat jembatan SDK, dan melaporkan sebuah **trace** yang bisa dijalankan-ulang server. Kamu menghosting bundel sendiri dan mengarahkan widget ke ia dengan atribut `game-src`.

Karena ronde menghasilkan trace yang bisa-diputar-ulang, sebuah game swahosting **bisa menggerbang** sebuah kunci situs, tapi hanya setelah kamu memberi Caputchin sebuah [artefak putar-ulang](/docs/custom-game-development/replay-and-gating): sebuah build headless kecil dari logika game-mu yang dijalankan server untuk menurunkan-ulang vonisnya. Sampai artefak itu diunggah dan lolos pemeriksaan-dirinya, game kustom menunjukkan **Tidak bisa diputar ulang** dan tak bisa menggerbang.

## Apa yang ditambahkan dasbor

Sebuah game marketplace mengirim manifest `caputchin.json` yang mendeklarasikan bidang kustomisasinya. Sebuah game kustom tak punya manifest, jadi **kamu mendeklarasikan bidang itu di dasbor** sebagai gantinya: kamu [mendaftarkan game kustom](/docs/game-customization/custom-games) dengan sebuah id yang kamu pilih, mendefinisikan [skema](/docs/custom-game-development/dashboard-schema) bidangnya per sumbu (bahasa, skin, konfigurasi), dan menulis preset terhadapnya. Dari sana ia diselesaikan dan diterapkan persis seperti game marketplace, di jenjang paket yang sama.

Jadi permukaan game-kustom penuhnya adalah:

| Potongan | Di mana | Dibutuhkan untuk |
|---|---|---|
| Game itu sendiri | Kodemu, host-mu | Selalu |
| Pengiriman | Slot `trigger="manual"`, atau iframe `game-src` | Selalu |
| Skema bidang + preset | Dasbor (kamu mendefinisikan skema) | Mengustomisasi bahasa / skin / config |
| Artefak putar-ulang | Unggahan dasbor | Menggerbang verifikasi (hanya swahosting) |

## Lihat juga

- [Mode manual](/docs/custom-game-development/manual-mode): selipkan DOM-mu sendiri dan kemudikan pass/fail.
- [Game swahosting](/docs/custom-game-development/self-hosted-game): bangun game iframe yang bisa-diputar-ulang dengan SDK.
- [Putar-ulang dan penggerbangan](/docs/custom-game-development/replay-and-gating): unggah artefak yang membiarkan game kustom menggerbang.
- [Referensi skema dasbor](/docs/custom-game-development/dashboard-schema): skema bidang yang kamu definisikan untuk game kustom.
- [Game kustom](/docs/game-customization/custom-games): mendaftarkan dan menghosting, dari sisi pelanggan.
