テストの視点で見たゲーム開発の流れと品質を支える仕組み 株式会社セガゲームス開発技術部粉川貴至 自己紹介

Similar documents
5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

Unite_Japan_2014_Technical_Session

大域照明計算手法開発のためのレンダリングフレームワーク Lightmetrica: 拡張 検証に特化した研究開発のためレンダラ 図 1: Lightmetrica を用いてレンダリングした画像例 シーンは拡散反射面 光沢面を含み 複数の面光 源を用いて ピンホールカメラを用いてレンダリングを行った

ホンマでっか!?ゲーム開発現場

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

CubePDF ユーザーズマニュアル

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

CodeRecorderでカバレッジ

Using VectorCAST/C++ with Test Driven Development

自己紹介 関わったゲームシリーズ プロサッカークラブをつくろう! プロ野球チームをつくろう! 龍が如く ゲームプログラマから自動化や効率化の仕事に移行 QA プログラマ? QA エンジニア? ビルド職人? アドバンスト テクノロジー開発チーム 龍が如くエンジンのベース部分や各種ライブラリ ツール等の

第 3 回 TERAS 成果報告会 TERAS V3 紹介と今後の展開 Tool Environment for Reliable and Accountable Software 一般社団法人 TERAS 理事開発委員長渡辺政彦 2014 年 3 月 12 日

bebras_slide.pptx

PowerPoint プレゼンテーション

開発ツールのコラボレーション機能を検証する

多機種のAndroid(TM)端末でテストシナリオを流用可能に - Androidアプリケーション自動テストツール QCWing for Android Ver.2.7 -

はじめに 本ドキュメントは Redmine を使用して稼働する定量的プロジェクト管理ツール ( 以下 IPF と略します ) のヘルプです IPF の操作に関わる機能を解説しており Redmine 及び構成管理ツール (Subversion Git) の標準機能については 本ヘルプの記載対象外として

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

Microsoft Visual Studio 2010 Professional Data Sheet

更新履歴 No 更新箇所版数日付 1 第一版作成 /12/28 2 一部画像差し替え 誤字修正 /02/09 2

Microsoft PowerPoint - ID005(R02).pptx


使用する前に

28th Embarcadero Developer Camp

SimLabプラグインは各機能を15回分評価版として試用できます

PowerPoint プレゼンテーション

Rational Roseモデルの移行 マニュアル

Managing and Sharing MATLAB Code

アジェンダ Unite Technology のおさらい Unite Technology で できる事 PTC Windchill と接続して できる事 良くある質問 対応バージョンは? データ変換の品質は? どんな情報が渡るか? どこまで変更できる? オープンの時 読み込み条件はどうする? 板金

XNA Framework

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

Microsoft PowerPoint - ソフトウェア更新手順書_DAN-W62_mac_ _1.ppt

目次 リリースノートについて... 1 リリースノートの内容... 1 フィードバックについて 主な機能強化 サービス課題管理機能 スコープ管理機能 サービス課題管理機能 スコープ管理機能 プロジ

目次 はじめに システム環境 インストール手順 インストール前の注意点 インストールの準備 ライセンスの登録 インストール先の選択 インストールの開始 インストール

最新 Visual Studio と DirectX 9.0 Ex で戦う 3D プログラミング

ミガロ.製品 最新情報

智美塾 ゆもつよメソッドのアーキテクチャ

PowerPoint プレゼンテーション

24th Embarcadero Developer Camp

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

PGRelief C/C++ 強化ポイント説明書

Microsoft Word JA_revH.doc

スライド 1

Microsoft Word - report_public.doc

SimLab Plugins for SketchUp 評価版インストールおよびアクティベート方法 注意事項 評価版をお使い頂くには 評価用ライセンスでのアクティベートが必要です 評価用ライセンスファイルの取得を行い 手動でアクティベートする必要があります 各 SimLab プラグインは 評価用とし

クラス図とシーケンス図の整合性確保 マニュアル

PowerPoint プレゼンテーション

アジャイル開発ソリューション

Provison 『Game Repair』 機能概要

不具合情報受付管理 DB 不具合情報対応情報要因 履歴登録 設備情報 不具合情報 対応情報 不具合 ( 履歴 ) 情報 機器仕様 納入情報 機器部品情報 関連資料 機器情報 交換部品情報 交換履歴 交換部品情報 保有部材管理 DB 保有部材管理 不具合情報 不具合先情報 不具合復旧情報 受付情報 対

ch2_android_2pri.indd

OneDrive for Businessのご紹介

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

外部からの脅威に対し ファジング の導入を! ~ さらなる脆弱性発見のためのセキュリティテスト ~ 2017 年 5 月 10 日独立行政法人情報処理推進機構技術本部セキュリティセンター小林桂 1

目次はじめに 必要システム環境 インストール手順 インストール前の注意点 インストールの準備 (.NET Framework3.5 SP1 のインストール ) ライセンスの登録 初期設定情報の入力... 8

SystemDirector Developer's Studio(V3.2) 適用ガイド

目次 ペトリネットの概要 適用事例

WSUS Quick Package

Office365 AL-Mail

1

事前準備マニュアル

Microsoft Word - クライアントのインストールと接続設定

はじめの一歩!ソースコード管理に必要なバージョン管理とは

JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

Delphi/400でFlash動画の実装

TopSE並行システム はじめに

目次 1. CAD インターフェイス (3D_Analyzer&3D_Evolution) ユーザーインターフェイス機能強化 (3D_Analyzer&3D_Evolution)... 3 レポート... 3 クリッピング機能... 4 言語... 4 表示オプション

ブラウザ Internet Explorer 7 の設定について 第3版

レビューとディスカッション 機能ガイド

20th Embarcadero Developer Camp

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

InstallShield FAQ < 独自の InstallShield 前提条件を作成する > 注 ) このドキュメントは InstallShield 2014 Premier Edition を基に作成しています InstallShield 2014 以外のバージョンでは設定名などが異なる場合

法人税の達人from減価償却の達人 運用ガイド

利用者

Microsoft PowerPoint - install_NGSsokushu_windows(ver2.1).pptx

Pro/INTRALINK 10.0 Curriculum Guide

Source Insight

KDDI ペーパーレスFAXサービス

SPCシンポジウム(体験報告) 発表資料作成にあたって

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1


PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - OS07.pptx

PowerPoint プレゼンテーション

ESET NOD32アンチウイルス V4.2 リリースノート

SAS_user_2015_fukiya02

自宅でJava言語の開発環境を作る方法

Install / Protect / Monetize InstallShield 全機能 データシート プロフェッショナルなインストールの作成 PREMIER PROFESSIONAL EXPRESS MSIX パッケージ サポート フレームワークをサポート Windows Installer(

040402.ユニットテスト

H-R041-2_j

平成22年度「技報」原稿の執筆について

駅すぱあとWebサービス for Unityを使った 交通機関情報の活用 竹田龍介 株式会社ヴァル研究所 1

Veritas System Recovery 16 Management Solution Readme

CommonMP Ver1.5 インストール手順書 目 次 1. 概要 目的 必要動作環境 ハードウェア構成 ソフトウェア構成 CommonMP のインストール手順 利用フロー

CRI、ゲーム開発向けCRIWAREロードマップを発表 対応プラットフォームさらに拡充、触覚をVRへ展開

ESET Mobile Security V4.1 リリースノート (Build )

Transcription:

テストの視点で見たゲーム開発の流れと品質を支える仕組み 株式会社セガゲームス開発技術部粉川貴至 自己紹介

粉川貴至 ( こかわたかし ) 自己紹介 株式会社セガゲームス所属 CEDEC(Computer Entertainment Developers Conference) 運営委員 (2011~2015) JaSST CEDEC コラボ企画担当 (2011~2015) 書籍 : ゲームクリエイターが知るべき 97 のこと に寄稿オライリージャパン 2012 自動化 QA エンジニアリングというトピックを中心に活動 @Kokawa_Takashi CEDEC (Computer Entertainment Developers Conference) 日本最大のコンピュータエンターテインメント開発者向けカンファレンス 2015 年は 6,373 人の参加者 224 セッション 展示ブース 51 分野定義 : エンジニアリング プロダクション ビジュアルアーツ ビジネス & プロデュース サウンド ゲームデザイン アカデミック 基盤技術 資料のアーカイブは CEDiL(CEDEC Digital Library) に https://cedil.cesa.or.jp/

JaSST CEDEC コラボ企画 JaSST Tokyo, CEDEC それぞれで実施 JaSST'11 Tokyo CEDECコラボ企画 ゲーム開発の世界から~ 金をドブに捨てないようにするテスト~ http://www.jasst.jp/archives/jasst11e.html#project5 CEDEC2015 [JaSST CEDEC コラボセッション ] 組み込みソフトウェアのシステムテスト自動化による作業の効率化 など https://cedil.cesa.or.jp/cedil_sessions/view/1380 テストの視点で見たゲーム開発の流れと品質を支える仕組み

これから紹介する開発の流れや役割は一例で 会社や組織によって実態は異なります 本講演でのゲーム = ビデオゲームを指すものとします

テストの視点で見たゲーム開発の流れ ゲームの テスト というと デバッグ プレイテストなどのゲームをプレイして動作を確認するテストが思い付き易いですが

ゲーム開発の流れ ( マイルストーン ) プリプロダクション プロダクション開始 ( 予算 スケジュール 人員などが固まる ) アルファ ベータ リリース アップデート マイルストーン毎にできあがったゲームをプレイして動作を確認する この部分以外の話をたくさんしていきます

画面更新 ゲームシステムの特徴 1 秒間に30 回 60 回などの頻度で画面を更新する ( フレームレート ) 次の更新タイミングまでに処理を完了させる 場合によっては分ける 高速化 最適化が行われることが前提の部分 データ読み込み : データ構造の最適化 先読み メモリに残す 流用 3Dグラフィックス技術 :GPUの使用 3Dデータ量のバランス 1フレームで実現できる表現の数 衝突判定 : 真面目に全ての ( 形状の ) 判定はしない ゲーム体験を損なわない境界線で実装 ネットワーク : 正しい事をチェックしないといけない箇所 遅延でゲーム体験が損なわれるとまずい箇所 プロデューサー 役割 ディレクター プログラマ ( エンジニア ) デザイナ ( アーティスト ) サウンド ゲームに組み込まれるコンテンツを作る人達 プランナ ( ゲームデザイナ )

ゲームの構成要素 ソースコード 3D CGデータ プログラマ ( エンジニア ) 2Dデータ アニメーションデータ デザイナ ( アーティスト ) エフェクトデータ プランナ ( ゲームデザイナ ) テキストデータ サウンド ゲーム固有のパラメータ サウンドデータ ソースコード以外のデータ ( リソース ) がとても多い

日々の開発作業 プログラマ デザイナ プランナ データ データ置き場 動くゲーム サウンド ビルド ビルド ソースコードを実行ファイルに変換する 実行ファイル バイナリデータ ( 後述 ) をパッケージ化する 形式や呼び方は対象プラットフォームによって異なる

日々の開発作業 ( バグ発見と修正だけなら ) プログラマ デザイナ プランナ データ 修正 データ置き場 動くゲーム サウンド ビルド 確認 データ作成の流れ プリプロダクションの段階で基本設計 ( 試行錯誤 ) を行う 基本となるゲームシステム ポリゴン数 3D グラフィックス技術 ( 表現 ) アニメーションを扱うためのデータ構造 少人数でそのゲームのキモになる最小限の目に見えるモノを作る 仕様変更は日々発生する プロダクション以降 基本設計をもとに バリエーションや付加価値 製品化のために必要な機能を開発していく プリプロダクション時には無かったが基本設計に追加しないといけない機能が発生したり 基本設計の変更が必要な要求が発生する事もよくある

日々の開発作業 プログラマ デザイナ プランナ サウンド データ 修正追加 変更 データ置き場 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 ゲームへのデータ組み込み データ作成ツールのデータ 中間データ バイナリデータと変換される事が一般的 データ作成ツールのデータ :Maya, Photoshop, Excel など データサイズが大きい ゲームに必要なデータを中間データに " エクスポート " する 中間データ :3D CG データの汎用フォーマットでは FBX が有名 ゲームパラメータでは JSON 形式など 必要なデータが周辺ツールなどから扱い易い構造になって保存されている事が多い バイナリデータに " コンバート " して使う バイナリデータ : 独自形式である事が多い ゲーム実行時に読み込んで使用するデータ データサイズやセキュリティ対策などを考慮して最適化される

日々の開発作業 プログラマ デザイナ プランナ サウンド ( エクスポート ) データ 修正追加 変更 コンバーター コンバート データ置き場 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 ゲーム開発の流れここまで

問題が起こりそうなところ ( 不穏な空気 ) が想像できますか? 起こりそうな問題

起こりそうな問題 ( ヒント ) ゲームを動かす前に起こる問題 データのやり取り 複雑な手順 頻繁なデータ更新 ゲームを動かす前に検出できる問題 間違えないようにデータを置く データが間違っていないか確認する 管理する データ単体のチェックを入れる ソースコードの品質チェックも先にできると良いですよね ゲームを動かしてデータが意図通りになっているか確認する 作った人が確認する 作った人以外が確認する プレイテスト

日々の開発作業 プログラマ デザイナ プランナ サウンド ( エクスポート ) データ 修正追加 変更 周辺ツール データ置き場 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 テストの視点から見るとこの部分の問題を ( 仕組みで ) 解決する事で製品の品質が上がる

クリエイターをクリエイティブな作業に集中させる テスターを雇っては? 開発内テスター ( エンベデッドテスター ) も存在するケースもある 動くゲームより手前の部分にはQAエンジニアが必要 開発寄りのスキルセットが必要になる 開発者がそのまま確認した方が早い ( 短期的に ) 安い このあたりに関わる仕事を普段しています

ツールで支援負担削減 プログラマ デザイナ プランナ サウンド 日々の開発作業 ( エクスポート ) データ 修正追加 変更 周辺ツール コンバート データ置き場 データ管理 品質チェック 自動化 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 一部自動化 テストの視点で見たゲーム開発の流れと品質を支える仕組み

品質を支える仕組み 品質を支える仕組み データ管理 自動コンバート 自動ビルド 自動デプロイ 自動テスト データの品質チェック バグトラッキングシステム

データ管理 プログラマ デザイナ プランナ サウンド ( エクスポート ) データ 修正追加 変更 周辺ツール データ置き場 データ管理 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 データ管理 バージョン管理ツール (SCM: ソフトウェア構成管理と呼ぶ事もある ) を使う Subversion, Git, Perforce... プログラマ ( エンジニア ) 以外のメンバーが使う事も想定しなければならない データ ( 数 量 ) が多い 更新頻度も高い 数 GB 数 TB? 管理するデータや方針を考えなくてはならない " デザインリソースのオリジナルは共有フォルダ 中間データをバージョン管理 " など ソースコードとそれ以外を分ける事も

自動コンバート 自動ビルド プログラマ デザイナ プランナ サウンド ( エクスポート ) データ 修正追加 変更 コンバーター コンバート データ置き場 自動化 自動化 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 自動コンバート コンバーターを自動で実行し 最新のコンバートデータをデータ置き場に置く コンバーターはゲームタイトル毎や組織毎に作られる事が多い

データ管理 自動コンバート事例 CEDEC2015 長期運営タイトルに後からパイプラインの自動化を導入した際の技術的 Tips セガゲームス 粉川 https://cedil.cesa.or.jp/cedil_sessions/view/1306 自動ビルド データの更新状況を監視し 必要なタイミングで自動でビルドを行う ビルドツールを呼び出し ソースコードのコンパイル アプリケーション実行ファイルの作成 パッケージングなどを行う

自動デプロイ プログラマ デザイナ プランナ サウンド新規追加 変更 ( エクスポート ) データ 修正追加 変更 データ置き場 確認 新規追加 変更 ビルド 動くゲーム 自動化ターゲット環境 自動デプロイ 実行ファイルを必要な場所に配置 ( デプロイ ) し 動作確認できる状態にする Web アプリケーションでは Web サーバに配置する事を指す ゲームではゲーム機やスマートフォンなど動作させる端末にインストールする ( またはその直前まで準備する ) 事が該当する 必要なデータがサーバにある場合 それらの配置も含まれる

自動化ツール Jenkins が有名 オープンソースソフトウェア シンプルかつ必要な機能をプラグインで拡張可能 http://jenkins-ci.org/ Web 画面で全ての操作ができる 大事な機能 : スケジューリングと通知 継続的インテグレーション (CI) アジャイル開発 XP( エクストリーム プログラミング ) コミュニケーション シンプルさ フィードバック 勇気 を提唱具体的な 19 の実践 ( プラクティス ) がある ( テスト駆動開発 ペアプログラミング リファクタリングなど ) 継続的インテグレーション (Continuous Integration) XP の中でも効果的な実践の 1 つ : 頻繁にビルド テスト 結合を繰り返す

自分なりの継続的インテグレーションの受け止め方 技術と技術の間を繋ぐ ツールとツールの間を繋ぐ 作業と作業の間を繋ぐ 開発の流れを出来るだけ止めないように自動化して繋ぐ ここまで紹介した仕組みも この後紹介する仕組みも繋いで継続的インテグレーションで回せるようにしています 自動テスト

プレイテストの自動化 ゲームでは難しい なぜか 汎用的な " テストハーネス " が存在しない WebでのSeleniumのような 入力の自動化機構やツールは存在するが 出力検証の仕組みが難しい Webやスマホで言うアプリ外のテストツールから情報取得可能なUIコンポーネントが無い 出力画面の画像比較は可能だが 効果の出るケースが限定される 大きいプロジェクトではそのゲームに特化した形で機能が実装されている事はある ゲームエンジンの登場 Unity や Unreal Engine 4 といったゲームエンジンが多く使われるようになってきている エンジンがテストハーネスを用意しているケースでは その仕組みに則った自動テストが可能 特定のステージ ( シーン ) を読み込む 決められた手順でゲーム内を操作する 結果の状態が正しいか ( 想定通りか ) を確認する

プレイテストの自動化事例 Jenkins を使ったコンシューマゲームでのデプロイとテスト 株式会社イリンクス,Jenkins ユーザ カンファレンス 2015 東京 http://www.slideshare.net/swiftnest/jenkins-43394510 10 ヵ月で HD ゲームを開発する方法 ~ 龍が如くを支えたテクノロジ ~ 株式会社セガ ( 当時 ), CEDEC2010 https://cedil.cesa.or.jp/cedil_sessions/view/324 バグチェック作業の自動化について Bayonetta 2 開発者ブログ http://www.platinumgames.co.jp/bayonetta2/archives/881 単体テストについて 実装言語に対応しているユニットテストフレームワークを使う C++:CppUnit や GoogleTest など " 変更が多い箇所ではメンテナンスコストが高くなるので運用できない " という点がよく聞く課題

データの品質チェック プログラマ デザイナ プランナ サウンド ( エクスポート ) データ 修正追加 変更 周辺ツール 品質チェック データ置き場 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 ソースコード データの品質チェック 静的解析ツール ソースコードを解析し 不具合を検出する コンパイラ警告 コーディングルール セキュリティや依存ライブラリのライセンスに問題が無いかのチェック リソースのチェック コンバーターに含める事が多い データ容量やフォーマットが正しいかどうかのチェック

バグトラッキングシステム プログラマ デザイナ プランナ サウンドテスター ( エクスポート ) データ 修正追加 変更 ツールで支援 周辺ツール データ置き場 確認 ビルド 動くゲーム バグトラッキングシステム (BTS) Redmine, Trac, Mantis, JIRA など バグ 1 つ 1 つに対して " チケット " を作成して管理する " いつ ", " どこで ", " 度のバージョンで ", " どのようにしたら ", " どうおかしくなったのか " など必要な情報をシステムの項目として入力可能に "( テスターが ) バグ発生報告 " "( 開発者が ) 修正対応 " "( テスターが ) 修正確認 " 終了 といったワークフローをシステムとして定義する コミュニケーションミスによる修正漏れを防ぐ

ツールで支援負担削減 プログラマ デザイナ プランナ サウンド 日々の開発作業 ( エクスポート ) データ 修正追加 変更 周辺ツール コンバート データ置き場 データ管理 品質チェック 自動化 ビルド 動くゲーム 新規追加 変更 確認 新規追加 変更 一部自動化 こういった仕組みなどで日々の開発作業における品質は支えられています