Slide 1

Slide 1 text

Shadowverse流開発手法 1/76 ~QAコスト削減と堅牢性強化を実現するプランナーによるテスト駆動開発~ 株式会社Cygames

Slide 2

Slide 2 text

Shadowverseでは膨大なカードの組合せによるQAコストが開発、 運営をしていく中で大きな課題となった。 その課題に対して、プランナー自身がカードの振る舞いをテスト できる環境や、AIの調整、システムの 堅牢性を担保するテストツールなどを駆使することにより 大幅改善を実現した。 本講演では、これらの実践方法と運用方法にShadowverse での実例を交えつつ解説する。 2/xx 本講演の主旨

Slide 3

Slide 3 text

柴田 有輝 2015年度新卒として株式会社Cygamesに入社。 エンジニアとして、リリース前からShadowverse の開発に携わる。 現在はバトルパートのリーダーを担当、開発と 運用を行いながらバトル開発全体の管理を行って いる。 3/xx 自己紹介

Slide 4

Slide 4 text

4/xx 自己紹介 鄒 一舟(ソウ イッシュウ) 中国出身。2012年来日し、早稲田大学に修士入学。 2015年新卒として株式会社Cygamesに入社。 Shadowverseリリース前から UI、バトルロジックやAIなどの実装に携わる。 現在はAIの設計と実装を担当している。

Slide 5

Slide 5 text

• ジャンル:デジタルTCG(Trading Card Game) • 2016年6月17日リリース • 運用4年目に突入 • 現在(9/5時点)までに2100万DLを突破 • 4プラットフォーム展開 (GooglePlay、AppStore、DMM、Steam) 5/xx Shadowverseとは

Slide 6

Slide 6 text

6/xx Shadowverseにおけるリリースサイクル

Slide 7

Slide 7 text

Agenda 7/全ページ 1. Shadowverseの課題と解消手段 2. AI開発におけるテスト駆動開発 3. スキル開発におけるテスト駆動開発 4. 全体のまとめ

Slide 8

Slide 8 text

Agenda 8/全ページ 1. Shadowverseの課題と解消手段 2. AI開発におけるテスト駆動開発 3. スキル開発におけるテスト駆動開発 4. 全体のまとめ

Slide 9

Slide 9 text

9/xx Shadowverseの課題 … カードプール増加 バグ増加 テスト工数増加 堅牢性の低下 QAコストの増加 組み合わせ 爆発

Slide 10

Slide 10 text

直近の1年間カードスキルの組み合わせ数(理論値)が カードパック更新ごとに平均18.5%増えている 10/xx Shadowverseの課題 0 200 400 600 800 1000 1200 Ver2.2.0 Ver2.3.0 Ver2.4.0 Ver2.5.0 スキル組み合わせ数 /万

Slide 11

Slide 11 text

11/xx QAコスト削減と堅牢性強化に我々が必要だったこと 1. 実装から既存機能を守る 2. 手戻りの発生しないことを保証 3. 組み合わせに対して網羅的なデバッグ これらを踏まえテスト駆動開発を提案

Slide 12

Slide 12 text

12/xx テスト駆動開発導入に当たっての問題点 挙動的に非常に高い不確定性を持っており、機能の正確性と 有効性を両方担保できるテストシナリオは作れない スキルの組み合わせ数が膨大すぎて、 シンプルなテストシナリオでは堅牢性の担保をするには不十分で QAコストが右肩上がりに増えていく ■AI開発において ■スキル開発において

Slide 13

Slide 13 text

13/xx 問題点に対する解決方法 • AIの不確定性に対して、要件の細分化で良し悪しの判断を シンプルにし、テストシナリオを作りやすく。 • 回帰テストと網羅的自動 デバッグを併用し、 膨大なスキル組み合わせの堅牢性の担保とQAコストの削減を実現。 • ツール開発時にゲームの既存機能を流用し、 ツールの開発コストおよび学習コストを抑える

Slide 14

Slide 14 text

Agenda 14/全ページ 1. Shadowverseの課題と解消手段 2. AI開発におけるテスト駆動開発 3. スキル開発におけるテスト駆動開発 4. 全体のまとめ

Slide 15

Slide 15 text

AI開発におけるテスト駆動開発 15/全ページ 2.1 テスト駆動開発を導入するための必要条件 2.2 テスト駆動開発の主導権をプランナーに渡す 2.3 テストケース作成ツール 2.4 得られた成果

Slide 16

Slide 16 text

AI開発におけるテスト駆動開発 16/全ページ 2.1 テスト駆動開発を導入するための必要条件 • AIのテスト駆動開発フロー • 不確定性による影響と導入要件 2.2 テスト駆動開発の主導権をプランナーに渡す 2.3 テストケース作成ツール 2.4 得られた成果

Slide 17

Slide 17 text

17/xx AIにおけるテスト駆動開発フロー 要件作成 テストケース作成 コーディング 単体テスト 回帰テスト AI調整 デバッグ 効果検証 プランナー主導の仕様段階 エンジニアによる実装段階 プランナーによるバランシング段階

Slide 18

Slide 18 text

18/xx AIにおけるテスト駆動開発フロー 要件作成 テストケース作成 コーディング 単体テスト 回帰テスト AI調整 デバッグ 効果検証 プランナー主導の仕様段階 エンジニアによる実装段階 プランナーによるバランシング段階 今回はプランナー主導の要件作成/テストケース作 成について話します

Slide 19

Slide 19 text

AI開発におけるテスト駆動開発 19/全ページ 2.1 テスト駆動開発を導入するための必要条件 • AIのテスト駆動開発フロー • 不確定性による影響と導入要件 2.2 テスト駆動開発の主導権をプランナーに渡す 2.3 テストケース作成ツール 2.4得られた成果

Slide 20

Slide 20 text

20/xx AIの不確定性 ゲームの不確定性 … 実戦では… AIの取るべき行動を 定義しづらい 対戦相手のデッキは不明 カードドローはランダム ランダム性の高いスキル

Slide 21

Slide 21 text

21/xx AIの不確定性によるテスト駆動開発の難点① プランナーがテストプレイし、 主観で判断する 自動的にテストを実行することはできない ■AIのプレイング優劣はどうやって判断する?

Slide 22

Slide 22 text

22/xx AIの不確定性によるテスト駆動開発の難点② ■開発中によく起きるエンジニアへの手戻り バグが発生した 仕様通り動いたけど、やっぱり使えなかった 20%未満 80%超え エンジニア プランナー

Slide 23

Slide 23 text

23/xx AIの不確定性によるテスト駆動開発の難点② AIの不確定性により、カードの振る舞いに対して 正確な仕様が作りづらい ■なぜテストプレイしないと「使えない」ことがわからない? 仕様の信頼度低下

Slide 24

Slide 24 text

24/xx テスト駆動開発を導入するための必要条件 AIの不確定性 自動的にテストを実行することはできない 機能要件の有効性を保証 挙動の正確性を機械的に判断 仕様の信頼度低下 テスト駆動開発を導入するための必要条件は…

Slide 25

Slide 25 text

AI開発におけるテスト駆動開発 25/全ページ 2.1 テスト駆動開発を導入するための必要条件 2.2 テスト駆動開発の主導権をプランナーに渡す • 要件細分化とその実例 • プランナーによるテストケース作成 2.3 テストケース作成ツール 2.4 得られた成果

Slide 26

Slide 26 text

プランナー 26/xx 問題を解決する「鍵」はプランナーにある 人的判断 仕様の信頼性 判断する人は誰? 仕様を考える人は誰? 虎の首に鈴を付けた人がその虎から鈴をはずすことができる 原因を作った人こそが、問題の解決に最も適任

Slide 27

Slide 27 text

27/xx AI開発においてのプランナーの重要性 スケジュール 管理 AI設計思想 とデータ構造 TCGプラン ナーが担当 新規カードの設計と バランス調整を担当する TCGゲームデザインに 特化したプランナー

Slide 28

Slide 28 text

AI開発におけるテスト駆動開発 28/全ページ 2.1 テスト駆動開発を導入するための必要条件 2.2 テスト駆動開発の主導権をプランナーに渡す • 要件細分化とその実例 • プランナーによるテストケース作成 2.3 テストケース作成ツール 2.4 得られた成果

Slide 29

Slide 29 text

29/xx 不確定性を回避するための提案 エンジニア では、簡単な要素単位で実装して、その組み合わ せをプランナーで調整できるようにしましょうか。 プランナー 一つ一つの思考要素は簡単だが、実戦では考える 要素が多すぎて… 要件を細分化してロジックをシンプルにする

Slide 30

Slide 30 text

30/xx 要件細分化により不確定性の影響が収束される 子要件A 子要件B 機能A 機能B 高 度 な 戦 術 … … 複雑な要件 組 み 合 わ せ AIの不確定性に影響されるのは 組み合わせ調整だけ 実装&テスト テストA テストB 任せて^_^ プランナー

Slide 31

Slide 31 text

31/xx 要件の細分化にはエンジニアリングの考え方が必要 複雑な要件 複雑なシステム 細かい要件A 細かい要件B … コンポーネントA コンポーネントB … プランナーとエンジニアの さらなる連携が求められる エンジニア プランナー ≒

Slide 32

Slide 32 text

デモンストーム お互いのリーダーとフォロワーすべてに3ダメージ。 これはどういう意味なのか 実際のゲーム画面をご覧ください 32/xx 要件細分化の実例:全体ダメージ能力

Slide 33

Slide 33 text

33/xx 要件細分化の実例:全体ダメージ能力 フォロワー リーダー リーダー 赤い盾:体力

Slide 34

Slide 34 text

34/xx 要件細分化の実例:全体ダメージ能力

Slide 35

Slide 35 text

35/xx 全体ダメージの運用要件 相手を倒す 味方フォロワーを生存 させる 相手のフォロワーを 倒す 相手リーダーの体 力を削る 味方を生存 させる 味方リーダーを守る

Slide 36

Slide 36 text

36/xx 全体ダメージにおいての「相手を倒す」要件の細分化 相手を倒す 相手リーダーの体力を削る 相手のフォロワーを倒す なるべく多くの相手フォロワーにダメージ 倒しきれない場合は自陣フォロワーを使う 返り討ちを食らうかどうかを警戒 … なるべく大打点を出す 自陣フォロワーをリーダーに攻撃 …

Slide 37

Slide 37 text

AI開発におけるテスト駆動開発 37/全ページ 2.1 テスト駆動開発を導入するための必要条件 2.2 テスト駆動開発の主導権をプランナーに渡す • 要件細分化とその実例 • プランナーによるテストケース作成 2.3 テストケース作成ツール 2.4 得られた成果

Slide 38

Slide 38 text

38/xx テストシナリオ設計の仕方 プランナー 自陣フォロワーをリーダーに攻撃 この要件はどうのように定 義する? テストシナリオは要件の元となる 実戦ケースから生まれる

Slide 39

Slide 39 text

39/xx テストシナリオ①:自陣フォロワーをリーダーに攻撃 相手を倒す 相手リーダーの体力を削る 相手のフォロワーを倒す なるべく多くの相手フォロワーにダメージ 倒しきれない場合は自陣フォロワーを使う 返り討ちを食らうかどうかを警戒 … なるべく大打点を出す 自陣フォロワーをリーダーに攻撃 …

Slide 40

Slide 40 text

40/xx テストシナリオ①:自陣フォロワーをリーダーに攻撃 相手のフォロワーは 全体ダメージに任せる 自陣フォロワーは 相手リーダーの体力を削る

Slide 41

Slide 41 text

41/xx テストシナリオ①:自陣フォロワーをリーダーに攻撃

Slide 42

Slide 42 text

42/xx テストシナリオ②:倒しきれない場合は自陣フォロワーを使う 相手を倒す 相手リーダーの体力を削る 相手のフォロワーを倒す なるべく多くの相手フォロワーにダメージ 倒しきれない場合は自陣フォロワーを使う 返り討ちを食らうかどうかを警戒 … なるべく大打点を出す 自陣フォロワーをリーダーに攻撃 …

Slide 43

Slide 43 text

43/xx テストシナリオ②:倒しきれない場合は自陣フォロワーを使う 全体ダメージだけで相手フォ ロワーを倒せない場合 自陣フォロワーの攻撃も使う ダメージ:3 体力: 4

Slide 44

Slide 44 text

44/xx テストシナリオ②:倒しきれない場合は自陣フォロワーを使う

Slide 45

Slide 45 text

45/xx テストシナリオをエンジニアに共有する手間 図のように盤面を配置 AI場のファイターで敵場の デスドラゴンそれぞれに攻撃 敵場のデスドラゴンが4/2になり AI場のファイターが破壊 デモンストームをプレイ 双方の場のフォロワーが全部破壊 この資料の作成時間は… 30分 !

Slide 46

Slide 46 text

46/xx テストシナリオをエンジニアに共有する手間 見づらい 疲れた テストシナリオ遷移図を作成 N

Slide 47

Slide 47 text

47/xx プランナーにテストケースを作ってもらう エンジニアがテストシナリオを 設計する プランナーにテストケースを 作ってもらう テストケース作成 ツールを実装する テストシナリオ共有の手間をなくす方法 テストシナリオの設計は 要件作成と分離出来ない プログラミングが出来ない

Slide 48

Slide 48 text

AI開発におけるテスト駆動開発 48/全ページ 2.1 テスト駆動開発を導入するための必要条件 2.2 テスト駆動開発の主導権をプランナーに渡す 2.3 テストケース作成ツール 2.4 得られた成果

Slide 49

Slide 49 text

■機能 • テストケース登録 – 手動スタート盤面再現 – 手動行動再現 – スタート盤面と正解結果の保存 • テストケース再生 – スタート盤面再現 – AI思考呼び出し – 正解結果と比較し、差分がある ならNG、一致するならOK 49/xx バトル機能を流用したツール「AITestKun」

Slide 50

Slide 50 text

50/xx テストケース登録

Slide 51

Slide 51 text

51/xx テストケース実行

Slide 52

Slide 52 text

52/xx AIのテストケースの判断において重要なのは「結果」のみ 細かい行動の正解を定義する必要なし ホワイトボックステストも必要なし

Slide 53

Slide 53 text

53/xx プランナー主導のテスト駆動開発まとめ 要件細分化 テストケース 作成ツール エンジニア プランナー テストケース作成 実装+テスト

Slide 54

Slide 54 text

AI開発におけるテスト駆動開発 54/全ページ 2.1 テスト駆動開発を導入するための必要条件 2.2 テスト駆動開発の主導権をプランナーに渡す 2.3 テストケース作成ツール 2.4 得られた成果

Slide 55

Slide 55 text

• AI開発の作業効率は約2倍に増加しスケジュール遅延の消滅 • AIのバグ報告数が約25%減少し、システム安定化 55/xx 得られた成果 0 10 20 30 40 50 60 70 80 90 2018年7月から年末 2019年初から6月末 バグ報告数

Slide 56

Slide 56 text

56/xx 得られた成果 プランナーとエンジニア の連携力向上 エンジニアリング思想を 取り入れた要件分析 TCG戦術に合わせた アルゴリズム設計 開発チームの士気と スムーズなコミュニケーション

Slide 57

Slide 57 text

Agenda 57/全ページ 1. Shadowverseの課題と解消手段 2. AI開発におけるテスト駆動開発 3. スキル開発におけるテスト駆動開発 4. 全体のまとめ

Slide 58

Slide 58 text

58/xx スキル開発におけるテスト駆動開発 3.1 スキルはどうやって動いているのか 3.2 スキルの堅牢性を担保するテスト 3.3 スキル開発で得られた成果

Slide 59

Slide 59 text

59/xx 3.1 スキルはどうやって動いているのか • スキルの仕組み 3.2 スキルの堅牢性を担保するテスト 3.3 スキル開発で得られた成果 スキル開発におけるテスト駆動開発

Slide 60

Slide 60 text

スキルは以下のような構成で、独自のスクリプト言語で制御 60/xx スキルの仕組み Skill=メイン挙動の指定 Timing=発動タイミング Condition=発動条件 Target=発動対象 Option=ダメージ量などの細かい制御

Slide 61

Slide 61 text

冥府への道 自分のターン終了時、自分の墓場が30枚以上なら、 相手のリーダーと相手のフォロワー すべてに6ダメージ。 これを分解すると 61/xx スキルの仕組み

Slide 62

Slide 62 text

冥府への道 このように分解される 62/xx スキルの仕組み Skill=ダメージ Timing=自分のターン終了時 Condition=自分の墓場が30枚以上なら Target=相手のリーダーと相手のフォロワー全て Option=6

Slide 63

Slide 63 text

63/xx 発動時の実際のゲーム画面 相手のリーダー 相手のフォロワー すべてに6ダメージ 墓場×30 ターン 終了時

Slide 64

Slide 64 text

スキル開発はこれら5つの要素に対して 新たな振る舞いを追加することで新規実装を行う 64/xx スキルの仕組み どのような形でスキルの堅牢性を 担保しているのか?

Slide 65

Slide 65 text

65/xx 3.1 スキルはどうやって動いているのか 3.2 スキルの堅牢性を担保するテスト • 回帰テストツール • テストシナリオ作成からテスト実行までの流れ • 網羅的自動デバッグ機能 3.3 スキル開発で得られた成果 スキル開発におけるテスト駆動開発

Slide 66

Slide 66 text

1. 単体テスト スキル最小要素ごとの単体動作のテストシナリオを使用したテスト 2. 結合テスト スキル最小要素を組み合わせた動作のテストシナリオを使用したテスト 3. 回帰テスト 以前に問題のあったカード組み合わせのテストシナリオを複数使用したテスト 4. 自動テスト カードを実際にプレイするAI同士が行うデバッグおよび網羅テスト 66/xx スキル開発におけるテスト

Slide 67

Slide 67 text

1. 単体テスト スキル最小要素ごとの単体動作のテストシナリオを使用したテスト 2. 結合テスト スキル最小要素を組み合わせた動作のテストシナリオを使用したテスト 3. 回帰テスト 以前に問題のあったカード組み合わせのテストシナリオを複数使用したテスト 4. 自動テスト カードを実際にプレイするAI同士が行うデバッグおよび網羅テスト 67/xx 単体テスト

Slide 68

Slide 68 text

68/xx 単体テスト テストシナリオ作成 エンジニアが主導 テスト テスト テスト テスト テスト Skill=メイン挙動の指定 Timing=発動タイミング Condition=発動条件 Target=発動対象 Option=ダメージ量などの細かい制御

Slide 69

Slide 69 text

1. 単体テスト スキル最小要素ごとの単体動作のテストシナリオを使用したテスト 2. 結合テスト スキル最小要素を組み合わせた動作のテストシナリオを使用したテスト 3. 回帰テスト 以前に問題のあったカード組み合わせのテストシナリオを複数使用したテスト 4. 自動テスト カードを実際にプレイするAI同士が行うデバッグおよび網羅テスト 69/xx 結合テスト

Slide 70

Slide 70 text

70/xx 結合テスト テスト テストシナリオ作成 エンジニアが主導 Skill=メイン挙動の指定 Timing=発動タイミング Condition=発動条件 Target=発動対象 Option=ダメージ量などの細かい制御

Slide 71

Slide 71 text

1. 単体テスト スキル最小要素ごとの単体動作のテストシナリオを使用したテスト 2. 結合テスト スキル最小要素を組み合わせた動作のテストシナリオを使用したテスト 3. 回帰テスト 以前に問題のあったカード組み合わせのテストシナリオを複数使用したテスト 4. 自動テスト カードを実際にプレイするAI同士が行うデバッグおよび網羅テスト 71/xx 回帰テスト

Slide 72

Slide 72 text

バグ報告の件数 72/xx 回帰テストを行わなければならない理由 結合テスト (カード単体) > 複雑なカード 組み合わせ 複雑なカードの組み合わせ挙動を 厚めにカバーしなければならない

Slide 73

Slide 73 text

73/xx テストシナリオの作成に関して問題が… プランナー 複雑なカードの組み合わせの算出を正確かつ迅速に できるが、プログラミング知識がない エンジニア 複雑なカードの組み合わせの算出を正確かつ迅速にできない テストシナリオ作成手段と正確性に問題

Slide 74

Slide 74 text

74/xx テストシナリオ作成、検証にあたっての要件 複雑なカード組み合わせの バグ報告を減らしたい 面倒なテストシナリオの作成 手順は踏みたくない 再開機能の流用を検討

Slide 75

Slide 75 text

75/xx 再開機能とは 中断 再開 プレイログ バージョンごとに 変動をしない バージョンをまたいでも結果が不変な プレイログを生み出すことが可能

Slide 76

Slide 76 text

76/xx 再開機能を回帰テストツールに流用する利点 プランナー エンジニア プログラミング知識無しで テストシナリオ作成が可能 車輪の再発明回避 再現性が非常に高い 再開機能をもとに 回帰テストツール開発を決断!

Slide 77

Slide 77 text

77/xx 3.1 スキルはどうやって動いているのか 3.2 スキルの堅牢性を担保するテスト • 回帰テストツール • テストシナリオ作成からテスト実行までの流れ • 網羅的自動デバッグ機能 3.3 スキル開発で得られた成果 スキル開発におけるテスト駆動開発

Slide 78

Slide 78 text

78/xx 回帰テストツールで保証したいこと プレイログ プレイログ バトル バトル バトル 回帰テスト バトル結果(プレイログ) = 回帰テスト結果 新規実装、ソースコード改修、リファクタリングの結果 以前と挙動(結果)が同じであることを保証する

Slide 79

Slide 79 text

79/xx 回帰テストツールに必要な追加情報 追加情報をもとに挙動の差分チェック カードの位置情報 カードパラメーター その他 各カードがどの位置にあるかの情報 カードのパラメーターの数値 ターン数、リーダー別の状態等の情報 アクション情報 ユーザー任意のアクション情報(手順情報) 回帰テストツール用の追加情報

Slide 80

Slide 80 text

80/xx 追加情報の記載、チェックのタイミング スキルの発動A ユーザー任意のアクション スキルの発動B スキルの発動C ・ ・ ・ 各スキルの発動後 情報の記載 or チェック アクション完了後 情報の記載 or チェック アクション開始

Slide 81

Slide 81 text

81/xx なぜこんなに細かく行う必要があるのか? テストの過程を無視してテストを行うと 結果の保証が得られなくなってしまう テストA テストB 過程A 過程B 希望通りの結果 過程C 希望通りの結果 ではない 重要度低 重要度高 過程B

Slide 82

Slide 82 text

82/xx 3.1 スキルはどうやって動いているのか 3.2 スキルの堅牢性を担保するテスト • 回帰テストツール • テストシナリオ作成からテスト実行までの流れ • 網羅的自動デバッグ機能 3.3 スキル開発で得られた成果 スキル開発におけるテスト駆動開発

Slide 83

Slide 83 text

83/xx 回帰テスト用のテストシナリオ作成の流れ テストしたいカードの組み合わせをプレイ プレイログを保存する

Slide 84

Slide 84 text

84/xx 回帰テスト用のテストシナリオの作成方法

Slide 85

Slide 85 text

チェックタイミングで記録時と差分がない 85/xx テスト実行時の正常パターン 相手の場に体力1のカードが1体存在 ダメージスキルを持っているカードをプレイ 相手の場の体力1のカードに1のダメージを与える 相手の盤面が空になる チェック

Slide 86

Slide 86 text

86/xx 正常パターンのイメージ

Slide 87

Slide 87 text

何らかの改修で記録時との差分が発生 87/xx テスト実行時の異常パターン 相手の場に体力1のカードが1体存在 ダメージスキルを持っているカードをプレイ 相手の場の体力1のカードに0のダメージを与える 相手の盤面が空にならない! チェック

Slide 88

Slide 88 text

88/xx 異常パターンのイメージ

Slide 89

Slide 89 text

89/xx 差分が発生!!!

Slide 90

Slide 90 text

90/xx エラー内容が出力される [スキル(damage)発動後] でエラー発生 記録されていないカードが存在しています :フェアリー (場) 相手の場の体力1のカードに0のダメージを与える 相手の盤面が空にならない チェック

Slide 91

Slide 91 text

チェックタイミングで記録した情報と 差異がなければOK 91/xx 最終的に 相手の場に体力1のフォロワーが1体存在 ダメージスキルを持っているカードをプレイ 相手の場の体力1のカードに1のダメージを与える 相手の盤面が空になる チェック

Slide 92

Slide 92 text

• バージョンごとにフォルダ分けして管理 92/xx 回帰テストのテストシナリオの管理 recovery_single_0001.json

Slide 93

Slide 93 text

93/xx 回帰テストツールによりできた事と不安な事 発覚済みの組み合わせバグの 再発を防止とQAコストを削減 未発覚バグは依然として人力で 見つけるしかない 人的コストをかけずに 未発覚のバグを検知できないか…?

Slide 94

Slide 94 text

94/xx 3.1 スキルはどうやって動いているのか 3.2 スキルの堅牢性を担保するテスト • 回帰テストツール • テストシナリオ作成からテスト実行までの流れ • 網羅的自動デバッグ機能 3.3 スキル開発で得られた成果 スキル開発におけるテスト駆動開発

Slide 95

Slide 95 text

1. 単体テスト スキル最小要素ごとの単体動作のテストシナリオを使用したテスト 2. 結合テスト スキル最小要素を組み合わせた動作のテストシナリオを使用したテスト 3. 回帰テスト 以前に問題のあったカード組み合わせのテストシナリオを複数使用したテスト 4. 自動テスト カードを実際にプレイするAI同士が行うデバッグおよび網羅テスト 95/xx 自動テスト

Slide 96

Slide 96 text

1. モンキーテスト (無差別、対象指定タップデバッグ) 2. 自動デッキ編成機能 3. AI同士の自動バトルデバッグ機能 4. 社内SNSへの自動レポート送信機能 96/xx 網羅的自動デバッグ機能とは

Slide 97

Slide 97 text

1. モンキーテスト (無差別、対象指定タップデバッグ) 2. 自動デッキ編成機能 3. AI同士の自動バトルデバッグ機能 4. 社内SNSへの自動レポート送信機能 97/xx 網羅的自動デバッグ機能とは

Slide 98

Slide 98 text

98/xx モンキーテスト シーン遷移やタッチ操作に不具合がないか網羅的に調査する

Slide 99

Slide 99 text

1. モンキーテスト (無差別、対象指定タップデバッグ) 2. 自動デッキ編成機能 3. AI同士の自動バトルデバッグ機能 4. 社内SNSへの自動レポート送信機能 99/xx 網羅的自動デバッグ機能とは

Slide 100

Slide 100 text

• 自動デッキ編成機能で作成したデッキを使用し、網羅性と偶発性の高いAI により膨大な組み合わせを自動でバトルする機能 ■規模 • 1バトル当たり5分 • 10:00~19:00まで動作 • 2端末で約108試合/日 • 約25セットで実行 = 約2700試合/日 100/xx 自動バトルデバッグ ①デッキ編成 ②マッチング ③バトル ④レポート 実行サイクル

Slide 101

Slide 101 text

101/xx 自動バトルデバッグの様子

Slide 102

Slide 102 text

1. モンキーテスト (無差別、対象指定タップデバッグ) 2. 自動デッキ編成機能 3. AI同士の自動バトルデバッグ機能 4. 社内SNSへの自動レポート送信機能 102/xx 網羅的自動デバッグ機能とは

Slide 103

Slide 103 text

網羅的自動デバッグ機能の起動中に発生した エラーを社内SNSに 自動投稿する機能 103/xx 社内SNSへの自動レポート送信機能

Slide 104

Slide 104 text

• ユーザー情報(ID等) • バージョン情報 • 接続先情報 • 端末情報(GPU、メモリ等) • カード情報(バトル時) • スタックトレース • スクリーンショット 104/xx 実際に社内SNSに投稿された内容

Slide 105

Slide 105 text

105/xx 高頻度でバグ報告されるカード バグ報告 NGカード登録 自動デッキ編成 自動バトルで使用不可 バグ報告 無駄な報告が減る

Slide 106

Slide 106 text

106/xx 網羅的自動デバッグ機能を使用することで チェックリストから漏れたバグの 検知 パフォーマンス検証も 手軽に実施可能に 回帰テストでカバーできていなかった 未発覚バグの検知をカバー

Slide 107

Slide 107 text

107/xx 3.1 スキルはどうやって動いているのか 3.2 スキルの堅牢性を担保するテストの種類 3.3 スキル開発で得られた成果 スキル開発におけるテスト駆動開発

Slide 108

Slide 108 text

• バトル全体でのバグ報告が約40%減少 108/xx スキル開発で得られた成果 1.6.0 1.7.0 1.8.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2か月後 1か月後 大型アップデート 1.6.0以降から 回帰テストツール 動作開始

Slide 109

Slide 109 text

Agenda 109/全ページ 1. Shadowverseの課題と解消手段 2. AI開発におけるテスト駆動開発 3. スキル開発におけるテスト駆動開発 4. 全体のまとめ

Slide 110

Slide 110 text

• カードの継続的増加により、対策としてテスト駆動開発の 導入を考案した • AIの不確定性に対して、AI要件の細分化とプランナーによるテス トケース作成を実現し、実装の有効性と正確性を担保 • 回帰テストツールと網羅的自動デバッグ機能を採用することで、 QAコストの削減と堅牢性の強化を実現 • 既存ゲーム機能を流用し、テストツール開発を低コストで実現 110/xx 全体のまとめ

Slide 111

Slide 111 text

Shadowverseは 10年以上続くタイトルを 目指しています 111/xx

Slide 112

Slide 112 text

今回の手法で構築した 高効率な開発基盤は その礎になります 112/xx

Slide 113

Slide 113 text

113/xx