コーヒー1杯、ポテトM、カップ麺3分。制約のなかでミニゲームを作るYouTube「アソビルド」で生まれたものを、その場で遊べるようにした場所です。
▶ https://asobuild.coenoma.com
スマホでもPCでも、タップ(またはスペースキー)だけで遊べます。ログインもインストールも要りません。
- おだいURL — リザルトの「おだいURL」を押すと
…/g/hanko#s=1234がコピーされます。 同じURLで開くとまったく同じ出方で遊べるので、記録を公平に比べられます (サーバーもログインも要りません。出方が種で決まっているからできることです) - 今のを見る — 死ぬ直前の3秒をゆっくり見返せます
- 記録を送る — スコアと称号の入った画像つきで共有できます(対応端末のみ)
番組では「コードを1文字も書かずに作る」ということをやっています。 そのために、面白さが毎回ちゃんと入るようにする仕掛けをリポジトリ側に持たせています。
src/games/hanko/
├── meta.ts # 名前・あそびかた・称号
└── game.ts # init / step / draw / bot の4つだけ
タイトル画面、スコア、自己ベスト、1タップのリトライ、称号、共有、 240×320のドット表示、効果音——これらは全部共通の仕組みが持っています。
npm run fun -- hanko3種類のボット(放置・でたらめ・上手い)に数百回プレイさせて、こう出ます。
ハンコ課長 (hanko) 合格
放置 生存 7秒 スコア 0
でたらめ 生存 15秒 スコア 20
上手い 生存 43秒 スコア 649 (p90 993 / 最高 1237)
✓ 放置すると死ぬ(緊張があるか) … 7秒(基準 8秒以内)
✓ 初見でも点が入る(1回で帰らないか) … でたらめ操作の中央値 20点
✓ 連打だけでは勝てない … 15秒(基準 30秒以内)
✓ 腕前が効く(運ゲーでない) … 上手い/でたらめ = 32倍
✓ 上手くてもいつか終わる … 決着率 100%
✓ 上振れがある(今日は乗ってる、が起きる)… p90/p50 = 1.6倍
✓ 一気に遊びきれる長さ(やりきり感) … およそ 9分で「部長」まで到達
落ちた項目には「何を直せばいいか」が出ます。 面白さそのものは人が決めますが、面白くなりようがない状態は機械で弾けます。
step が純粋関数で、乱数も種から作っているので、
そのプレイの入力(1フレーム1ビット)と種さえあれば、まったく同じプレイを再現できます。
実測: 45秒のプレイが 855点 / 44.93秒 で完全一致。記録に必要なのは 0.33KB。
これがリプレイ・おだいURL・OGP画像(実プレイの場面を焼く)の土台になっています。
「なぜあれは何度も遊ばれたのか」を作り込みのレベル(判定の甘さ、失敗したときの落ち方、 目標の刻み方)まで調べて、docs/design/feel-catalog.md に貯めています。 調べるたびに、次に作るゲームが強くなる、という作りです。
npm ci
npm run dev # http://localhost:3020
npm run new -- <slug> # ゲームの雛形を作る
npm run fun -- <slug> # 面白さゲート
npm run check # 型・ゲート・ビルド詳しくは docs/guides/はじめかた.md。
| docs/design/genre-map.md | 遊びの型の地図(型で作り方もゲートも変わる) |
| docs/design/fun-doctrine.md | 面白さの原則(毎回同じ手順を踏むための文書) |
| docs/design/feel-catalog.md | 効く工夫のカタログ |
| docs/design/broadcast-design.md | 遊んでいない人が見て面白いかの設計 |
| docs/design/rights-and-originality.md | 既存作を扱うときの線引き |
| docs/design/retro-style.md | 2000年代の手触りの出し方 |
| docs/research/ | 既存作の調査(何が刺さったのかの特定) |
| docs/guides/ | はじめかた・収録の段取り |
Next.js 16 / React 19 / TypeScript。外部ライブラリなし、サーバーなし、データベースなし。 ゲームは 240×320 の Canvas に描いて拡大表示しているだけです。
© 合同会社コエノマ