AIと一緒にゲームジャムをする

こんにちわ ゲームジャム運営とか社内でしてる[suzuki-nar](https://qiita.com/nari-nari)です

今回は、ネタ記事になります
一発目のAdventCalenderで申し訳ないですがネタ記事なので
真面目に読まず適当にふ～んというお気持ちで見てもらえるとです

昨今、AIに出力をしてもらうサービスが増えてきております
文章を作ったり画像を作ったり歌ったりしてくれてとてもありがたい世の中になりました
ひょっとしてこれらを使えばゲーム作れるんじゃね？？？？というのが今回の企画になります

## 企画説明
AIにいわゆるゲームプランナーのお仕事をしてもらいます
あとついでにデザイナーの仕事もしてもらいましょう
期限としては1dayゲームジャムをイメージしてます
なので大体12時間ぐらいの開発時間でやります
ついでに作りながらqiitaの記事も書きます

今回、AIくんと人間でやってもらう仕事は以下になります

#### AI
・企画書の作成
・コンセプトアートの作成
・ゲーム画面イメージの作成
・ゲーム絵素材の作成
・音楽素材の作成

#### 人間
企画書・仕様書・画面イメージをもとにひたすらUnityで実装する
素材などを組み込む

今回は、ミニゲームの企画をAIに考えてもらうので仕様書は省きます
どのみち今の文章AIはまだ数字の肌感をだすなどの行為は弱いので細かいことは人間が補助しましょう
また、AIなので文章の出力には粗があると思います
まあネタ企画ですしいい感じにたまに補完して作りましょう
必要ならAIに追加で質問しても良さそうですね！
現実の企画書・仕様書も抜けがあれば質問しますしね！

さてやることは決まりました
AIのサービスも選定しましょう
### AIくんの人物紹介
#### 企画担当
AIのべりすと
https://ai-novel.com/
こういう絵素材系でしたら鉄板ですね
本来は小説の自動生成ですがプロフィールづくりなどもしてるので
プロンプト次第では企画書も仕様書もかけそうな気がします

Ai Title Maker(ATM)
https://ai-title.com/
AIがふわっとした単語からトレンドを拾っていい感じのタイトル作ってくれます
あると便利そうなので使ってみようと思います！

#### ゲーム絵素材担当
NovelAI
https://novelai.net/
本来はノベルテキストとかを作るところですが
キャラクター系の出力が強いAIサービスです
最近ラーメンちゃんと食べてくれるAIとかも他から出てますが
まだ課金したままだったNovelAIを使います
課金してもったいないから使わないとね！
ただ、キャラクター系の出力が強いのでそうじゃないゲームなら他のサービスにします

Midjourney
https://www.midjourney.com/
画像AIサービスなら鉄板中の鉄板！
キャラモノじゃなかったらこちらを使います
果たして出番はあるのか！？

NMKD Stable Diffusion GUI 
https://nmkd.itch.io/t2i-gui
脳死でStable DiffusionをGUIで使えるツール
PCのスペックさえそれなりに良ければヨシ！
本家では2.0が出てますがその波には乗れなかったです

Midjourneyでも出せなさそうな素材に使う予定

#### 音楽制作担当
FIMMIGRM
https://fimmigrm.com/
3曲まで無料なのでとりあえず使ってみます！
ジャンル指定で雑に作るので画像が決まったら作ってみましょう！

効果音は付けません！なんかいい感じのサービスあったら教えてください！
AudioGenとかあるみたいですが使えるようになったら面白そうですね！

それではゲーム制作開始！

## ゲーム企画作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/ee7af7c7-9474-7f30-b242-4e6a0f3ae00b.png)
なんかそれっぽく穴埋めしてくれるところを用意しておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/97777308-5ce5-6a2d-dee9-f6c53c391e68.png)
うーんほしいジャンルのゲームじゃないですね（ボードゲームになっている
先にタイトルっぽいのもの作りましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/94902247-a5fe-dccb-535b-42c6696eaa1b.png)
こちらのトレンドからそれっぽいタイトル作ってくれるサービスを使います
生成されたタイトルもAIノベリストの企画書に盛り込んでみます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/8035d1de-9b6f-1bfd-446a-fbd68b7cc481.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/1f391091-ff58-6d35-0824-7d10241b8a0f.png)
スクショタイミングを間違えてAIがどこを書いたところがわからなくなりましたが
ゲームオーバー条件：と入れて続きを書いてもらいました
挑戦回数にパスワードってミニゲームなのに仕様が・・・仕様が多い :rolling_eyes: 

![image.png](https://camo.qiitausercontent.com/f36cdb8c00f3ff317297dbbf2c0a289ef3595b88/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3137383738322f30646363623464342d373061642d346530392d393766652d3662633133373163326461362e706e67)
？？？？？

ここに来て謎のこだわりで仕様をクソデカマシマシチョモランマを見せるAIくん
完成できるか不安になってきました・・・

企画をまとめます

```
【ゲーム企画書】
ジャンル:アクションゲーム
プレイ時間: とても短い ミニゲーム
タイトル: シャープな特殊役が登場するユニークなジャンピングアクションミニゲーム

遊び方:
スペースキーでジャンプ
A/B同時押しでしゃがむ。 十字キー左右で方向転換、上下ボタンは足場を作るのに使用。
Aボタンを押してレバーを倒しながら下ボタンを押すと高速移動が可能 (ただし画面の端に行くほど速度が落ちる)。 レバー上+Cでボムを発射できる。
Bボタンでボムを1個消費する代わりに画面内の敵を一掃出来る。
左スティックを倒すとその場で回転可能。 右スティックで攻撃方向を変えることが出来る。
十字キー上で2段ジャンプが出来るようになる。

ゲームオーバー条件: 
残機0・体力0になった時。 コンティニュー回数制限あり。 パスワード入力による再開も可能。
制限時間があり、時間切れになると失敗となる。

ゲームクリア条件:
「宇宙一速い男」の称号を獲得する事
ステージ中に現れる3つのチェックポイントを全て通過するとエンディングです

その他： 
難易度は非常に低いので、すぐにクリアできます
このソフトに収録されている5種類のミニゲームの中からどれか一つ
```

うーーーん
これ作れるのかな？
１つずつちょっと見ていきましょう
まずはタイトルを見てみましょう
> タイトル: シャープな特殊役が登場するユニークなジャンピングアクションミニゲーム

これだけ見るとジャンプキングダム的なゲームに見えますね
特殊っていうのがどうなのかわかりませんが後述の遊び方を見ると結構特殊なので特殊ですね


では、遊び方を見てみましょう

> A/B同時押しでしゃがむ。 十字キー左右で方向転換、上下ボタンは足場を作るのに使用。

上下ボタンは足場を作るのに使用。がこの一行だとよくわからないですね
上下の使い方がないからですね
まあ、上下ボタンが押されたら問答無用で足場ができるようにしましょう
そのまま次を見てみましょう

>Aボタンを押してレバーを倒しながら下ボタンを押すと高速移動が可能 (ただし画面の端に行くほど速度が落ちる)。 レバー上+Cでボムを発射できる

A＋レバー倒す＋十字キー下で高速移動になるようですね
そして画面の端で高速移動ができる
レバーが十字キーと別で出てきてますが同じな気がする・・・
マウスの下方向もしくはジョイスティックの下方向で判定取りますかね
レバー上+Cでボムを発射できる。
は読んだとおりですがやはり十字キーとレバーは別のようですね

> Bボタンでボムを1個消費する代わりに画面内の敵を一掃出来る。

またボムが出ていますね
説明的に発射するボムと違うボムのようです。

> 左スティックを倒すとその場で回転可能。 右スティックで攻撃方向を変えることが出来る

やはりジョイパッドを想定していそうですね
左スティックでおそらく進行方向を変えることができる
右スティックで攻撃方向を変えることができるそうです
ただ攻撃はボム発射のみなのでボムの方向が変わりそうですね

> 十字キー上で2段ジャンプが出来るようになる

これは書いてある通り十字キー上で２段ジャンプができるようです
ジャンプがないので十字キー上を押すと突然２回ジャンプしますがそのまま作ります

これで操作の遊び方は以上ですが**通常の移動方法が存在していません**
確認して連絡が来ないことは人間のゲーム制作でもよくありますからね
そういうときは一度確認しましょう
とりあえず後で質問事項はまとめて聞きます

> 残機0・体力0になった時。 コンティニュー回数制限あり。 パスワード入力による再開も可能。

パスワード入力による再開・・・
チェックポイントからやり直せる想定で考えます

そしてここまで見て重要なことに気づきましたが
**どうすると残機や体力が減るか書いてないです**

・・・一旦疑問点は後でまとめてAIに再度聞いてみましょう

続いてゲームクリアについてです
> 「宇宙一速い男」の称号を獲得する事
ステージ中に現れる3つのチェックポイントを全て通過するとエンディングです

これは一部その他に分類されてましたが整理すると基本的に条件としてまとまってますね！
どうするとクリアでどんな耐火があるかどういうゲーム化まで
他の仕様もこれぐらいの粒度でいてほしいものです！👏

最後にその他
> その他： 
難易度は非常に低いので、すぐにクリアできます
このソフトに収録されている5種類のミニゲームの中からどれか一つ

ゲームのレベルデザインが記されてます！~~ふわっとしてますが~~ とてもありがたいです！
更にタイトル画面の見せ方っぽいのも記されてますね！
多分これは星のカービィ スーパーデラックスみたいな雰囲気の画面になるんだと思います！

## AIくんに追加の質問
先程あった移動方法について

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/aeadac43-3b8e-b471-9612-72f9c190513f.png)

？？？？？？？？なんか多い？？？
> 2D横スクロールアクション

まずここは問題ないですね！
これでゲームジャンルはわかりました！やったね！
これで左右で移動も兼ねてると仮説が深まりました！
・・・左右で移動なんです！きっと！

>攻撃方法・・・

なんで仕様増えるの？？？？？？？？
攻撃の操作方法ボムを投げるだけですよ？？？？？
うーんどうしましょうね
後で攻撃方法について再確認しましょう

続いてHPが減る条件について聞いてみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/6b168906-185c-a9be-3f58-1257e2e25d55.png)

違うの！
自分が聞きたかったのは「どうしたら」HPが減るかで
HPが減るときの「挙動」を知りたい訳じゃないの！

ついでに敵についても聞いてみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/21f6d8eb-5fbe-71d8-19ab-dd7c20f98228.png)
空白だらけですし攻撃力能取湖はよくわかりませんが
攻撃力・倒す条件はわかりました
耐久値の内容は・・・わからないどうしよう・・・無視します

どうにかプレイヤーの残機なり体力なりHPが減る方法を知ろうと模索するなりくんを御覧ください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/baf72384-483a-d616-f741-d18c0fd8e946.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/11a459a2-dad5-8fb9-f64b-00c7f1ad94da.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/0271f765-4680-02a3-68dc-666add2acf04.png)
やっと出た！回復薬の概念が出てますがとりあえず敵の攻撃を食らうとHPが減るようです！

んで回復薬って何！？ｗ

これ以上やると企画書の事情聴取だけでqiitaの記事が終わってしまうのでちょっと企画を整理させてもらいます

```
【ゲーム企画書】
ジャンル:アクションゲーム(2D横スクロールアクション)
プレイ時間: とても短い ミニゲーム
タイトル: シャープな特殊役が登場するユニークなジャンピングアクションミニゲーム

遊び方:
スペースキーでジャンプ
十字キー左右で方向転換と移動、上下ボタンは足場を作るのに使用
十字キー上で2段ジャンプが出来る
A/B同時押しでしゃがむ
Aボタンを押してレバーを倒しながら下ボタンを押すと高速移動が可能 (ただし画面の端に行くほど速度が落ちる)
レバー上+Cでボムを発射できる
Bボタンでボムを1個消費する代わりに画面内の敵を一掃出来る
左スティックを倒すとその場で回転可能。 右スティックで攻撃方向を変えることが出来る
※レバーとスティックは同じ認識

ゲームオーバー条件: 
残機0・体力0になった時。 コンティニュー回数制限あり。 パスワード入力による再開も可能。
制限時間があり、時間切れになると失敗となる。

どうやって体力が減るか： 
敵の攻撃を食らう

ゲームクリア条件:
「宇宙一速い男」の称号を獲得する事
ステージ中に現れる3つのチェックポイントを全て通過するとエンディングです

その他： 
難易度は非常に低いので、すぐにクリアできます
このソフトに収録されている5種類のミニゲームの中からどれか一つ
```

こんな感じですね
質疑応答で発生した無駄な仕様は削除させてもらいました！さよなら！
企画はこれで以上になります！

## コンセプトアート作る編

では、続いてコンセプトアートを作ってもらいましょう
今回はNovelAIを使います
コンセプトアートっぽいプロンプトとゲームのタイトル入れたいと思います

とりあえずタイトルをDeepLで翻訳してもらいます
シャープな特殊役が登場するユニークなジャンピングアクションミニゲーム
Unique jumping action mini-game with sharp special roles
そのままプロンプトに突っ込みます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/e133d641-00b9-573c-5902-fa534aa3e013.png)
なんかそれっぽいです！ｗ

更にキレイになりそうな定型文突っ込みまくって生成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/61850066-ef0b-ff53-6e06-6a90c0a8ba1a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/871351dd-3cff-5bd8-de52-399e7c2804c9.png)
美少女になってしまった・・・まあ、テンションは上がりますね！

称号が「宇宙一速い男」なのでこれもプロンプトに入れましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/c2f6ccfa-f03e-01cb-ddfc-a9bb9f813bdc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/843cab80-f21d-bf28-aff4-81a63ba45dae.png)

うーんプロンプト入れすぎて無視されてますね
ちょっとプロンプトをシンプルにします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/ba7a9aaf-cfbe-ed04-6640-c659e7acbd48.png)

ゲームにマッチしてる感じが強まりましたが何かC級映画みたいなダサデザインになってしまいました
ゲーム要素を足してみましょう

ボムを発射して敵を一掃まで入れたらボムがメインになってしまいました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/72c53721-83e8-ccda-f387-ef4ee3c91e8c.png)

ジャンプして敵を避ける的な文章も足しました
後ろにいるのが・・・多分敵ですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/4694b8d6-9b4d-cac8-e6d8-f9ce4d3d313e.png)

大体これでいいんですが自分の性癖に合うようにちょっとプロンプトを変えます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/a7e5ff46-8e7c-e016-36fb-03d9f3ad2634.png)

大体目的のものが出力されました
これをコンセプトアートにしたいと思います
ついでにタイトルで使おう

## ゲーム画像素材編
画像素材では以下のものを作ります
・ゲームモード選ぶ画面（実際は１つですが５つのモードから選んでそうな画面）
・主人公
・敵
・ゲーム背景
・ボム
・体力ゲージ
・ゴール
・チェックポイント
・爆発エフェクト
このあたりがあればゲームになりそうです！

まずは「ゲームモード選ぶ画面」を作ります
このソフトに収録されている5種類のミニゲームの中からどれか一つ
とあるのでなんか５個ミニゲームが並んでる画面作れないか試してみます
5 video game package, Scattered on the floor 
でやったんですがNovelAIはキャラしか出さなかったので断念
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/147634b3-74ef-64b5-0d10-9dfb17da4c5d.png)
なんだこれ・・・

AIのサービスを変えて
Midjourneyさんにお願いしました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/339e4905-879f-c7e5-2287-fd8fbc6a9a3a.png)
同じプロンプトでおもったよりいいものができてて驚いてます！
右上の画像を使おうと思います！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/89d4a141-722d-157d-5277-4ceeeb710c3d.png)

後は過程を端折りますがこんな感じになりました
imgage2imageも試したのですが構図が似ちゃうので素材に使いづらく断念

#### 主人公
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/ede71911-80eb-2e5d-c5a2-083eac8af1f0.png)
髪の色とか細かいところががコンセプトアートと変わっちゃってますがビビッときたのでこのまま行きます！

#### 敵
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/ac5ef34f-e345-5301-8b3c-1fba63f63d59.png)
これもなんかコンセプトアートと違いますが赤い敵なのでだいたい良し
ちなみにコンセプトアートの敵はこれ（多分
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/7247d3c9-773a-f60c-abe8-bffce6922c9d.png)


#### ゲーム背景
適当にやったらいい感じに出たのでヨシ！
シームレスじゃないですがまあ別に背景スクロールしなくてもいいっしょ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/3ae8a578-3f58-d2ea-b650-d8fd174743ae.png)

#### ボム
この辺から試行錯誤が必要そうだったので
NMKD Stable Diffusion GUI を使ってローカル実行してます
これは爆弾のイラストを作ろうとした残骸 bomb,cartoonとかbomb,illustとか入れてた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/6cda23c1-5874-0275-9548-55a7af65d62f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/e4c1aa54-c480-bb6c-5242-8530822d2fd8.png)
結果的に普通にbombとpormptに入れたらいい感じに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/3f3922d3-06d8-bace-35ee-81ff31bad3dc.png)


#### 爆発
NMKD Stable Diffusion GUI を使ってます
explosionって入れとけばいい感じになったので後は加算合成でゲームに出します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/42b52a6a-1632-5765-c946-a911e97cbea7.png)


#### 断念
以下は制作時間の都合でスキップしてます🙇
Unityのデフォルト機能で頑張ります
・体力ゲージ
・ゴール
・チェックポイント

ちなみに背景のくり抜きとかは手動でやります

## 音楽作る編
音楽はFIMMIGRMを使います
ジャンルを選んで生成してくれます
あんまりやれることはないですがゲームにマッチしてそうなジャンルを選びます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/c16f08aa-4492-ed3b-c434-47bf9edaf149.png)

Technoで生成したらいい感じだったら購入します
メール作成時にクレジットが無料で３つ付与され
購入時に初めてクレジットが消費されるかたちになってます
14秒しかないのでめっちゃ短いですけど音はいい感じです
（無料版の制限っぽい
ループ処理もされてなさそうですがあんまり気にならなかったのでこのまま使おう
保存形式はmidとwavで入ってます
後ベース音的なものだけのInstrumentalバージョンもついてます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/add40cf6-0591-d9fb-faba-80402302075f.png)


## 実装
実装に入りますが・・・
ここまでで8時間ぐらい使ってます
12時間なら後4時間しかねえ！
qiitaの記事書きながらやってたら時間が溶けてしまった・・・
組み立ても重要なのですがここは結構最小限の実装で進めたいと思います
移動と攻撃とゴールと敵配置とゲームオーバーだけ作ります！
ということでできました
4時間だとこんなもんですね(^_^;)
今回で肌感わかったので次回また何かゲームジャムするときの参考にしたいと思います
https://unityroom.com/games/ai-gamejam-test-2022

## 完走した感想
AIと意思疎通しながら企画をするのは危険だとわかりました
機能説明が足りないー＞質問をするー＞別の機能の説明も追加されて回答が来るor別の機能の説明だけする
みたいな感じで会話が噛み合わない企画の人と仕事してる感じがあって辛かったです
こちらでほしい答えを言語化して答えだけうまくもらいに行くムーブが試されますね！
そういう企画とゲームを作れるシミュレーションになったので良かったと思います！
一応AIだからそんなにイライラしないですしね！
あと自分の会社の企画の方はめちゃくちゃしっかりしてるってわかりました
質問の回答しっかりしてますしそもそも仕様書がめっちゃしっかりしてますからね！

それはそれとしてAIのべりすとさんのサービスが優秀だなと思いました
プロフィール形式で作ってくれるモードがありますが割りとそれっぽいゲーム仕様にしてくれたのですごい
ただまあAIに丸投げするにはまだ早そうです
ちょっとしたアイデアをもらう際に使ってみるといいかもです
画像生成系のサービスは、ゲームジャムみたいなものだったらうまいこと素材を作ってもらうことができそうですね
これは、ゲームジャムでもちょいちょい使ってもいいかなと思いました

## まとめ
AIと一緒にゲームジャムをすることはできなくもないが人間が主体的に決めて作っていくべき
以上です！ゲームジャムでAIを使う？機会があれば参考にしてください！ｗ

## おまけ
AIProgrammerはAIの仕様をプログラムできるのか
https://aiprogrammer.hashlab.jp/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/92e006a5-b5b3-b04b-20cb-db24cf8b345b.png)

コメントアウトされました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178782/b025fbef-813f-dae8-fa53-01493f75a56f.png)