Skip to content
cccskills
FreePublished on GitHub

2d-game

窓際族物語の2Dゲームを新規作成し、Seedance(CapCut)で制作した動画をオープニング/イベントのカットシーンとして組み込むワークフロー。ユーザーから2Dゲームの制作を頼まれたとき、添付動画(mp4)をゲームに組み込む・差し替えるよう頼まれたとき、カットシーンの追加・修正を頼まれたときに必ず使用する。

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (3)

  • SKILL.md10.1 KB
  • templates/cutscene.css722 B
  • templates/cutscene.ts2.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

2Dゲーム制作ワークフロー(Seedance動画カットシーン対応)

「オープニング動画 → ゲーム開始 → イベント動画 → ゲームの続き」のように、Seedance製の動画クリップをカットシーンとして挟める2Dゲームを作る。動画はユーザーがCapCut(Seedance)で制作して添付ファイルとして渡してくる。動画が届く前でもゲーム本体は先に作れる設計にする(後述のとおり、未配置の動画は自動スキップされる)。

このスキルには2つのモードがある。依頼内容に応じて使い分ける:

  • モードA: 新規2Dゲーム作成 — ストーリー/企画を受け取ってゲーム一式を作る(動画は同時でも後日でもよい)
  • モードB: 添付動画の組み込み・差し替え — 既存ゲームに動画を配置する(→ 手順1だけ実行すれば済むことが多い)

前提となる参照ファイル

  • 世界観: 01_WORLD/WORLD_BIBLE.md(禁止事項: ブラック企業描写、いじめ、パワハラ、鬱展開、グロ描写)
  • 正史年表: 01_WORLD/STORY_TIMELINE.md
  • キャラクター設定: 02_CHARACTERS/*.md(各キャラのNG変更=デザイン上変えてはいけない要素はゲーム内表現でも厳守)
  • 2Dゲームのテンプレート実装: 08_ROMANCE_NOVEL_GAME/(Vite + TypeScript、依存ゼロ、データ駆動シーン+ステートマシン)
  • 2D用アート素材:
    • キャラ参照画像: 02_CHARACTERS/*.jpg|png
    • 全キャラの前後左右ボクセルレンダリング(スプライトに流用可): 04_GAME_ASSETS/voxel/model_source/previews/
    • インラインSVGでキャラを描く場合の手本: 08_ROMANCE_NOVEL_GAME/src/avatar.ts(NG変更要素をコメントで明記した上でSVG化している)

1. 動画アセットの受け入れ(添付mp4を受け取ったら必ずこの手順)

正典置き場と命名

  • 完成動画の正典置き場は 04_GAME_ASSETS/videos/<game-slug>/(<game-slug>はgames.jsonのidと同じkebab-case)。添付ファイルはまずここへコピーする。ゲームディレクトリに直接置かない(ボクセルGLBと同じ「正典+symlink参照」方式)。
  • ファイル名は役割ベースの英語小文字: opening.mp4 / event_<slug>.mp4(例: event_boss.mp4)/ ending.mp4。
  • ポスター用静止画(任意)は <name>_poster.png。Seedanceキーフレーム(03_SCRIPTS/<NN>_<slug>/clipN_start.png)の流用を推奨。

Web向けサイズ・コーデック確認(コミット前に必ず)

CapCut書き出しはサイズが大きいことがある。まず確認:

ffprobe -v error -show_entries stream=codec_name,width,height -show_entries format=size,duration -of default=noprint_wrappers=1 <file>.mp4
  • 目標: H.264 + AAC / 長辺1280px以下 / 1クリップ10MB以下(GitHub Pages配信のため)。超えていたら再エンコードする:
ffmpeg -i input.mp4 -c:v libx264 -profile:v high -pix_fmt yuv420p -crf 26 -preset slow -vf "scale='min(1280,iw)':-2" -c:a aac -b:a 128k -movflags +faststart output.mp4
  • すでに条件を満たしていれば再エンコードしない(世代劣化を避ける)。
  • ffmpegが無い環境ではそのまま使ってよいが、25MB超のクリップはユーザーに圧縮を相談する。
  • Git LFSは使わない(Pages CIのcheckoutがLFSファイルを取得しないため、ビルドが壊れる)。通常コミットで管理する。

ゲームからの参照(symlink)

ゲームのpublic/videos/から正典置き場への相対symlinkで参照する:

mkdir -p <NN_GAME_DIR>/public/videos
ln -s ../../../04_GAME_ASSETS/videos/<game-slug>/opening.mp4 <NN_GAME_DIR>/public/videos/opening.mp4
  • symlinkは実体ファイルが存在してから張る。 壊れたsymlinkがpublic/にあるとvite buildが失敗する。
  • 動画がまだ届いていない場合はsymlinkを張らず、コード側だけ組み込んでおく。プレイヤー(cutscene.ts)は404時に自動スキップするので開発・デプロイは止まらない。後日動画が届いたら「正典置き場にコピー → symlink」の2手で組み込み完了(コード変更不要)。

2. 新規ゲームの雛形(モードA)

  • ディレクトリ名: リポジトリ直下の既存NN_連番の最大+1で NN_UPPER_SNAKE(例: 10_XXX_GAME)。
  • スタックは08_ROMANCE_NOVEL_GAMEと同じ Vite + TypeScript(依存ゼロ) を基本とする。アクション性が高くCanvas描画が大量に必要な場合のみ、エンジン追加(PixiJS等)を検討してよいが、まず依存ゼロで検討する。
  • 必須ファイル構成:
    • package.json — 08_ROMANCE_NOVEL_GAME/package.jsonを踏襲。"build": "tsc --noEmit && vite build" は必須契約(Pages CIが実行する)。
    • vite.config.ts — base: "./" 必須(Pagesのサブパス配信のため)。server.portは.claude/launch.jsonの既存最大ポート+5、strictPort: true。
    • tsconfig.json, .gitignore(node_modules / dist / .vite / *.log / .DS_Store)— 08からコピー。
    • index.html — lang="ja"、モバイル用viewport(user-scalable=no)、OG/Twitterメタ、public/og.pngまたはog.svg。
    • src/main.ts, src/game.ts(ステートマシン), src/types.ts, src/style.css ほか。
    • src/cutscene.ts と style.css へのカットシーン用CSS — このスキルのtemplates/cutscene.tsとtemplates/cutscene.cssをコピーする(voxel-character-kitと同じ「各ゲームにコピー」方式。symlinkにしない)。
    • README.md(日本語。遊び方・エンディング条件・技術メモ。08のREADMEが手本)。

3. カットシーンの組み込みパターン

ステートマシンの状態遷移に await playCutscene(...) を挟むだけでよい。典型形:

import { playCutscene } from "./cutscene";

// タイトル画面の「はじめる」タップハンドラから呼ぶ
private async start(): Promise<void> {
  // ユーザー操作の直後なので音声付き自動再生が通る
  await playCutscene(this.root, {
    src: "videos/opening.mp4",
    poster: "videos/opening_poster.png",
  });
  this.phase = "play";
  this.render();
}

// ゲーム中のイベント発火時(ボス出現・章の切り替わり等)
private async onChapterEvent(): Promise<void> {
  await playCutscene(this.root, { src: "videos/event_boss.mp4" });
  this.phase = "play2"; // ゲームの続きへ
  this.render();
}

守るべきポイント:

  • オープニング動画は必ずタイトル画面のタップ後に再生する。 ページ読み込み直後の自動再生はブラウザにブロックされ、音声も出ない。タップ起点なら音声付きで再生できる。
  • ゲーム中のイベント動画も、直前にユーザー操作(選択肢タップ等)がある遷移に置くのが安全。操作なしで発火する場合でもcutscene.tsが「タップで再生」にフォールバックするので破綻はしない。
  • スキップは常時有効(skippable: falseは演出上どうしても必要な場合のみ)。
  • 動画は16:9想定。縦画面ではレターボックス表示になる(cutscene.cssのobject-fit: contain)。
  • srcは"videos/opening.mp4"のように先頭スラッシュなしで書く(base: "./"のため)。

4. 登録チェックリスト(新規ゲーム時に全部やる)

  1. GAMES_PORTAL/games.json にエントリ追加(idはkebab-case、buildScript: "build"、distDir: "dist"、outputDir: "games/<id>"、imageはgames/<id>/og.png等、accent、controls)。
  2. .github/workflows/deploy-games-pages.yml:
    • on.push.paths に "<NN_GAME_DIR>/**" を追加。
    • 動画を組み込むゲームが初めての場合は "04_GAME_ASSETS/videos/**" も追加(動画差し替えで再デプロイさせるため)。
    • cache-dependency-path に <NN_GAME_DIR>/package-lock.json を追加。
  3. .claude/launch.json にdevサーバ設定を追加(npm run dev --prefix <NN_GAME_DIR>、vite.config.tsと同じポート)。
  4. ルートREADME.md の「ゲーム」一覧に1行追加。
  5. npm install を実行して package-lock.json を生成・コミットする(CIはnpm ciを使うため必須)。

5. IPルール(全制作物共通)

  • WORLD_BIBLE.mdの禁止事項(ブラック企業描写、いじめ、パワハラ、鬱展開、グロ描写)を厳守。Story Formula(変なことを始める→巻き込まれる→少し騒ぎになる→最後は笑顔)に沿ったトーンにする。
  • 各キャラのNG変更(そば屋の白い仮面/たこさんの触手/とーくんのアロハ・帽子・ウクレレ等)は2D表現でも維持する。キャラを描くコードには、08のavatar.tsのようにNG変更要素をコメントで明記する。

6. 動作確認(完了条件)

  1. npm run build が通る(tsc --noEmit含む)。
  2. .claude/launch.jsonのdevサーバで起動し、以下を確認する:
    • タイトル→オープニング動画→ゲーム→イベント動画→ゲーム続き、の一連フローが動く。
    • 動画のスキップ(タップ)が効く。
    • 動画を未配置にした状態でも自動スキップでゲームが進む(動画が後日届く運用の保証)。
    • モバイル幅(375px)でレイアウトが崩れない。
  3. 動画をコミットする場合はファイルサイズを再確認(1クリップ10MB目安、25MB超は要相談)。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Turn character reference images into reusable, rigged voxel 3D assets for Blender and Three.js through an imagegen turnaround and user-approval workflow. Use when Codex needs to preserve a character's likeness across front, side, and back views; create or revise Minecraft-like cube-headed models; prevent missing rear hair or clothing; split features between block geometry and face/clothing textures; generate GLB and editable .blend files; add walk/smash-compatible rigid-part pivots; or diagnose why a voxel conversion is not recognizable.

The English summary is being prepared. Showing the original description.

sobaya-0141/Seedance_Madogiwa4Updated Oct 20, 2026

窓際族物語の動画生成工程(/local-videoのステップ7)だけをGoogle Colab(CUDA GPU)で実行する派生ワークフロー。ローカルMacにCUDA GPUが無くMiniMax H3を実行できないとき、ユーザーから「Colabで動画を作って」「H3をColabで回して」「LTXで動画を作って」と指示されたときに必ず使用する。台本・音声・キーフレーム生成・画像検証(ステップ1〜6)と最終結合(ステップ8〜9)はローカルで行い、動画生成だけを同梱ノートブック(H3=h3_colab.ipynb / LTX-2.5=ltx25_colab.ipynb)でColabに切り出す。セリフ(wav駆動リップシンク)はH3、セリフなしI2VチャプターはLTX-2.5も選べる。無料T4は配管検証用、本番生成はL4/A100(Pay As You Go / Colab Pro)。

The English summary is being prepared. Showing the original description.

sobaya-0141/Seedance_Madogiwa4Updated Oct 20, 2026

動画制作スキル(/seedance・/local-video)で生成されたキーフレーム・参考画像を台本(script.md)と突き合わせて検証するワークフロー。プロンプトどおりの内容になっているか、小道具の状態(ビールの残量等)や機構小物の位置(ドアノブ・蝶番)が物理的に正しいか、場面の時間帯・天気が急変していないか(昼→夜ジャンプ等)をQwen3-VL(Ollama)とClaudeの目視の二重チェックで検証する。ユーザーから「画像を検証して」「キーフレームをチェックして」と指示されたとき、キーフレーム生成後の検証工程を実行するときに必ず使用する。

The English summary is being prepared. Showing the original description.

sobaya-0141/Seedance_Madogiwa4Updated Oct 20, 2026

窓際族物語の動画をクラウドを使わずフルローカルで生成するワークフロー(MiniMax H3 + ComfyUI)。ユーザーから「ローカルで動画作成して」「ローカルLLMで動画を作って」と指示されたとき、MiniMax H3での動画生成・修正を頼まれたときに必ず使用する。台本→Irodori-TTS/VOICEVOX音声→draw-things-cliキーフレーム一括生成→Qwen3-VL(Ollama)による画像検証→チャプター毎のH3動画生成→ffmpeg結合まで全工程をローカルで完結させる。

The English summary is being prepared. Showing the original description.

sobaya-0141/Seedance_Madogiwa4Updated Oct 20, 2026

Madogiwa StudioのRemote Web MCPを使い、窓際族物語のギャラリー、記事、エピソード、生成バージョン、使用モデル、登場メンバー、Seedanceプロンプト、入力画像・参照音声・資料、YouTube動画IDと公開状態を登録・確認する。ユーザーがMadogiwa Studioへの登録、公式サイトコンテンツ編集、動画アップロード、プロンプト同期、入力素材管理、Studio ID確認、MCP接続や同僚環境への導入を頼んだときに使用する。

The English summary is being prepared. Showing the original description.

sobaya-0141/Seedance_Madogiwa4Updated Oct 20, 2026

窓際族物語の動画を、チャプター毎のキーフレーム画像を作らずに「プロンプト+キャラクターシート+セリフ音声」だけでMiniMax H3(R2V)に生成させるワークフロー。ユーザーから「画像なしで動画を作って」「キーフレームなしで動画を作って」「シートだけで動画を作って」と指示されたときに必ず使用する。大まかな指示→チャプター分割案→チャプター毎の動きを人間に確認→全チャプター確定→プロンプト作成の順で進め、確定前にプロンプトを書かない。画風の注意文はチャプターに映るものだけを最小限で書き、モブキャラはラン専用のキャラクターシートを作って渡す。動画生成の実行先は/colab-video(Colab)または/local-videoステップ7(ローカルCUDA)。

The English summary is being prepared. Showing the original description.

sobaya-0141/Seedance_Madogiwa4Updated Oct 20, 2026

See all skills by sobaya-0141

Report a problem with this skill