# Terbitkan game HTML sederhana dari aplikasi AI Anda

Terbitkan satu berkas HTML mandiri hingga 10 MiB dengan upload_game: apa yang muat, katalog mini, visibilitas, pembaruan, dan kapan beralih ke paket.

Source: https://www.playdrop.ai/id/create/learn/html-games

Jalur sederhana menerbitkan satu game HTML standar, seperti game arkade canvas atau puzzle DOM, dengan satu panggilan `upload_game`. Jalur ini tidak memerlukan SDK PlayDrop, folder build, atau berkas tambahan, dan menghasilkan tautan yang bisa dibuka siapa saja di ponsel atau komputer.

## Kapan jalur sederhana cocok

- Seluruh game adalah satu berkas HTML berukuran maksimal 10 MiB (10.485.760 byte UTF-8), dengan skrip, gaya, gambar, dan suaranya tersemat di dalamnya.
- Game ini adalah game browser biasa: tidak memanggil SDK PlayDrop, jadi tanpa simpanan cloud, papan peringkat, pencapaian, berbagi, grup, pembelian, atau iklan.
- Game tidak memerlukan berkas terpisah: tanpa gambar atau video listingan dan tanpa server game.

Jika salah satu poin ini tidak terpenuhi, gunakan [paket](https://www.playdrop.ai/id/create/learn/packaging). Pertahankan fitur yang diminta pengguna Anda; jangan pernah menghapusnya atau meratakan game multi-berkas agar muat di jalur ini. Unggahan menolak panggilan SDK, kode server, dan field katalog khusus paket dengan `advanced_upload_required`.

## Kirim gamenya

Panggil `upload_game` dengan `requestId` baru, HTML lengkap, dan katalog mini untuk satu game:

```json
{
  "requestId": "moon-jump-first-upload",
  "html": "<!doctype html><html><head><meta charset=\"utf-8\"><title>Moon Jump</title></head><body>…</body></html>",
  "catalogue": {
    "apps": [{
      "name": "moon-jump",
      "displayName": "Moon Jump",
      "description": "Jump between lunar platforms and reach the flag.",
      "controls": "Tap or press Space to jump.",
      "tags": ["game-genre/casual"],
      "types": ["solo"],
      "controller": { "support": "off" },
      "authMode": "NONE",
      "primarySurface": "MOBILE_PORTRAIT"
    }]
  }
}
```

- `name` adalah slug permanen game: 1–100 huruf kecil, angka, atau tanda hubung.
- `tags` harus menyertakan genre seperti `game-genre/casual`; lihat [genre dan tag](https://www.playdrop.ai/id/create/learn/tags).
- `types` menyatakan cara game dimainkan; game satu berkas biasanya `["solo"]`. Ukuran grup dan permainan online hanya untuk paket.
- `controller.support` menyatakan dukungan pengontrol yang sebenarnya, termasuk `off`.
- `authMode` menentukan login: `NONE` atau `OPTIONAL` memungkinkan siapa saja bermain; jika tidak disertakan, default-nya `REQUIRED`. Sertakan di setiap pembaruan.
- `primarySurface` menyebutkan orientasi yang menjadi rancangan game; unggahan sederhana dicantumkan untuk desktop, lanskap, dan potret.

Field lain yang diterima adalah `subtitle`, `emoji`, `color`, `license`, `creation`, `releaseNotes`, `inspirationPrompt`, `makingOf`, `sourceRepository`, `sourceLocale`, `offlineSupported`, dan `instant`. PlayDrop yang menetapkan nomor versi.

## Pilih siapa yang bisa bermain

- Jangan sertakan `visibility` agar game baru mengikuti pengaturan akun kreator (Publik kecuali mereka memilih Tidak publik atau Pribadi); pembaruan mempertahankan audiens game saat ini.
- `"private"` menyimpan versi yang hanya bisa dibuka kreator, untuk pengujian. Terbitkan versi yang persis sama itu nanti dengan `publish_game_version`; jangan mengunggahnya lagi.
- `"unlisted"` menerbitkannya untuk siapa saja yang punya tautan, tanpa mencantumkannya; `"public"` menerbitkannya agar bisa ditemukan.

Ikuti permintaan pengguna Anda dan jangan pernah membuat game lebih terlihat daripada yang mereka maksudkan. Lihat [siapa yang bisa bermain](https://www.playdrop.ai/id/create/learn/distribution).

## Baca tanda terimanya

Tanda terima berisi `gameId`, `slug`, `version`, `status`, `visibility`, dan `url`, yaitu tautan versi tersebut untuk pemiliknya. Game publik dan tidak publik juga mendapatkan `shareUrl`, halaman game yang bertahan; berikan tautan itu kepada pengguna Anda. Untuk versi privat, berikan `url`. `instant` dan `instantReason` melaporkan kelayakan [Instan](https://www.playdrop.ai/id/create/learn/instant-games).

## Perbarui game

Panggil `list_games`, berikan `gameId` game, dan pertahankan `name`-nya. Kirim lagi HTML lengkap dan katalog mini lengkap: setiap unggahan adalah snapshot lengkap, dan field yang tidak disertakan tidak ada di versi baru. Tautannya tetap sama. Game yang pertama kali diunggah sebagai paket harus tetap memakai jalur paket, agar berkas dan fiturnya tidak hilang.

## Beralih ke paket nanti

Menambahkan simpanan cloud, papan peringkat, gambar listingan, atau server mengubah game menjadi paket. Itu adalah pembaruan biasa untuk game yang sama: pertahankan `name`, unggah dengan `prepare_catalogue_upload`, dan tetapkan `expectedCurrentVersion` ke versi saat ini dari `list_games`. Baca [pengemasan](https://www.playdrop.ai/id/create/learn/packaging).

## Panduan terkait

- [Terbitkan dari aplikasi AI Anda](https://www.playdrop.ai/id/create/learn/mcp-publishing): Cara agen AI menerbitkan ke PlayDrop lewat MCP: jalur sederhana dan jalur paket, pengujian privat, publish_game_version, pembaruan, batas, dan pemulihan.
- [Pengemasan dan .play](https://www.playdrop.ai/id/create/learn/packaging): Susun folder hasil build, ZIP, atau .play dengan catalogue.json di root, deklarasikan media listingan dan server, lalu unggah dengan prepare_catalogue_upload.
- [Visibilitas dan jangkauan](https://www.playdrop.ai/id/create/learn/distribution): Pilih siapa yang bisa membuka game PlayDrop, cara kerja default akun dan penerbitan versi, serta cara Boost, Tukar main, Instan, dan pencarian menarik pemain.
