scenario-game-ua-ads について
Scenario Game UA Adsは、Scenarioの素材やツールを使って、ゲームプレイ風のユーザー獲得広告を制作するスキルです。企画、ボード作成、動画、UI、合成、音声、完成品の検査までを扱い、ローカルのレンダリングや検証用スクリプトも備えています。
主な機能
- 01画面比率と秒単位の構成を計画
- 02ゲーム素材からボードを作成
- 03動画テイクの生成と検査
- 04UIと音声の合成
- 05完成した広告を検証
- 06ローカルの計画・検査スクリプト
活用シーン
- 01ゲームプレイ風のユーザー獲得広告を制作
- 02広告を複数のアスペクト比に展開
- 03納品前にレンダリング済み動画を検査
MCP 対応
Scenario MCPを使って、検索、素材の操作、アップロード、動画合成を行います。アップロードと合成はMCP呼び出しで実行し、ローカルのレンダリングと検査には付属スクリプトを使います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-game-ua-adsインストール後、Claude Code で/scenario-game-ua-adsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/concepts.mdinputs.mdplatforms.mdui-layers.mdscripts/build_passes.pycheck_master.pycheck_take.pymake_patch.pyput_parts.pyrender_tracks.py詳細
UA ゲーム広告
概要
ゲームプレイのように見える UA 広告です。Scenario がボードアートと動きを生成または調整し、ゲーム UI の各要素をその上に合成します。納品物は指定された長さと形式で、最終レンダリング品質のものとします。ドラフトや単一のクリップではありません。各ビートの基準は、ゲームを知らない人が「本当に遊んでみたい」と思うことです。商品写真から広告を作る場合は scenario-video-ads を、完成した広告のフック、CTA、エンドカードのバリエーションを作る場合は scenario-ad-variants を使用します。接続、検出、復旧については scenario に従ってください。ここに記載されている関連スキルが利用可能なスキルにない場合は、skill_get(Scenario MCP)で読み込むか、ユーザーにインストールを依頼してください(https://github.com/scenario-labs/skills#install)。無人実行の場合は、ツールのスキーマに従って進め、不足している点を明記してください。
ブリーフ:一度だけ確認してから実行
一度のやりとりで確認し、その後は中断せずに実行します。
- コンセプトまたはゲームのコアループと、ゲーム名。指定がない場合は架空の名前を考えます。
- プラットフォームと掲載場所。これらによってアスペクト比、安全領域、推奨尺、音声が決まります(プラットフォーム)。
- 正確な長さ(秒単位)。指定がない場合は掲載場所の推奨 UA 尺を使用します。
- ゲーム独自の素材(任意。すべて指定可能)(入力):スクリーンショット、画面録画またはゲームプレイ動画、キャラクターやアイテム、アプリアイコン、ロゴ、UI キット。
- カラーパレットと予算上限。
ゲーム独自の素材がある場合、広告はそのゲームらしい見た目とプレイ感にする必要があります。スクリーンショットをもとにボードを作り、キャラクターの見た目を忠実に再現し、エンドカードには実際のアイコンを使用します。ゲームプレイを独自に考案するのは、ユーザーから素材が提供されない場合に限ります。
最初の課金実行の前と、再撮影の前に、有料ペイロードごとに dry_run を実行します。予算上限を超える場合は、テイクを減らすか、ユーザーに確認してください。無人実行で予算上限がない場合は、計画と見積もりの段階で止めてください。
クイックリファレンス
| 段階 | 内容 | 関連スキル |
|---|---|---|
| 1. 計画 | アスペクト比、安全領域、秒単位のタイムライン(コンセプト) | |
| 2. ボード | 納品時のアスペクト比で、各メカニクスにつきテキストなしの静止画を1枚作成。ユーザーの素材を使用 | scenario-game-assets、scenario-image |
| 3. クリップ | 静止画から最終品質のテイクを作成するか、ユーザーの映像をカットする | scenario-video、scenario-seedance |
| 4. ロジック | テイクごとのタイミングシート、アクションごとのクロップシート、エンドフレーム、動きの確認 | |
| 5. UI | フック、HUD、手、バースト、エフェクト、エンドカード(UI) | scenario-text-overlay |
| 6. 編集 | 正確な長さとキャンバスでタイムラインを1本にまとめる | scenario-video-assembly |
| 7. 音声 | 各イベントの効果音と、別の音楽トラックを用意し、編集時にミックスする | scenario-audio |
| 8. 確認 | プローブ、音量レベル、2 fps のシートを確認し、その後に却下リストを適用する |
長さとフォーマット
| 長さ | セットアップまたは失敗 | 見せ場 | エンドカード |
|---|---|---|---|
| 6 s | なし。フックを見せ場に重ねます | 4.5 s | 1.5 s |
| 10 s | 3.5 s | 4.5 s | 2 s |
| 15 s | 5 s | 6 s | 4 s |
| 20 s | 5 s | 6 s、その後5 sのエスカレーション | 4 s |
| 30 s | 失敗と成功を2ラウンド繰り返します | または3段階のエスカレーション | 4 s |
フッテージがある場合は、その展開に応じてこの区分を置き換えます(inputs)。
- 各アスペクト比は、それぞれの納品キャンバス上でネイティブに作成します(9:16は1080x1920、4:5は1080x1350、1:1は1080x1080、16:9は1920x1080)。別のアスペクト比の素材をトリミングして流用しないでください。
- 配置先の各領域を考慮して、ボードの静止画を設計します。背景はプラットフォームのUIの下にのみ置き、HUDとフックはそのすぐ下に配置し、重要なアクションはすべてセーフゾーンの中央に置きます。テキストを含むオーバーレイと、タップ対象(ピンのリングやレバーなど)はすべてセーフゾーン内に収め、TikTokの右側の操作バーに重ならないようにします。撮影前に、ボードの静止画上で対象の位置を確認してください。
- 複数の配置先がある場合は、同じ計画をもとに、アスペクト比ごとにボードを1つ作成し、組み立てを1回実施します。
視聴者にプレイしたいと思わせる
ボードが正しく変化するだけでは、何も訴求できません。各コンセプトは、そのファンタジー(力、ひらめき、秩序、成長、救助)と、conceptsに記載された楽しさの要素を軸に計画します。
- 入力内容が2 s以内に伝わるようにします。手とピースが連動して動き、ゲームが即座に反応します。
- どの入力にも、モーションそのものの中で気持ちのよい反応を示します。期待感、接触、反応を描きます。ピースが縁で揺れ、傾いてから回転しながら落ちる。積み重ねたピースが揺れて、落ち着く。クリップのプロンプトに、ビートごとに記述します。
- 限界を見せてから、それを乗り越えます。大きすぎるオブジェクトが縁をガタガタと通り過ぎ、穴が広がるまで続きます。
- ファンタジーの主役となるもの(ボール、車、穴など)は、スマートフォンの画面サイズでも見える大きさにします。フレーム幅の約4%を目安にし、高速で動く場合は軌跡を付けます。大きくなる対象は、各ビートで計画したサイズ曲線に沿って拡大し、フレームの約3分の1の大きさを保てるよう、カメラを引きます。
- 段階的に盛り上げます。各ビートは前より大きく、または速くし、失敗しかける場面、誰も予想しなかった巧みな動き、そしてゲームプレイの終盤に最大の見せ場を入れます。
- モデルがメカニクスを崩せなくなるまで簡略化しないでください。段階をつないで、奥行きのあるメカニクスを作ります。各ステップで状態を表す静止画を1枚用意し、毎回直前の静止画を編集します。各テイクは、見える動きを1つだけ使って、ある状態から次の状態へつなぎます。または、切り出したパーツからスクリプトで組み立てます(下記参照)。
広告を成立させるルール
- 最初のフレームで前提を伝えます。盤面、フックとなる一言、危機的状況を見せます。0.0秒で音を鳴らし、0.3秒までに動きを始め、ロゴのイントロは入れません。
- 盤面モデルや動画モデルに、静止画や動画内の文字、数字、ゲートの値、ボタン、手を描かせてはいけません。該当箇所は空けておき、合成します。
- 仕掛けは1つに絞って、段階的に盛り上げます。カウンターは4〜5段階で目に見える形でのみ増やし、それぞれの増加量は発生イベントに比例させます。1回の獲得でレベルが30から99に跳ね上がることはありません。
- 失敗を匂わせる演出は、1枚の静止画から作る2つのテイクで構成します。間違った動きとその結果を見せたあと、正しい動きを見せます。勢いのある言葉のところでカットします。
- 1テイクにつき、最終品質でカメラを固定します。要素の多い盤面に寄ってはいけません。パイプ、ゲート、スロットが歪みます。長めのテイクを依頼し、きれいな冒頭部分を使います。
- ゲームのロジックを守る必要があります。プレイヤーは不正にすぐ気づきます。
- 動画モデルは障害物を無視します。閉じたピンがあっても、溶岩やコインが通り抜けます。各経路につき、1回の目に見える操作を設計し、テイク内で開かないピン、ゲート、壁は使いません。
- 直線的な落下やレーンを優先します。パイプや曲がり角があると、そこを通らない近道が生じます。
- プレイヤーの動きには、盤面上の理由が必要です。スワイプで収集アイテムに届く、または危険を避けるようにします。収集アイテムが一直線に並んでいると、スワイプする意味がありません。
- すべての障害物の状態(「コインはガラスの内側に留まる」など)と、動かないものをプロンプトに明記します。
- 固定された終了状態は、それ専用の静止画として、同じ数値を保ったまま盤面から編集して作り、テイクの最終フレームに固定します。固定するとカメラもロックされます。編集によってマスク外のピクセルも変わることがあるため、マスク部分のみをソースに貼り付けます。
- 2つのピースの交換や自由落下など、モデルではきれいに表現できない厳密な動きは、静止画からレイヤーとして作ります。モデルでアニメーションさせるのは、その結果だけです。
- 生成したテイクの上にローカルで描いた障害物(線やパッチ)は、すべてのフレームでその内部をマスクチェックします。描いたドームの内側に蜂が74フレーム留まった例があります。
- 動きのすべてを正確にする必要がある盤面(タイルマッチ、並べ替え、マージ、ねじパズル)は、全体をスクリプトで作ります。盤面の静止画またはユーザーのスクリーンショットからピースを切り出し、レイヤーとしてアニメーションさせます。ルールは正確に保ち、動画モデルに追加させるのは背後の環境モーションだけにします。
- 組み立てには、Scenarioで唯一の決定論的コンポジターである
model_scenario-compose-videoを使用するため、そのIDは固定です(searchで確認します)。 - UIレイヤー上で動くものはすべて、動きの範囲に合わせてクロップした、透明なProRes 4444の
.mov1本にまとめます。コマ送りの画像レイヤーやWebMアルファは使いません(ui)。 - サウンド:目に見えるイベント(タップ、衝突、獲得、カウンターの増加)ごとに、そのフレームに効果音を入れ、音楽より大きくします。無音のカットに動画から音声を生成する処理をかけると、環境音は加わりますが、各イベントの音は拾いきれません。環境音パッドを禁止してベッドを別途生成し、盛り上がりが見せ場に重なるよう位置を調整します。
- 合成では最大50レイヤー(音声は49レイヤーまで)を扱えます。効果音が密集する箇所は、事前に1つのステムにミックスします。リミッターはないため、組み立てはパスごとに行います。
- 映像:クリップとオーバーレイをミュートして、無音のマスターを作ります。
- 音声:無音のマスターを唯一の動画レイヤーとして配置し、その下にすべての音声レイヤーを置き、ミリ秒単位でタイミングを合わせます。
- ラウドネス調整:音声パスの結果が-16〜-14 LUFSに収まらない場合、またはピークが-1 dBTPを超える場合のみ実行します。
model_scenario-audio-extractにnormalizeLoudness: trueを指定し、その後、無音のマスターとそのトラック1本を使います。Scenarioはこれらの作業ごとに1つのツールを提供しているため、IDは固定です。
- 見せ場で終えたあと、計画段階でデザインしたエンドカードを表示します。フックと同様に、そのゲームの世界観に合わせます。たとえば、レベルクリア画面の「次のレベル」の位置にラベルを置く、次のより難しい盤面を「CAN YOU SOLVE IT?」の下に固定して見せる、またはヒーローにラベルを持たせる方法があります。ゲーム内の言葉を使います。SAVE HIM、DIG NOW、TRY LEVEL 2(ui)。ソーシャルフィードでは偽のボタンは禁止されているため、行動喚起はラベルにします。ボタンを使えるのは、クリック可能な広告ネットワークのカードだけです。
スクリプト
エージェントはこれらを Python 3.11+、Pillow 13、numpy 2、ffmpeg を使ってローカルで実行します。レンダリングとプランニングを行い、アップロードと合成の実行は MCP 呼び出しのままです。それぞれ JSON 仕様を受け取ります。フィールドの一覧は --help で確認できます。
- render_tracks.py:手、カウンター、報酬、バースト、星をクロップ済みの ProRes 4444 トラックとしてレンダリングし、合成に正確なタイミングとセーフゾーンの警告を含む
layers.jsonも出力します。 - build_passes.py:
simulateはキューシートをローカルでミックスし、ラウドネス、トゥルーピーク、各ヒットのマージンを表示します。pictureとsoundは、2 つの合成用ペイロードを書き出します。 - check_master.py:ダウンロードしたマスターについて、キャンバス、長さ、ラウドネス、トゥルーピーク、暗いフレーム、2 fps のシート、各ヒットの開始位置をチェックします(
--simはミックスを基準にチェックします)。 - put_parts.py:
upload_assetが返した署名付き S3 パート URL にファイルを PUT し、upload_asset_completeに必要な内容を表示します。 - check_take.py:各テイクの組み立て前にロジックをチェックします。
motionにはカメラの固定が必要です。 - make_patch.py:カウントと矛盾する静止した要素を隠すクリーンプレート画像レイヤーを作成し、それが覆う各テイクをチェックします。
例:ピンを抜いて救出する連続ステージ、15 秒、TikTok 9:16
- プラン:1080x1920、TikTok のセーフゾーン、HUD は y 280 から。間違ったピンを抜くところにフックを重ねます。金が溶岩に溶け、2.5 秒で FAIL、巻き戻します。3.8 秒で水のピンを抜くと、パンチインの下で溶岩が石の坂道になります。5.8 秒で金のピン、8.3 秒で檻のピンを抜き、鉱夫が坂道を駆け上がってカートに入ります。エンドカードは 11.2 秒から 15 秒までです。
- 絵コンテ:洗練されたカジュアルゲーム風のアートには、画像モデルを
recommendします。2 つの候補の順位が僅差なら、同じプロンプトで両方を実行し、より良い方を採用します。文字のないガラス室。金色のピンに水と金、その下に溶岩、横には動けない鉱夫、空のカートを配置します。その後、各ステップにつき 1 枚の状態画像を、直前の画像を編集して作成します。石の坂道、カートの中の金、カートの中の鉱夫です。 - クリップ:まず
model_schema_getを実行し、次にステップごとに 1 回ずつ、wait: false、最終ティア、連続する状態に合わせて固定した最初と最後のフレーム、それぞれ 1 つだけ見える動きを指定して実行します。失敗テイクは絵コンテから開始します。その後、すべてのジョブ ID に対してjobs_waitを実行し、pending_job_idsを再試行します。parallel-custom-jobsの 429 ではジョブが作成されませんでした。ウェーブの後に再起動します(scenario)。 - ロジック:フレームごとではなく、各テイクで
check_take.pyを使います。タイミングにはsheet、水が溶岩に当たる様子をネイティブ解像度で 8 枚に分割して確認するにはaction --at 4.5 --box 270 600 540 540、カウントにはendsを使います。motion --allowにチャンバーのボックスを指定し、それ以外の動きを検出します。閉じたピンもガラスも通過しません。蒸気も例外ではありません。 - UI は
scenario-text-overlayで作成します。フック、レベルバッジ、カウンターの値、FAIL、RESCUED! を表示します。エンドカードでは、側面にアイコンが付いたカート全体を登場させ、その後ろに次の鉱夫を動けない状態で配置し、「FREE HIM NEXT」というラベルを付けます。render_tracks.pyは各リングに手を伸ばす動き、カウンターへ飛ぶコイン、星をレンダリングします。 - 映像パス:
build_passes.py pictureで各テイクをstartTimeに配置し、fit: "cover"、mute: true、オーバーレイを上に重ね、durationMode: "custom"、duration: 15を指定します。 - 音声パスは無音のマスターに対して行います。各ピンを抜く音、溶ける音、蒸気、コイン、カウンターが増える音、跳躍、エンドカードにヒット音を付け、報酬の場面で盛り上がるようにベッド音を敷きます。まず
simulateを実行し、ピークが -1.8 dBTP 付近になるまでトリミングします。 - チェック:
check_master.py --simを実行し、各アクションにつき 1 枚のタイル状クロップシートでリジェクトリストを確認します。
却下リスト
- 読み取れるプレイヤー入力がないままボードの状態が変わる場面、または入力に対して納得できる反応がない場面。
- 閉じたピン、ゲート、壁、ガラス、床をすり抜けるもの、または容器から飛び出すもの。縮小シートではなく、アクションをタイル状に切り出したネイティブ解像度の画像で判定します。
- その場面で動かしていないものが動くこと。群衆が一斉に反応する、ヒーローのコピーがもう一体現れる、別の場所のピースがずれる(
check_take.py motion)。 - ジェスチャーに対応するアクションがない、ジェスチャーを伴わないアクション、または画面表示と食い違うカウント。
- 勝利してもボード上にピースが残ること(車が1台停まったままなのに「クリア」と表示されるなど)。HUDの下に半分隠れている場合も含みます。
- タイマーやメーターが実際の秒数より速く進むこと。
- キャラクターやアイテムがユーザーの素材と一致しない、またはボードがユーザーのスクリーンショットと合わなくなること。
- 配置のセーフゾーンから外れたUI、要素の重なり、または幅1080の画面で72 px未満のHUDの数字。
- カット時に黒いフレームが入ること。最後のクリップが終わると同時にエンドカードを開始し、フェードは入れません。
- 別のゲームにも使い回せるエンドカード。広告ごとに同じレイアウトと「PLAY NOW」を使うこと。
- テイク間でボードがずれる、またはテイクの終わり近くでピースが歪むこと。早めにトリミングし、ピン留めしたテイクでは1秒早く静止させます(蒸気が消え、ピースが動かなくなった状態)。
- ヒットのないイベント、フレームから0.1秒以上ずれたヒット、最初の1秒が無音のイベント、またはピークが-1 dBTPを超えるイベント。
- 画面上に原因となるイベントがないのに、カウンターが進む、報酬が出る、バーストが発生する、または星が現れること。
よくあるミス
- 動くオブジェクトに固定したラベルが、そこからずれていきます。静止する場面に表示するか、HUDを使ってください。
- 合成時にキャンバス全体のオーバーレイを拡大すると、隅を基準に拡大されてフレームからはみ出すことがあります。最終サイズでレンダリングしてください。
- 作り上げたゲームプレイに実在するゲーム、スタジオ、キャラクターの名前を出したり、類型キャラクターをそれらに似せたりすること。怒ったドライバーが、赤い帽子に口ひげ、青いシャツ姿で戻ってくるようなケースです。独自の見た目を指定し、アニメーション化する前に静止画を確認してください。知的財産権の問題でフラグが立ったテイクは、より一般的な表現に書き換えて再実行してください。それでもフラグが立つ場合は、静止画からレイヤーを使ってその場面を組み立ててください。