10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AI(Google Gemini)に対戦ゲームの動画解析させてみた

Last updated at Posted at 2025-12-05

はじめに

※これは「株式会社ネクスウェイ Advent Calendar 2025」6日目の記事です🎄

あらゆるコミュニケーションを支援する株式会社ネクスウェイの開発メンバーが、好きな技術・取り組み・学びをゆるく書いていきます :snowman2:

ご挨拶

お世話になっております。shortcut_buttonこと短縮牡丹です。よしなに。
普段は弊社で提供しているサービスのインフラ(大体AWS)を担当しています。

さて、仕事で使っている技術と言うよりは、「自由研究」な感じのユルいテーマで一筆。
お昼休み or 退勤後のちょっとした読み物にでもして頂ければ幸いです。

お題

対戦ゲームの動画を生成AIに与えて、勝敗の判断は付けられるのか :thinking:

:warning: :warning: :warning:
お題の通り、記事中にビデオゲームの画面ショットが登場します。
勤務時間中の参照で同僚にニヤつかれたり、上司の方に見咎められても当方は一切の責任を負いません。悪しからず :pray:
:warning: :warning: :warning:

取り上げるタイトル

1990年代末〜2000年代初頭辺りのビデオゲームに接していた方なら耳にした事があるかもしれないこのタイトル。

「電脳戦機 バーチャロン」。
2本のレバーでロボットを操作して、飛んだり走ったり弾撃ったり斬ったりする対戦ゲームです。

諸々の因果が重なりPS4/5用ダウンロード専売タイトルとして配信されており、現在進行形で対戦も細々ながら(主に週末夜間帯 or 休日朝・俗称ニチアサ)行われている感じです。
うわ懐かしーってなった人のためのリンク・電脳戦機バーチャロン マスターピース 1995〜2001

本記事は同タイトルに収録されているアーケード(ゲームセンター)三部作(無印、オラトリオ・タングラム、フォース)のうち、『フォース』を取り上げています。

「自由研究」の趣旨

「電脳戦機バーチャロン マスターピース 1995〜2001」に収録されているバーチャロン三部作の内、私は前述の通り『フォース』を主な遊び場としています。
こちら、対戦ゲームではありながら、悲しいかな戦績管理(試合の結果やら勝率やら)の仕組みが希薄です。
:thought_balloon: リリースされただけで嬉しい、有難いという話はあれども、それはそれ。

一方で

  • 最近のゲーム機は動画録画機能を有している事でプレイ履歴は残せる
  • 生成AIで動画解析ができそう

といった状況を受け、

  • プレイ動画をAIに解析させ
  • 勝敗を自動取得&蓄積

なんて芸当ができそう、というところから、初手の「プレイ動画のAI解析」をちょろっとやってみた、が本記事の趣旨です。

今回使ったもの

  • PS5 or PS4本体
    • これが無いと始まらない
  • キャプチャーカード + PC
    • PS5 or 4の標準機能にYoutubeへの配信があるので、当初は
      PS5->Youtube配信->生成AIにYoutubeの動画URLを与えて解析
      の構造を考えていたのですが、URL与えての解析が何やら失敗してしまいました :cry:
      ゆえに、一旦諦めて今回は自前でキャプチャーしたmp4動画を与える方向にシフトしています
  • Google AI Studio

大まかなやってみた履歴

あくまでも「動画解析を生成AIにやらせてみる」が主題のため、以下は割愛します。

  • mp4でキャプチャーして動画ファイル作る所
  • Google AI Studioが使えるようになるまでの設定など

1. 動画をGoogle Driveに保存 :rocket:

image.png

2. Google AI StudioでDrive上のファイルを開く

プロンプト右端の + から My Drive を指定してGoogle Drive上のファイルを指定する
image.png

3. 勝敗結果画面の特定を行うためのプロンプトを確定させる

ひとまず1試合だけの動画を与え、以下のプロンプトで様子見。
リザルト画面はこんな感じ。黒塗り部はプレイヤー名。

  • 上部に勝利/敗北チームのプレイヤー名が勝敗と共に表示される
  • 下部はA/Bチームに所属するプレイヤー名と、使用キャラクターが表示される
    リザルト画面

この動画はあるゲームタイトルの対戦動画です。4分35秒付近に試合の結果が表示されています。
2on2のゲームで、勝ったチームと負けたチームに属するプレイヤーの名前が表示されています。
勝ったチームのプレイヤー名と、負けたチームのプレイヤー名を列挙してください。

こんな感じのお返事が返ってきた。

動画の4分35秒付近に表示されるリザルト画面に基づき、勝ったチーム(WIN)と
負けたチーム(LOSE)のプレイヤー名は以下の通りです。
勝ったチーム (TEAM B)
********* <----ユーザー名合ってた :clap:
********* <----これも合ってた :clap:
負けたチーム (TEAM A)
*********(※「l」の部分は数字の「1」や大文字の「I」の可能性もありますが、垂直な棒線として表示されています) <----フォントの関係か、「M」が「I」と判別された。惜しい :thinking:
********* <----これは合ってた :clap:

無料版だし、もうちょっと紆余曲折あるかと思ったけど、きっちり正解。嬉しい誤算です。
では確実に仕事して貰うためのプロンプトも書いて貰いましょう。

複数の試合を録画した映像をあなたに与え、このリザルト画面を複数回評価して欲しいと考えています。
あなたがリザルト画面を特定するために適切なプロンプトを、日本語で教えてください。

とお伺いを立ててみます。

複数の試合が含まれる長い動画から、この特定のリザルト画面を正確に検出し、情報を抽出するためのプロンプト案を作成しました。
AIに対して「何を探すべきか(視覚的特徴)」と「何を抽出(出力)すべきか」を明確に伝える構成になっています。以下のプロンプトをお使いください。
推奨プロンプト
この動画には複数の対戦試合が含まれています。各試合の終了後に表示される**リザルト画面(戦績表示画面)**をすべて特定し、以下の手順で情報を抽出してください。

  1. リザルト画面の特定:
    以下の視覚的特徴を持つ画面を探してください。
    画面上部に「PLAYER MATCH」という文字が表示されている。
    画面上部に大きく「WIN」「LOSE」という文字が表示されている。
    画面が上下(またはチームごと)に区切られ、「TEAM A」「TEAM B」という表記と、その横にプレイヤー名がリスト化されている。
    背景は暗い色調で、赤や青の識別カラーが使われている。
  2. 情報の抽出:
    特定した各リザルト画面について、以下の項目をリスト形式で出力してください。
    タイムスタンプ: その画面が表示された時間(分:秒)
    勝利チーム: 「WIN」と表示されているチーム名(TEAM A または TEAM B)とそのプレイヤー名すべて
    敗北チーム: 「LOSE」と表示されているチーム名とそのプレイヤー名すべて
    ※OCR(文字認識)を行い、可能な限り正確なスペルでプレイヤー名を書き出してください。
    このプロンプトのポイント
    キーワードの指定: 「PLAYER MATCH」「WIN」「LOSE」「TEAM A/B」という具体的な単語を明示することで、試合中の画面と区別させやすくしています。
    構造の指定: 勝利側と敗北側を明確に分けて抽出するように指示しています。
    OCRの指示: 単に画像を見るだけでなく、文字として読み取ることを強調しています。

なるほど。それでは、複数試合の動画を与えて、全試合分列挙できるかやってみましょう。

4. 本題。複数試合が収録された動画でやってみる

この動画には複数の対戦試合が含まれています。各試合の終了後に表示される**リザルト画面(戦績表示画面)**をすべて特定し、以下の手順で情報を抽出してください。

  1. リザルト画面の特定:
    以下の視覚的特徴を持つ画面を探してください。
    画面上部に「PLAYER MATCH」という文字が表示されている。
    画面上部に大きく「WIN」「LOSE」という文字が表示されている。
    画面が上下(またはチームごと)に区切られ、「TEAM A」「TEAM B」という表記と、その横にプレイヤー名がリスト化されている。
    背景は暗い色調で、赤や青の識別カラーが使われている。
  2. 情報の抽出:
    特定した各リザルト画面について、以下の項目をリスト形式で出力してください。
    タイムスタンプ: その画面が表示された時間(分:秒)
    勝利チーム: 「WIN」と表示されているチーム名(TEAM A または TEAM B)とそのプレイヤー名すべて
    敗北チーム: 「LOSE」と表示されているチーム名とそのプレイヤー名すべて
    ※OCR(文字認識)を行い、可能な限り正確なスペルでプレイヤー名を書き出してください。

2試合分の動画を与えてみます。お返事こちら。

動画内で確認できるリザルト画面(指定の条件を満たす戦績一覧画面)は、2試合目の終了後のみ完全に表示されています。1試合目の終了時(02:28付近)は画面が切り替わるため、詳細なリストは表示されません。
抽出結果は以下の通りです。

  1. リザルト画面 (2試合目終了時)
    タイムスタンプ: 05:36
    勝利チーム (WIN): TEAM A
    ******** <----ユーザー名合ってた :clap:
    ******** <----これも合ってた :clap:
    敗北チーム (LOSE): TEAM B
    ******** <----これも合ってて :clap:
    ******** <----全部合ってた :100:

しっかり解析できているようです。
ただ、2試合分の動画を与えたのですが、1試合目の結果が上手く取れていません。

5. 上手く取れなかった結果を深掘りさせる

1試合目の終了時(02:28付近)は画面が切り替わるため、詳細なリストは表示されません。

との事ですが、もうちょい深掘りしてみて貰いましょう。

1試合目の終了時(02:28付近)についても判別可能な範囲で回答してください

とちょっと無茶振りしてみます。
お返事これ。

ご指摘の通り02:28付近を再度詳細に確認いたしましたが、このシーンでは「PLAYER MATCH」と書かれた赤いトランジション画面(遷移画面)が一瞬表示されるのみで、名前や勝敗がリスト化された詳細なリザルト画面は編集でカットされており表示されません。
ただし、** 試合開始時のブリーフィング画面(00:13付近)** に表示されるプレイヤー名と、** 試合終了時の状況(02:25付近)** から、対戦メンバーおよび勝敗結果を特定することは可能です。判別可能な範囲での情報は以下の通りです。
1試合目の対戦結果(映像内の情報より補完)
・タイムスタンプ: 02:25(決着)〜 02:28(画面切り替え)
・勝敗: プレイヤー側チームの勝利
 ・根拠: 敵チーム(ENEMY)のライフゲージが0になり、プレイヤー機( ******** )が勝利ポーズをとっているため。
・勝利チーム(YOU / FRIEND):
 ・******** <----ユーザー名合ってた :clap:
 ・******** <----これも合ってた :clap:
・敗北チーム(ENEMY):
 ・******** <----先頭の「i」が判別できてない。惜しい。 :thinking:
 ・******** <----末尾の2文字がなぜか「(1文字目)」と判別された。謎。 :thinking:

・・・動画の内容からどちらが勝った試合か判別して、勝敗報告上げて来ましたね。これは凄い。
嬉しい誤算って言うか、これほどですかという感じ。

こんな感じのシーンから判別してくれた模様。
勝利ポーズ画面

ただ、 「PLAYER MATCH」と書かれた赤いトランジション画面(遷移画面)が一瞬表示されるのみ と、遷移の速い動画は上手く処理できない様子。
その辺の制約はちょっと聞いてみましょうか。

6. 動画解析の制約を探る

こんな感じにお伺い。

動画解析の制約として、余りに短時間のシーンは判別ができていないように見えます。判別可能な最短の時間数はどの程度でしょう?

お返事は以下。ふむー。

動画解析における「判別可能な最短時間」についての技術的な目安と、なぜ短時間のシーンが見落とされやすいかについて回答いたします。
結論から申し上げますと、AIモデルによる動画解析では**「1秒以上」**の静止または安定した表示がないと、確実に判別・文字認識(OCR)を行うことは困難です。
具体的な目安は以下の通りです。

  1. 判別可能な時間の目安
    ・1秒以上(確実):
    文字情報や詳細な状況を読み取るために必要な長さです。
    リザルト画面やテロップなど、文字を正確に読み取るには、この程度の時間、画面が静止していることが望ましいです。
    ・0.5秒 〜 1秒(五分五分):
    AIが動画から画像を抽出するタイミング(サンプリング)と合致すれば認識できますが、運悪くサンプリングの「隙間」に入ってしまうと見落とされます。
    大きな物体(「WIN」の文字など)は認識できても、細かいプレイヤー名などはブレて認識できない可能性が高まります。
    ・0.5秒未満(判別困難):
    ほとんどの場合、サンプリングの隙間に落ちてしまい、AIには「存在しなかった」ものとして扱われます。
    仮にフレームとして抽出されたとしても、シーン切り替えのモーションブラー(残像・ぼけ)が発生していることが多く、文字認識はほぼ不可能です。
  2. なぜ短時間のシーンが見落とされるのか?
    現在の動画解析AIは、人間のように動画を「連続した流れ」として見ているわけではありません。
    1.コマ抜き(サンプリング): 動画をパラパラ漫画のように、**一定間隔(例:1秒に1枚程度)**で画像を抜き出します。
    2.画像解析: 抜き出した「静止画」に対して何が映っているかを分析します。
    そのため、「抜き出された画像のタイミング」と「見たいシーン」がズレてしまうと、0.5秒程度の短いシーンは完全に無視されてしまいます。
    先ほどの1試合目のケースについて
    先ほどの1試合目終了時(02:28付近)の遷移画面については、赤い背景の「PLAYER MATCH」という文字が出るエフェクト自体は1秒弱存在しますが、文字がはっきりと読める静止状態はほぼ一瞬(数フレーム)であるか、アニメーションで常に動いている状態でした。
    このため、AIのサンプリング間隔の隙間に入ってしまったか、あるいは抽出された画像がブレており、文字情報として認識できるレベルに達していなかったと考えられます。

「1秒くらいはじっくり見させてくれ」って事みたいです。

ひっっっっどい負け方をしたりすると、ついつい「はい次ー、はいはい次ー次ー」と言わんばかりにリプレイや勝利モーション、結果表示のスキップをやりたくなりますが、1秒は我慢してねって事ですね。なるほど。

:thought_balloon: 夢中になると、どうしても、ね :innocent:

まとめ

  • Google AI Studioを使って、生成AI(Gemini)にゲームプレイ動画の勝敗解析をさせてみました。
    • 無料で使える範囲でも色々できました。が、有料版は今回試していないため、どういったプラス要素があるかは不明です。
    • Youtubeから直結で評価させる事ができれば良かったのですが、それが実施できなかったのはちょっと残念。
  • 勝敗報告が表示された画面の特徴をAIに伝えて分析させる事で、勝敗報告のシーンを評価させる事は十分できそうです。
    • ただ、1秒程度は画面展開が固定されていないと厳しいようなので、『あったまっても(隠語)』我慢しましょう。
  • 勝敗報告が表示された画面の表示時間が短い(1秒未満)場合でも、他のシーンの情報から、どちらが勝ったかを判別してくれる場合がありました。

将来構想など

  • プレイ動画をYoutubeに配信で保存しておく
  • 指定されたURLの動画を読み込んで、適切なプロンプトのもとで解析を実施、勝敗報告をJSONで返す仕掛けを用意
    • 動画をフレーム単位の画像として処理する以上、文字情報のOCR読み取りは可能なはず。
      ゆえに、プロンプトの与え方次第で、使用キャラクターやステージ情報も取れそうな感じ。
  • 戻って来たJSONをDBに保存して、中長期の勝敗分析(対キャラ別勝率や、ステージ別勝率など)に使う

なんて事も実現が可能に感じますね。

一方で、解析のやり方が

1.コマ抜き(サンプリング): 動画をパラパラ漫画のように、**一定間隔(例:1秒に1枚程度)**で画像を抜き出します。
2.画像解析: 抜き出した「静止画」に対して何が映っているかを分析します。

である事から、動画全体を評価させてプレイ内容の良し悪しを判断させるには、プロンプトをどう組むかもさることながら、それ以前にサンプリングレートが肝になりそうです。
:thought_balloon: 有料プランにしてもサンプリングレートが上がる訳では無さそうでした。残念。

とは言え、0.5倍速動画を用意してあげる、などでサンプリングレートが1秒であっても判別可能な範囲を向上させる、みたいなケアはできそうです。 :bulb:


最後まで読んでいただきありがとうございました。

株式会社ネクスウェイ Advent Calendar 2025では明日以降も、開発メンバーがそれぞれの「好き」と「学び」を自分の言葉で綴っていく予定です。

明日 7 日目の記事は、同じくネクスウェイ開発メンバー@oteppe さん です。

引き続き、お楽しみください🎄


10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?