---
type: tutorial
title: Buat game kustom bisa-digerbang
summary: Unggah artefak putar-ulang headless untuk game swahosting-mu agar server bisa menurunkan-ulang vonis, langkah yang membiarkan game kustom memenuhi gerbang game.
---

Sebuah [game swahosting](/docs/custom-game-development/self-hosted-game) berjalan dan memverifikasi begitu kamu mengarahkan `game-src` ke ia. Tapi untuk memakainya sebagai [gerbang game](/docs/site-keys/games), di mana pengunjung harus menuntaskannya untuk lolos, Caputchin harus bisa menurunkan-ulang hasilnya sendiri, bukan memercayai peramban. Itulah gunanya **artefak putar-ulang**. Di akhir tutorial ini game kustommu akan layak-gerbang.

Ini adalah imbalan determinisme: karena game-mu merekam sebuah [trace](/docs/custom-game-development/self-hosted-game) dan menurunkan semua dari seed, server bisa menjalankan salinan headless logikamu terhadap seed dan trace yang sama dan mencapai vonis yang sama secara independen.

## Apa itu artefak putar-ulang

Artefak adalah bundel JavaScript kecil mandiri yang hanya berisi **logika game**-mu, tanpa rendering, tanpa DOM, dan tanpa jaringan. Server memuatnya ke sandbox terisolasi dan menjalankannya untuk menghasilkan vonis dari `(seed, trace)`. Ia bukan game yang bisa kamu mainkan; ia adalah hakim headless game-mu yang bisa dimainkan.

Dua properti diwajibkan:

- **Mandiri.** Ia tak bisa mengimpor apa pun yang tak bisa diselesaikan isolate; bundel semuanya. Unggahan dibatasi pada 2 MB, yang jauh di atas bundel logika tipikal.
- **Deterministik dan sepakat dengan game live.** Diberi seed yang sama dan trace yang dipancarkan game live-mu, ia harus mencapai vonis yang sama yang diklaim game live. Jika mereka tak sepakat, pemain nyata mendapat penolakan palsu.

## 1. Daftarkan game kustom

Jika belum, daftarkan game di dasbor agar ia punya id dan tempat untuk menahan artefak. Di halaman **Game** kunci situs (atau tim), pakai input **Game kustom** di panel **Tambahkan game**: masukkan id-mu dan klik **Definisikan**. Lihat [game kustom](/docs/game-customization/custom-games) untuk langkah ini dan [skema yang kamu definisikan](/docs/custom-game-development/dashboard-schema).

## 2. Unggah artefak

Di tab **Pengaturan** game terdaftar, unggah bundel putar-ulang. Ia dikirim sebagai satu berkas; Caputchin men-hash-konten-nya (mengunggah-ulang byte yang sama adalah no-op) dan segera menjalankan **pemeriksaan-diri**.

## 3. Pemeriksaan-diri

Pemeriksaan-diri menjalankan artefak yang kamu unggah di isolate putar-ulang terhadap seed sintetis (dan sampel trace yang kamu commit, jika kamu menyediakannya) dan mencatat apakah ia menghasilkan vonis bersih:

- **Lolos** → instal menjadi layak-gerbang. Lencana **Tidak bisa diputar ulang** hilang, dan kamu kini bisa menyalakan [wajibkan game](/docs/site-keys/games) dengan game ini di kumpulan.
- **Gagal** → artefak tetap disimpan (jadi kamu bisa memeriksa galatnya), tapi instal tetap tak-layak-gerbang. Perbaiki logika dan unggah-ulang.

Pemeriksaan-diri yang gagal adalah sistem memberitahumu hakim headless tak sepakat dengan dirinya sendiri atau tak bisa berjalan; ia persis ketaksepakatan yang akan menyebabkan penolakan palsu di produksi, ditangkap sebelum pengunjung mana pun menghantamnya.

## 4. Nyalakan gerbang

Begitu pemeriksaan-diri lolos, game ada di [kumpulan gerbang](/docs/site-keys/games) key. Nyalakan **Wajibkan game** di halaman Keamanan key (atau plafon paksa-game tim), dan Caputchin akan menyajikan game kustommu, mengambil trace pemain, dan menjalankan-ulang artefakmu di sisi-server untuk memutuskan tiap verifikasi.

## Menjaga keduanya sinkron

Game live (dimuat lewat `game-src`) dan artefak putar-ulang adalah dua build dari logika yang sama. Saat kamu mengubah apa pun yang memengaruhi hasil, bangun-ulang dan unggah-ulang artefak agar keduanya masih sepakat. Jika mereka menyimpang, pemeriksaan-diri atau putar-ulang produksi akan mulai menolak kemenangan nyata. Membangun keduanya dari satu modul logika bersama adalah cara andal menjaga mereka identik.

## Lihat juga

- [Bangun game swahosting](/docs/custom-game-development/self-hosted-game): menghasilkan trace yang diputar-ulang artefak ini.
- [Game dan gerbang game](/docs/site-keys/games): menyalakan gerbang dan persyaratan dapat-diputar-ulang.
- [Game kustom](/docs/game-customization/custom-games): mendaftarkan dan lencana Tidak-bisa-diputar-ulang.
- [Referensi skema dasbor](/docs/custom-game-development/dashboard-schema): bidang yang dibaca game dari konteks factory-nya.
