こんにちは。AaaS Tech Labの髙橋です。
近年、生成AIの技術が大きく進化し、多くの動画生成AIや音楽生成AIのモデルが公開・アップデートされ続けています。生成AIは人間の創造性を拡張し、アートや音楽、デザインなど多くのクリエイティブ領域において、コンテンツを制作するハードルを低くしました。
そうなると、コンテンツを、受け身で体験していた立場から制作者側として楽しみたくなるものです。
そこで今回は生成AIを用いて、マーダーミステリーのゲーム制作に挑戦しました。
マーダーミステリーを簡単にご説明させて頂くと、プレイヤーが作品の登場人物になりきって楽しむ対話型推理ゲームです。近年人気の高いパーティゲームの一種で、その最大の魅力は物語への没入感です。
特にマーダーミステリーの専門店では、徹底的な雰囲気作りによって没入感が格段に高まるような工夫がされています。しかし、ゲームの性質上、「一人ではプレイできない」、「一度遊んだストーリーは再プレイできない」という制約があります。
マーダーミステリーのこのような特徴は一見ゲーム化に向いていないように思えますが、生成AIを活用することで、リアルの体験を超えたマーダーミステリーゲームを制作します。
今回、生成AIを用いて制作したコンテンツは以下の通りです。
・ストーリー
・ゲーム構成
・導入映像
・他プレイヤーとしてのAIエージェント
・エンディング
生成AIによる導入映像でゲームへの没入感を高め、他プレイヤーをAIエージェントで実装することでソロプレイを可能にしました。さらに生成AIを活用したゲームならではの特徴として、他プレイヤーとの対話と選択に応じてエンディングを自動生成する機能を実装しました。
それぞれの制作過程について詳しくご説明させていただきます。
マーダーミステリーのストーリー作成
まずは、生成AIによるマーダーミステリーのストーリー作成についてご説明します。
マーダーミステリーは推理ゲームである特性上、僅かな矛盾でもゲーム性が崩壊してしまうため、現段階のLLMだけでストーリーを完全に生成することは難しいと判断しました。
そこで、人の手を介在させながら論理の一貫性を保つ生成方法を考案しました。具体的には、以下の6段階でストーリーを生成していきます。
1. シナリオの概要を生成
2. キャラクタープロフィールの生成
3. キャラクターごとの行動表を作成
4. 場所と時間軸での全キャラクターの行動表を作成
5. 各時間・場所ごとに詳細なシナリオを生成
6. キャラクターシートを作成
1. シナリオの概要を生成
まず、設定したい舞台を決め、ChatGPT-4oを使ってストーリーの概要を作成します。
2. キャラクタープロフィールの生成
出来上がったシナリオ概要に沿って登場するキャラクターの詳細を決めていきます。ここでは、キャラクターのペルソナ、背景、隠している秘密などを具体的に生成していきます。
3. キャラクターごとの行動表を作成
次に舞台となる部屋と時間帯を設定します。これをもとに、各キャラクターの行動を30分単位で時系列にまとめた行動表を作成します。
4. 場所と時間軸での全キャラクターの行動表を作成
手順3で作成した表を場所と時間軸でまとめ直します。これにより、特定の時刻・場所におけるキャラクターの行動を一目で把握できるようになります。この整理方法は、各場面のストーリー生成において非常に効果的です。
5. 各時間・場所ごとに詳細なシナリオを生成
シナリオを生成する際は、手順4の表に基づき、各シーン・各キャラクターのシナリオを順番に生成していきます。
複数のキャラクターが登場するシーンでは、最初に描写するキャラクターを決定します。ChatGPT-4oに、そのシーンに登場する全キャラクターの行動、事件概要、描写対象のキャラクタープロフィールを入力して一人目のシナリオを生成します。二人目以降のシナリオは、前に生成したキャラクターのシナリオも含めて入力します。このように先に生成した他のキャラクターのシナリオを参照することで、自然な会話を織り込むことができます。
マーダーミステリーのキャラクターシート生成の難しさは、キャラクターごとに異なる情報を持つ点にあります。同じシーンでも、各キャラクターの視点からのストーリーが必要となり、この処理を適切に行わないと、キャラクター間で本来知り得ない情報が漏洩してしまう恐れがあります。しかし、時間と場所を軸にしてシナリオを生成することで、複数のキャラクターが存在する場合でも、論理的な整合性を保ったストーリー作成が可能になります。
6. キャラクターシートを作成
完成したシナリオの各シーンをキャラクターごとに整理してまとめることで、キャラクターシートが完成します。
これにより、ストーリーの準備が整いました。
ゲーム構成について
次にゲームの構成についてご説明します。ゲームの基本的な流れは以下の通りです。
ゲームスタート → キャラクター選択 → 導入映像 → プレイ → エンディング
スタート画面
スタート画面には、マーダーミステリーのタイトルとスタートボタンが表示されます。スタートボタンを押すと、キャラクター選択画面に移ります。
キャラクター選択画面
ここで、プレイヤーは本ストーリーで演じたいキャラクターを選択します。キャラクター情報はJSON形式でバックエンドにて管理され、選択されなかったキャラクターは自動的にAIエージェントとなります。
導入映像
キャラクター選択後、後述の導入映像が再生されます。映像終了後、ゲームが開始されます。
プレイ画面
プレイ画面右側にはチャット画面があり、AIエージェントとチャット形式で対話できます。
チャット画面では、メッセージの送信と、対話したいAIエージェントを選択するメンション機能を利用できます。AIエージェントの詳細は後述します。
チャット画面上部には、現在のフェーズと残り時間が表示されます。画面中央には事件概要とキャラクターシートが表示されます。
画面左側には、間取り図と、フェーズの詳細、そして調査画面へ移動するボタンを配置しています。
調査画面ではマーダーミステリーでよく見られる調査システムを実装しています。
通常のマーダーミステリーと同じように、調査を行ったプレイヤーのみが調査カードの内容を確認できます。また、他のプレイヤーと情報を共有したい場合は、カードを公開することができます。
これらの調査カードの情報や調査状況は、キャラクターシートと同様にJSON形式でバックエンドにて管理されています。
エンディング
制限時間が経過すると、チャット画面でプレイヤーとAIエージェントによる犯人投票を実施します。
投票終了後、ゲームはエンディングへ移行します。エンディングでは、会話履歴と投票結果に基づいてオリジナルのシナリオが生成されます。
投票機能とエンディング生成の詳細については後述します。
導入映像の作成
次にゲームへの導入映像について説明します。
マーダーミステリーの実際のプレイでは、ゲーム開始前にキャラクターのセリフの読み合わせやゲームマスターによるナレーションが行われます。これらの演出は、物語への没入感を高める重要な要素です。
本ゲームでは、これらの代わりにストーリーの導入映像を作成しました。
以下、具体的な手順を解説します。
まず、キャラクターシートをもとにストーリーの概要をChatGPT-4oで作成し、それを2分程度のナレーション台本にまとめます。
次に、作成した台本をCoeFontを使用してナレーション音声に変換します。生成されたナレーション音声を聞きながら、台本を場面ごとに約15個のシーンに分割します。動画生成AIは1シーンあたりの生成制約の都合上、この段階で各シーンの所要時間を把握しておくと、後の動画生成作業がスムーズになります。
続いて建物の外観紹介映像と、建物内部と人物の動作を含む映像の2種類を作成します。
建物の外観紹介映像
まずはイメージとなる建物を、画像生成AIを用いて作成しました。今回使用したモデルはRecraft V3です。実際に生成された画像がこちらです。
この画像を動画化するため、研究所の正面に対して角度をつけながらズームインしていく動きを加えることにしました。
映像制作にはimmersity AIを採用しました。このモデルは2D画像に深度情報を付加して3D化することで、安定した様々なカメラワークの動画生成が可能です。これにより、試行錯誤の手間を大幅に削減できました。
建物内部と人物の動作を含む映像
まず、建物の動画生成と同様にスタートフレームを作成します。
スタートフレームの生成にはRecraft V3とMidJourneyの2つのAIを利用しました。シーンによっては同一人物が複数回登場する必要があったため、そのようなスタートフレームの生成にはMidJourneyのc-ref機能を活用しました。生成したスタートフレームは、HailuoAI、PikaAI、Luna Dream Machineの3つの動画生成AIに入力して動画化します。
基本的にはHailuoAIを使用しますが、生成が難しい動画の場合はLuna Dream Machineを利用します。このモデルはエンドフレームの指定が可能なため、求める動画を生成しやすいという利点があります。
具体例として、液体が肉を溶解するシーンを作成する場合、スタートフレームには液体をかける前の肉の画像を、エンドフレームには溶解後の肉の画像を入力します。エンドフレームはRecraft V3で作成しました。Recraft V3は、画像の一部分のみを再生成できる機能や、物体を自然に消去できる機能があり、とても重宝しました。
スタートフレームとエンドフレームの差異が大きくなければ、プロンプトに「move」と記述するだけで自然な動画を生成することができます。
また、PikaAIは「溶ける」「浮かぶ」といった特定のモーションの生成に優れており、イメージするシーンがPikaAIの用意するモーションと合致する場合、躍動感のある動画を作成できます。BGMに関してはSUNO AIを用いて生成します。
生成したBGMと動画を編集して、導入映像は完成です。
AIエージェントの実装
続いてAIエージェントについて説明します。
AIエージェントは、チャット機能、調査機能、投票機能という3つの機能を持ち、gpt-4-32kモデルのAPIを使用して実装されています。
チャット機能
AIエージェントはメッセージを受け取ることで応答します。
チャットで送信されたメッセージにキャラクターのメンションがある場合、メンションされたAIエージェントが応答を行います。メンションがない場合は、システムがメッセージ内のAIプレイヤーの名前を検出し、その該当プレイヤーが応答します。メッセージ内に名前の記載がない場合は、ランダムに選択されたAIプレイヤーが応答を担当します。AIプレイヤーがメッセージを返信する際、システムはバックエンドのデータから各キャラクターのキャラクターシート、過去の会話履歴、調査カードの情報を参照します。
これらの情報をgpt-4-32kモデルに入力し、生成された出力をチャット画面に表示します。AIプレイヤーの応答に他のキャラクターへのメンションや言及が含まれる場合、その該当するAIプレイヤーも同様の流れで応答を行います。このAI同士の会話は最大5往復まで続くことが可能です。
この仕組みにより、ゲーム性を損なうことなく、自然で没入感のある会話体験を実現しています。
調査・投票機能
次に調査機能及び投票機能について解説します。
AIエージェントには、システムが用意した特定のアクションを実行させたい場合、「:アクション名」という形式で記述するようにプロンプトを設定しています。そして、各アクションに対してこちらで指定した形式にあった記述を取得した場合のみ、そのアクションを実行します。
例えば、カード調査のアクションでは「自分の名前:カード番号:取得」という形式を指定しています。そのため、キャラクターのメッセージがこの正規表現に一致した場合にカード調査のアクションが実行されます。同様の方法で投票機能も実装しています。
以下が、調査機能を含む実際のチャットの例です。灰色のシステムメッセージで、カードの調査が実行されたことが確認できます。
エンディングの自動生成
エンディングの生成にはgpt-4-32kを使用しており、投票結果、会話履歴、ストーリーの真相を入力データとし、各キャラクターのその後の展開を描写するようプロンプトを設定しています。
また、プレイヤーが正しく犯人を特定できたかどうかによって、エンディングの展開が変化する仕組みを組み込んでいます。
最後に
個人的には、今回初めてマーダーミステリー制作とゲーム制作の両方に取り組みました。達成感とともにAI領域の進歩の速さと応用力の高さにも驚かされました。
今後も引き続き、最新技術のキャッチアップを続け、新たなコンテンツ開発に挑戦していきたいと思います。