ABAの日誌 (original) (raw)

111個の1ボタンゲームを11秒で次々に遊ぶ 1x111(ワン タイムズ ワン-ワン-ワン)です。PCやスマホのブラウザで遊べます。1ゲーム1分で終わるのでお気軽に試してみて https://t.co/nWai2HT5TN pic.twitter.com/2Ski8E1hGM

— ABA (@abagames) 2024年10月6日

いわゆるメイドインワリオ的な、短い時間で次々にワンボタンアクションミニゲームを遊ぶゲーム。成功数に応じて星がもらえて、新しいゲームをアンロックできる。HardやExpertにすると多くの星がもらえるがその分難しい。111個全てのアンロックを目指そう!

PCやスマホのブラウザからそのまま遊べるのでお気軽にどうぞ。 波長が合わないゲームは、アイコンをクリックして"Ban"すれば出現しなくなる。好みのミニゲームデッキにしよう!

ゲームのルールがよく分からんという時は、アイコンをクリックして"Play"すれば、そのゲームを時間無制限で遊べる。謎なルールのゲームにめげないで!


ともあれコツコツと作り溜めたワンボタンゲームが200個になった。

200個も作ると、入力がワンボタンに限られることを制約と考えることも無くなり、ワンボタンでもゲームとして成り立つような操作、動作、フィールド、リスク・リワードを自然と考えるようになる。上下左右キーで自機を操作という一般的なルールを封じられることで、自然とちょっと変わったゲームになるので、アイデア作成においては通常より楽な点もある。

ワンボタンゲームの操作に対する知見はそれなりに貯まったし、これら知見をLLMに与えてゲームの生成を補助させることもできたので、最近はちょっとルーチンワーク的に手癖で作っている感じもしないでもない。

それでも、ゲームを面白くするための、最後のパラメタやルールの調整は職人的な作業感があり楽しい。この辺のバランス感覚をつちかうところを大事にして、引き続きそれなりに作っていきたいところだ。

自分の気に入るゲームが生成されるまでひたすらLLMを回す。これを仮にガチャ指向ゲーム開発と呼ぼう。

Claude 3.5 Sonnet のような高性能なLLMの登場で、LLMに簡単なゲームのアイデア作成からその実装までをさせることが可能になってきた。LLMから出てくるゲームの多くは、凡庸だったり、バランスが悪かったり、正しく実装できていなかったりする。でも、繰り返しLLMにゲームを生成させることで、面白い挙動をする、ゲーム一歩手前のコードを、稀に得ることができる。これを得るまでの行為がゲームガチャだ。

例えば、

上記のプロンプトに「fragile pillars」というテーマを与えると、以下のゲームを提案してくる。

Pillar Paraglider: Control a paraglider flying through a course of fragile pillars. The paraglider constantly descends. Press the button to ascend, but each press also sends a shockwave that can damage nearby pillars. Core mechanic: Balancing ascent with pillar preservation.


Pillar Paraglider: 壊れやすい柱のコースを飛行するパラグライダーを操縦します。パラグライダーは常に下降しています。ボタンを押すと上昇しますが、押すたびにショックウェーブが発生し、近くの柱にダメージを与える可能性があります。コアメカニズム:上昇と柱の保護のバランスを取ること。

このアイデアを詳細化し、実装させた結果、以下のゲームができた。これはClaudeの出力結果そのままである。

ボタンを押すと赤い自機が上昇し、同時に周囲に円状のショックウェーブを放つ。ショックウェーブは柱を破壊する。フラッピーバードの影響を受けすぎな感じはするが、挙動としてはなかなか面白いものが実装できている。

だが、このゲームには明らかにいくつかの問題がある。

ガチャ指向ゲーム開発では、このように面白い挙動をする不完全なゲームを、どのようにしてゲームとしても面白いものに改良するか、このプロセスが重要となる。

今回のゲームでは、以下のように変更した。

その結果、ゲームは以下のようになった。

https://abagames.github.io/claude-one-button-game-creation/wavybird/screenshot.gif

柱にショックウェーブで穴を開けて進むゲームになった。若干難しすぎる感じはするが、最初のバージョンよりは、適切なリスクとリワードのバランスが実現できており、ゲームとしての完成度が上がっているだろう。

改良版とオリジナルのコード上の差異は以下の通りである。

こう見るとオリジナルのコードは跡形もなくなっているように見えるが、実際はオリジナルの枠組みを参考にして修正できるので、0から作るよりはだいぶ楽である。

音やタイトルを付けた完成版は以下になった。

これが現時点での、LLMを用いたガチャ指向ゲーム開発の実態である。果たしてこれが、人が普通にアイデアを考えて、それを実装するのと比べて楽か、と言われると、あまり楽では無い。ただ、LLMが提案してくるゲームを選別し、それをいかにして面白いゲームにするのか、というコンピュータからのお題に立ち向かうような開発プロセスは、従来の開発プロセスとは違った面白さがある。また、ゲーム開発と並行して、生成のためのプロンプト開発・改良を行う必要もあり、そこも合わせて楽しむことが、ガチャ指向ゲーム開発においては大切である。

将来的には何も考えずに「面白いゲームを作って」とLLMに言えば、いい感じのゲームが実装されて返ってくるようになるかもしれない。現時点だと、面白い挙動をするゲームを得るには数十回のガチャが必要とされるのが当たり前で、打率はかなり低いと言わざるを得ない。だが、以前のLLMではそもそも挙動として面白いものを返ってくることは皆無で、どこかで見たような凡庸なゲームしか出てこないことが当たり前であった。それがここ1年程度のLLMの進化によって、少なくともなにかの斬新さを感じられるものが生成されるようになったのは、良い兆候である。

LLMがこのまま進化を続ければ、出てくるアイデアの質が上がり、アイデアをコードとしてより正確に実装できるようになるだろう。また、上記で挙げたような問題点を指摘すると、それに応じてコードを修正できるかもしれない。そうすれば、より少ないガチャ回数と、より簡単な改良で、遊べるゲームが作れるようになるだろう。ガチャ指向ゲーム開発の今後の発展が楽しみである。

最近インタビューを受けたりプレゼンをしたりという機会がたまたま重なって、今までの自分のゲーム体験を振り返る機会が多くあった。

このインタビューでは、ポケコンから始まるマイコンとの出会い、ベーマガのゲームを打ち込んで遊んだ原体験、私から見た最近のインディーゲーム制作シーンを話した。

Tokyo Indiesのシューティングゲーム特集のプレゼンでは、今まで作ったシューティングゲームを元に、シューティングゲームのアイデアを考える方法の一案を話した。

2024年初頭に、1DパックマンPaku Pakuが海外圏で話題 になって、それをきっかけにmatt sephton さんからインタビューを受けた。ここでもマイコンベーマガ、あとはナムコアーケードゲームから受けた影響などを話した。

このインタビューでの質問の一つが「お気に入りのビデオゲームを5つ挙げてください」だった。これは答えるのが難しい。なにしろ今まで私が遊んだゲームの数は、数は、分からないが、たぶんたくさんだ。その中から5つを選ぶ。これは難しい。

なので何かの観点を置いて選ぶしかない。私は自分がゲームを作るに当たって影響を受けたゲーム、という切り口で以下を挙げた。

列車を中心とした運輸会社の経営シミュレーションゲームのトランスポートタイクーン。ライバル会社と競いつつ路線を拡張していく体験はこのゲームならではのもので、ゲームの中に世界が出来上がっている感覚を強く感じることができたゲームであった。今はオープンソース版のOpenTTD があるので、誰でも手軽に遊ぶことができる。

弾幕シューティングの元祖の一つとも言える怒首領蜂(初代)。特に大量の戦車と弾幕が押し寄せ、常に緊張感のある切り返しを要求される5面が好きで、この体験を自分でも再現したいというモチベーションがシューティングゲームを作るきっかけになった。

白と黒の属性を持つ自機と敵の組み合わせが、今までにないプレイフィールを実現したシューティングゲームである斑鳩。伝統的なジャンルであるシューティングゲームに新しいルールを持ち込むことで、これまでにない斬新で楽しいゲーム体験を生み出せるのだと実感した。

提督から毎ゲーム異なる報告を受けることで、ゲーム展開や世界地図がどんどん変わっていくシミュレーションゲームTHE ATLAS。ゲーム開発者本人ですらも予想できない展開を作り上げることができる、プロシージャル生成の技術に関心を持った。

ワイヤーフレームをベースとしたビジュアルと、BGMと連動して演奏しているかのように鳴る効果音が印象的な3DレールシューティングゲームRez。私のゲームでワイヤーフレームや、BGMと合わせてクォンタイズされた効果音を多用するようになったのは、Rezの影響が大きい。


自作ゲームへの影響、という観点で選んでも、5つは少ない。前述のナムコのゲームの数々や、ゲーム&ウォッチなどのより原体験に近いゲームなどは挙げきることがとてもできない。それでも強引に5つ選んでみると、今の自分を形成したゲーム体験のコアを抽出することができて面白い。

他の観点で選ぶ方法もある。

今遊んでも面白い、無限に味がするゲーム5つなら、スターフォース、バーミン、グラディウスギャプラススペースハリアー、かな

— ABA (@abagames) 2024年2月12日

普遍的な面白さがある、つまり今遊んでもその面白さが変わらないという観点だと、私個人としてはこの5つ。ほかにもビジュアル、オーディオ、シナリオなどの観点で5つ挙げてみるのも面白いと思う。自分がゲームのどこに惹かれているのかということが、5つのベストゲームを選ぶプロセスを通じて分かるかもしれない。

4/17にTokyo Indiesでシューティングゲーム (STG)のアイデアを考える話をした。

プレゼンのスライドは以下の通り。でもほとんど口頭で話したので、このスライドだけ見ても何の話か分からない。なのでその補足を書こうと思う。

「撃って」「敵を倒す」ゲーム、それがSTG。当たり前である。でも本当にそれだけだろうか。

例えば「撃って」「四角を作る」ゲーム。これは何か。

画面上から迫る謎のブロックにブロックを発射して、四角にして消すゲーム、クォースである。でははたしてクォースSTGか。本家が「シューティング・パズルゲーム」と言っているので、STGであろう。ならば「〇〇する」は「敵を倒す」でなくてもSTGであるはずだ。

そういえば、私は今までいろんな「〇〇する」STGを作ってきた。

敵を倒すとその敵が落ちてくるのでそれを自機で拾う。するとその敵が自機にくっつき、敵に反撃を始める。どんどん敵をくっつけていくと、最終的に自機がボスよりも大きくなって、とんでもない火力で敵を圧倒できる。「くっつける」というアイデアSTGに取り入れることで、ちょっと変わったSTGになった。塊魂スカイキッドでもある。

ムカデ状の自機と敵がいて、自機のショットを当てて敵を吹き飛し、ゲームフィールドから押し出して落として倒す。当時はまだ目新しかった物理エンジンSTGに取り入れた。


このように「〇〇する」を「敵を倒す」から別の内容に変えることで、ちょっと新しいSTGを作ることができる。「〇〇する」に何が入るかを考える、というのが、ゲームのルールやギミック、メカニクスを考える上での補助線になる。


ゲームフィールドにはライフゲームと、そのセル上を移動する敵がいる。自機はグライダーと呼ばれる、斜め方向に飛ぶライフゲームのパターンを発射し、それがフィールドのライフゲームに当たるとそこからセルの色を変えて汚染していく。ボタンを放すとその汚染されたセルと、そのセルの上にいる敵を破壊する。ライフゲームSTGの組み合わせだ。

色分けされたバーが左右に移動しているので、色が揃った瞬間に撃つ。色を揃えるレイディアントシルバーガンや、ガンフロンティアのラスボスの回転遮蔽壁の隙間狙いあたりが発想元だ。

横向きの爆弾に当てると横方向に、縦向きの爆弾に当てると縦向きに誘爆する。なるべく多くの爆弾を巻き込みつつ、縦方向から自機の方に飛んでくる爆風をうまく避ける。

自機は高層ビル群に向かって降下していて、そのままだとビルに当たる。ビルの中腹を狙ってに爆弾を斜めから当てると、ビルを崩すことができる。

自機のショットで上空の敵を倒せるが、ショットはそのまま放物線を描いて落ちてくる。これに当たると自機もやられるので、むやみやたらに撃つと危険だ。しかし、ショットが地面に落ちるとボーナスアイテムになるので、高得点を狙うならむやみやたらに撃って、気合で避けることが重要となる。


このように、撃つ目的、撃つことで起こる結果やリスクとリワードを工夫することで、新たなゲームを作ることができる。「撃つ」という行為を何のためにどのようなタイミングで行うのか、ということをプレイヤーに考えさせることで、新たな楽しみ方があるSTGを作ることができる。

ただしこれは全てのSTGについて考えるべきではない。特に撃つことにリスクを持たせることにはかなり慎重になる必要がある。敵を破壊する爽快感を前面に押し出したいのであれば、弾は撃ち放題、敵は壊れ放題にすべきで、そこに駆け引きを持ち込む必要は無い。怒首領蜂で敵を残してコンボをつなぐためにショットを小出しにするとか、斑鳩で同色の敵を撃つためにタイミング良く単発弾を撃つ、みたいなギミックはとても面白いが、これにストレスを感じるプレイヤーもいるはずで、全てのSTGがそうあるべきとは思わない。


メタルブラックやGダライアスボーダーダウンなどで見覚えのある干渉球を単体でゲーム化した。自分と敵の攻撃がぶつかり合ってせめぎあうシチュエーションはたまらないものがある。

プーヤンで風船で降りてくる狼を肉でまとめて倒すところが好きで、そこだけ楽しみたかった。まとめて倒すと高得点は、昔ながらの伝統的なゲームルールといえる。

セガヘビーメタルが元ネタである。ヘビーメタルは縦スクロールシューティングで、画面外の敵を遠距離ミサイルで破壊できるという画期的なシステムがある。


このように他のゲームのフィーチャーの楽しさを借りるのも手である。このゲームのこのフィーチャーが楽しかったという思い出を心に、愛のあるオマージュをしよう。



このように、撃つという行為にあまりに多くのギミックを詰め込むとプレイヤーが混乱する。小さなゲームならありだが、一般的なシューティングゲームでは避けた方が良い。


こういった「撃って」「〇〇する」というキーワードで考えたアイデアは、STGを作るうえで何の役に立つか。例えば、あるシューティングゲームを代表するコアメカニクスを考えるのに役立つだろう。ここでいうコアメカニクスとはメタルブラックでの解放ビーム、レイディアントシルバーガンにおけるチェーンボーナスなど、そのゲームを代表し、特徴づける仕組みのことを指す。インパクトのあるコアメカニクスを設定することで、ゲームの差別化に役立つ。

また、特殊なギミックを持つステージやボスを考えるのにも活用できる。ゲーム全体を通じて適用されるコアメカニクスではなく、特定のステージや、特定のボスなど、ゲームの部分で発生する仕組みにこれらのアイデアを取り入れることで、ゲーム展開にバリエーションを持たせることができる。例えば、グラディウスシリーズはステージごとにコアとなるギミックを持つことで、ステージごとに新たな体験をプレイヤーに提供している。

「撃って」「〇〇する」を題材にシューティングゲームのアイデアを考える話をした。この記事を見た方々に、ちょっと変わったシューティングゲームを作ってみるのも面白いかも?と思えてもらえたらうれしい。シューティングゲームというジャンルの枠にとらわれず、自由な発想でゲームデザインに挑戦することが、シューティングゲームの持つ可能性を広げるのに役立つはずである。シューティングゲームにはこんな楽しさもあるのか、という新鮮な驚きをプレイヤーに届けることで、よりシューティングゲームファンは広がっていく。シューティングゲームは長い歴史を持つジャンルである。だからこそ、その面白さやポテンシャルを、次の世代へと継承していければと思う。

前にChatGPTなどのLLM(大規模言語モデル)を使って小さなゲームを作るのはまだ難しいのでは、という記事を書いた。

ChatGPT を用いたゲーム考案の方法はいくつか考えられるが、ChatGPT に新しいゲームを考えさせ、それを実装させることは難しい。少なくとも現状の ChatGPT には、以下の課題があるように思える。


GPT-〇〇 になればこの辺の問題は解決される?

分からない。

画像生成 AI の急激な改善を見ていると、半年後にはこの辺の問題は解決するのかもしれない。モデルの規模で乗り越えられる課題なのか、そもそもアプローチとして筋悪なのか、どちらかは現時点では不明だ。

GPT-4より一部のタスクにおいては優れた結果を出しているClaude3の登場によって、このGPTほにゃららになればどの辺の問題がどの程度解決可能なのか、ということが多少予想できるようになった。

前にChatGPT (GPTs)を使ったワンボタンアクションミニゲーム制作を試した。

これと同じことをClaude 3 Opusを用いて試してみた。その結果としては、

という具合に、改善した部分とあまり変わらない部分があった。

これを手掛かりに、今後LLMが高性能化した時に、小さなゲーム制作においてできること、できないことを想像してみると、以下のような感じだろうか。

ここで言うゲームの良し悪しとは、以下のようなことを意図している。

上記の問題に対する改良としては、以下が一例となるだろう。

これらはLLM単体でなんとかできるとは思えない。作ったゲームの良し悪しの判断を行うためには、コンピュータが実装されたゲームを自らプレイし、その結果を解析する必要がある。ただ、LLMに限らない範囲では、ゲームをプレイするAIはすでに存在するので、そういった仕組みと併用することで現時点でもある程度は可能であろう。爽快感などの人間感覚を、コンピュータがどの程度理解可能かは正直よく分からない。

ゲームの悪いところの改良をコンピュータに行わせることは、とても難しそうだ。AIがゲームの良し悪しを判断できるのであれば、それを報酬とした強化学習的な仕組みでなんとかできるかもしれない。ただ、ゲームを良くするためにルールや操作方法などを適切に改良することや、非常に多岐に渡るゲーム中パラメタを適切に調整することは、AIに可能なのだろうか。

なので現時点ではLLMのできることに限定して、小さなゲーム作りを助けてもらった方がよさそうだ。そうすると、プロンプトを通じてLLMにやってもらうことは以下になる。

ここまでがLLMにやってもらうこと。出来上がったコードやゲームは不完全なので、以下は人手で行う。

こう考えると、LLMを使ったところであまり作る手間は減って無さそうに見える。ただ、LLMが実装したコードを見ると、結構面白い挙動をするものが出てくることもたまにある。なので、そういったゲームの発想のベースとなるトイ(おもちゃ)を作る、という用途には今でも使えそうだ。これからモデルの精度が上がっていくと、最初から全く使い物にならないようなハズレも減っていくように思える。

Claudeで上記の動作を行うためのプロンプトや、それを改良して完成させたいつくかのゲームは以下のリポジトリに置いた。

新しいLLMが出てきたら、プロンプトを改良しつつ、引き続き小さなゲーム作りに活用していきたい。

ChatGPTにGPTsが搭載されたころ、テーマを与えるとそれに沿ったアドベンチャーゲームが作れないかと試していた。特に「オホーツクに消ゆ」のような、コマンド選択式のミステリーアドベンチャーを色々と遊べたら楽しいかなと思っていた。

結果としてはうまくいかなかった。GPT-4が作成するストーリーは具体性に欠け、実在(しそうな)人物やローケーションなどに沿った展開を持たせることが難しかった。

最近Claude 3とよばれる、GPT-4を凌駕するといわれるLLMが現れた。なので今度はこれを使ってアドベンチャーゲーム生成を試してみた。使うモデルはProユーザーが使えるClaude 3 Opus。

例えば「上野駅」をテーマにして生成すると、以下のようなゲームができる。


上野駅4番ホーム。午前9時頃。 ホームの端で、男性の刺殺体が発見された。あなたは、現場に駆けつけた刑事の沢村。 目の前には血まみれの遺体が横たわっている。

  1. 遺体を調べる
  2. 現場を見渡す
  3. 証拠を探す
  4. 周囲の人に話を聞く

1:遺体を調べる。

被害者は60代後半の男性だ。胸に複数の刺し傷があり、出血多量で死亡したようだ。 顔は蒼白で、目は見開かれている。身元を示すような所持品は見当たらない。 死後硬直は始まっていないため、死亡したのはつい最近だと推測される。

ポケットの中を調べると、血で濡れたメモが見つかった。 メモには「市川」という名前と、「博物館」という文字が書かれている。 被害者はこの「市川」という人物に会う予定だったのだろうか。 メモは重要な手がかりになりそうだ。

  1. 現場を見渡す
  2. 証拠を探す
  3. 周囲の人に話を聞く
  4. 警察に連絡を取る

3:周囲の人に話を聞く。

ホームにいた乗客や駅員に、事件当時の様子を聞き込みする。

ある乗客の証言。 「事件の20分ほど前に、ホームで2人の男性が言い争っているのを見ました。 被害者と、もう1人の男性です。もめているようでしたが、声は聞き取れませんでした。 もう1人の男性は、50代くらいで、黒っぽいコートを着ていた気がします」

駅員の証言。 「午前8時半頃、4番ホーム付近で不審な男性を見かけました。 50代から60代くらいで、黒いコートを着ていました。 ずっとホームの端で立っていましたが、電車が来ると改札の方に歩いて行きました」

どうやら、被害者と口論していた男と、不審な男は同一人物の可能性がある。 黒いコートを着た50代から60代の男性が重要な関係者のようだ。

  1. 現場を見渡す
  2. 証拠を探す
  3. 警察に連絡を取る
  4. 被害者の身元を調べる

4:被害者の身元を調べる。

被害者の指紋を調べ、身元の特定を試みる。 しばらくすると、本部から連絡が入った。

被害者は小林。68歳。 東京都内の自宅で妻と二人暮らし。 定年退職後は、ボランティアで地域活動に参加することが多かったという。 目立った交友関係はなく、平穏な生活を送っていたと妻は話している。

ただ、最近は外出が多く、妻に何か心配事があるような素振りを見せていたらしい。 妻は小林が何に悩んでいたのかは知らないと言う。

被害者の身元は判明したが、事件との関連性は不明のまま。 黒いコートの男、「市川」という人物、被害者の悩み。 これらの情報を手がかりに、事件の全容を解明する必要がある。

  1. 被害者の自宅を訪ねる
  2. 被害者の知人に話を聞く
  3. 「市川」について調べる
  4. 防犯カメラの映像をチェックする

4:防犯カメラの映像をチェックする。

上野駅の防犯カメラの映像を確認する。 事件当時の4番ホーム付近の映像を中心に見ていく。

午前8時40分頃、被害者の小林が1人でホームに現れる。 改札を抜け、ホームの端で立ち止まる。 小林は誰かを待っているようだ。

午前8時45分頃、黒いコートを着た男がホームに姿を現す。 小林の方に歩み寄り、2人で話し始める。 男の特徴は目撃証言と一致する。

2人は何かを巡って言い争っているようだ。 男は時折、周囲を気にするような素振りを見せている。

午前8時50分頃、口論が激しくなる。 突然、男が何かを取り出し、小林に襲いかかる。 小林は抵抗するが、男に刺されてしまう。 男は周囲を確認し、急いでホームを後にする。

これが事件の瞬間だ。男の顔は映像ではっきりとは分からないが、 黒いコートを着ていることは間違いない。 男を特定できれば、事件の解明につながるはずだ。

  1. 被害者の自宅を訪ねる
  2. 被害者の知人に話を聞く
  3. 「市川」について調べる
  4. 黒いコートの男について調べる

3:「市川」について調べる。

被害者のメモに書かれていた「市川」という名前を手がかりに調査を進める。

まず、被害者の妻に「市川」という人物について尋ねてみる。 妻は「聞いたことがない名前だわ。主人の知り合いでしょうか」と首を傾げる。 被害者の交友関係には「市川」という名前の人物は含まれていないようだ。

次に、警察の情報網で「市川」という名前を検索してみる。 すると、ある人物がヒットする。

市川。62歳。 かつては裏社会で活動していたが、10年前に表舞台から姿を消した。 現在の所在は不明。 ただ、最近になって都内で目撃情報が数件寄せられている。

裏社会といえば、被害者の小林も若い頃はその筋の人間だったという噂がある。 もしかすると、小林と市川には何か関係があるのかもしれない。 市川の行方を追えば、事件の謎が解けるかもしれない。


だいぶそれっぽい展開を作ってくれる。アドベンチャーゲームとしては選択肢が少ないこと、選択肢を選んだあとにゲームが自律的に勝手に展開してしまうこと、が難点ではあるけど、ストーリーを気軽に楽しむゲームとしてはまあまあなのではないだろうか。

あとストーリーを生成する過程が丸見えなので、そこを見ていると完全ネタバレの状態で始まる。選択肢が出てくるまでは画面から目をそらそう。

こういったストーリー作成においては、Claude 3 OpusはGPT-4を上回っているように思える。あと、ChatGPTには、

オホーツクに消ゆみたいなアドベンチャーゲームを作るGPTsを試行錯誤しているけど、事件が解決するはるか手前でGPT-4の使用上限に達して迷宮入りする

— ABA (@abagames) 2023年12月5日

という欠点があったけど、ClaudeのProユーザだとこういった問題に遭遇することはない。今後どうなるかは分からないけど。

最後にプロンプトを載せる。


You are a game designer who creates adventure games similar to "Vanished in Okhotsk". Perform the following actions in order:

  1. Asks the user for the theme of the adventure game they want to create.
  2. Creates a new adventure game based on the given theme, similar to "Vanished in Okhotsk". Outputs an overview of the game in English markdown text. Do not include fantasy elements in the plot.
  3. Creates detailed profiles for all characters, including their names, ages, appearances, and more.
  4. Develops the plot of the game in as much detail as possible.
  5. Creates detailed chapters in English markdown text about "how the player moves, who they talk to, what they discover, and what clues they obtain until the resolution of the case". This includes specific details about evidence, relics, characters, suspects, locations, testimonies, analyses, events, motives, etc.
  6. Turn the created adventure game into a playable format. The games is played in Japanese. The game starts at the first crime scene. Present the first scene and allow the player to select an action to play the game. Ensure that you do not automatically select an action. The game proceeds in the following steps:
    1. Present the scene (including specific details about appearances, names, dialogues, item names, and the state of the location) and the player's available actions. Player's actions consist of a verb and an object. Selectable objects vary depending on the verb and the situation. The available verbs are:
      • Go to
      • Examine
      • Look for
      • Ask about
      • Talk to
      • Take
      • See
      • Show
      • Call
    2. Wait until the player enters the number corresponding to the action.
    3. Transition to the next scene based on the selected action and return to step a.

Provide a clear and satisfying resolution to the mystery at the end of the game. Remember to keep the game engaging, challenging, and focused on the core mystery throughout the player's journey.

Information about "Vanished in Okhotsk" is provided below:

Overview

The game is set in Hokkaido and features real tourist spots and local scenery. The story begins with the discovery of a male body at Harumi Wharf in Tokyo Bay. The protagonist, a police chief, discovers Hokkaido's involvement in the case and starts investigating. As he solves a series of murders, a significant past hidden among the victims is revealed.

Character profiles

Plot development

The story of "Vanished in Okhotsk" starts with the discovery of a male body in Tokyo Bay. The chief detective and his subordinate Kuroki discover the victim is Bunkichi Masuda from Kushiro, Hokkaido, and head there. In Hokkaido, they start investigating with detective Shunsuke Saruwatari from Kushiro Police Station. As the investigation progresses, a second and third murder occur. The victims are Bunkichi Masuda, Yukio Iijima, and Yukukuro Shiraki, and their cases are interconnected. After identifying Masuda, Iijima's body is discovered, and it becomes clear he was being threatened. The third victim found at Abashiri Port is Yukukuro Shiraki, a resident of Meguro, Tokyo, who was acquainted with Iijima. The protagonists deduce that Shiraki was killed at Lake Kussharo, not in seawater, and his body was later thrown into Abashiri Port. They investigate around Lake Kussharo and find out that Shiraki had been to the Wakoto Hot Spring. Moving towards solving the case, they investigate at Monbetsu Port and discover that the maker of the Nipopo dolls is Jingoro Urata, who is serving a life sentence in Abashiri Prison. It turns out that Yasukichi Nomura, father of Gen-san, was a victim of the Eifuku Maru sinking incident. Both Iijima and Shiraki were involved in this incident. Shiraki had been selling relief supplies, and Iijima had reported this as an accident. The real perpetrator, Gen-san, kills Iijima, Shiraki, and Okumura as revenge for losing his father and daughter. The series of events start with Hideo Akutsu mistakenly killing Bunkichi Masuda, thinking he is Gen-san, and then killing Gen-san's daughter, Yukari Nomura. Eventually, the truth is uncovered, and information about the yakuza from Hokuryukai heading to Lake Mashu is received. Makiko Nomura, daughter of Tetsuji, is at Lake Mashu, and Tetsuji is being threatened by the yakuza and Akutsu at Kamuishu Island.

How the player moves, who they talk to, what they discover, and what clues they obtain until the resolution of the case

四苦八苦した経験はとても楽しかったが、あまりうまくいかなかった。ただ、堅物のChatGPTから、ユニークでオリジナリティのあるアイデアや作品を得るためには、多少のコツがあることが分かった。

人間からテーマを与えてアイデア出しの方向付けをする

単純に「ミニゲームのアイデアを考えて」と指示するのではなく、「『伸びる』というテーマで、ミニゲームのアイデアを考えて」のようにすると、テーマを変えることでさまざまなアイデアを出せるようになるし、テーマ自体をユニークにすることでアイデアの質を向上させることができる。LLM(大規模言語モデル)が単なる検索と違うのは、それが膨大な一般常識、世の中の出来事を知っていることにあるので、そのような知識に対してテーマでフックを掛けることで、知識の組み合わせによる新たなアイデア創出がやりやすくなる。

イデアや作品を導出するまでのプロセスを示す

「ゲームのアイデアを考えて実装して」のように、困難なタスクを一度に依頼すると、出力は凡庸で多様性の無いものになる。アイデアを出して、ルールとキャラクタの動きを決めて、プレイヤーキャラクタの動きを実装して、のように、段階的にタスクを進めることで、より具体的な出力結果が得られるとともに、途中で修正したい点を指摘して、質を高めることができる。

イデアや作品を作成するための方法を文書化して渡す

ChatGPTは、プロンプト以外にもテキストやソースコードを添付して、その内容を加味した回答をすることができる。なので、自分なりのアイデアの出し方、よく使うゲームルールなどのテキストや、ライブラリの型定義、サンプルのソースコードなど、生成に役立つ情報を文書化しておいて、ChatGPTに渡すと良い。そうすることで、生成される内容を自分好みにカスタマイズしたり、より質の良いものを得ることができる。

上記のようなプロセスや文書をあらかじめ与えることで、ある目的に特化したChatGPTを作ることができるGPTsという仕組みができたことで、これらの工夫を組み込むことがより簡単になった。

また、自分なりの考え方を文書化しておくことは、他の人にその内容を共有するためだけでなく、AIにそれを理解してもらうという点でも重要になった。そういった意味では、今年、自分なりの小さなゲームの作り方についてまとめた文書を作ったのは良かったと思う。実際、ここに書いた内容の一部は、上記のGPTに組み込んでいる。

あとChatGPTからDALL-Eが使えるようになって、画像生成がすごく手軽に楽しめるようになった。

ゲームのアイデア作りの取っ掛かりとして使ってみるのも楽しい。

ゴルフ大会 pic.twitter.com/CZfwXnI24B

— ABA (@abagames) 2023年10月9日

あと単一のプロンプトで4コマ漫画が作れないかってのも試してみた。このプロンプトも、テーマを与えて、それに沿った起承転結を考えて、それを日本の白黒の漫画風に描く、のように、上記と同様の工夫をしている。ただまともな漫画が出てくることは少ない。呉竜府のような強力なテーマで力押ししないと、面白いものは出ない。

An isometric maze created by DALL-E 3. Start from the center of the top edge of the screen and head towards the bottom right. pic.twitter.com/caclJo3bL3

— ABA (@abagames) 2023年10月7日

クォータービューの迷路。迷路のように、スタートからゴールまでちゃんと正解のルートがある、みたいな整合性を取ることは今の画像生成AIはすごく苦手なので、所望のものを得るまでに大量の出力ガチャが必要とされる。

DALL-E 3が考えるPC-9801アドベンチャーゲーム pic.twitter.com/uBt400yz8H

— ABA (@abagames) 2023年10月6日

半面、PC-9801風で、みたいな、なんとなく画風としてあっていれば良いものは、何回か会話して修正するだけで、的確に出力してくるからすごい。

コンピュータに自動的にゲームを作ってもらいたい、という夢がずっと前からあって、今までいろんな方法を試してきたけど、ChatGPTのようなLLMが新たなアプローチとして得られたことは嬉しい。ただ、現状のLLMの限界もなんとなく分かった気分になってきているので、さらなる技術革新に期待しつつ、変わった活用方法やアプローチなどを工夫する楽しみは、まだまだありそうだ。