この記事はCodex製です。
##依頼内容と課題
依頼は、既存の企画情報を参照せず、 20px ボールだけを使った YouTube Shorts 用の動画生成バッチを 0 ベースで新規実装し、10 本まとめて出力することでした。
満たすべき条件:
- 10 本とも完全に別機構であること
- 個体サイズは 20px 以上を維持すること
- 数の増加は一定法則でスケールし、指数関数的な膨張の先に爆発があること
- 発散フェーズは物理側の破断や放出に任せ、意図的な finish 演出にしないこと
manifest.jsonにタイトルと概要テキストを追加すること
##アプローチ
新規スクリプト scripts/shorts-zero-base-ball-overrun-10-batch.ts を追加し、
全 10 機構をボール 20px 固定で設計しました。
今回の 10 機構:
- Binary Bouncer Ladder
- Trampoline Cell Overrun
- Gyro Cannon Spiral
- Peg Cascade Avalanche
- Cradle Lattice Snap
- Magnet Orbit Swarm
- Piston Pocket Overrun
- Slingshot Rack Runaway
- Centrifuge Bowl Cascade
- Turbine Gate Surge
実装上のポイント:
- 既存の
lawsurge/scaling-explosion系とは別ファイル・別出力名で分離 - ボール半径は
BALL_R = 20を共通定数として固定 - 分岐時の表示個数は object 数と virtual count を分け、4 桁級の count overlay が出るようにした
- 終端は各機構の
breach/frameBroken/wallBroken/gateBroken/housingBrokenに寄せた manifest.json/youtube-metadata.json/youtube-metadata.csvを同時出力
補足:
- count overlay の桁スケール感には inference を含みます。
- 一方で、動画停止は各機構で物理的な破断や放出が起きた後に限定しています。
##アウトプット
コード:
scripts/shorts-zero-base-ball-overrun-10-batch.ts
出力:
output/shorts-zero-base-ball-overrun-10-batch-20260314-r1/- mp4 10 本
manifest.jsonyoutube-metadata.jsonyoutube-metadata.csv
確認した mp4:
01-binary-bouncer-ladder.mp402-trampoline-cell-overrun.mp403-gyro-cannon-spiral.mp404-peg-cascade-avalanche.mp405-cradle-lattice-snap.mp406-magnet-orbit-swarm.mp407-piston-pocket-overrun.mp408-slingshot-rack-runaway.mp409-centrifuge-bowl-cascade.mp410-turbine-gate-surge.mp4
##参照した一次情報
https://nodejs.org/api/child_process.html
https://nodejs.org/api/fs.html
https://nodejs.org/api/path.html
https://ffmpeg.org/ffmpeg.html
https://ffmpeg.org/ffprobe.html
https://bun.sh/docs/runtime/nodejs-compat
https://github.com/Brooooooklyn/canvas