---
type: reference
title: Skema dasbor game kustom
summary: Bagaimana sebuah game kustom mendeklarasikan bidang yang bisa dikustomisasi di dasbor, per sumbu, karena ia tak punya manifest, dan tipe bidang yang diterima tiap sumbu.
---

Sebuah game marketplace mengirim manifest `caputchin.json` yang mendeklarasikan bidang mana yang boleh disetel tiap preset kustomisasi. Sebuah game kustom tak punya manifest, jadi **kamu mendeklarasikan skema bidang itu di dasbor** sebagai gantinya. Kamu mendefinisikannya sekali per game kustom, per sumbu, lalu menulis preset terhadapnya; dari sana ia [diselesaikan dan diterapkan](/docs/game-customization/overview) persis seperti game marketplace di jenjang paket yang sama.

Halaman ini adalah referensi untuk skema itu. Untuk menulis game itu sendiri, lihat [bangun game swahosting](/docs/custom-game-development/self-hosted-game); untuk alur pendaftaran sisi-pelanggan, lihat [game kustom](/docs/game-customization/custom-games).

## Satu skema per sumbu

Skema sebuah game kustom dideklarasikan **per sumbu**, dan tiga sumbu independen:

| Sumbu | Apa yang dikustomisasinya | Skema |
|---|---|---|
| **Locale** | String terjemahan game. | Implisit: bidang locale selalu teks biasa, jadi tak ada yang dideklarasikan; kamu menulis preset string langsung. |
| **Skin** | Warna, aset visual, dan tombol presentasi. | Kamu mendeklarasikan bidang warna, aset, dan skalar (sakelar / angka / rentang / pilihan) yang boleh disetel preset skin. |
| **Konfigurasi** | Opsi gameplay (tingkat kesulitan, hitungan, sakelar). | Kamu mendeklarasikan bidang opsi yang boleh disetel preset konfigurasi. |

Kamu mendefinisikan skema hanya untuk sumbu yang game-mu sebenarnya pakai. Sebuah sumbu tanpa skema sekadar tak punya bidang yang bisa dikustomisasi dari jenis itu.

## Tipe bidang

Sebuah skema adalah set bidang bernama, masing-masing dengan tipe. Tipe bidangnya adalah set yang sama yang dipakai sisa kustomisasi; [referensi skema kustomisasi](/docs/references/customization-schema) adalah deskripsi otoritatif setiap tipe dan nilai yang diterimanya. Singkatnya:

| Tipe | Nilai |
|---|---|
| `string` | Teks bebas. |
| `boolean` | `true` atau `false`. |
| `number` | Angka hingga mana pun. |
| `range` | Sebuah angka dalam min dan max. |
| `list` | Satu dari set opsi tetap. |
| `link` | Sebuah URL `http`/`https`. |
| `color` | Sebuah warna hex atau `rgb()`. |
| `image` | Sebuah URL gambar atau unggahan. |
| `audio` | Sebuah URL audio atau unggahan. |
| `video` | Sebuah URL video atau unggahan. |

Locale memakai `string` saja (dan resolver tak memvalidasi skema locale sama sekali). Skin dan konfigurasi memvalidasi nilai yang ditulis terhadap skema yang kamu deklarasikan dan membuang nilai yang tak cocok dengan tipenya.

## Cakupan: di mana sebuah skema berada

Skema game-kustom disetel pada sebuah cakupan, **tim atau kunci situs**, model cakupan yang sama dengan [penggantian](/docs/troops/overrides). Saat baik sebuah tim maupun salah satu kunci situsnya mendeklarasikan skema untuk game dan sumbu yang sama, **skema kunci situs menggantikan milik tim** untuk sumbu itu (penggantian seluruh-sumbu, bukan penggabungan bidang-demi-bidang). Ini mencerminkan bagaimana sisa kustomisasi diselesaikan paling-spesifik-menang.

## Aset bersifat absolut

Karena kamu menghosting game yang bisa dimainkan sendiri, tak ada bundel platform untuk menyelesaikan path aset relatif. Nilai `image`, `audio`, atau `video` mana pun di preset skin harus berupa **URL absolut**. (Sebuah game marketplace bisa memakai path relatif-bundel; game kustom tak bisa.)

## Bagaimana sebuah preset mencapai game

Begitu skema dan preset ada, Caputchin menyelesaikan satu preset per sumbu untuk tiap pengunjung (paling-spesifik-menang lintas kunci situs, tim, dan default-mu) dan mengirim nilai terselesaikan ke game-mu lewat [konteks game factory](/docs/custom-game-development/self-hosted-game): `ctx.locale`, `ctx.skin`, `ctx.config`. Game-mu membaca nama bidangnya sendiri dari objek itu. Skema adalah yang membuat editor dasbor menunjukkan input yang tepat dan yang memvalidasi nilai sebelum mereka pernah mencapai pengunjung.

## Lihat juga

- [Referensi skema kustomisasi](/docs/references/customization-schema): setiap tipe bidang dan nilai yang diterimanya, secara penuh.
- [Game kustom](/docs/game-customization/custom-games): mendaftarkan game kustom dan mendefinisikan skemanya.
- [Bangun game swahosting](/docs/custom-game-development/self-hosted-game): membaca preset terselesaikan dari konteks factory.
- [Penggantian tim](/docs/troops/overrides): model cakupan yang diikuti skema.
