見出し画像

#GGJ2024 ゲーム開発に使える生成AI基本テクニック5本

来週の月曜日1/22にイベントやります!
ド平日の月曜の夜だけど、この分野に興味あるひとに来てほしい!

オンライン・オフラインのJamSite(会場)を提供してくださっている熊本クリエイターズギルドさんと準備を進めております。

今回はGlobal Game Jam(GGJ)というゲーム開発イベントと併せて実施します。GGJについては過去の10年ぐらいのなかで何度か参加してきたのですが、おそらく今年は生成AIを使いこなした作品がたくさん出てくるんじゃないかなと想像しております。

その中で、ちょっとした生成AIのテクニックで、知っているか知らないかで結果や体験にえらい違いがありそうな基本テクニックを認識したので紹介しちゃいます。意外とプロの開発者でも知らないテクニックかもしれない。


キャラクターのデザインをする

画像生成は令和の生成AIにおいては基本中の基本なのであえて列挙する必要はないかもしれないのだけど、ChatGPTに実装されているDALLE-3はなかなか素晴らしいのでキャラクターデザインイラストの生成に使う。

初期のインスピレーションを得るだけでなく、カラーリングや性別、身長バリエーションを作ったりするのに役立つ。
更にこれをベースにVRoid等で3D化するともっといい。

ここで動く3Dで見れます。
https://hub.vroid.com/characters/1745666909408270450/models/1067607166826926838

さらに3D化した画像をベースにimg2img で X/Y/Z plotの Denoising x Step でキャラクターのバリエーションを生成する。

img2imgがなんだかわからんひとはこの辺を読んでください

ちなみに ChatGPT4を利用するにはクレジットカード登録が必要だ。高校生には辛いだろうから無料で利用できるサービスを紹介しておく。

  • Stable Diffusion XL Turbo in Clipdrop

  • Stable Diffusion XL on TPUv5e by Google on HuggingFace


どれも個人で無料で使う分には問題ないけど、これを商用、たとえばゲームを売るのに使っていいかどうかは利用規約をしっかり読んで理解してほしい。

動的シナリオに生成AIは使えるか

ちょうど去年の3月ぐらいに書いたブログです。

比較的お硬いNPCキャラクターを設計することは難しくはないと思います。
その後、技術書典15でマーダーミステリーボットを学生が出版しています。

だいたいGPT3.5ぐらいでも鍵を3つぐらい持った脱出ゲームは作れます。ハルシネーションと迷宮入りを防ぐために判定を作るのがポイントです。自分だったらLambdaで正規表現を使って判定しますが、簡単なボットならGoogle Formでクイズ形式にしてもゲームブック的なものは作ることができるはずです。トンチを使いましょう。

最近ではGPTsが使えます。GPTsは外部APIが使えます。


癖のあるキャラクターの喋りを構築する


セリフのチューニングついてはファインチューニングを使いましょう。
つくよみちゃんでの例が紹介されています。

ファインチューニングは完了までに時間がかかる場合があります。サイズが大きいほど時間がかかるのはもちろん、何らかの事情でキューが後ろになることがあるようです。
自分の場合、40分以上待たされることもありました。
ともかく完了を待っていると、メールに完了通知が届きます。

こういう新技術の使用例をGGJの当日にやると、学習が終わらなかったりチューニングが微妙だったりして、チームの雰囲気が残念な感じになるので、興味があるなら事前にやっておくがオススメです。

感情のある音声合成を使う

rinnaがKoemotionのサンプル

ポケモンカードバトルをじゃんけんで作る

コード生成はChatGPTsのお手の物であるので、Google Apps Script (GAS)専用のコード先生アシスタント「GASパッチョさん」を作ってある。

たとえば「Google Formで登録があったら1列目メールアドレスあてにPDFで確認メール送って」といった質問にいきなりコード生成してきてくれる。もちろん丁寧な解説コメントや手順書付きだ。

こんな感じのポケモンカードバトル風のじゃんけんぐらいはあっという間に作れる。

プロンプトをとしてはこんな感じ


いまからエンタメじゃんけんを作ります

グーチョキパーがあり、通常のじゃんけんの勝敗ルールが適用される
ただしプレイヤー2名、HP=1000。
・グーで勝つと ATK=100
・チョキで勝つと ATK=200
・パーで勝つと ATK=500
相手にダメージを与える(HPを減らす)
アイコの場合は、双方にHPを -100 これでロジック書いてみてください

ちゃんとクラスで実装してくれる。
プログラミング知識が乏しい学生さんだったら、GASパッチョさんから学ぶことは多いだろう。

さらにいうと、テスト関数まで作ってくれる。
「テスト関数って何?美味しいの?」というレベルの学生さんには是非知ってほしいのだけど、ゲーム開発ってのはテストがとっても大変。プレイヤーさんがまともに予想した通りの動作をしてくれるかどうか、おもしろいかどうか、を試したいとおもうだろうが、ほとんどのプログラムは正常系の動作を正常に確認するだけで膨大な時間がかかる。これらの入力と処理結果があったとしたら、入力を丁寧に突っ込んでくれる関数をテスト関数という。

テスト関数がロジックに漏れがないテストコードなのかを検証するのには、ロジック網羅力が実装者よりも高い必要があるが、GASパッチョさんはこの一行で終わる。

「これの実行をテストする関数を作ってください」

これは有限な時間で実装をしなければならないGGJでは有効なテクニックである。

ボットとのやりとりはここにおいておきます

https://chat.openai.com/share/d4ba1ca1-6996-47bf-86dd-3cad358fb716

AICU Incのイベントの中でもこの話はしっかり扱いたところではあるけど「役立つリンクだけ分かればいいや…」という人もいると思うのでまとめておきました。

https://techplay.jp/community/AICU


この記事が気に入ったらサポートをしてみませんか?