ものがたり
序章:孤独なデスクトップから、ブラウザへの大移住
これまでの戦いで、ゲームの基盤は整っていた。しかし、AIが開発を進めるうえで、一つの壁が立ちはだかっていた。
「デスクトップウィンドウは、AIの手が届かない」
別ウィンドウで動く Pygame アプリは、AI には直接操作できない。テストもデバッグも、すべてが人間の目を必要とした。
そこで今回のクエストが始まった。ゲームをブラウザで動かす。 言語は Python のまま、pygbag という WebAssembly コンパイラを使って。
第一の試練:豆腐の呪い
ブラウザへの扉は開いた。しかし、画面に広がったのは無数の □□□□ ──
「豆腐の呪い」 が全てのUIテキストを白い四角に変えてしまったのだ。
原因は SysFont(['msgothic', 'yugothic']) だった。OS に存在するフォントへの依存が、Wasm 世界では通用しなかった。候補は二つ。フォントファイルをゲームに同梱するか、UI を英語に切り替えるか。
選択したのは英語化。 ファイルサイズを増やさず、7つのファイルを修正するだけで呪いを解除できる。シンプルな解決策が、最強の武器となった。
秘宝:SysFont(None, size)
SysFont(None, size) ── pygame に内蔵されたデフォルトフォントを使うこの呪文は、追加ファイル不要でブラウザ完全対応。"Yokai Wars" の文字がブラウザ画面に輝いた瞬間、呪いは解けた。
# NG: OSフォントへの依存
font = pygame.font.SysFont(['msgothic', 'yugothic'], 24)
# OK: pygameデフォルトフォント(Wasm対応)
font = pygame.font.SysFont(None, 24)
第二の試練:千のファイルを抱えた亡霊たち
ブラウザが起動するまでに、数分が経過した。pygbag がスキャンしていたのは .venv の数千ファイル── デスクトップ時代に積み上がった亡霊たちだった。
さらに、テストスクリーンショット・ビルド成果物・廃止されたスクリプト群。20MB 以上の不要データがリポジトリに潜んでいた。
秘宝:pygbag.ini と大掃除
pygbag.ini の ignoreDirs に先頭スラッシュを付ける ── "/.venv" とすることで亡霊たちを封印。さらに、不要ファイルを一掃しリポジトリを軽量化した。
# pygbag.ini
[config]
ignoreDirs = ["/.venv", "/build", "/tests"]
同時に、旧来の .agent/skills/ フォルダを .claude/skills/ へ移行。Claude が直接参照できる場所に整理し、スキルの可読性を高めた。
【ステータス画面】Developer Status: Lv.4
試練を乗り越え、私のステータスは以下のように更新された。
| 項目 | ステータス | 備考 |
|---|---|---|
| 称号 | ウェブ召喚師 (Lv.4) | Python を武器にブラウザの扉を開いた者 |
| メイン武器 | pygbag + Python | デスクトップの鎖を断ち、ブラウザに降り立つ魔法の杖 |
| 習得スキル | Browser Porting | pygbag と async/await パターンでゲームを Web へ移植する力 |
| 習得スキル | Repository Purification | 蓄積された技術的負債を整理し、開発環境を清める力 |
| 現在の任務 | ゲーム内容の充実化 | 器は整った。次は中身を磨く時 |
次回予告:第5章「データの解放とゲームの完成へ」
器は整い、UI は英語で輝いている。しかし、まだ JSON データの中には日本語が眠っている。妖怪の名前、マップの地名、NPC の台詞 ── これらを世界に解放するための次なるクエストが始まる。
果たして、全世界に通じる妖怪RPGは完成するのか。
解説
技術的知見
Claude を活用した自動化
Antigravityを活用して開発を行っていたのですが、無料枠をすぐ使い切ってしまい動かなくなったため、Claudeを使うことにしました。
開発の引継ぎはもちろん、Geminiを使った画像生成もCoworkで実行してくれるため、かなり自動化の範囲が広がりました。




