Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ドラゴンクエストvsGitHubCopilot.pdf
Search
simple 1500
April 24, 2026
Technology
96
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドラゴンクエストvsGitHubCopilot.pdf
simple 1500
April 24, 2026
Other Decks in Technology
See All in Technology
継続的なAIコスト最適化
bgpat
1
350
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
110
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
360
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
490
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
270
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
650
Browser Spec: Testing Hotwire with Ruby
takahashim
1
130
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
730
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
Marketing to machines
jonoalderson
1
5.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Music & Morning Musume
bryan
48
7.4k
The browser strikes back
jonoalderson
0
1.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
The SEO Collaboration Effect
kristinabergwall1
1
590
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Transcript
ドラゴンクエスト vs GitHub Copliot engineer unite meetup vol.9 ~大事なことは全部ゲームが教えてくれた~
田中 勇樹 レベル 44 テクノプロジェクト PKGかいはつ 最大HP 192 最大MP 122 E いろいろなかいはつけいけん E じょうほうしょりしかく E よさげなかいはつかんきょう
E べんりなAI E たくさんのゲーム 直近のぼうけんのりれき ・GitHub Copilot で効率化 ・SpecKit が全然うまくいかない ・Copilot Studio が使いにくい ・Java vs Spring Boot ・VSCodeが相棒 ・高評価タイトルをセールで購入 ・エンディングやトロフィーといった目 標達成を重視 ・長時間プレイは辛い年頃 ・思い入れの深いゲームは味変
今回やりたいこと • AIにドラクエの戦闘を考えさせる • 正当な方法で外部から介入する • 身近なツールで誰でもできる簡単なものを • バッチリがんばらない
ドラクエのAIといえば? クリフトは ザラキを となえた! ラスボスは しななかった!
いにしえのドラクエのAIの特徴 🍴 キャラクター毎・敵毎に決まった選択肢の中から行動を決定する (+耐性判定、ローテーション) 💪ターンの途中に自分の番が回ってきた時点で行動が決まる → ボスが大技出した直後に回復 👓敵ステータスや耐性を理解し、最も効果的な(期待値が高い)行動を取る (賢いAI・賢くないAIを表現) ☞
あくまでプログラム、択が少なく作品によってはあまり賢くない
GitHub Copilot に考えて欲しいこと 💪全滅せず、効率的に戦ってほしい 💀MPを無駄遣いしない・効かない相手にザラキを使わない 🎼個性を入れるなどチューニングしたい ※今回はあまり細かいことはやりません
GitHub Copilot に聞いてみた ▶ どうやってゲームのテキストを取り込むか
① ゲーム画面情報をPCに取り込み ・PCゲーム ・ライブ配信 ・キャプチャーボード ▶ OBSStudio で殆ど解決できる ② 動画(画像)をOCRでテキスト生成
Tesseract (OSSのOSR) Google等APIサービス利用 Windowsにある機能 ▶ Snipping Tool がイケてる ③ テキストを蓄積 抽出したテキストの判定 パターンにより出力先を変更 構造化してVSCodeで管理 ▶ 最初は適当で ④ AIに考えさせる 必要な情報の置き場所を明示 例)各キャラクターが取れる行動 現在のステータス ▶ おいのりをする
OBSStudioで映像の取り込み • 動画配信で有名な無料ソフトウェア • ブラウザ、カメラ、アプリ映像など複数 の画面を組み合わせて簡単に動画作 成・実況配信できる ☞Steam、キャプチャボード、 YouTube配信 etc •
プラグインを使用し1FPSで画像出力
Snipping Tool でOCR こいつ ☞ Windows 11 なら標準搭載で誰でも使える Snipした後、ワンボタンでOCRし、 テキストだけ取り出せる
Snipping Tool でOCR 最新ゲームのカラフルなUI、 背景に埋まった文字も高精度で抽出する
Snipping Tool でOCR FC版ドラゴンクエスト4の場合はやや精度が悪いが、 AIが補正して読んでくれることを期待 ▶はなす マよさ とびら コマンド じゆもん
どうく さくせん しらS クリ7ト「ひめに もしものことが あっては このクリフトww …· いや おうさまが どんなに なけかれることかっ!
GitHub Copilot に作らせた SpecKitをやったが失敗した 思い当たる敗因: • GPT5.4 mini • プレミアムリクエスト不足
• 指示がよくない (OBSStudioを使おうとか、1本プログ ラムになるとか) ☞そんなに難しい話ではない
① ゲーム画面情報をPCに取り込み PCゲームを直接動画化 自分でライブ配信してPCで再生 キャプチャーボード ▶ OBSStudio で殆ど解決できる ② 動画(画像)をOCRでテキスト生成
Tesseract (OSSのOSR) Google等APIサービス利用 Windowsにある機能 ▶ Snipping Tool がイケてる ③ テキストを蓄積 抽出したテキストの判定 パターンにより出力先を変更 構造化してVSCodeで管理 ▶ 最初は適当で ④ AIに考えさせる 必要な情報の置き場所を明示 例)各キャラクターが取れる行動 現在のステータス ▶ おいのりをする プログラムを作るのは②③だ けにする
簡単なPythonプログラムを作らせて動かす ① watchdogで画像出力フォルダを監視 ② 新しい画像が作成されたら読み込み ③ oneocr でSnipping Tool APIを呼び出し
テキスト抽出 ④ テキストファイルに出力 oneocr とは ▶ 内部で Snipping Tool APIを呼び 出すだけ ▶ 非公開APIなので使えなくなる可 能性あり ▶ 代替ツールは、応答速度や精度 の差が大きい
全体構造 ① OBSStudioでゲーム画面を取り込み画像 を作成 ② Python / oneocrで画像からテキスト抽出 ③ テキスト情報を読んでGitHubCopilotが回
答(※)
目標を設定・前提条件 FC版ドラゴンクエスト4 の第2章で最初のボスに挑戦! 前提としてGitHub Copilotに以下の情報を共有 ・ダメージ計算式などの基本情報 ・各キャラクターのつよさと使える呪文 ・敵の情報はなし
GitHubCopilotのワークスペース ① ② ③ ④ ① インストラクション :プロンプトが常に読む基本情報 # 基本ルール
- 日本語で回答すること - ドラゴンクエストの世界観を意識して回答すること - ドラゴンクエストの戦闘コマンドを検討する場合、早く簡潔に回答し説明は求められたときのみ出力すること - 画面から抽出したテキストを処理する場合、 OCRの性能により文字の誤認識があるため、それを正しい文字に置 き換えながら考えなければならない - 画面から抽出したテキストについて、指示がない限り AIが修正してはならない(正しい文字を補って考えること) - ファミリーコンピュータの画面に表示される文字を前提に考えること(例:漢字は使用されない、カタカナは全角で表 示されるなど) - 誰がどの敵に対し何を行うか、直近の1ターンにおける行動を必ず具体的に指示すること # ドラゴンクエストの戦闘判定で必ず行うこと - 常に最新のログ `ocr_result.txt` を確認すること、タイムスタンプがあるので時系列を判断すること - 現在の HPとMPは `ocr_result.txt` で出力されるので、残り HPとMPの計算を誤らないこと - キャラクターの最新の強さを確認すること(後述) - 現在の HPと最大HPを確認し、戦闘不能にならないよう気を付けること - 各キャラクターが使用できるコマンドを確認すること(例: MPが足りないとじゅもんは使用できない) # ドラゴンクエストの戦闘における基本的な考え方 - 戦闘はターン性で行われ、プレイヤーと敵が素早さの順で行動する (ただしランダム性により順番が前後する ) - プレイヤーは「たたかう」「じゅもん」「どうぐ」「にげる」などのコマンドを選択して行動する - HPが0になると戦闘不能となり、全員が戦闘不能になると負けである - じゅもんは MPが足りないと使用できない - たたかうにおけるダメージの計算式は敵味方共通で 「(攻撃力 ÷ 2) - (守備力 ÷ 4)」である - たたかうの基本命中率は約 92%である(一部の敵に対してはこの限りではない ) - たたかうの際、一定確率 (1/64)で会心の一撃が発生し、武器攻撃力と同程度のダメージを与える - アリーナのみ、会心の一撃の発生率は (自分のレベル / 256) である - じゅもんのダメージは一定範囲内のダメージである - 敵に対するじゅもんの命中率は耐性がない時に 100%、であり耐性があると最小で 0%になる(耐性は敵によって異 なる) - にげるの成功率は 67%だが、4回目以降は 100%になる - ボスなどの一部の敵はにげることができない - 敵を倒し経験値を得ることでレベルアップし成長する # ドラゴンクエスト 4第2章のメンバーの特徴 - アリーナ:攻撃力と素早さが高い 強い武器防具とじゅもんが使えない - クリフト:回復じゅもんが得意 武器防具はそれなり - ブライ:ヒャド系攻撃じゅもんと補助系じゅもんが使える魔法使い あまり良い防具が装備できず HPも低い # キャラクターの強さ 各キャラクターのつよさを開いた画面の情報を、 `status` フォルダ内のテキストにて OCRから抽出したテキストが出 ② 呪文の説明 | レベル | 呪文名 | 消費MP | 効果 | |--------|--------|--------|------| | Lv1 | ヒャド | 3 | 敵1体に10~16のヒャド系のダメージ | | Lv3 | ルカニ | 3 | 敵1体の守備力を元の値の100%下げる(0が限界値) | | Lv8 | マホカンタ | 4 | 自分以外の【呪文】を受けたとき、呪文効果を唱えた相手に跳 ね返す壁を自分に張る | | Lv11 | ヒャダルコ | 5 | 敵1グループに35~45のヒャド系のダメージ | | Lv14 | ピオリム | 3 | 仲間全員の『すばやさ』を元の値の100%上げる(255が限界 値) | | Lv19 | バイキルト | 4 | 仲間ひとりの「こうげき」のダメージを2倍にする | ③ つよさ せいべつ:おんな Lv: 4 E:いばらのむち E:きぬのローブ E:はねぼうし ちから:16 すばやさ:11 たいりょく:13 かしこさ:5 うんのよさ: 6 さいだいHP:27 さいだいMP:0 こうげき力: 30 しゅび力:23 ④ ocr_result OCR結果を垂れ流すファイル 戦闘終了後など定期的に中身をク リアする
1回目の戦闘 左のOCRログ出力は殆どタイムラグなし (1秒毎の処理が遅延なく行われている) AIの応答はモデルの性能によりけり
2回目の戦闘 - HPが減ったら? じじいにホイミしようと提案したので うまく動いている!
最初のボスに挑戦 ボスであることや、敵の性能といった情 報は与えておらず、どこまで考えている かは不明
尊い犠牲が出たがボス撃破 クリフトが自分への回復が間に合 わず戦闘不能になるものの、かろ うじてボスの撃破に成功!! (Take1)
試行錯誤① ▶ 最新情報よりも既にある(過去のプロンプトで読んだ)情報を優先 しやすい。最新情報を取得する動きを強制させる指示が必要。 ▶ 外部情報を使っている様子はない、ワークスペース内で情報をま とめている・OCRの文字誤判定も頑張って考えているのがログから 確認できる ▶ プライベート端末のため、Github Copilot は無償アカウントを使 用。モデルはClaude
Haiku 4.5 または Auto を選択。
はちす + G 35 LADA せいフ:おとこ LNL: 4 HP: 28
MP: 18 E どうのっるぎ すはやさ: Ex : 9 7 #uVx <: 13 かしこさ: 13 7 cU#OHP: 28 LEUMP: 18 こうきカ:21 しゅびカ:10 119 特定のパターン画像に対しては、切り 出し・加工すればよいので、改善できる 部分 試行錯誤② NPCとの会話、戦闘時のログはきれい に取れるものの、「つよさ」画面からの OCRが壊滅的。 (AIはOCRで取得したテキストと理解し てくれるので読めるけれども) 当初考えていた正規表現によるステータ スの最新化を断念し、手入力した
課題 2章の序盤なのであまり考えることがなかった ☞ドラゴンクエスト3や5のほうが面白いかも 敵の強さなど細かい情報を開示するか、情報を蓄積させてもっと予想させるとよ い ・敵の残りHPを考慮した長期戦 ・敵の大技への対策 個性を注入するにはどうすればよいか 当たり前な結果を得てもつまらない
いわゆる強いAIではなく、個性の強いAIのほうが面白い (そして作るプロセスも面白い) 難しいことがなく、テキストがたくさん出るゲームなら何でもできる OCRだけでなく画像処理できるAIを試すなど、いろいろと発展でき そう まとめ