■はじめに
前回、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モデリングツールに持っていきます。
ClaudeさんにHTMLファイルを添付して、
「○○のモデルを、添付したHTMLのモデルにして」
とお願いすると……
かなり楽に移植できます😊
もちろん、細かい調整は必要になります。
でも、
「三面図を作る」
↓
「3Dモデルにする」
↓
「ゲーム用ツールに移植する」
という作業をAIに分担してもらえるので、かなり便利です。
しかも、今のところ、
無料+スマホ中心の環境
でやっています💦
昔だったら、3Dモデルを作るだけでも結構大変だったことを考えると、
「ずいぶん時代が変わったなぁ」
と思います。
■今回の学び
今回、一番勉強になったのは、
「仕様が絡んだバグは、AIでも簡単には取れない」
ということでした。
Claudeさんがコードを書いてくれても、
「そもそも何を正解とするのか」
という仕様が間違っていたり、抜けていたりすると、当然ながら正しい動作にはなりません。
今回も、
「農地判定のプログラムがおかしい」
と思っていたら、
実は、
「農地として判定するための条件が足りなかった」
という話でした。
そして、昔自分が入れた「地形の高さ」という仕様まで発掘される始末。
AIにコードを書いてもらうようになって、
「プログラムを書く時間」はかなり減りました。
その代わり、
「何をさせたいのかを正確に伝える」
ことの重要性が、以前よりずっと大きくなった気がします。
もし、どうしても取れないバグがあるなら、
「コードがおかしい!」
と決めつける前に、
「そもそも仕様がおかしくないか?」
「必要な仕様を伝え忘れていないか?」
を疑ってみるのもアリですね😊
……まあ、
忘れていた仕様を発掘されるのは、ちょっと恥ずかしいですが🤣
■次回予告
農地システムも、少しずつ形になってきました。
「耕す」だけではなく、
作物を植えて、
水をやって、
収穫する。
さらに、牧場のほうも組み合わせていくと……
最初はARPGだったはずなのに、だんだん別のゲームになってきました💦
果たして最終的に、何のゲームになるのでしょうか?
ここまで言って、なんですか次回はChatGPTさんでちょっとした実験をしたので、そのご報告をします。
引き続き、よろしくお願いします🙇


