【ChatGPT】ゲーム用のデータセットを考える 【ケースとレシピ】

# ChatGPTを使いたい
ChatGPTをゲーム開発にうまく組み込みたい。
うまく組み込んで時代の流れに乗りたい。

試しにコードを書かせてみたが、非常に部分的な機能の実装をどこかのサイトでコピペしてきたようなものぐらいしか使えなさそうだった。また、ゲーム内でChatGPT APIを叩かせるのは自分の財布が持たない。

となると、ChatGPTでデータセットを作らせるのが有用だと思い、データセットが必要な場面と、その出力のさせ方を考えた。
(今後どの分野でもデータセットのレシピ記事みたいなの増えそう)

# ケースとレシピ

### 1. 仮のユーザー名
よく使いそうなケース。
BOTの名前にしたり、デフォルトの名前に使う。
性別はもちろん、世界観を統一したり、文字数を制限したりなどいろいろなオプションをつけることができる。
```
入力:
プレイヤー名をカタカナで10個出力してください
アメリカやヨーロッパでよく使われる名前にしてください
説明や文章は省き、名前だけを列挙してください

例)
ジョン
マイケル

======================================================
出力:
リチャード
スティーブン
クリストファー
アンドリュー
ジェームズ
エリザベス
キャサリン
マリー
アレクサンダー
ベンジャミン
```

### 2. チュートリアルの文言
こういった説明をする文章のたたき台にちょうどよさそう。
説明内容をプロンプトに書き起こすことで、説明の漏れチェックにも使える。

```
入力:
チュートリアルで表示する文章を各段階ごとに出力してください。
1. 挨拶
2. ボタン1への誘導
3. 表示内容Aの説明
4. ボタン2への誘導
5. ボタン3への誘導
6. 表示内容Bの説明

======================================================
出力:
1. 挨拶:
「こんにちは！チュートリアルへようこそ。このチュートリアルでは、機能の使い方を順を追って説明していきます。」

2. ボタン1への誘導:
「まずは、画面に表示されている「ボタン1」をクリックしてください。」

3. 表示内容Aの説明:
「ボタン1をクリックすると、「表示内容A」が表示されます。これは、アプリケーションの基本的な情報や使い方に関する説明です。じっくりと目を通してください。」

4. ボタン2への誘導:
「表示内容Aを理解したら、「ボタン2」をクリックして次のステップに進みましょう。」

5. ボタン3への誘導:
「次に、「ボタン3」をクリックして、さらなる機能の詳細を学んでいきましょう。」

6. 表示内容Bの説明:
「ボタン3をクリックすると、「表示内容B」が表示されます。ここでは、アプリケーションの応用的な使い方や便利な機能について解説しています。これらの情報を参考に、アプリケーションを最大限活用してください。」
```

### 3. 言葉の数値化
単語の幸福度だったり、ある単語を原点としたときの座標だったり、なんとなくの方針にしたがって数値を出してくれる。
もちろん正確な数字ではないし破綻している時もあるが、数字にすることでいろいろなゲームで扱いやすくなるはず。
予想していたよりもこちらの意図を汲んでくれている。
ただ、ピーキーな数字が出力されることが少ないことを頭に入れるべきだと思った。

``` :実験1
入力:
単語「トマト」を原点としたときの以下で指定する単語のXY座標を教えてください。
その単語が「トマト」と同じ文脈で使われる場合はX軸方向に増加します。
その単語が「トマト」と同じカテゴリーに存在する場合はY軸方向に増加します
座標は[X, Y]のように表します。
説明や文章は省いてください。

例)
ピーマン [10, 10]
畑 [5, -10]

指定)
 - 車
 - 剪定ばさみ
 - 死
 - 宇宙

======================================================
出力:
車: [3, -10]
剪定ばさみ: [8, 2]
死: [-5, -5]
宇宙: [-10, -10]
```

``` :実験2
入力:
指定したの単語の幸福度を-10.00から+10.00までの範囲で数値化してください。
説明や文章は省いてください。

例)
 - 幸福 [10.00]
 - 笑顔 [9.89]
 - 水 [7.32]
 - 事件 [-9.38]
 - 不幸 [-10.00]

指定)
 - ハッピー
 - めちゃくちゃでかいシュークリーム
 - ラジオ
 - 天災

======================================================
出力:
ハッピー [9.60]
めちゃくちゃでかいシュークリーム [7.25]
ラジオ [5.10]
天災 [-8.70]
```

### 4. サブストーリー
メインのストーリーはできているけど、特にメインとは関係のないキャラの短いストーリーが欲しかったりする。
また、ゲーム内で読める本や、石碑の文章にもちょうどいいかもしれない。
```
入力:
あなたはプロの小説家です。以下の世界観を守り、200文字程度の小説を書いてください。
 - 主人公の名前はミシェルで女性
 - 主人公はおっちょこちょい
 - ドープ王国に住んでいる
 - 親友のお化けと住んでいる

説明を省き、小節だけを出力してください

======================================================
出力:
ミシェルはおっちょこちょいだが、ドープ王国で生きることを楽しんでいた。彼女は、親友のお化けと共に暮らしており、二人は一緒に食事をしたり、話したりしていた。ある日、ドープ王国に危機が迫り、ミシェルはお化けの力を借りて、救世の冒険に出ることに。彼女は、危険な状況に陥りながらも、お化けの協力によって様々な試練を乗り越え、王国を救うことに成功する。そして、彼女はお化けに感謝の気持ちを示し、二人はこれからも一緒に暮らし、ドープ王国の平和を守っていくことを誓った。
```

5. 短いセリフ
戦闘開始時にしゃべらせたり、ボイス用に短いセリフが必要な時がある。
```
入力:
指定したキャラクターが指定した場面で話す短いセリフをそれぞれ3個ずつ出力してください。
説明や文章は省いてください。

キャラクター)
 - 少年
 - 13歳
 - 冒険家
 - 剣士
 - ペットのソラを連れている

場面)
 - 攻撃時
 - 休憩時
 - ゲーム開始時

======================================================

少年 (攻撃時):

ソラ、一緒にやろう！
この剣で決める！
逃げられないぞ！
少年 (休憩時):

よし、休憩だ、ソラ。
もうちょっと頑張ろうね。
休む間も惜しいけど、休憩も大事だ。
少年 (ゲーム開始時):

ソラ、冒険の始まりだ！
どんな困難も乗り越えようね。
さあ、新たな世界へ出発だ！
```

# まとめ
今まで自前で用意した方が早かったものが、こうやって考えてくれるのはうれしい。
それぞれ細かい修正は必要なものの、たたき台としては十分だと感じた。
プロンプトの書き方はすでに多くの人がまとめてくれているので、それを参考にするとよさそう。