ChatGPT格ゲープロジェクト

© CC BY 4+ visibility1619
© CC BY 4+
visibility1619

ChatGPTとGameControllerizerを使って格闘ゲームするプロジェクト。雑なテキストや音声による指示でキャラクターを操作したりできます。ChatGPTの格ゲー知識はいかに?

link https://youtu.be/dG5gSyeUObA
  • オーディエンス賞(vol.2) #ChatGPT オンラインハッカソン by #ProtoPedia
動画
開発素材
システム構成

実装のポイント

  • 音声やテキストでゲーム操作するには、「リスクの小さい対空技を出して」のような抽象的で雑な動作指示を、「↓+中パンチ」のように実際のコントローラ操作データに変換する必要があります。
  • 辞書登録やハードコーディングを一切せず、ChatGPTにこの作業を丸投げするところがポイントです。

Webブラウザで

  • 指示をWeb Speech APIで音声認識
  • 指示テキストをプロンプト文字列に埋め込んでChatGPT APIをrest呼び出し(指示は下記参照)
  • 結果はjsonとして帰ってくる
  • 結果のコマンドシーケンスを整形してweb bluetooth経由でmicro:bitへ

Microbitで

  • 受け取ったコマンドシーケンスをGameControllerizer基板にシリアル送信
  • GameControllerizer基板はUSBゲームパッドとして振る舞い、ゲーム機に操作入力
  • 終わり!

ChatGPTへの指示

これで動作するんだからすごい👼

以下の仕様に従って答えてください。
# 返答するJSON データ
{"result":true,"type":"sv5-command","command":"2,3,6,HP","message":"説明"}
# ルール
- あなたは人間の代わりにゲームパッドを操作してストリートファイター5をプレイするAIです。操作しているキャラクターが右を向いているとして、ゲームパッド操作シーケンスを答えてください。
- ゲームパッドのボタンの組み合わせのシーケンスをcommand値に格納してください。
- あなたが使える、ゲームパッドのボタンとそれに対応する記号の対応付けは以下の通りです。
- 十字キーの対応付けは以下のとおりです。
- 左下:1
- 下:2
- 右下:3
- 左:4
- ニュートラル:5
- 右:6
- 左上:7
- 上:8
- 右上:9
- それ以外のボタンの対応付けは以下のとおりです。
- 弱パンチ:LP
- 中パンチ:MP
- 強パンチ:HP
- 弱キック:LK
- 中キック:MP
- 強キック:HK
- 複数のボタンを並べるときはカンマ区切りにしてください。
- 同時に複数のボタンを押すときは+でつないでください。
- 返答に JSON 以外の文章は入れないでください。
- command値が認識されたときresult値はtrueを返します。
- type 値はsv5-commandで固定です。
- command値が認識されたときの追加の説明はmessage値に入れてください。
- たとえば「リュウの強竜巻旋風脚」というメッセージの場合、JSONデータは {"result":true,"type":"sv5-command","command":"2,1,4,HK","message":"説明"} になります。
- command値が認識されなかったときはresult値はfalseを返します。
- command値が認識されなかったときの説明はmessage値に入れてください。
- ここまでのルールにおいての例外は {"result":false,"type":"sv5-command","message":"例外処理です"} と返してください。
# 返答前にチェック!
- 返答データはJSONデータのみです。
仕様は以上です。 
今回は「あなたはXXXXです。YYYYYのコマンドシーケンス」という入力について返答ください。

XXXXにキャラクター名、YYYYに操作指示を入れます。 この辺のプロンプトの書き方は田中正吾さんの資料を参考にしました。ありがとうございます。 https://speakerdeck.com/1ftseabass/20230414-chatgpt-online-hackathon-vol-01?slide=17

ストーリー

背景1【MashupAwards 2018】GameControllerizer

  • 日常のいろいろなモノ・情報をゲーム入力にすることでゲームハックできるようになるMakerのためのミドルウェアを作った。
  • 使用例の提案の一つに、「音声入力で格ゲー」があった。
  • でも実装は基本、予め辞書登録した単語とパターンマッチする感じだった。
  • →これをChatGPTを使って、より高度にしよう!

背景2 Live Coding StreetFighter2

  • GameControllerizerを使って、テキストによるライブコーディングを行うことで格闘ゲームするという試みを行った。
  • ゲーム性がまるきり変わるけど、テキストによって格ゲーするのは結構楽しいとわかった。
  • →テキストで格ゲーを扱えるならChatGPTでももっといろいろできるでしょ!

背景3 これにインスパイアされた: https://twitter.com/nobamangames/status/1636834533499875334

  • ChatGPTすごいね!
  • 格ゲー脳の私には人類の歴史が必殺技コマンドにしか見えませんでした👾

試しにChatGPTに格ゲーの操作をさせてみた

  • そこそこ行けそう!?

プログラムで処理できるよう、ちゃんとJSONで返してもらおう

  • 間違いもあるけど、いけそうですね!ケンの対空でちゃんと対空無敵がある中昇龍拳にしているのは偉い👍

現状

  • とりあえず一通り動作するようにはした。
  • ポテンシャルは感じるけど、まだぜんぜん引き出せていない。
  • まだChatGPTへの指示が甘く、意図しない結果が帰ってくる事が多い。でも何らかのゲームコントローラ操作はしてくれるので、「格ゲーに対しイビツな知識を持つ人に言葉で指示してもどかしく闘う面白さ」はあるかもしれない。
  • 厳密に言えば、この入力のあとは何ミリ秒待つ、のような処理とかを入れないとまともには動かない。そのような知識はChatGPTの中には無いのかもしれない。要探求。
  • ★本プロジェクトはChatGPTオンラインハッカソンで作りました。
  • ハッカソンを通じて得た学びをnoteに書きました。
メンバー
  • user
    栗原 一貴 @qurihara

関連イベント
  • event #ChatGPT オンラインハッカソン by #ProtoPedia2023-04-14 開催
user
オーディエンス賞(vol.2)  @#ChatGPT オンラインハッカソン by #ProtoPedia

参加者相互投票で1位を獲得!(vol.02)

user
ばんの @tomoki_banno

YouTubeで紹介させていただきました!
https://youtube.com/live/G52z7KRVH6k

user
栗原 一貴 @qurihara

拝見しました。ありがとうございます!


同じニオイがする作品
  • event Slack で ChatGPT(Bolt for JavaScript + ChatGPT API)
  • event GameControllerizer
  • event MAX マックスチャン
  • event ChatGPTで動く「AIからあげ先生」

Proto lovers ♥
user
user
user
user
user

イベントまとめ

コンテストまとめ

作品を登録しよう

モノづくりしている人に、つくった作品を見てもらえ、リアクションがもらえるかも?

close

目次


Proto lovers ♥
user
user
user
user
user