この前、アクションミニゲームのゲームメカニクスをタグとして列挙した。
まずはタグの組み合わせから新ゲーム考案というのが現実的かを試してみたい。
試すのは人間とは言ってない。AIにやってもらおう。
ChatGPTに以下のプロンプトを与えて、ゲームデザイナーとして振舞ってもらう。
I want you to act as a game designer. Remember the following tags related to game mechanics. The tags are written in a format of 'Category: Name, "Description"', with one line for each tag. Randomly combine those tags and come up with a new game that contains only the game mechanics corresponding to that tag. Make that game an action mini-game that utilizes only a single button. The maximum number of tags that may be combined is 5. Describe what kind of game it is and the selected tags. Try to devise 5 different games without using the same game mechanic tags as much as possible.
player: rotate, "The player character rotates."
player: reciprocate, "The player character reciprocates horizontally or vertically."
player: reflect, "The player character reflects upon colliding with a wall or object."
以下タグ一覧ファイルにあるタグとその概要説明が続く。プロンプト全体はここにある。
すると以下のような回答が得られる。
Game 1: Scaffold Jump
Selected tags: player: scaffold, on pressed: jump
Description: In this game, the player controls a character that moves along scaffolds. The character constantly moves forward, and the player can make the character jump by pressing the button. The objective is to avoid falling off the scaffolds or hitting obstacles while collecting coins or power-ups. The game gets progressively faster and more difficult as the player advances.
Game 2: Pinball Panic
Selected tags: player: circle, weapon: bounce, field: pins, on pressed: shoot
Description: In this game, the player controls a circular character that bounces around a pinball-like field. The player can shoot projectiles by pressing the button, which bounce off the pins and destroy enemies. The objective is to survive as long as possible while racking up points by destroying enemies and collecting power-ups.
Game 3: Springy Strings
Selected tags: player: string, player: bounce, field: gravity, on pressed: jump
Description: In this game, the player controls a spring-like character that bounces around a zero-gravity field. The character can jump by pressing the button, which sends it bouncing higher into the air. The objective is to avoid obstacles and enemies while collecting power-ups and reaching the end of the level.
Game 4: Wipeout Warriors
Selected tags: player: bar, field: water, obstacle: chase, weapon: wipe, on pressed: jump
Description: In this game, the player controls a bar-shaped character that races through a water course filled with obstacles and enemies. The character automatically moves forward, and the player can make the character jump by pressing the button. The character can also use a wiping weapon to clear the way of obstacles and enemies. The objective is to reach the end of the course in the shortest time possible.
Game 5: Color Conundrum
Selected tags: rule: match, rule: time limit, field: roughness, on pressed: turn
Description: In this game, the player controls a character that must navigate a rough terrain while matching colors. The character automatically moves forward, and the player can turn left or right by pressing the button. The objective is to match as many colors as possible before the time runs out, while avoiding obstacles and enemies on the way.
ゲーム名と選択したタグ、ゲームの内容を考えてくれる。ここから面白そうなゲームをピックアップすれば、ゲームアイデアとして使えるのでは。
例えばゲーム2「ピンボールパニック」。ピンボールのようなフィールドにピンや敵がいて、ボタンを押すと発射される球で敵を破壊する。ピンで跳ね返る球をうまく制御して敵に当てる必要がある。球をピンボールのフリッパーで打ち出すようにしても面白そう。
ゲーム3「スプリンギーストリングス」。重力の無い空間を、バネの伸縮を利用して障害物や敵をかわしながら進んでいく。障害物を蹴って進んだり、AMBACめいた挙動をするゲームだろうか。
ゲーム5「カラーコンランダム」。デコボコした地形の上を、ボタン操作で左右に曲がるプレイヤーキャラクタを操作して、色をマッチさせながら進む。見下ろし型のゲームで、出っ張った地形を避けつつ、同色のカラーアイテムを集めるようなゲームが思いつく。
このままChatGPTがゲームの実装をしてくれるととても楽なのだが、さすがにそれはまだ無理っぽい。'Implement Game 1 in p5.js.'のように頼むと一応頑張って書いてはくれるのだが、これらゲームメカニクスを正しく反映したコードにはならない。というかChatGPTに書いてもらうにはコードが長すぎる。
ChatGPTにゲームメカニクスのタグを教え、それらを組み合わせてもらう。ゲームアイデアのベースを考えるには良い方法ではないだろうか。こういったブレーンストーミング的な使い方にはChatGPTはよくマッチするね。