Tech カテゴリのイメージ

GPT-6 AstraとBlenderで、音の鳴る3D将棋崩しを作った

GPT-6 AstraとBlenderを使って、ブラウザで遊べる「山崩し」を作りました。将棋の駒を山に積み、音を立てないように一枚ずつ取っていく、あの将棋崩しです。今回は40枚の駒を立体で重ね、引き抜いたときに山が崩れる動きと、木の衝突音を付けています。

山崩しで遊ぶ

分類はvasteelabの「探求」にしました。役に立つ道具というより、AIと外部ツールを組み合わせたら、どんな遊びが形になるかを試した作品です。制作モデルはGPT-6 Astra。アプリにも、その名前を表示しています。

Blenderにつながった、その先に作るもの

前の記事では、CodexからBlender MCPへ接続する設定をまとめました。その時点では設定画面の記録まででしたが、今回は実際にBlenderへ接続し、開いているシーンからCube、Light、Cameraの3個を取得できました。

次に頼んだのが、3Dで音も鳴る将棋崩しです。途中で「Blenderでリアルな素材を作って、それを組み合わせる」という条件を加えました。平面の駒を動かすだけでなく、木の厚みや重なりが見えるものにしたかったからです。

駒を取るだけなら簡単そうに見えても、下の一枚を動かしたときに、その上の駒がどう落ちるかまで考えると、立体で作る意味が出てきます。

駒と盤はBlenderで作る

Blenderでは専用のシーンを追加し、五角形の駒を8種類作りました。駒の縁を少し丸め、木目の画像を貼り、王将や歩兵などの文字も立体のメッシュにしています。盤には9×9の区切りと星を入れました。

木目は今回の制作で生成したテクスチャです。実物を撮影して取り込んだものではありません。木の色、面取り、光と影を組み合わせて、ブラウザの中でも厚みのある木の駒に見えるようにしています。

作った素材はGLBという3Dファイルへ書き出し、ゲームから読み込みました。Blenderの編集用ファイルも残してあるので、駒の形や盤の仕上げを変えるときは、素材側から手を入れられます。

山を崩す動きと音は、ブラウザ側で付ける

Blenderが担当したのは、駒と盤の素材制作です。ゲームの表示にはThree.js、駒の重力・摩擦・衝突にはcannon-esを使いました。

40枚を配置して落ち着かせてから、プレイが始まります。選んだ駒を横へ動かすと、周囲の駒との接触も計算されます。上に重なっている駒が支えを失えば落下するため、見た目だけの山ではありません。

音は録音した効果音を再生する方式ではなく、Web Audioで短い打音を合成しています。衝突の強さによって音量が変わり、大きな衝突や連続した衝突が起きると「山のざわめき」が増えます。実物の将棋崩しの判定を厳密に再現したものではなく、ブラウザで遊ぶための独自ルールです。

一枚を、盤の端まで運ぶ

開始ボタンを押したら、駒を押さえたまま盤の外へゆっくり動かします。端まで運べれば一枚獲得。山が大きな音を立てたり、駒が盤から落ちたりすると、その回は終了です。40枚を取り切ることを目指します。

マウスとタッチの両方に対応し、左右から眺める視点と真上の視点も用意しました。音を出せない場所では消音できますが、崩れ方による判定は変わりません。マイクで周囲の音を測っているわけではありません。

制作中には、駒を盤外へ運んだときの獲得、急に引いたときの終了、積み直し、消音の切り替えを確認しました。パソコン幅とスマートフォン幅で表示を確かめていますが、すべての実機で同じ操作感を保証できる段階ではありません。

どのモデルで作ったかも、作品に残す

今回から、アプリには制作に使ったAIモデル名を明記していくことにしました。「AIで作った」だけでなく、「これはGPT-6 Astraで作った」と分かるほうが、作品を見る楽しみが増えると思っています。

モデル名は性能ランキングの代わりではありません。同じモデルでも、依頼の内容、使えるツール、修正の重ね方で仕上がりは変わります。今回なら、Blenderで素材を作る条件と、物理演算や音を付ける実装が合わさって、ひとつのゲームになりました。

なお、表示しているのは制作時のモデル名です。遊んでいる間にGPT-6 Astraへ毎回問い合わせているわけではなく、ゲームの動きはブラウザ内で計算しています。

今後も制作に使ったモデルが確認できる作品には、その名前を残していきます。まずは今回の山崩しで、一番上に見える一枚から試してみてください。