「コマンドー太郎」

プロンプト

あなたは小説家です。桃太郎のあらすじを教えてください。

桃太郎をアレンジして、「①太郎が②を倒す」物語を、次のステップに沿って、創作してください。①はコマンドー、②はランボーにします。コマンドーは映画のコマンドーです。

  1. ①と②について検索し、その特徴を捉えてください。
  2. その結果を踏まえて、お供になる3つ(動物、人物、物、など)を決めてください。
  3. その結果を踏まえて、①太郎がお供に与えるものを決めてください。ものは3つお供に対して共通の1種類のものです。
  4. ①太郎がおじいさん、おばあさんのところに来るエピソードを創作し、出力してください。
  5. ①太郎が3つのお供にものを与えて仲間にするエピソードを創作し、出力してください。
  6. それぞれの特技を生かして、お供の1つ目が②に攻撃し、お供の2つ目が②に攻撃し、お供の3つ目が②に攻撃し、①太郎が②にとどめを刺すエピソードを創作し、出力してください。

ChatGPT 4の出力

コマンドー太郎は、かつて伝説的な特殊部隊のリーダーでしたが、戦いに疲れて静かな生活を求めて山中の小屋で暮らすおじいさんとおばあさんに出会います。彼らは、近くの村がランボーと呼ばれる凶暴な戦士に脅かされていると語ります。太郎は彼らの話を聞き、正義のために再び戦いの道を選ぶことを決意します。おじいさんとおばあさんは感謝の気持ちを込めて、太郎に食事と宿を提供し、彼の旅の成功を祈ります。

太郎は、ランボーに立ち向かうために、3人の個性的な仲間を選びます。まず、未来技術を駆使するロボット、彼は高度な分析能力と様々な装備で太郎をサポートします。次に、軍事戦術に精通した退役軍人、彼は経験と知識で太郎を戦略面で助けます。最後に、忍者、彼は敵の目を欺き、不意を突く戦法でランボーを撹乱します。太郎は彼らに特殊な通信装置を与え、互いに情報を共有し、助け合う団結力を持つことを誓います。

戦いの日、太郎と彼の仲間たちはランボーの隠れ家に潜入します。まず、ロボットが先進技術を用いて敵の配置を分析し、攻撃の計画を立てます。次に、退役軍人が戦術的な指示を出し、彼らは敵を翻弄します。忍者は影から敵を攻撃し、混乱を引き起こします。そして最後に、コマンドー太郎が全ての力を振り絞り、ランボーに決定的な一撃を加えます。ランボーは倒れ、村に平和が戻ります。

戦いの後、太郎と彼の仲間たちは村に帰り、村人たちから英雄として迎えられます。おじいさんとおばあさんも彼らの無事を喜び、深い感謝の意を表します。太郎は、自分の使命を果たしたと感じ、再び平和な生活を求めて新たな旅に出ることを決意します。彼の勇気と決意は、村人たちの心に永遠に残ります。

Bing AIの出力(画像はDALL-E 3)

コマンドー太郎は、娘を救出するために敵のアジトがある島へ向かう途中、燃料補給のために小さな漁村に立ち寄りました。そこで彼は、漁師のおじいさんとおばあさんに出会いました。おじいさんとおばあさんは、コマンドー太郎の傷ついた姿を見て心配し、自分たちの家に招き入れて食事と休憩を提供しました。コマンドー太郎は、おじいさんとおばあさんの優しさに感謝し、自分の目的を話しました。おじいさんとおばあさんは、コマンドー太郎の勇気と正義感に感動し、彼を応援しました。コマンドー太郎は、おじいさんとおばあさんに別れを告げて、再び水上機に乗り込みました。おじいさんとおばあさんは、コマンドー太郎の無事を祈りながら、彼の水上機が遠ざかるのを見送りました。

コマンドー太郎は、軍放出品店からロケットランチャーを手に入れました。彼は、この武器を使って敵のアジトに突入することを決めました。しかし、ロケットランチャーは重くてかさばるため、一人で持ち運ぶのは困難でした。そこで彼は、近くにあった荷物運搬用の台車にロケットランチャーを乗せて引っ張ることにしました。台車は、コマンドー太郎のお供となりました。コマンドー太郎は、台車に弾丸を与えて、ロケットランチャーの弾頭としました。

コマンドー太郎は、空港でシンディに出会いました。シンディは、コマンドー太郎に口説かれていたサリーという男の仲間でした。サリーは、コマンドー太郎の敵の一味の一員で、彼の行動を監視していました。コマンドー太郎は、サリーを倒して彼の車を奪いました。シンディは、コマンドー太郎に協力を求められました。最初は拒否しましたが、コマンドー太郎の娘を救うための行動であることを知って、彼に同情しました。シンディは、コマンドー太郎の協力者となりました。コマンドー太郎は、シンディに弾丸を与えて、拳銃の弾薬としました。

コマンドー太郎は、敵のアジトに潜入しました。そこで彼は、ベネットと対面しました。ベネットは、コマンドー太郎のかつての部下で、敵の一味に加わっていた裏切り者でした。ベネットは、コマンドー太郎に恨みを持ち、彼との一騎討ちを望みました。コマンドー太郎は、ベネットを挑発して戦闘に持ち込みました。しかし、ベネットはコマンドー太郎に劣らない戦闘力を持っていました。コマンドー太郎は、ベネットを仲間に引き入れることにしました。コマンドー太郎は、ベネットに弾丸を与えて、銃剣の刃としました。

コマンドー太郎は、敵のアジトの最深部にたどり着きました。そこには、娘が縛られている檻と、ランボーが待ち構えている舞台がありました。ランボーは、コマンドー太郎を見ると、嘲笑いながら言いました。「ようやく来たか。お前は私の最大の敵だ。私はお前を倒すために生きてきた。お前は私の戦争を終わらせることができるか?」コマンドー太郎は、ランボーに向かって叫びました。「黙れ!お前は戦争を終わらせることができない。お前は戦争に囚われている。お前は人間ではない。お前は鬼だ。私はお前を倒して、娘を救う。それが私の戦争だ。」

コマンドー太郎は、ロケットランチャーを構えて、ランボーに発射しました。しかし、ランボーは素早く身をかわし、弓矢で反撃しました。ロケットランチャーは弓矢によって破壊され、台車は爆発しました。コマンドー太郎は、台車の犠牲に涙を流しながら、シンディに合図しました。シンディは、水上機から無線でコマンドー太郎の状況を見守っていました。彼女は、水上機の機銃でランボーに狙いを定めて、連射しました。しかし、ランボーは機銃の弾丸をナイフで弾き返し、水上機にダメージを与えました。シンディは、水上機の制御を失って、墜落しました。コマンドー太郎は、シンディの犠牲に悲しみながら、ベネットに目を向けました。ベネットは、コマンドー太郎の隣に立っていました。彼は、コマンドー太郎に言いました。「これでお前と私の勝負の時間だ。私はお前を倒すために生きてきた。私はお前の戦争を終わらせることができる。私はお前の鬼だ。私はお前を殺す。それが私の戦争だ。」

ベネットは、コマンドー太郎に銃剣で突き刺そうとしました。しかし、コマンドー太郎は銃剣を掴んで、ベネットに投げ飛ばしました。コマンドー太郎は、ベネットに向かって叫びました。「違う!お前は私の鬼ではない。お前は私の仲間だった。お前は私の戦争を終わらせることができない。お前は私の戦争に加わることができる。お前は私の人間だ。私はお前を殺さない。それが私の戦争だ。」

コマンドー太郎は、ベネットに手を差し伸べました。ベネットは、コマンドー太郎の手を取りました。彼は、コマンドー太郎に言いました。「ありがとう。お前は私の鬼ではない。お前は私の仲間だった。お前は私の戦争を終わらせることができた。お前は私の戦争に加わってくれた。お前は私の人間だ。私はお前と共に戦う。それが私の戦争だ。」

コマンドー太郎とベネットは、ランボーに向かって走りました。ランボーは、二人を見て、怒りと恐怖と悲しみとを感じました。彼は、二人に向かって叫びました。「やめろ!お前たちは私の最大の敵だ。私はお前たちを倒すために生きてきた。お前たちは私の戦争を終わらせることができない。お前たちは私の鬼だ。私はお前たちを殺す。それが私の戦争だ。」

ランボーは、ナイフで二人に襲いかかりました。しかし、コマンドー太郎はナイフを避けて、ランボーの首に絞めつけました。ベネットは、銃剣でランボーの胸に突き刺しました。ランボーは、二人の攻撃に耐えられずに、息絶えました。コマンドー太郎とベネットは、ランボーの死に安堵と哀悼とを感じました。彼らは、ランボーに向かって言いました。「さようなら。お前は私たちの最大の敵だった。私たちはお前を倒すために生きてきた。お前は私たちの戦争を終わらせることができた。お前は私たちの鬼だった。私たちはお前を殺した。それが私たちの戦争だった。」

コマンドー太郎とベネットは、娘を救出しました。娘は、コマンドー太郎とベネットに抱きついて、感謝と愛情とを伝えました。コマンドー太郎とベネットは、娘に笑顔と涙とを見せました。彼らは、娘に言いました。「大丈夫だ。お前は私たちの最大の宝物だ。私たちはお前を救うために生きてきた。お前は私たちの戦争を終わらせることができた。お前は私たちの人間だ。私たちはお前を愛する。それが私たちの戦争だった。」

比較してみると

前から思っていたのだが、物語の創作能力は、会話スタイルを「より創造的に」にしたBing AIの方が、ChatGPT 4より優れている気がする。これはチューニングの差なのか、システムプロンプトの差なのか。ChatGPTをもうちょっと創造的にする方法はないものだろうか。

ワンボタンミニゲームを自動的に作るためだけのGPTを作ってみた

GPTsという、特定の役割を持った専用のGPTを作る仕組みが最近できた。といっても、従来のGPT-4にあらかじめ特定の指示 (description)と前提知識のファイル (knowledge)を与えられるだけで、今までできなかったことができるわけではない。だけど、特定のタスクをさせる時に、それらをいちいち指定する手間を省けるので、便利な機能と言えよう。

ChatGPTにミニゲームを作らせる試みは前もやったけど、あまりうまくいかなかった。

そこで今回は以下の改良を加えて、専用のGPTを作ってみた。

  • 最初にユーザからゲームのテーマを与えてもらう。
  • その後、そのテーマに沿ったゲームのアイデアを5つユーザに提示し、適切なものを選んでもらう。
  • 選ばれたアイデアに対して、ルール作成、プレイヤー動作のコード作成、その他の動作作成、スコアリング、難易度、効果音、と順番に少しづつゲームを作らせる。
  • 小さなゲームのアイデアって、どうやって思いつくの」と「ワンボタンの可能性」の記事をknowledgeとして与え、ゲームのアイデア作成の参考にさせる。
  • crisp-game-libの関数や変数の型定義ファイルやサンプルゲームのコードもknowledgeとして与え、コード作成の参考にさせる。

このようにすることで、ある程度適切なゲームアイデアの作成や、それに対応するコードの作成が可能になった。例えば、以下はTOWER CLIMBというゲームを作成した時の会話例である。

https://chat.openai.com/share/a21c6d85-3fa6-425d-b9dc-7d300c58029b

少しづつ作成されるコードに対して、何かおかしな点があれば、「障害物は左右から出るべきではありませんか?」のようにツッコミをすることで、なるべく適切なコードが作られるようにする。ただ、完全に動作するコードをGPTから返してもらうことは期待しない。最後に作成されたコードをエディタにコピーして、そこからの微修正は自分で手作業で行う。このゲームでは、以下の修正はコードに直接行っている。

  • プレイヤーになるべく近いところで障害物を破壊した方が点が高くなるようなスコアリング調整
  • 天井の描画、当たり判定ロジックの改良
  • 障害物の出現頻度などの難易度調整

できあがったゲームは以下になる(画像クリックでそのままブラウザで遊べます)。

towerclimb screenshot

他に作れるゲームの例や、具体的なdescription, knowledgeについては、以下のリポジトリに置いてある。

今回作ったGPT、One Button Game Builderとは、以下から会話できる(ChatGPT Plusが必要)。

https://chat.openai.com/g/g-cpVkJ5jXz-one-button-game-builder

最初に「Respond in Japanese.」を選択すれば、日本語で会話できる。テーマは「伸びる」「レーザー」「反射」「時間」などなんでも良い。

ただ、まだ遊べるゲームをちゃんと出力するのはそう簡単ではない。使いこなすにはいくつかのコツがある。

  • 5つのアイデアから、あまりに凡庸でもなくあまりに斬新でもない、ちょっと楽しそうなアイデアを選ぶ。「〇〇をジャンプで避ける」系の凡庸なアイデアはつまらないゲームになりがちだが、あまりに斬新なアイデアはGPTのコーディング能力が追い付かず、コード化できない。
  • ツッコミはほどほどに。GPTから正しいコードを出力させようと、頻繁にツッコミを入れていると疲れる。コードのガワができたら後で自分で直せばいいやくらいの寛容さで。

このようなコツをつかめば、AIによる今までとはちょっと違って面白いミニゲームの作成も可能だ。目指すべき無限ミニゲーム自動生成器に、一歩近づけたのではないだろうか。

ChatGPTに既存ゲームを曲解させて、新しいゲームを考えよう!

やり方は簡単。

  1. Web Browsing付きのGPT-4に「〇〇のゲームの画面の特徴を教えてください」と聞く。
  2. 次に「DALL-E 3で〇〇のゲーム画面を作成するための、英語のプロンプトを作成してください」と聞く。
  3. DALL·E 3を選んで、2.で出てきたプロンプトを入れる。

こうすることで、本来のゲーム画面とは似ても似つかない、別のゲームの画面が作れるぞ。

作例をいくつか。

ディグダグっぽいゲーム

ディグダグ。画面中央に巨大なホリ・タイゾウがいるので、そこからモリを上下左右に自由に伸ばして敵をポンプで膨らませて倒すゲーム、かなあ。

トイポップっぽいゲーム

トイポップ。クォータービューになっちゃった。立体の迷路の中をジャンプで動き回り、敵を避けながらハートを回収するゲームだよ、たぶん。

イカゲームっぽいゲーム

イカゲーム。落ちてくるフルーツが下の枠に埋まっていくので、同じフルーツを集めて大きくするゲーム。ロットロットの続編だよ。

フォゾンっぽいゲーム

フォゾン。あの奇天烈なゲームであるフォゾンの画面が上記プロンプトで正しく作れるようになったらAIの勝利だ。フォゾンとは完全別物のこの画面は、周りから押し寄せるアトミックに同色のモレックをぶつけて消していく、ディフェンス型ゲームに違いない。

生成AIの持つ不正確さを乱数として利用することで、アイデアジェネレータとする方法の紹介でした。これでアイデアが膨らむかは分からないが、とりあえず出てくるゲーム画面は見てて楽しいね。

小さなゲーム開発についての小さな電子冊子を作ったよ

小さなゲームを開発することの楽しさや、その作り方について、今までブログに色々書いてきた。

それらの内容を「小さなゲーム開発の楽しみ」という、小さな電子冊子としてまとめた。

楽しさを色々な側面から伝えるべく、以下の内容を盛り込んだ。

  • 小さなゲームとは何か、そしてその制作がなぜ楽しいのかを探る
  • ゲーム開発におけるターゲットデバイスや開発環境の選び方
  • ゲームの核となるイデアの考案や、制約を活かしたアイデアの生み出し方
  • プレイヤーが感じる適切な難しさの設定方法
  • ゲームをより魅力的にするための「ジューシー」なエフェクトや音の追加方法
  • 自作のライブラリ・エンジンの制作や、絵や音の自動生成方法
  • コンピュータがゲームを一から開発する可能性についての考察

小さなゲーム開発に興味がある方、またはすで開発している方にとって、なるべく有益な情報を含んだつもりだ。自分の興味に従って書いたため、散発的で多様な内容ではあるが、私の経験や知識を共有することで、皆さんのゲーム開発が少しでも楽しくなれば幸いである。

制約がアイデアを生み、ゲームを完成させる

イデアを思いつくためのテクニックとして、なんらかの制約をあらかじめ自らに課してしまう、という方法がある。その制約の中でゲームを面白くするにはどうすれば良いかを考えることで、今までとは違った発想が生まれることが期待できる。また、その制約を逆に活かす方法を考えることで、アイデアの独自性を高めることができる。

制約とはどのようなものが考えられるだろうか。例として考えられるのは、ゲーム制作コンテストであるゲームジャムでのフォーマット、ルール、テーマだ。多くのゲームジャムでは、投稿できるゲームになんらかの制約を設けることで、参加者がその制約内にフォーカスしてゲームを作れるようにしている。

'Different Game Jam Formats' 1 というビデオの中では、その制約のタイプとして以下を挙げている。

  • ツール:利用できるゲームエンジンなどを規定する
  • アセット:ゲーム内で利用可能な画像などをあらかじめ与える
  • ビジュアル:解像度や色数を制限する
  • ゴール:「より多くのものを集める」などゲームの目的を規定する
  • インタラクト:「2つのボタンしか利用できない」などプレイヤーがゲームとインタラクトする手段を制約する
  • ジャンル:「プラットフォーマー」「ローグライク」などのジャンルを規定する
  • イムリミット:一定時間内にゲームを完成させる

イデアを生み出すために役立つ制約としては、インタラクト、ビジュアル、ゴールあたりだろうか。

インタラクトに関する制約としては、利用可能なボタン数を限定する、マウスだけを使う、キーボード全体を使う、ツインスティックなど、入力に用いるデバイスに制約を加えるのが一般的である。使えるボタンが限られていると、そのボタンにどのようなアクションを割り当てるかを熟慮する必要がでてくる。既存の方向キー+2ボタンを使っているゲームをワンボタンゲームにしなければいけない、などの無理難題をふっかけることで、強引な解決策を生み出す過程で、新たなアイデアが生み出せる可能性がある。

ワンボタンゲームについては、個人的に大量に作った経験があるので、ワンボタンにどれだけ多様なアクションを入れ込めるかについての記事 2 を書いた。動作のバリエーションだけでなく、地形やアイテムとの組み合わせなどを工夫することで、一つのボタンが生み出すインタラクションに対して、かなりのバリエーションを持たせることができる。

ビジュアルに関する制約は、基本見た目に影響があるだけでゲームのルールなどに影響を与えたりしない。だが、16x16ピクセルなどの非常に少ない画素数であったり、縦1ラインしか許容しない実質1次元のフィールドだったり、という極端な制約が与えられた場合、それを打破するためのアイデアが求められることもある。過去には、出力として1x1ピクセル2色のディスプレイしか許さないゲームジャム 3 もあった。

1次元のフィールドのゲームは、古くは1行しか表示できないポケコンなどのハードウェア制約のために強制的に生み出されていたこともあった。1次元という制約が、どのようなプリミティブなゲームを生み出すことができるかについての記事 4 も前に書いた。

ゴールについては、ありきたりのゴールを設定するだけではアイデア発掘にはつながらない。「自身を破壊せよ」「犠牲を払え」「勝つために敵を利用しろ」のような特殊なゴールを持つゲームを考えることで、あらたなゲームが発想できる。ちなみにこれら特殊なゴールはGame Jam Theme Generator 5 から出てきたものだ。このジェネレーターはゴールに限らずいろんなゲームジャムのテーマを出してくれるので、アイデアジェネレーター同様に発想の手助けに使える。

ツール、アセット、ジャンル、タイムリミットなどは、アイデア発想のためというよりは、限られた時間でゲームを完成させるためのものだ。ツールやアセットの選定に時間をかけることなく、決まったジャンルのゲームを、タイムリミット内に作る。このように作り方を定式化することで、ゲーム本体の制作にフォーカスして素早くゲームを作ることができる。

もしあなたがゲームをたくさん作ることを目指すのであれば、自分なりの作り方の定式、レギュレーションを決めるのも良い手だ。作るもの、作り方をパターン化して、開発にかかる手間をなるべく減らすのだ 6

上記のビデオには含まれていないが、ゲームのバイナリやソースコードのサイズに制約を加えることも多い。13キロバイト以内のWebゲームを作るjs13kGamesなどが有名である。ゲームジャムではないが、古くマイコンの時代には、1画面に収まるソースコードでゲームを作る 7 という投稿プログラムもあった。

限られたサイズでゲームができているということは、その中のルールやメカニクスもかなり絞られているわけで、そのような制約の元できている面白いゲームは良質なアイデアの宝庫である。ただ、自分で作る際のサイズ制約はどちらかというと単なる足かせにしかならず、早期の完成には寄与しない。なので純粋にサイズの制約を乗り越えるのが楽しい、という人にしかおススメはしない。サイズ圧縮のためのライブラリやテクニックは大量にあるので 8 、これらを覗いてみて面白いと思えるか、あなたの適性を測ろう。

ゲーム制作に対していくつかの制約を課すことは、新たなアイデアを発想したり、素早くゲームを完成させることに役立つ。あまりにきつい制約を加えると、今度はそれを乗り越えるのが苦しくなるので、自分の感性に合う制約を見つけて、うまく活用しよう。

1.

2.

3.

4.

5.

6.

7.

8.

小さなゲームのアイデアって、どうやって思いつくの

さあ小さなゲームを作る準備は整った。じゃあどういったゲームを作ろうか。

ゲームのアイデア出しは一番楽しく一番苦労するポイントである。ここで良いアイデアが思いつけば制作はとんとん拍子に進む。逆にここで微妙なアイデアをつかむといばらの道だ。まあ小さなゲームの場合、ちょっと作ってダメだったら単に捨てればよいのだけど。

ゲームのアイデア発想法はWeb上にたくさん記事がある。なので適当に検索して自分に合いそうなものをピックアップしてみるのも良い。私が探した中で気に入ったものを例に挙げよう。

redditのr/gamedevにあったスレッド'How do you guys come up with ideas for your games?' 1 では、以下のプロセスが書いてあった。

  1. あなたが好きな既存のゲームからインスピレーションを得よう。

  2. 奇妙に見えるものを組み合わせてみよう。カードゲーム + 釣り、タワーディフェンス + マインクラフト、FPSとしてのパックマンなど。

  3. 他のゲームを分析し、その制作過程を考えてみよう。もしあなたがそれを作るなら、どう違うものにするだろうか。

  4. 自分の創造的なアイデアを、実際に制作可能なサブセットに落とし込もう。「作りたいもの」と「作れるもの」の交差点に集中しよう。

  5. 制限を受け入れよう。アイデアからいろんな複雑さを取り除いて、その過程で新しいものを作り上げよう。

既存ゲームの要素を組み合わせ、そぎ落とし、自分なりに改良し、新しいゲームにする。これは新しいゲームを考えるときの鉄板プロセスで、特に小さなゲームでは極限まで要素をそぎ落とすことで、面白いコアメカニクスを持つゲームを作ることができる。


ゲームエンジンGameMakerのサイト内にある'14 WAYS TO GENERATE S-TIER VIDEO GAME IDEAS' 2 も良い記事だ。小さなゲーム向けにも大切と思う部分を取り出すと、以下の内容が挙げられる。

  • 過去の名作をプレイする。スーパーマリオブラザーズをプレイするとき、あなたは将来のすべての2Dプラットフォーマーの基礎を築いたゲームをプレイしている。新しいプレイヤーために、その土台をどのように拡張し、現代化するか?

  • 何もないところからゲームのコンセプトを引き出すのは難しい。まずゲームのジャンルを選び、それを中心にアイデアを構築してみる。

  • ジャンルにこだわるのが苦手なら、キャラクターにこだわる。キャラクターの特徴を活かし、彼らを中心とした世界を展開する。

  • マインドマップでアイデアを紙に書き出す。マインドマップは、ジャンルやメインキャラクターなど、ゲームの核となる部分から始め、思いついたキーワードやアイデアを書き留めていく。ゲームプレイのメカニズム、特徴、ストーリーのテーマ、アートスタイルなど。

  • ひらめきはふとした瞬間に生まれる。いつでも手の届くところにメモ帳を置き、一日を過ごす中で頭に浮かんだアイデアを書き留める。

  • SCAMPERメソッドを使う。既存ゲームに対して、どこが代替できるか、どこを組み合わせられるか、何が追加できるか、修正できるか、削除または簡略化できるか、ある側面を別の用途で利用できるか、ある側面を逆にできるか。

  • 他のメディアに目を向ける。テレビ、映画、音楽、本、伝統的な芸術作品など、すべてがビデオゲームのアイデアをかき立ててくれる。

  • 現実世界からインスピレーションを得る。現実世界にはゲームを作るに値する信じがたいコンセプトが満載だ。

  • 自分の経験を生かす。あなたは、他の誰も経験したことのない方法で世界を見てきた。それがポジティブなものであれ、ネガティブなものであれ、そうした経験は素晴らしいビデオゲームのアイデアの基礎となり、あなたにしか語れない物語となる。

  • ゲームアイデアジェネレーター(ゲームのジャンルやルール、テーマなどをランダムに表示してくれるもの)を使う。

  • テーマが決まっているゲームジャムに参加する。ゲームジャムは、テーマが決まっていて締め切りが厳しい、短期間のゲーム制作コンテストだ。ゲームジャムに参加することで、集中力が研ぎ澄まされ、創造性が高まる。

  • ゲームコミュニティーに参加し、ゲーマーに直接質問する。スレッドに目を通し、質問を投げかけ、ゲーマーが何を求めているのか、何が好きで何が嫌いなのかを知る。

イデアを得るためのテクニックや普段の習慣まで、広い範囲をカバーしている良いリストだ。小さなゲームを作る場合、ここまで頑張る必要はないかもしれないが、こういった方法があるということを頭の片隅に入れておくと、アイデア出しに役立つだろう。


手前味噌ながら、自分がアイデア出しのために行ってきたことについても書こうと思う。

私が大量のミニゲームを作ったときの、評判が良かったゲームの特性や、実際にアイデア出しをした経験から、このような方法でアイデアを考えればよいのではということを、ブログに書いた 3 4 。その内容が以下だ。

  • 既存ゲームのモチーフやルールをうまく借用する。
  • 既存ゲームはテレビゲームに限らず既存スポーツなども視野に入れる。
  • レトロゲームからつまみ食う。レトロゲームの一部分だけを別のゲームとして仕立てる。
  • 誘爆、重力などの定番メカニクスを取り入れる。
  • まとめて取る・倒すと高得点を楽しさの基本に置く。
  • 自然現象や幾何学などから面白い挙動を転用する。
  • 物理挙動を操作にリンクさせて楽しさを生み出す。
  • うまくプレイできていることを視覚的に示して達成感を増す。
  • ワンボタンでの操作などの制約を活かしたインタラクションを取り入れる。
  • リスクとリワードのバランスを常に考える。
  • リスク駆動開発。どういったリスクをプレイヤーに与えようか、という点から新たなメカニクスを考える。
  • 爽快感と緊張感のバランスを考える。
  • ゲームテンポを高めるためのルールを探す。
  • ゲームの背景や舞台設定などのモチーフを提示して、ゲームと物語をリンクさせる。
  • 斬新さを少しずつ削る。最初に考えた斬新なアイデアを少しずつ削って、保守的な作りによせる。

前述2つのスレッド、記事と被る部分もあるが、このリストは私の実開発経験に基づいているので、小さなアクションゲームにフォーカスしたリストになっていると思う。

ちなみに今まで私が作ってきたゲームがどんなものかという記事 5 もあるので、興味があれば参照いただきたい(Flashで作ったゲームは残念ながら今は遊べなくなってしまった)。


また、それらゲームを、いくつかの仕組みに分解して解析してみる 6 ということも行ってみた。今まで作ったゲームが、どのようなプレイヤーキャラクタ、武器、障害物、フィールド、ルール、操作から構成されているかを、カテゴリごとのタグで整理した。これらのタグを使って、以下のように新しいゲームを発想することを想定している。

  • タグ一覧ページを見てゲームに組み込める仕組みを把握する
  • タグ詳細ページを見てその仕組みを使った別のゲームを考える
  • 複数のタグを適当に組み合わせてそれら仕組みを使ったゲームを考える


ランダムに、こういうテーマでゲームを作ってみては?などを出してくれるスロットマシンのようなものを、ゲームアイデアジェネレーターと呼ぶ 7 。これは発想の取っ掛かりを得るにはいいツールではあるが、小さなゲームに使うにはちょっと漠然とした内容であることも多い。なので、私も小さなアクションゲームに特化したゲームアイデアジェネレーター 8 を作った。「ミサイル を 打ち払う」「屋根 が 戦う」「電気 を 拡大する」などの突拍子もないアイデアが次々に出てくるので、それを何とかしてゲームにすることで、斬新なゲームが作れる、かもしれない。


ゲームのアイデアを考えるテクニックは色々あるし、先人の知恵を利用することで効率的に思いつくこともできるだろう。だけど一番いいのは、たくさん考えて、たくさん作ってみることだ。幸いにして小さなゲームを作る場合、アイデアを考えるのも、そのアイデアをゲームにするのも、短時間で行えるだろう。失敗したら捨てればいい。そういった軽い気持ちでトライしてはいかがだろうか。

1.

2.

3.

4.

5.

6.

7.

8.

小さなゲームを作るとして、ターゲットデバイスと開発環境、何向けに何で作るのがいいんだろう

じゃあ小さなゲームを作ってみようか、と思ったときに、まず考えないといけないことの一つに、PC、スマホ、ゲーム機などなど、どのデバイスで動くゲームを作るかということがある。

特にこだわりがないのであれば、PCのWebブラウザ向けのゲームを作るのがおススメだ。今のブラウザは様々な開発環境で開発されたゲームを動作させるためのプラットフォームとして成熟しているし、他の人にプレイしてもらうにも、ネット上のURL告知からシームレスに遊んでもらえてお手軽だ。

ゲーム作りを楽しむ、という面では、どの開発環境・プログラミング言語ゲームエンジンでゲームを作りたいか、から考える手もある。これについては小さなゲームだからどうこう、ということは特になくて、自分の好みで決めて良いと思う。ただ、重厚な3Dゲームを主なターゲットとしているUnreal Engineなどは小さなゲームを作るにはリッチすぎる、などは考慮しても良いかもしれない。

ブラウザ向けに作るとして、開発環境の選択肢は色々ある。

ブラウザで動くプログラムはJavaScriptで書く。だからゲームもJavaScriptで書こう、というのは自然な発想だ。p5.jsPhaserなどのライブラリを利用することで、画面描画などの面倒な部分を楽して書くことができる。p5.jsなら、文系大学生のためのp5.js入門p5.js日本語リファレンスを見ながら、p5.js web editorを使えば、すぐに始めることができる。

ゲームの実行環境と開発環境、キャラクタ・レベル・音のエディタなどを内包した、軽量なゲームエンジンをファンタジーコンソールと呼ぶ。代表的なものとしてはPICO-8PyxelTIC-80などがある。オールインワンの環境で、機能も意図的に絞られているため、小さなゲームを作るには良い選択だ。それぞれ使えるプログラミング言語などが異なるので、自分の好みのものを見つけると良い。PICO-8を試してみるなら、PICO-8日本語版マニュアルPICO-8 API早見表を見ながら、PICO-8 Education Editionを使ってみよう。

UnityGameMakerGodot、など多くのゲームエンジンは、ブラウザ (HTML5)向けにゲームをエクスポートすることができ、ブラウザ上で作ったゲームを遊ぶことができる。画像や音などのアセット管理機能が充実していたり、ブラウザだけでなくPC・スマホ向けにもゲームをリリースできるなど、採用するメリットは大きい。

  • ツクール

RPGが作りたい、ノベルゲームが作りたい、などのジャンルが決まっているのであれば、専用のツールが使える。RPGツクールMVに代表されるツクールが歴史的にも有名なため、このカテゴリのツールは伝統的にツクールと呼ばれがちだ。RPGツクール以外にもWOLF RPGエディターなどもあるし、ノベルゲームならティラノスクリプトなどがある。最近の多くのツクールはブラウザ向けのエクスポート機能を備えている。

テキストベースのプログラムにそもそも慣れていない場合は、ScratchMakeCodeなどのビジュアルプログラミング言語が利用できる。複雑なゲームを作ることは大変だが、あらかじめ絵や音なども用意されていて、小さなゲームであれば十分に制作することができる。

今のブラウザは、JavaScript以外の言語もWebAseemblyなどの技術を活用することで動作させることができる。ただし動作させるためのコンパイルなどの作業が複雑なことも多く、可能であれば上記ファンタジーコンソールやゲームエンジンの助けを借りた方が良い。Pythonで作りたかったらPyxel、C#で作りたかったらUnity、など。HSPなど、オフィシャルで対応している言語は手間は少なくて済みそうだ。


ブラウザ向けに作る場合、タッチ操作(PC上ではマウス操作)のみでゲームを操作可能にすることで、スマホ対応を行うこともできる。より多くの人に遊んでもらいたい場合は検討したい。

ゲームを作る体験それ自身を楽しみたい、という面では別にブラウザ向けにこだわる必要もない。PC用アプリやスマホ用アプリでもよい。プチコン4などを使ってSwitch向けゲームを作っても良い。MakeCodeで作ったゲームは好きなハンドヘルドデバイスで遊ぶこともできる。PICO-8用ゲームをハンドヘルドデバイスで動かしている人もいる。多くの人に手軽に遊んでもらいたい!という考え方だけでなく、このデバイス向けに作ってみるのが面白そう!というモチベーションで作るのも楽しい。自由に作ろう。