---
type: explanation
title: 自分のゲームを動かす
summary: カスタムゲーム開発とは何か、自分のゲームを届ける 2 つの方法（手動スロットかセルフホストの iframe）、そしてダッシュボードが加えるもの（スキーマ、プリセット、そしてカスタムゲームをゲートさせるリプレイアーティファクト）。
---

カスタムゲームは、[マーケットプレイス](/marketplace) のゲームの代わりに Caputchin のウィジェットで使う、**あなた** が作ってホストするゲームです。ほかの誰もそれをインストールできず、GitHub のトピックも公開のステップもなく、あなたがコードを保ちます。このセクションは、そのパスの、詳細で自分で作るガイドです。（*誰でも* 埋め込めるゲームを出荷したいなら、それは [マーケットプレイスゲーム開発](/docs/marketplace-game-development/overview)、別のパスです。）

カスタムゲームを届ける方法は 2 つあり、それらは本当に異なる、異なる限界を持つ面です。必要なもので選んでください：

```mermaid
flowchart TD
  Q{What do you need}
  Q -->|Just my own DOM in the widget,<br/>no verification gate| M[Manual mode]
  Q -->|A real game that can GATE verification<br/>server-replayed| S[Self-hosted iframe game]
  M --> MX["&lt;caputchin-game trigger=manual&gt;<br/>you slot your own markup<br/>drive pass() / fail() yourself"]
  S --> SX["a JS bundle using @caputchin/game-sdk<br/>hosted by you, loaded via game-src<br/>+ a replay artifact uploaded to the dashboard"]
```

## 手動モード：自分の DOM、ゲートなし

[手動モード](/docs/custom-game-development/manual-mode) は軽量な選択肢です。`<caputchin-game>` に `trigger="manual"` を設定し、その中に自分のマークアップを置き、訪問者が成功または失敗したときに、自分のコードから要素の `pass()` / `fail()` メソッドを呼びます。iframe もゲーム SDK もありません。ウィジェットは、そのレイアウトのシェルと、あなたのマークアップの周りの検証の配管を渡すだけです。

トレードオフ：手動モードのラウンドは **サーバーでリプレイできない** ので、手動モードのゲームは **[ゲームゲート](/docs/site-keys/games) を満たせません**。それは、ゲートされていないキー（proof-of-work の検証、あなたのインタラクションは UX として）でのみ、または検証なしのゲームのみで動きます。リプレイが必要なセキュリティゲートのためではなく、ブランド化されたインタラクションのために使ってください。

## セルフホストの iframe ゲーム：ゲートできる

[セルフホストのゲーム](/docs/custom-game-development/self-hosted-game) は、本物のサンドボックス化されたゲームです。ウィジェットの iframe で走り、SDK のブリッジ越しにホストと話し、サーバーが再実行できる **トレース** を報告する、`@caputchin/game-sdk` パッケージに対して作られた JavaScript のバンドルです。あなたがバンドルを自分でホストし、`game-src` 属性でウィジェットをそれに向けます。

ラウンドがリプレイ可能なトレースを生むので、セルフホストのゲームはサイトキーを **ゲートできます**。ただし、Caputchin に [リプレイアーティファクト](/docs/custom-game-development/replay-and-gating)、つまりサーバーが判定を再導出するために走らせる、ゲームロジックの小さなヘッドレスビルドを渡したときだけです。そのアーティファクトがアップロードされてセルフチェックを通るまで、カスタムゲームは **リプレイ不可** と表示され、ゲートできません。

## ダッシュボードが加えるもの

マーケットプレイスのゲームは、そのカスタマイズフィールドを宣言する `caputchin.json` マニフェストを出荷します。カスタムゲームにはマニフェストがないので、**あなたがそれらのフィールドをダッシュボードで宣言します**。あなたが選ぶ id で [カスタムゲームを登録](/docs/game-customization/custom-games) し、軸（言語、スキン、構成）ごとにそのフィールド [スキーマ](/docs/custom-game-development/dashboard-schema) を定義し、それに対してプリセットを作ります。そこから、マーケットプレイスのゲームとちょうど同じように、同じプラン階層で解決されて適用されます。

なので、完全なカスタムゲームの面は：

| 部品 | 場所 | 何に必要か |
|---|---|---|
| ゲームそのもの | あなたのコード、あなたのホスト | 常に |
| 配信 | `trigger="manual"` スロット、または `game-src` iframe | 常に |
| フィールドスキーマ + プリセット | ダッシュボード（あなたがスキーマを定義） | 言語 / スキン / 構成のカスタマイズ |
| リプレイアーティファクト | ダッシュボードのアップロード | 検証をゲートする（セルフホストのみ） |

## あわせて読む

- [手動モード](/docs/custom-game-development/manual-mode)：自分の DOM をスロットし、pass/fail を駆動する。
- [セルフホストのゲーム](/docs/custom-game-development/self-hosted-game)：SDK でリプレイ可能な iframe ゲームを作る。
- [リプレイとゲート](/docs/custom-game-development/replay-and-gating)：カスタムゲームをゲートさせるアーティファクトをアップロードする。
- [ダッシュボードスキーマリファレンス](/docs/custom-game-development/dashboard-schema)：カスタムゲームのために定義するフィールドスキーマ。
- [カスタムゲーム](/docs/game-customization/custom-games)：顧客側からの、登録とホスティング。
