ヘルプを言いかえたら、勝つたびにもらえるかいがらが「のこることがある」になっていた
「のこることがある」と書いたヘルプのアイテムが、実装では勝つたびに1まい出ていました。ヘルプの言いかえで入ったずれをきっかけに、説明文92項目を実装と照らし合わせた記録です。
個人開発ブラウザゲームの制作の裏側です。バランス設計・AI画像生成・AI作曲・効果音づくり——開発でハマった話とその解決を、失敗した数値ごと一次情報で書いています。
読んで面白かったら、OFUSEでの応援も歓迎です。制作費(イラスト・音楽の生成環境)にあてます。
「のこることがある」と書いたヘルプのアイテムが、実装では勝つたびに1まい出ていました。ヘルプの言いかえで入ったずれをきっかけに、説明文92項目を実装と照らし合わせた記録です。
公開前の検収で「7回」の裏が取れず、言い切りを4件に絞りました。そのとき書き足した一文も事実と違っていた、という記録です。直した文章ほどもう一度確かめたほうがよい理由も書いています。
上限20で始まり、主をしずめるたびにほどけていく育成の天井。書いた日の夕方に、野生のレベルを手持ち追従から物語の進み具合へ作り替えた話と、主を上限の2つ上に固定した理由。
実装するAIと検収するAIを分けて1日開発したら、動作確認では見つけられなかった欠陥が4件(コード2・文章1・測定1)出ました。指示の書きかたと、その実例です。
オリが見えないはずの幼なじみに、オリの仕組みを説明させていました。台詞を35行読み直した話と、スピンオフで守っている言葉の決めごと。最後に、説明の台詞を誰に言わせるかの選びかたをまとめました。
英語から直訳したような日本語を探して、公開中の記事を数えたら、ほぼゼロでした。残っていたのはコミット文と下書きです。検査を入れた場所から、作業が終わるたびに日本語を点検させるようにした話まで。
iOSのSafariでは、Audio要素の音量に0を入れてもBGMが鳴りつづける。原因と、検索結果を切っていて6本中2本を直し漏れた記録。
連戦モードの相手を手持ちの平均レベルに合わせていたら、弱い手持ちほど相手も弱くなり、連勝数が腕前を表さなくなっていた。顔ぶれもレベルも固定のはしごに作り直した話と、同じ日に見つけた「使っても減らないまきもどし」の記録。
禁止と書いた8日後に、AIに頼んだ作業のついでに禁止の形が復活していた。11,000行のメモのどこに書いても、AIは読まない。AIへの指示を、毎回読まれる短い入口・作業の種類で出てくる手順書・自分で打つコマンド・並列で走る監査役の4つのレイヤーに分けた記録。
公開済みのゲームを測り直したら、同じ「常に正解を選ぶ」プレイでステージ8の結果が19人から197,904人まで散っていた。運を「機会」から「値」へ閉じ込め直して、振れ幅を1.3倍まで落とすまでの記録。
開発メモと実装のズレを、1ファイルに1体ずつAIを割り当てて並列で調べた記録。41件出た一方で、報告の根拠そのものが作り話だった件がある。結論ではなく根拠を見るようにした理由と、書き込みを渡さない理由。
静的サイトの置き場にEdgeOne Pagesを使い続けている理由を、ひと月あまりの実測で答え合わせした。Brotliの圧縮率、HTTP/2が有効にできない件、AWS/GCPとの部品数の差。マイナーな置き場が学習として損だったかも書いた。
カードずかんの画像43枚が、本番で1枚残らず404になっていた。WebP変換のときの参照漏れに、何度も画面を開きながら気づかなかった話。指示を磨くより機械に見つけさせる側へ寄せた記録と、0件を走査して「全部OK」と答えた検査の失敗。
図鑑のオリが1体だけ絵の出ない状態に。原因は56pxのセルに512pxのWebPを79枚読ませていたこと。デコード後79MBという計算と、128pxサムネイルで4.9MBに落とすまで。
いちばん好きなゲームの面白さを14要素に分解して、開発中の収集RPGを採点した。◎が6つあるのに薄く感じた理由は、数値に関係ない、いくつかの欠けた要素だった。30分の表が数週間の実装の方向を決めた話。
収集RPGの技エフェクト55種を、部品画像の組み合わせと振り付けデータだけで固有化した方法。使い回しをやめる決心と、ポケモンBWのりゅうせいぐんから学んだ段構成について。
「初回だけBGMが鳴らない」の真因は再生処理ではなくネットワークだった。画像53枚16MBが帯域を占め、1MBのBGMの完了が5.6秒まで延びていた実測と、fetchPriorityでの直し方。
自動再生ブロック・iOSのマナーモード・Audio要素ごとの解錠。「音が鳴らない」報告に向き合い続けた結果たどり着いた、ブラウザゲームの音まわりの罠の全体像と対策。
ターン終了ボタンが156px飛ぶ、絵文字が端末で化ける、スマホでボタンがはみ出す。事故のたびにルールを1条ずつ増やして、サイト共通のUI憲法に育てた話。
チームのいない個人開発で品質をどう守るか。更新漏れから生まれたチェックリスト、リリース前レビューが実際に捕まえたバグ、「数字はgrepで突合する」という観点の話。
デッキ構築ローグライトの初期デッキを性格診断風の3問で抽選する仕組み。エンジニアがニヤリとする質問設計と、崩壊したバランスの立て直し。
ビルドなし・フレームワークなし・素のHTML/CSS/JavaScriptだけでブラウザゲーム6本を作り運営している技術構成。この規模ならではの割り切りと、その代償について。
個人開発の6作品のBGMをSunoで自作した記録。無料版の商用制限で全曲作り直した失敗、カテゴリ別プロンプトでの一括生成、ゲームへの割り当てまで。
ファイル再生に統一したら今度は9〜100ms遅れて鳴るように。まずWAV22本の先頭無音を測って音源の無実を確かめ、再生経路を替えて0.1msにするまで。効果音だと思っていたものが22.8秒の曲だった話つき。
innerHTMLで組み立てていたカードUIをHTMLへ書き写そうとして手が止まった。aタグの入れ子は、JS経由なら生き残るのに静的HTMLではパーサに組み替えられる。同じ文字列が経路によって別のDOMになる。
既存の分岐が埋めていた格子を図にしてから、空いている方向に軸を足した。真相を全部集めると最良の結末には行けなくなる——その排他をあえて残した理由。
開発中の新作TDで、上手いAIと無策AIの成績が全く同じに。被弾の帰属を計測して原因を特定し、実力が出る設計を13バリアントかけて探し当てるまで。
「無策なら勝率7%、上手いと5割」を数千ランの自動プレイで作り込んだ過程。無制限にした1枚のカードで勝率が3%まで崩壊した話など、失敗した数値ごと公開します。
初見の9割がゲームオーバーになるなら、負け画面こそがゲームの顔。ランの一部始終を「障害報告書」にした設計と、キャリア診断が全員同じ称号になった失敗について。
「SEが聞こえない」という報告に3回向き合った記録。iOSのマナーモードではWebAudioの音だけが消音される——最終的にBGMと同じ経路に乗せて解決するまで。
ゲーム素材はすべてAI画像生成。透過背景を頼むと市松模様を「絵として」描いてくる問題、遠近をつけたがる横断歩道との戦い、発注文を定型化して事故を根絶した話。
新作の公開情報やアップデート履歴は更新情報にまとめています。