2025/02/01
私がAIを本格的に使い始めたのは、2025年3月ごろのことだった。
いつも通り某配信枠を見ながら作業しているとき、リスナーの一人が「AIにコードを書かせる」という話をしていたのがきっかけだった。
当時の私のAIに対する認識は、検索と同じように使うとおもいのほか不確かなことも言いだす、あまり使えないやつという程度の認識だった。しかし、プログラミングをしてくれるなら役に立ちそうだと思い、試しに触ってみることにした。
それ以来、AIに対する認識は使えば使うほど変わり、今に至る。
この記事を書こうと思ったのはAIが、「AIを使ったゲーム開発日誌」はいま需要があります!!その体験記事にしましょうと勧められたからだ。どうやらいまGoogleはAIには出力できないような体験談を重視しており、これを書けばSEOで評価され、サイトに人が流入する可能性があるという。
とはいえ、今書いているのはほぼ一年後なので、思い出を振り返りながらの記事になる。
で、さっそくGPTにコードを書かせてみた。
「おい、お前プログラミングができるんだろ? じゃあブラックジャックのコードを書いてくれ」
GPT「わかりました。じゃあさっそく書きますね☻」
目の前に秒で出力されるコードを見て、私は驚いた。す、すごすぎる 時代は本当に変わった
「こんな簡単にゲームができるのか。まるで魔法のようだ…」
ニヤニヤしながらコードを貼り付け、ゲームを起動してみた。
は??????
しかし 出力されたそのゲームはブラックジャックっぽいような感じは多少あったが、様々なところにランダムにカードが出てきて どこをクリックしていいものかもわからない ブラックジャックもどきですらないわけのわからないなにかだった
俺はGPTに文句をいうた
お前これ 全然ちがうやんけ まったくできてないやんけ
GPT「ええ??おおおおおおおかしいですね じゃあ次です次 次こそ大丈夫です
再び出力されたものも、やはりおかしな挙動するなにかだった。
私はため息をついた そう 世の中そんなに甘くない ゲーム開発がそんな秒でできるわけがないのだ
しかし、同時に思った。利用次第では十分使える気がしないでもないと
ここから、私の試行錯誤しながらの日々が始まった。
2025/02/15
AIにこういうAIとの試行錯誤は需要あります!!SEOあがりますよ!!といわれて始めたものの
正直なに需要があるのかいまいちようわからないところもあるけれども たしかに読まれてる気はしたので、記事を更新することとする。なるべくの頻度で更新してみて 本当に需要があるようならこの記事の充実をはかりたいと思った。
一年前からのやりとりを記していくので、記憶も多少あいまいであることをゆるしてください。
で、一年前のやり取りをあさってみると おそらくだけれどもブラックジャックのゲームを作りたいと当時思った俺は、ネットでひろったコードをそのまま実行してみたが、エラーが出たので、そのコードをそのままはりつけてどうしてエラーが出たのか聞いてみた
エラーが出たからどうすればいいのかおしえてほしい // code.9leap.net default template
// based on enchant.js v0.7.1
console.clear();
enchant();
var core, deck; // core と deck をグローバルスコープに定義
// カードを引く関数
function drawCard() {
var newCard = deck.childNodes.shift(); // 山札から1枚引く
if (newCard) {
newCard.opacity = 1; // カードを表示
newCard.x = 100; // 位置を調整
newCard.y = 200;
scene.addChild(newCard); // シーンに追加
var card_suit = TCard.getSuit(newCard.data);
var card_number = TCard.getNumber(newCard.data);
console.log("引いたカード:", card_suit, card_number);
} else {
console.log("山札が空です!");
}
}
window.onload = function() {
core = new Core(320,320);
// TCard.enchant.js で必要とする画像です
core.preload("icon0.png", "font1.png", "enchant.png", "clear.png", "button.png");
core.fps = 30;
var deckArray = Array.from(deck.childNodes); // deck.childNodes を配列化
var drawnCards = []; // 引いたカードを管理する配列
ネットで拾ったまんまなので以下略
GPT「エラーメッセよこせ これだけじゃようわからん」
俺「game.js:36 Uncaught TypeError: Cannot read properties of undefined (reading ‘childNodes’)」
GPT「
エラーメッセージ「Cannot read properties of undefined (reading ‘childNodes’)」は、deck が undefined であるため、そのプロパティ childNodes を参照できないことを意味しています。このエラーが発生している箇所は、deck.childNodes を使っている部分です。
原因
deck がまだ適切に初期化されていない deck が undefined のまま参照されている
解決方法:
deck の初期化タイミングの確認:
deck は core.onload 内で初期化されていますが、drawCard 関数は core.onload が実行される前に呼び出されている可能性があります。これにより、deck がまだ初期化されていないため、undefined になっている可能性があります。
以下略
」
ほうほう、さすがAI 俺みたいなにわかプログラマーもどきだと エラーの意味がようわからんこともあるけど (いや冷静にみれば Cannot read properties of undefined (reading ‘childNodes’) 未定義のプロパティを読み取ることができません (「childNodes」を読み取っています)と書いてあるのだからそらそのままじゃないかと思うところではある)こうやって丁寧に教えてくれるのはなかなかありがたいなと思っていたと思う。ただ、この問題が結局解決したかどうかはちょっと思い出せないが ログをみてるかぎり よくある console.error(“deckが正しく初期化されていません!”);などを駆使して解決をはかったようだ。おそらく定義する前に使用してたとかそんな感じだったと思う。
ただ 同時に当時思ったのは 正直なにいってるのかちょっとわかんないっす ってことだった。俺の知能がAIの知能についていけてないっていうか 文字が多すぎて情報量多すぎて情報処理しきれないって感じだった。