ChatGPT DALL-E3で美少女四目並べゲーム制作がわりと大変だった件
作成していたChatGPT DALL-E3制作での四目並べゲーム「しずくと四目並べしよ!」が4面とエンディングまで完成しました。
一通りプレイできる状態になったかと思います。
あとはサウンドやTOP画面などを追加しようかと思っています。
備忘録として前回の記事から追加した機能等をChatGPT先生とどうやって作成したかを書いておきます。ChatGPTでのゲーム制作に役にたつのではと思います。
前回の記事
前提
有料版のChatGPT4とDALL-Eを使っています。
1. 仕様の管理
ChatGPTとプログラミングを進めていく上で仕様の目次をつくって進めるのがおすすめというのは前回の記事でも書きました。ChatGPTに「仕様-10. 画像のプレローディングを書いて」というと書いてくれますし、後から仕様を出力するのにも便利なのでこれはやったほうがよいです。
仕様のファイル管理
私はルートフォルダにdocフォルダをつくり仕様の章ごとにマークダウンを用意し、そのまとめとなるファイルに今後の開発したい要件のタイトルを管理していました。
各章のマークダウンには私がChatGPTに聞いた質問とその回答を重要なものだけコピペしています。
仕様のタイトルを後からChatGPT先生に出力してもらう
こうやって仕様を番号管理することである程度実装が終わったところで仕様をあとから出力してもらうことが可能です
現在の仕様の目次をだしてみてください
13. ゲームレベルに応じた先手後手の管理と初期化処理
のようなやつです
今回は目次の識別子をはっきりと決めていなかったので少しずれていますがこういった感じで後から仕様を出力させるときにも便利です。
2. スパルタ教師ChatGPT先生「おめーのバグだろうがぁゴルあぁ、バグは自分で直せ」
基本的にChatGPT先生から言われた通りにコードをコピペするのですが、たまに動かない場合があります。なので今のコードの全コード(HTML/CSS/JS)をはりつけて
「どこがおかしいのか教えてよ!ChatGPT先生!むしろ、先生が直してよ!」というと最初はバグをみつけてくれて直してくれるのですがコードが複雑になってくると、ChatGPT先生は自分でバグを見つけることもせず
「お前がデバッグせい」と言い始めます。ちなみにJSは1000行コードぐらいになっていますがだいたい500行超えたあたりからこの傾向がでてきました。
下記は「プレイヤーがCPUに負けたときにそのレベルからゲームが再開できる」機能をChatGPTに言われるとおり実装したがうまく動かなかったときのChatGPTへの質問
実装したのですが
continueボタンを押すとcontinueGameは実行されているようですが
gameOver retryText が消えず2回おさないといけなくなっています
原因はわかりますか?
document.addEventListener("DOMContentLoaded", function () {
// ゲームレベルの変数を定義
let gameLevel = 0;
const cpuMoves = {
1: cpuMoveLevel3,
2: cpuMoveLevel3,
3: cpuMoveLevel4,
4: cpuMoveLevel4
〜〜略
3. サイコパス教師ChatGPT先生 「私が書いたコードもお前が直せ」
現在の「しずくと四目並べしよ!」の最難関難易度であるCPUレベル4のアルゴリズムもChatGPT先生が書いてくれたのですが彼が書いたコードは四目ならべのルールを守っていませんでした。
テストをおこなっていますが
CPUの駒が「四目並べのルールをまもっていません」
CPU4のアルゴリズムに問題があると思いますので確認お願いします
現在のコードと
バグがおきているスクリーンショットを添付します
// ここからCPUレベル4の実装
function evaluateBoard(board, player) {
let score = 0;
const PLAYER1 = 1; // プレイヤー
const PLAYER2 = 2; // CPU
〜略
私は思いました「お前のバグだろうが!」
あなたがコードを修正することはできますか
結局私がCPUレベル4のコードをレビューしてデバックしおかしいところを治すはめになりました。まさにこんな感じです
これではChatGPT先生から教えてもらってコードを書く立場が逆転し、ChatGPTが書いたコードをレビューするのが私になってしまいました。
コードが複雑化するとこういうふうになるというのはいい経験になりました。
4. エンディングの演出
17. ゲームクリア時のエンディング演出
次にゲームクリア時演出を考えたいと思います。
ここではゲームクリアとはゲームの全レベルをクリアした場合のことを指します。
現在はゲームレベル1~4までありますので4をプレイヤーがクリアした場合の特別演出を考えたいと思います。
(ただしゲームレベルは追加される必要があるのでJSのロジックとしては最後のレベルという処理にする)
)
# ゲームエンディングのアイデア
- 1. しずくが「おめでとう全レベルクリアだよ!」という (dialogueContent)
- 2. ゲームエンディング用のリワードCGが見れる
- 3. スタッフロールが流れる
- 4. 花びらがまうような演出やクラッカーがなっているような演出がでる(HTMLやJSの機能で実装)
# 機能としての必要な要件
- ゲームエンディングを見終わるとユーザーの操作は受け付けなくする(全クリックの無効化)
まずは上記を見て、今のゲーム仕様やプログラムを鑑みて最適なゲームエンディングのアイデアをください。上記に書いてあるもの以外でももちろんかまいません
すると素直にライブラリを使わないコードでごりごり書いてくれます
花吹雪、スタッフロールの作成(HTML/JSで実装)
下記のようなものを教えてくれます
.ending-petal {
position: absolute;
width: 10px;
height: 10px;
background-image: url('path_to_petal_image.png'); /* 花びらの画像 */
background-size: cover;
opacity: 0;
animation: fall 10s linear infinite;
}
/* 花びらが落ちるアニメーション */
@keyframes fall {
0% { transform: translateY(-100px) rotate(0deg); opacity: 1; }
100% { transform: translateY(800px) rotate(360deg); opacity: 0; }
}
/* クラッカーが弾けるアニメーション */
@keyframes pop {
0% { transform: scale(0); }
50% { transform: scale(1); opacity: 1; }
100% { transform: scale(0); opacity: 0; }
}
花びらの画像は自分で用意せい!とのことなのでChatGPT DALL-E3で作成します
「ゲーム用の画像がほしいやが」というと上記のような画像を出力しますが
これは透過PNGでないのでまったく意味がない画像です。DALL-E3で一番直してほしい機能です(透過PNGを出力してほしい)。
「背景は白でいいです」というとなおります
この画像も透過PNGではないのでiPhoneに移して写真アプリで葉のみ切り取って開発Macに戻しすという作業をおこないました。
スタッフロールの演出
スタッフロールに関してもライブラリを使わずにHTML/JSで実行する方法をおしえてくれます
ライブラリを使わずにEDの演出ができました
GPT4-Vは心理的にも便利、不安を解消する
どこまで画像の中身を理解しているかはわからないものの、成果物の画像をあげて「ここ動かないよ!GPTえもん!」と相談できるのは開発の心理的負担を大幅に軽減してくれます。GPT4-V(画像のアップロード)はどんどん使いましょう。
5. 開発環境まわりに関しての細かいテクニックも教えてくれる
仕様をdocフォルダで管理しているのを最初に述べましたがそのファイルを更新するたびにサーバーにリロードが走るのでなんとかならないかをChatGPT先生に聞きました
現在 ルートディレクトリのdocフォルダに仕様などをかきためているのですが
VScodeの「Open with Live Server」がdocの更新を監視してしまって更新のたびにリロードが走るのですが
これを防ぐ方法はありますか?
docを監視対象外にしたいのですが
そうすると答えてくれます
デプロイ先のvercelにdocフォルダの仕様はデプロイしたくないので「なんとかならんか」と聞いたら答えてくれます
できました!
同じくvercelにデプロイしているのですが
docフォルダはデプロイ対象外にしたいのですが方法はありますか
んーもうこれプログラミングにGoogle検索いりませんね。
間違いなく前だと検索画面開いてどこかのブログ開いて、みつからないから別のブログみて・・を繰り返していたのが超高速で解決してしまいます。
結論
ChatGPT先生と作る四目ならべゲーム制作体験記でした。
複雑なアルゴリズムが絡むとChatGPT4先生でも一筋縄ではいかないことがわかりました。それでも開発スピードは従来の数倍にはなったと感じます。
まだまだプログラマーの手がいる部分もあるのでどんどん進化してゲーム制作が楽になり人間はクリエイティブな部分に集中できる時代になることを期待したいところ。
この記事が気に入ったらサポートをしてみませんか?