📄

ゲーム開発におけるChatGPTの使い方【UnityとUnrealEngineそれぞれ解説】

2023/07/07に公開

はじめに

以前Twitterにて、「ChatGPTをゲーム開発に使用していますか?」と質問したところ使用していると答えた人はわずか60%でした。(ちなみに現在の日本人全体のChatGPT使用率は5%ほどらしいです)
https://twitter.com/daichi_gamedev/status/1664211565888045056?s=20
投票してくれた方の母数が少ないのですが、おそらくゲーム開発でChatGPTを使用している方は半々ぐらいのように感じます。特に初心者の方は使ってない人多いかなと。

そして今回記事を書くのは個人的にChatGPTはゲーム開発で絶対に使用した方が良いと思っているからです。一番の理由はコード生成できて1時間かかる作業が10分で終わる場合もあるほど効率的になるからです。ただしChatGPTは全然使い物にならない状況もあります

ここからはChatGPTを使用するメリットとデメリットを紹介して、UnityとUnrealEnegineそれぞれのゲーム開発におけるChatGPTの使い方について紹介していきます。

ChatGPT使用するメリットとは?

まず使用するメリットから紹介していきます。まずはUnityのC#を例に紹介していきます。

メリット① 「コード生成が一瞬でできる」

最も大きなメリットですが、「~のコードを作って」と命令するだけでコードを一瞬で作ってくれます。この部分だけ動画解説しています↓
https://youtu.be/e168LDEIJb4

  1. 例えばこのようなキャラクターを用意して、WASDキーで移動するを実装したいと思います。
  2. ChatGPTにこのように文章を入力したとします。「Unityでキャラクターを用意しました。WASDキーで縦横に移動させるコード作って。Rigidbodyを使用して自然な感じで移動させて」すると数秒でこんな感じにコードを生成できます。↓

今回作成したChatGPTの回答リンク↓(再生成した回答なのでちょっと違いますがほぼ同じ)
https://chat.openai.com/share/60efeb65-7fe5-4e82-80b3-a22b4ac35cc1

CopyCodeボタンを一回クリックしてあとは、Unity側のスクリプトに貼り付けるだけです↓

  1. これで実行してみるとキャラクターがWASDキーで移動できるようになりました。

こんな感じにすぐに実装したい機能をコード生成してくれるのは非常に便利です。今回は例としてキャラ移動を実装しましたが、キャラ移動などゲーム開発におけるメジャーな機能は解説している記事多いのでググってもらっても解決しやすいですが、解説記事も非常に少ないマイナーな機能の場合、特にこのコード生成は役に立つ事が多いです。

メリット② 「エラー文を貼り付けるだけで解決策or修正済みコードを教えてくれる」

例えばですがエラーになった場合にはエラー文をそのまま貼り付けるだけで修正済みのコードや解決策を提案してくれます。

  1. 例えばエラーになったとて対象のスクリプトをそのままペーストします。

  2. すると今回の場合は修正済みのコードかつ、修正されたポイントを教えてくれます。

今回作成したChatGPTの回答リンク↓
https://chat.openai.com/share/98570579-807c-4377-a3cd-56b3c48cb00d

今回の場合はセミコロンが一番最後抜けていただけなので、エラー文読むだけですぐ解決できますが、マイナーエラーだと何がエラーになっているのかわからないケースが結構あります。そんな時にそのままペーストしてしまえばすぐにエラーに箇所を教えてくれます。

メリット③ 「ピンポイントでわからない事を教えてくれる」

「あれ?あのコードなんだっけ?」とか、「あの機能の手順どうやってやるんだっけ?」といった場合もググるより効率的に解決できるケースがあります。

例えば「Unityでオブジェクトを取得するコードは?」とコメントするとコードの候補が何個か出てきます。

このようにコードを生成したり教えてくれたりするので、ググって自分で作っていくよりChatGPTに聞いた方が良い場合があります。

私(daichi_gamedev)の場合はChatGPTどれぐらい使用してる?

ちなみに私の場合、現在はUnityだとChatGPT:3割,Google検索:7割ぐらいで
UnrealEngineがChatGPT:5割,Google検索:5割って感じです。使い分けの基準は大きく分けてコード生成,エラー対処,ピンポイントでわからない事はChatGPTに最初に聞く。ChatGPTでもわからない事だったり、基礎知識(例:アニメーションとかUI実装など何らかの機能)をまとめて学びたい,復習したいって時にはGoogleで検索して記事を参考にしています。

Unityだとわかりやすい解説記事が豊富なのでGoogle検索した方が結構効率的なように感じますが、Unrealだとそもそも解説記事無かったりするのでChatGPTの方が便利な場合が多く感じます。

もちろん初心者の方であれば何らかの教材だったりChatGPTだとわかりにくかったりするので、割合が変わったり、あとはプログラマーやデザイナーといった専門分野で使用割合は変わってくるでしょう。伝えたいのはChatGPTを使わないというのは効率的な面でもったいないという事です。また、Googleで検索してもわからない事をChatGPTなら解決してくれるといった事も今まで何回もあったので活用しない手はないです。

ではここからは具体的な使い方について紹介します。まずはゲーム開発における一般的なChatGPTの使い方を紹介します。あとからUnity,UnrealEngineのそれぞれのケースで紹介します。

ゲーム開発における基本的なChatGPTへの質問方法(Unity,UE5共通)

ゲーム開発における基本的なChatGPTへの質問の仕方を紹介します。Unityの場合で紹介しますが基本的な質問方法なのでUnrealEngineでも同じように質問できます。

今回生成した基本的な質疑応答のリンクです↓

https://chat.openai.com/share/47025035-e27a-46ed-ab4a-b23584086b76

  1. 最初にまずChatGPTの設定を行います。「私はUnity(UnrealEngine)のプログラマーです」または「あなたはUnity(UnrealEngine)のプログラマーです」のようにコメントします。

    これはChatGPT開いて、新しいチャットの一番最初にコメントするだけで良いです。こうするとChatGPTの回答がUnityのプログラマーと会話するように質疑応答されるようになります。ちなみにChatGPTは様々なキャラクターになりきって回答を行うことが大得意です。なので最初は「あなたは○○のプロです」みたいなコメントすると良いです。

  2. 定義を訪ねるには「○○とは?」「○○ってなに?」と尋ねます。

  3. 「○○のコードを書いて」「○○のプログラム書いて」などとコメントするとコード生成してくれます。今回は例として「キューブのオブジェクトを用意しました。X軸に移動するプログラムを書いて」と記載しました。

    CopyCodeでコピーできます。

  4. コピーしたら、Unity側でスクリプトを作成してペーストします。

    作成したスクリプトをキューブにアタッチします。

    するとX軸に移動するキューブができました↓

  5. 次に生成したコードの一部の意味がわからなかったとしましょう。「transform.Translate(Vector3.right * moveAmount);の意味は?」とコメントするとその意味を教えてくれます。

  6. さらに作成したコードを編集してもらう事もできます。先ほどのコードをそのままペーストして最後に「このコードにY軸に移動する機能もつけ足してください。」とコメントします。なお改行したい場合はShift+Enterキーです。

    ただコード編集は長くなるのを貼ったりするのはめんどいので、特定のプログラムだけ生成してもらうだけしてもらって自身で編集する事が私は多いです。

  7. プレイするとこんな感じになります↓

  8. 他にも例えば「Unityで三人称視点のキャラクターを実装したいです。」などでざっくりとした手順を確認する事ができます。

  9. 会話は続いているので上画像のChatGPTの回答に対して「1について詳しく」とコメントすると上画像の手順1について詳しく解説してくれます。

ただ最後の8,9のような手順はChatGPTではなく、ググったり教材で確認する方がわかりやすいでしょう。

今回生成した基本的な質疑応答のリンクです↓

https://chat.openai.com/share/47025035-e27a-46ed-ab4a-b23584086b76

基本的質問方法をまとめました↓他にも「コードにコメント付けて」とかググる時みたいに「Unity オブジェクト 取得」とか、「もっとわかりやすく」とかも可能です。

基本的な質問方法
あなたは○○のプロです あなたはUnity(UnrealEngine)のプログラマーです
○○とは? ○○ってなに? Unityのシーンとは?
○○のコードを書いて ○○のプログラム書いて オブジェクトを移動させるコード書いて
(貼り付けたコード)の意味は? transform.Translate(Vector3.right * moveAmount);の意味は?
(コード貼り付けて)○○に修正して 解説コメントつけて (コード貼り付けて)さらにここに回転する機能付けて
(エラー文そのまま貼り付け)エラーになります 何故エラーになる? (エラー文そのまま貼り付けて)エラーになります。なぜ?
○○の実装手順は? スタート画面からプレイ画面の遷移方法は?
(ChatGPTの回答に対して)○○について詳しく教えて (ChatGPTの回答に対して)1の手順について詳しく解説して

UnityにおけるChatGPTの使い方(C#)

Unityに関しては上記「基本的なChatGPTへの質問方法」で挙げた通りです。流れを再度確認すると以下です。

  1. まずは「あなたはUnityのプログラマーです」のようにChatGPTを設定するためにコメントします。

  2. 例えば「オブジェクトをX軸に移動させるプログラムを書いて。クラス名はCubeで」とコメントするとコードを教えてくれます。

    あえて一個あげるとするなら、上記の様に「クラス名はCubeで」とクラス名を指定すると楽ぐらいです。

  3. はいこれで、コピペしたらオブジェクトをX軸に移動させるプログラムを記載したキューブの完成です。

生成した回答例です↓
https://chat.openai.com/share/43e5ab29-28f9-466d-8c76-063d1ef97cd8

UnrealEngineにおけるChatGPTの使い方(ブループリント)

そしてUnrealEngineですが、同じように基本的な質問方法は上記の「基本的なChatGPTへの質問方法」で挙げた通りになります。ではブループリントとC++に限った話をしていきます。

まずブループリントですが、残念ながらブループリントは生成する事はできません。コード生成以外にはまだChatGPTは対応していないからです。生成はできませんが、ブループリントはコードより非常に楽に効率的に手動で作成していく事はできます。例えば特定のノード名や機能の作り方はブループリントでも教えてくれます。試しにやってみます。

  1. まずは「あなたはUnrealEngineのプログラマーです」と宣言します。

  2. 「アクタをX軸に移動させるノードを教えて」とコメントするとノードは生成してくれませんが、手順を提示してくれます。今回二つ提示してくれたので二個目の方法で実装していきます。

  3. まずはアクタとなるキューブのブループリントクラスを作成して配置します。

  4. キューブのイベントグラフにChatGPTの回答通りにノードを作成します。

  5. プレイするとX軸に移動するアクタが作成できました。

このようにブループリントの場合は提示された手順でノードを作っていく感じになります。私の場合は「~するノードはある?」「~の機能を実装するノードは?」と聞く事が多かった印象です。

UnrealEngineにおけるChatGPTの使い方(C++)

では次にC++ですが、C++だともちろんコードなので生成する事ができます。ただいくつかコード生成の際に質問内容に含める文言があります。実際にやってみましょう。この部分は動画でも簡単に解説しています↓

https://youtu.be/w59hvdpaJII

  1. まずはC++クラスのプロジェクト名フォルダでC++ファイルを作成 → Actorを親クラスにします。作成するクラス名は「MovingCube」とします。

  2. 次にChatGPTで「あなたはUnrealEngineのプログラマーです」と宣言します。既に同じチャット内で宣言している場合は必要ありません。

  3. 回転するキューブを実装したいとして以下の様にコメントします。「C++でZ軸に回転するプログラムを作成して。クラス名はCubeです。親クラスはActorです。プロジェクト名はMYPROJECT22です。」ポイントとしてはクラス名,親のクラス名,プロジェクト名を含めてコメントする事です。

  4. 生成したコードをコピーして、UnrealEngineのC++ファイルのヘッダーファイルとソースファイルそれぞれに貼り付けます。

  5. ホットリロードします。

  6. レベルにCube(C++クラス)を配置してキューブコンポーネント追加します。適当な位置に移動させてプレイします。

    こんな感じにUnrealEngineのC++も生成してコピペするだけで実装できます。

作成した質疑応答のリンクです↓
https://chat.openai.com/share/e85d6d3d-6862-4b66-b860-6e5a7a76baf3

ChatGPTのデメリットは?

デメリット① 「基礎的な情報を一通り学びたい場合は向いていない」

逆に何らかの機能の基礎や使い方を一通りチェックしたい時にはChatGPTは向いていない。大量の文章生成はしてくれないし、いちいち聞くのもめんどくさい。なのでゲーム開発の基礎を一通り学びたいのであれば本やUdemyなどの教材を利用する事をおすすめします。あくまでピンポイントでわからない点を理解する時に効率的に教えてくれる。

デメリット② 「間違ってる情報を堂々と教えてくる場合もある」

間違った手順や間違った名称で教えてくる時があります。そんな時は「間違えてない?」などコメントしましょう。

デメリット③ 「コード生成機能を活用できるのはコードを理解している人」

結局、コード生成していくといってもどちらかというとコードを付け加えていく事がほとんどになります。なので特定の機能のコードだけ生成してもらって後は自身のプログラムに組み込んでいく作業になります。なので生成していくコードと自身のコードは常にどんな仕組みか理解しつつ進めなければなりません。

デメリット④ 「生成できるといっても結局手動の編集が必要」

結局手動でコードは編集していく必要が出てきます。全てをコード生成してはい終わりという訳にはいきません。

デメリット⑤ 「ChatGPTの情報源は2021年までのもの」

ChatGPTのそもそもの仕組みはWeb上にある膨大なテキストデータを解析し、入力された質問への回答を生成するというものになっています。といっても今現在(2023年七月現在)は2021年までの情報がほとんどとなっています。徐々にそれ以降の情報も追加されいてるとの事ですが、情報は基本的には2021年より前となる事に注意しましょう。

ChatGPT以外のAI(GoogleのBardなど)は必要?

現状使う必要無いと思います。GoogleのBardもしばらく使ってみましたが、個人的にはBardはいらないと思いました。Bardも役に立ちますがChatGPTとGoogleだけで充分です。今は一切Bardは使ってません。

最後に

ChatGPTをゲーム開発に使わない手は無いです。特にプログラマーにとっては最強の武器になります。ぜひまだ使っていない方はChatGPT試してみてください。効率的にゲーム作っていきましょう!

ついでに宣伝させてください。UnrealEngineのゲーム開発の基礎知識をまとめた「UnrealEngine5の教科書」というWeb本書いています。ChatGPTだけではわかりにくい「UIの作成方法」「ブループリントの作り方」などこの本でゲーム開発の基礎知識を徹底解説しているの興味ある方はチェックしてみてください!(半分までどなたでも無料で読めます)
https://zenn.dev/daichi_gamedev/books/unreal-engine-tutorial

私自身もゲーム開発におけるChatGPTについてフル活用できている自信ないので「もっとこうした方が効率的だよ」「ChatGPTに聞く時にはこうやって質問した方が良いっすよ」などあればコメントで教えてくれるとありがたいです。以上です。お疲れ様でした。

Discussion