Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゲームAIシミュレータを活用した、GCPフルマネージドなゲームコアロジックの自動テス...

 ゲームAIシミュレータを活用した、GCPフルマネージドなゲームコアロジックの自動テストツール

ゲームに、AI(強化学習)を入れよう!
AIの仕組み(シミュレータ)で、自動テストをしよう!
フルマネージドな構成で、テスト管理ツール構築!
まとめと今後

airtanker

July 03, 2022
Tweet

More Decks by airtanker

Other Decks in Programming

Transcript

  1. 2 自己紹介
 田中 晶
 GCP、AWS、サーバ、ML、たまにFE 
 データエンジニア。GCP認定資格切れそう。 
 SNS秘密系エンジニア
 最近、会社アイコンをAIでアフロにしました

    
 ゲーム事業本部マーケティング統括部エンターテインメントサイ エンス部AI推進グループ
 システム本部データ統括部分析推進部データエンジニアリング 第二グループ
 秘密
 秘密

  2. 7 ゲームに、AI(強化学習)を入れると嬉しいこと 🎉
 • プレイヤー
 ◦ テストの自動化
 ◦ バランス調整のサポート
 •

    NPC
 ◦ より自然なNPCの作成
 ◦ 人間と同等かそれ以上の対戦相手の作成 
 • コンテンツ制作
 ◦ 新コンテンツの生成
 ◦ 難易度調整
 ◦ エンゲージメント向上
 1
  3. 実機 📱
 シミュレータ 💻
 12 シミュレータ 🤖
 6   環境 プレイヤー


    NPC(対戦AI)
 ナビゲーションAI キャラクターAI
 メタAI ゲームコアロジック
 
 
 環境 プレイヤー
 NPC(対戦AI)
 キャラクターAI
 メタAI ゲームコアロジック
 ナビゲーションAI
  4. 13 シミュレータの要件 📐
 • インゲームをUIなどと切り離して、単体・並列に高速実行できる実装 
 • インゲームのデータを、出力する機能 
 •

    インゲームのデータを、サーバに保存する機能 
 • インゲームのデータから、リプレイする機能 
 
 7
  5. 15 シミュレータの導入 💡
 • AI活用 ”だけ” で、シミュレータ導入をするのは、 
 ◦ 費用対効果


    ◦ AIプロジェクトの不確実性
 の観点から難しいことも多い
 • シミュレータをAI以外にも活用すれば... 
 ◦ そこで自動テストへの活用
 
 1
  6. 17 シミュレータの要件 📐
 • インゲームをUIなどと切り離して、単体・並列に高速実行できる実装 
 • インゲームのデータを、出力する機能 
 •

    インゲームのデータを、サーバに保存する機能 
 • インゲームのデータから、リプレイする機能 
 
 スナップショットテストに活用可能
 
 2
  7. 19 スナップショットテストとは 📝
   環境 v1 キャラ
 3 技1   環境 v2

    キャラ
 データ(v1) データ(v2) 操作
 技2 技1 技2 デグレが発生していない

  8. 20 スナップショットテストを行うメリット 🍄
 • 単体テスト(ユニットテスト)でカバーできない、スキルやパッシブ効果 
 などを組み合わせた複雑な条件の状態をテストできる 
 • 適切なシミュレータ設計にすることで、敵AIの挙動などもテストできる

    
 • Mike Cohn のテスト自動化ピラミッドに沿った速いテスト層の充実(NotUI) 
 4 https://cloud.google.com/architecture/devops/devops-tech-test-automation より引用
 
 Ice Cream Cone Anti-Pattern

  9. 23 使い方 📜
 2 • 機能改修前後のテスト・実行結果比較を半自動化し、工数削減 
 • 一連のフローを行えるUI、テストケース作成を簡易に行えるUI 


    or
 プランナー
 QA
 バトルAI
 ゲームプレイによ るテスト
 保存
 操作履歴
 実行結果
 操作履歴
 シミュレータ による自動実行 操作履歴
 実行結果
 STEP1
 機能改修前のテスト実行
 STEP2
 機能改修後のテスト実行
 STEP3
 機能改修前後の実行結果比較
 保存
 実行結果
 実行結果
 出力
 出力
 入力
 利用
 比較
 実行結果に差分があった 場合、機能改修前後でデ グレ発生の検知!

  10. 27 構成 🌐
 3 開発者 Containers QA端末 Cloud Run 参照系APIs

    Cloud Endpoints 1 Serverless API Cloud Run Multiple Services Cloud SQL Cloud Run GCS Signed URL API Cloud Run Cloud Storage Cloud Run Import Cloud Run Cloud Pub/Sub 管理画面 Identity-Aware Proxy on Cloud Run Containers Container Registry Cloud Build Cloud Functions Cloud Dataflow Cloud Storage ゲーム固有 2 5 6 7 3 4 Cloud Pub/Sub 差分比較API Cloud Run Cloud Run
  11. 28 参照系API 🌐
 4 QA端末 Cloud Run 参照系APIs Cloud Endpoints

    1 Serverless API Cloud Run Multiple Services Cloud SQL 2
  12. 29 管理画面 🌐
 5 QA端末 Cloud Run 参照系APIs Cloud Endpoints

    1 Serverless API Cloud Run Multiple Services Cloud SQL 2 5 6 管理画面 Identity-Aware Proxy on Cloud Run Cloud Run
  13. 30 使い方 📜
 6 • 機能改修前後のテスト・実行結果比較を半自動化し、工数削減 
 • 一連のフローを行えるUI、テストケース作成を簡易に行えるUI 


    or
 プランナー
 QA
 バトルAI
 ゲームプレイによ るテスト
 保存
 操作履歴
 実行結果
 操作履歴
 シミュレータ による自動実行 操作履歴
 実行結果
 STEP1
 機能改修前のテスト実行
 STEP2
 機能改修後のテスト実行
 STEP3
 機能改修前後の実行結果比較
 保存
 実行結果
 実行結果
 出力
 出力
 入力
 利用
 比較
 実行結果に差分があった 場合、機能改修前後でデ グレ発生の検知!

  14. 操作
 31 スナップショットテストとは 📝
   環境 v1 キャラ
 6 技1   環境

    v2 キャラ
 データ(v1) データ(v2) 技2 技1 技2 デグレが発生していない

  15. 32 データアップロード構成(パターン1) 🌐
 7 Containers QA端末 Cloud SQL Cloud Storage

    Cloud Run Import Cloud Run Cloud Pub/Sub 5 Cloud Functions Cloud Dataflow Cloud Storage 7 Cloud Pub/Sub
  16. 33 データアップロード構成(パターン2) 🌐
 8 Containers QA端末 Cloud SQL Cloud Storage

    Cloud Run Import Cloud Run Cloud Pub/Sub 5 Cloud Run GCS Signed URL API Cloud Run Cloud Storage Cloud Endpoints 3 1
  17. 34 使い方 📜
 9 • 機能改修前後のテスト・実行結果比較を半自動化し、工数削減 
 • 一連のフローを行えるUI、テストケース作成を簡易に行えるUI 


    or
 プランナー
 QA
 バトルAI
 ゲームプレイによ るテスト
 保存
 操作履歴
 実行結果
 操作履歴
 シミュレータ による自動実行 操作履歴
 実行結果
 STEP1
 機能改修前のテスト実行
 STEP2
 機能改修後のテスト実行
 STEP3
 機能改修前後の実行結果比較
 保存
 実行結果
 実行結果
 出力
 出力
 入力
 利用
 比較
 実行結果に差分があった 場合、機能改修前後でデ グレ発生の検知!

  18. 35 スナップショットテストとは 📝
   環境 v1 キャラ
 9 技1   環境 v2

    キャラ
 データ(v1) データ(v2) 操作
 技2 技1 技2 デグレが発生していない

  19. 10 36 データダウンロード構成 🌐
 QA端末 Cloud Endpoints 1 Cloud Run

    GCS Signed URL API Cloud Run Cloud Storage 4 3 トランザクション管理API Cloud Endpoints 1 Serverless API Cloud Run Multiple Services 2 Cloud SQL 5
  20. 37 使い方 📜
 • 機能改修前後のテスト・実行結果比較を半自動化し、工数削減 
 • 一連のフローを行えるUI、テストケース作成を簡易に行えるUI 
 or


    プランナー
 QA
 バトルAI
 ゲームプレイによ るテスト
 保存
 操作履歴
 実行結果
 操作履歴
 シミュレータ による自動実行 操作履歴
 実行結果
 STEP1
 機能改修前のテスト実行
 STEP2
 機能改修後のテスト実行
 STEP3
 機能改修前後の実行結果比較
 保存
 実行結果
 実行結果
 出力
 出力
 入力
 利用
 比較
 実行結果に差分があった 場合、機能改修前後でデ グレ発生の検知!
 11
  21. 38 スナップショットテストとは 📝
   環境 v1 キャラ
 技1   環境 v2 キャラ


    データ(v1) データ(v2) 操作
 技2 技1 技2 デグレが発生していない
 11
  22. 12 39 データアップロード構成(パターン1) 🌐
 差分比較API Containers QA端末 Cloud SQL Cloud

    Storage Cloud Run Import Cloud Run Cloud Pub/Sub 5 Cloud Run Cloud Functions Cloud Dataflow Cloud Storage Cloud Pub/Sub
  23. 13 40 データアップロード構成(パターン2) 🌐
 差分比較API Containers QA端末 Cloud Endpoints 1

    Cloud SQL Cloud Run GCS Signed URL API Cloud Run Cloud Storage Cloud Run Import Cloud Run Cloud Pub/Sub 5 4 3 Cloud Run
  24. 41 補足 📍
 • FrontEndは、React-admin
 • APIは、Go & gRPCサーバ (

    Cloud APIs の API 設計ガイドに準拠 )
 • gormを利用した自動マイグレーション 
 • Dockerのマルチステージビルド利用で、API の image は 8MB 
 • CloudEndpoints で、Extensible Service Proxy が RESTful な呼び出しを変換してく れるので、gRPC & RESTful な呼び出しに対応 
 • SecretManager と CloudRun で GCP の json key のローテーション 
 14
  25. 43 まとめ 📚
 • インゲームに AI(強化学習)を入れるには、シミュレータが必要 
 • シミュレータは AI(強化学習)だけでなく、自動テスト(スナップショットテスト)にも活

    用可能
 • GCPフルマネージド構成な管理ツールで、低運用負荷・低コストが実現可能 
 • AI以外にシミュレータ活用することで、AIが単体導入しづらいケースにも 
 • シミュレータを考慮したゲームエンジンの設計にすることで、将来的なAI導入を容易 に
 • 同上の設計にすることで、モジュール同士の依存度を下げ、ネットワークに依存しな いモジュールへの操作命令の配信が可能に 
 1
  26. 44 今後 🚀
 • シミュレータのサーバレス化(CloudRun化) 
 • 管理ツールからの自動テストの起動 
 •

    シミュレータの自動テスト(スナップショットテスト)以外への活用 
 • AIやデータ品質などを活用した高効率な自動テストの実現 
 2
  27. 46 ゲーム × AI 🏁
 • 明日から実践!強化学習で強い対戦ゲームAIを作ろう 〜だれでも試せる状態を めざして〜 (CEDEC2021)


    • 強化学習等による『逆転オセロニア』対戦環境バランス設計支援 · DeNA Engineers' Blog (CEDEC 2020)
 • 2019-09-04 CEDEC2019 組織的に Game x AI を 推進していくための方法論 〜 『逆転オセロニア』の AI の一歩先へ 〜 (CEDEC 2019)
 • Applying AI in Games with DeNA (Presented by Google Cloud) (GDC 2019)
 3