🍣

Claudeでゲームの装備生成エミュレータを5時間で作った話

2024/10/24に公開

こんなものを作りました

https://hiraikyo.github.io/wizardry-daphne-emulator/

作った経緯

つい1週間ほど前に Wizardry Variants Daphne というゲームが出たので楽しく遊んでます。
このゲームはかの有名なローグライクRPG「Wizardry」の系譜で、より強い装備を掘り当てていくタイプのゲームです。

Diablo 系のゲームをやった事のある方なら分かるのですが、この手のゲームのアイテム生成はかなり複雑です。
特に装備の付与効果まわりは理解に苦しく、教えてと言われてもどこから教えれば…となりがちです。

例えば以下の画像だと、

  • 装備のランクは星3
  • 攻撃力+12%, 攻撃力+16はそれぞれランク2、ランク3のオプション
  • アイテムの"強度"上昇時に、オプションに上乗せされる追加値は、ランク1~3から選ばれる
  • ランク3が選ばれたら、そのランク3は4~6の範囲を持つので、4~6の値が追加される
  • これらは他のアイテムの効果により、可逆である必要がある

何言ってるんだって話なんですが、これはかなりマシな方です。
Diablo 系で10年続いてる Path of Exile では、この手の装備構築ツールがGithubで共有されています。
https://github.com/PathOfBuildingCommunity/PathOfBuilding
フォーク2100, スター4000 コミット数8280です。なんだこれは。

そこで、装備生成の仕組みの理解を手助けするツールを Claude で作ってしまえばいいなと思い立ちました。
普段から Claude を使っていますが、UI生成に留まらずロジックの複雑さにもかなり対応できるようになった感触があったので、このレベルでもかなり短期間で作れる予想はしていました。

スタック

  • Typescript
  • Next.js 15 SSG: フロントエンド
  • Github Pages: デプロイ先

Claudeチャットログ

生成AIを実際の開発にどう使うか興味ある方いるようなので、ログ全文貼っておきます。

モデル: Claude 3.5 Sonnet
https://github.com/HiraiKyo/wizardry-daphne-emulator/blob/main/Claude_log.md
https://github.com/HiraiKyo/wizardry-daphne-emulator/blob/main/Claude_log.png

時間配分

  • データ型定義: 2時間
  • データ入力: 2時間
  • UI作成: 5分
  • 動作確認: 1時間

Claude の足を私が引っ張っています。
UI作成は5分程度で済んでいますし、コードの中身は確認していません。なんで動いているんだろう…?

所感

  • 生成AIは、やっぱり型付き言語に強い。型が生成AIの精度と確実性を保証してくれる。
  • 現代プログラミングの基本はJSON色付けであると思い知らされる。型定義を少しずつ Claude と作り上げていき、型定義が完成したら後は Claude が全部書いてくれる。
  • とはいえ知識は必要で、Claude が上げたコードの良し悪しを判断する能力は必須。実際には、Claude が書いたコードを細かいとこで微修正してます。

まとめ

5時間で公開したとは言ったが、さっき Github Pages 上で見たら Tailwind が当たってないっぽいので直します…。

今回は作った話に焦点を当てたので、中身の Next.js とか Typescript の話は需要あれば書きます。

Discussion