■はじめに

前回、3Dモデリングツールを改造して、小道具に「鍬」と「収穫用カバン」を実装しました。

さらに、ポーズごとのアニメーション編集もやりやすくして、

「これでゲームに必要な道具は、かなり揃ってきたかな?」

という感じになってきました。

そこで今回は、いよいよゲーム側の農地システムに手を入れてみることにしました。

農地システムといっても、最初から複雑なものを作るつもりはありません。

まずは、

「柵で囲った場所を耕して、農地にする」

くらいのシンプルなものから始めようと思ったわけです。

ところが……

いきなりバグりました💦

しかも、Claudeさんに修正をお願いしても、なかなか解消しません。

「これは、ちょっと深いところまで確認しないと駄目なのかな?」

という感じになってきました。

■忘れた仕様が足を引っ張る

そこで最後の頼みとして、ChatGPTさんにバグ修正用のプロンプトを書いてもらいました。

そしてコードを調べてもらうと……

どうやら原因が見えてきました。

なんと、ARPG(元ゲーム)を作っていた頃に、

地形には「高さ」というデータを持たせていた
んですね。

当時は、

「平面だけだと地形に変化がないから、高さを持たせよう!」

と考えて実装したものです。

ところが……

その仕様をすっかり忘れていました😂

昔の自分が作った仕様を、今の自分が忘れている。

そして、それをChatGPTさんがコードから掘り起こしてくれるという……

なんとも不思議な状況になりました。

「そんな仕様、入れてたっけ?」

と思いながらコードを見ると、

ちゃんと入ってる。

AIに助けてもらっているというより、

AIに自分の過去を教えてもらっている

ような気分です💦

■農業システムにもバグがいっぱい

そんなこんなで、農業システムの実装を進めていきます。

今回、とりあえず実装したかった農地の定義はシンプルです。

① 柵で囲った土地である
② 囲いの中にモンスターのリポップ場所がない
③ その条件を満たした場所を「耕せる場所」とする
④ そこを耕すと「農地」になる

これくらいです。

「これなら簡単にできるんじゃない?」

と思ったのですが……

やっぱりバグが出ます😂

しかも、これがなかなか取れない。

「あれ?ここは耕せるはずなのに……」

「なんでここだけ駄目なんだ?」と、Claudeさんと一緒に原因を探します。

プロンプト・ウサギ
「この仕様で、囲いの中は条件一定だから、高さも一定だよね」

Claudeさん
「え?条件一定なんて聞いてないけど……」

プロンプト・ウサギ
「……やってもうた」

どうやら、仕様を入れたつもりになって、実際には入れ忘れていたようです🤣

地形の「条件」がバラバラだと、そもそも農地として扱えなくなります。

そこで、

「囲いの中の条件はそろえること」

という仕様を追加。

すると……あっさり直りました💦

なんということでしょう。

何時間も悩んでいたバグの原因が、

「仕様を入れ忘れてました」

でした。

バグ取り版をGitHubで公開してます。
下をGoogle検索窓にいれて下さい。

https://logicmaker256-prog.github.io/dragon_hunter03/

■3Dモデル実装の新手

こんな感じで、最近のゲーム制作は、

バグ取り → 仕様追加 → バグ取り → 仕様追加

の繰り返しです。

個人的には、

「なるほど、そういうことか!」

と勉強になるのですが……

これを人に話しても、

「へぇ……」

で終わりそうです😂

そこで今回は、ゲーム制作で使っている3Dモデル実装のちょっとした小技を紹介してみます。

最近、こんな流れで3Dモデルを作っています。

① ChatGPTさんで三面図を用意

まずChatGPTさんに、

「ゲームに使う○○の三面図を描いて」

とお願いします。

例)ジョウロの場所



正面・側面・背面など、3Dモデルを作るための資料を用意します。

② GeminiProさんで3Dモデル化

次に、その三面図を使ってGeminiProさんに3Dモデル化してもらいます。

ここでは、HTMLファイルとして動く3Dモデルにしてもらうと、スマホでも確認しやすいです。

「こんな感じになったか」

とブラウザですぐ確認できます。

例)ジョウロの3Dモデル


そして、ゲーム用としては、

意外とこれで充分使えるクオリティになります。

③ 自作の3Dモデリングツールへ移植

さらに、ここから自分の3Dモデリングツールに持っていきます。

ClaudeさんにHTMLファイルを添付して、

「○○のモデルを、添付したHTMLのモデルにして」

とお願いすると……

例)ジョウロの移植


かなり楽に移植できます😊

もちろん、細かい調整は必要になります。

でも、

「三面図を作る」


「3Dモデルにする」


「ゲーム用ツールに移植する」

という作業をAIに分担してもらえるので、かなり便利です。

しかも、今のところ、

無料+スマホ中心の環境

でやっています💦

昔だったら、3Dモデルを作るだけでも結構大変だったことを考えると、

「ずいぶん時代が変わったなぁ」

と思います。

■今回の学び

今回、一番勉強になったのは、

「仕様が絡んだバグは、AIでも簡単には取れない」

ということでした。

Claudeさんがコードを書いてくれても、

「そもそも何を正解とするのか」

という仕様が間違っていたり、抜けていたりすると、当然ながら正しい動作にはなりません。

今回も、

「農地判定のプログラムがおかしい」

と思っていたら、

実は、

「農地として判定するための条件が足りなかった」

という話でした。

そして、昔自分が入れた「地形の高さ」という仕様まで発掘される始末。

AIにコードを書いてもらうようになって、

「プログラムを書く時間」はかなり減りました。

その代わり、

「何をさせたいのかを正確に伝える」

ことの重要性が、以前よりずっと大きくなった気がします。

もし、どうしても取れないバグがあるなら、

「コードがおかしい!」

と決めつける前に、

「そもそも仕様がおかしくないか?」

「必要な仕様を伝え忘れていないか?」

を疑ってみるのもアリですね😊

……まあ、

忘れていた仕様を発掘されるのは、ちょっと恥ずかしいですが🤣

■次回予告

農地システムも、少しずつ形になってきました。

「耕す」だけではなく、

作物を植えて、

水をやって、

収穫する。

さらに、牧場のほうも組み合わせていくと……

最初はARPGだったはずなのに、だんだん別のゲームになってきました💦

果たして最終的に、何のゲームになるのでしょうか?

ここまで言って、なんですか次回はChatGPTさんでちょっとした実験をしたので、そのご報告をします。

引き続き、よろしくお願いします🙇