💻

AWS Bedrockで『2Dゲームステージ』を作らせてみた

に公開

1. はじめに

テラリアやローグライクゲームが好きでよく遊んでいます。
これらのゲームの最大の特徴は、遊ぶたびにステージの形状が変わることやと思います。

昔は「あらかじめ人が何パターンか作っているのかな?」と思っていましたが、それでは無限のパターンを作ることは不可能です。
調べてみたところ、 プロシージャル生成というアルゴリズムが使われていることを知りました。先人の知恵と技術力には驚かされます!

そこでふと、「複雑なアルゴリズムを書かなくても、AWS Bedrockにお願いすれば、いい感じのステージを作ってくれるのでは?」と思い立ち、2Dゲームを題材に検証してみました!

2. プロシージャル生成とは?

ゲーム開発におけるプロシージャル生成とは、一言で言えばアルゴリズムによってコンテンツを自動的に生み出す技術のことです。

広大なマップや膨大な数のステージをすべて人の手で作るには莫大な時間がかかるため、計算式やルール(アルゴリズム)を使ってコンピュータに自動で作らせる手法が古くから発展してきたそうです。[1]

例えば、迷路を作るだけでも以下のような手法があります。

  • 棒倒し法: 壁をランダムに倒して道を作る
  • 穴掘り法: 壁で埋め尽くされた空間を掘り進める
  • 壁延ばし法: 壁を生成して道を区切る

これらは高速に動作する反面、「行き止まりを作らない」「スタートからゴールまで繋ぐ」といったルールを厳密にコードで記述する必要があり、実装には相応のエンジニアリング力が必要です。

今回はこの複雑なロジック部分を、AWS Bedrockへのプロンプトだけで代替できるか実験します。

3. システム構成

image.png

  • Frontend: AWS Amplify (HTML5 + JavaScript)

  • Backend: API Gateway + AWS Lambda (Python)

  • AI Model: Amazon Bedrock (Claude 3 Haiku)

4. 実装のキモ:AIを制御するプロンプト

Lambdaコード(抜粋):

prompt = """
あなたはゲームのレベルデザイナーです。
10x10のグリッドで構成される2D迷路を生成してください。
以下のJSONフォーマットのみを出力してください。

【制約】
- 0: 通路, 1: 壁
- スタート地点からゴール地点まで、必ず到達可能な経路を確保すること
"""

AIからの出力(JSON)をフロントエンドで受け取り、配列を展開してCanvasに描画する仕組みです。
プロンプトの部分をしっかり作りこまないと時にはゴールできないステージを作成されて一生ゴールできないゲームになってしまいます。

5. 完成したもの

AI Game.gif

6.最後に

近年、ゲーム開発に生成AIを取り入れる動きが加速しています。
例えば『MIMESIS (ミメシス)』のように、プレイヤーの中にAIが紛れ込むといった、従来のプログラムでは難しかった「人間らしい心理戦」を実現するゲームも登場しています。

生成AIのゲーム利用には賛否両論あるかもしれませんが、単なる「制作の効率化」だけでなく、今回の迷路生成のように「遊びの幅を広げる技術」として取り入れることで、今までになかった新しいゲーム体験が生まれる予感がします。
今後テクノロジーによってどのような「新しい遊び」が出てくるのか、エンジニアとしてもゲーマーとしてもワクワクします!

参考文献
[1] プロシージャル生成(自動生成) とは

Discussion