QAエンジニアってどんな仕事?~ゲーム開発におけるテストの世界~

はじめまして。 

セガゲームス「龍が如くスタジオ」専属QAエンジニアの阪上と申します。 

今回は、QAエンジニアという職種の紹介とゲーム開発におけるテストの話を、「龍が如くスタジオ」での開発の歴史を振り返りながらご紹介したいと思います。

目次

ゲームのテストって何をするの? 

本題に入る前に、QAエンジニアのQAとは何なのかを説明しておこうと思います。QAは 「Quality Assurance」の略で、日本語では品質保証という意味です。ゲーム開発においては、ゲームが正しく動作しているか、バグがないか、ゲームが製品クオリティに達しているかなどを検証する仕事・部門・チームのことを指します。

QAがわかったところで、ではゲーム開発でテストとは何をするのかというと、ゲームを実際にプレイして、バグを見つけて修正することを指すことが多いです。(システム開発等で行われている単体テストやスモークテストなどもありますが、こちらは後半で説明します。) 

発売前のゲームをプレイして、バグがないか、仕様書通り動作するか、製品としての基準を満たしているか、ゲームとして面白いかどうかを検査する仕事を、テスターやデバッガーと呼ばれる職種の人が担当します。 壁にぶつかって抜けないかをテストする単純なものから、複雑な手順やシビアなタイミングで起こる不具合を見つけたり、物理的にケーブルを抜き差しするテストなど、その仕事は多岐に渡ります。 

ゲームのテストというと、バグを見つけるだけの仕事と思われがちですが、バグを見つけることは過程であって、最終的にゲームが正しく動作していることを確認した上で、品質や面白さを保証することが最終的な目的です。 

つまり、この工程がないと、ゲームは完成しないというくらい重要なものになります。 

QAエンジニアの仕事内容 

近年のゲーム開発は、大規模化の一途をたどっているため、先ほど説明しましたテストや開発そのものをすべて手動で行うことが困難になりつつあります。このような状況をエンジニアリングのアプローチから改善するために生まれたのが、私のようなQAエンジニアという職種です。組織によって具体的な業務内容には違いがあると思いますが、「龍が如くスタジオ」では、開発環境やQAの自動化・効率化を行うことを日々の仕事としています。

開発環境については、ビルドやデータコンバートの自動化、Redmine等のチケット管理システムのワークフローの効率化などを行っています。これらを仕事とする人を、より細分化してビルドエンジニアと呼ぶ場合もありますが、「龍が如くスタジオ」では、QAエンジニアである私が兼任したり、各ツールの担当者や他部署の協力を得るなどして、これらの自動化を行ってます。 

今回はテストの話が中心ですので、開発環境の自動化については簡単な説明にとどめていますが、詳しく知りたい方は、ソフトウェアテストシンポジウム 2016 東京(JaSST'16 Tokyo)の講演資料をご覧ください。 

「龍が如く」の高速デバッグ術~そびえ立つバグの山を踏破するための弾丸ワークフロー~(JaSST'16 Tokyo) 

(2009年~) 自動プレイテスト

ここからは、QAエンジニアの主な仕事の一つであるテストの自動化について、「龍が如く」シリーズの開発の歴史とともにご紹介したいと思います。

「龍が如くスタジオ」は、大規模なゲームを高速でリリースするために、個々やチーム全体で開発環境を積極的に自動化・効率化していこうとする組織風土がありました。このような環境だからこそ生まれたといえるものの一つが、自動プレイテストです。

PS3世代のタイトルを開発するようになったころから、オートテストという独自の自動プレイテストを開発し、運用を始めました。 開発メンバーが帰ったあとの開発環境(PCや開発機)を利用して、深夜に自動的にゲームをプレイして、エラーを検知するシステムです。  

下図のような仕組みで、最新ビルドのゲームを取得した上で自動的にゲームを起動して、QA専用のプレイヤーAI(ボットのようなもの)がゲームパッドの疑似入力を行い、実際にゲームを自動でプレイします。

 

オートテストの仕組み

f:id:sgtech:20180827092145p:plain

 ※図中の「エラー送信」は、「龍が如くスタジオ」独自のクラッシュレポート機能です。

 

ランダムにプレイヤーを移動させ、壁にぶつかり続けてコリジョン抜けを探すところから始めて、現在は、事前に用意したパス(操作手順をコマンド化したもの)に従ってゲームのメインシナリオをクリアすることもできるようになり、より広範囲のテストをオートテストで行えるようになりました。

オートテストの機能はその後も進化を続け、「龍が如くスタジオ」制作の「北斗が如く」(2018年発売)では、下図のようにメインシナリオをクリアするテストを行っていましたが、会話中は○ボタンで会話を進め、敵とバトルになった場合はバトル用のボットAIに切り替えて戦うなど、ゲーム内の状況に合わせたきめ細かい自動テスト機能を追加し、様々なバグを検出することができるようになっています。

 

オートテストの動作例(北斗が如く)

f:id:sgtech:20180827092140p:plain

 

また、上記に加えて、組み合わせが多すぎて手動でテストしきれないものをオートテストが専任で行うなど、手動テストとの協力体制ができつつあります。 

このように、自動プレイテストの取り組みは、近年のAIの台頭によって、AIに取って代わられる仕事と見られることがありますが、オートテストはあくまで手動テストの補助を目的としています。簡単に見つかるバグはできるだけAIにまかせて、手動テストでは、より複雑な条件のバグを探したり、ゲームの品質や面白さの向上に注力してほしいという思いで、日々オートテストの改良を続けています。 

(2013年~) QAエンジニアの誕生と加速するテスト環境の自動化

このように、「龍が如スタジオ」では、シリーズの開発を重ねるごとに、開発とQA環境の自動化が進んできたわけですが、開発のスピードアップやゲームの品質向上に貢献する反面、自動化した仕組みの維持が開発チームの負担となってきたため、「龍が如く 維新!」(2014年発売)の開発から、私が専属でQAエンジニアリングを担当することになりました。

専属のQAエンジニアを開発チームに置くことで、今までの自動化環境を維持しやすいように整理した上で一元管理したり、前述のオートテストの機能拡張や後述するログ分析などの新機能を実装することができるようになり、このころから、「龍が如くスタジオ」のQAエンジニアリング技術が劇的な進化を始めます。

(2015年~) テストの結果分析

テストを自動化して、QAエンジニアを専任化しましたが、それで終わりではありません。自動化のツールとしてよく使われているJenkinsでは、テスト結果の成功・失敗がわかりますが、自動テストの結果をもっと詳しく知りたいという要望が寄せられるようになりました。そこで、「龍が如く 極」(2016年発売)での試験運用を経て、ドラゴンエンジンでの開発となった「龍が如く6 命の詩。」(2016年発売)より導入したのがログ分析機能です。 

下図は、オートテスト実行中のゲーム内のVRAM(Video RAM、グラフィックスメモリ)の使用量を収集し、ヒートマップで見える化したものになります。

 

VRAMヒートマップ(北斗が如く)

エデンという街のVRAM使用率を、ヒートマップで見える化したもの。

赤くなっているところが使用率が高く、Xが100%を超えているので修正必須な地点。

f:id:sgtech:20180827092149j:plain

 

コリジョン抜けマップ(北斗が如く)

荒野という広大なマップのコリジョン抜けを見える化したもの。

f:id:sgtech:20180827092151j:plain

 

ゲームを自動でプレイしているわけですから、明確なエラー(例外やASSERT)以外の警告レベルの不具合も、通常のゲームプレイと同様に発生しますし、パフォーマンス計測も可能です。 これらをログとして収集し見える化することで、問題箇所を探す手間が省けるので、修正を正確かつ迅速に行えるようになりました。 

さらに、手動テストのプレイログも分析して、ゲームバランスの調整に使ったりと、まさにゲームの品質(面白さ)の向上にも活用できるようになりました。 以下は、手動テストやオートテストのログを分析して、ゲームバランスの調整に活用した事例です。

 

プレイヤーがゲームオーバーになった場所(龍が如く6 命の詩。)

手動テストでプレイヤーのHPが0(ゲームオーバー)になった地点を可視化して、ゲームバランスの調整に活用。

f:id:sgtech:20180827092136p:plain

 

アイテムドロップ率(北斗が如く)

敵が落とすアイテムのドロップ率を計測し、仕様通りの確率でアイテムを排出しているか、レアアイテムが本当に排出されているかをオートテストを使って計測。

f:id:sgtech:20180827092220p:plain

 

今回ご紹介したオートテストとログ分析は、ソフトウェアテストシンポジウム 2018 東京(JaSST '18 Tokyo) で講演させていただいたときの資料でより詳しく説明していますので、 ご興味がある方はご覧ください。(オープンソースを組み合わせて構築しているので、気軽に試すことができます。) 

無料で始める!「龍が如く」を面白くするための高速デバッグログ分析と自動化(JaSST'18 Tokyo)

(2018年~) テストピラミッドの考察とQAエンジニアリングの未来

自動化して結果を分析できるようになっても、QA環境を快適にする取り組みには終わりがありません。 現在は、どの業界でもAI活用がトレンドですが、今まで行ってきた自動化やログ分析を基礎として、AIを活用したさらなる自動化・効率化が期待されています。 

先週開催されたCEDEC 2018では、「次世代QAとAI 〜ゲーム開発におけるAI活用に正しく向き合うために〜」というセッションに、QAの今後の進化、AIの活用の未来というテーマで、パネリストとして参加させていただきました。今回は、CEDEC 2018で紹介したテストピラミッドについて、フォローアップしたいと思います。  

テストピラミッドとは、テストを自動化・効率化する上で、その考え方のベースによく使われています。一般的なシステムやWeb系の開発では、以下のようなテストピラミッドになることを理想としています。 

 

一般的なテストピラミッド

f:id:sgtech:20180827092217p:plain

UIテスト 最終的な製品に近いテストのことで、高コストで自動化するのが難しいテスト。
結合テスト 機能ごとに実装したものを結合して、問題がないか動作確認等を行うもの。
単体テスト ユニットテストとも呼ばれる機能ごとのテスト。一番低コスト。

 

より低コストな単体テストを増やして、自動化することで、コストを抑えつつ効率化することができるようになります。 では、ゲーム開発のテストピラミッドはどうなるかというと、 現状は以下のような状況にある場合が多いのではないでしょうか。

 

ゲーム開発のテストピラミッド(現実)

f:id:sgtech:20180827092214p:plain

手動プレイテスト 人が実際にゲームをプレイするテスト。
スモークテスト

ゲームの起動や各モードが正しい動作しているかを簡易的に調べるテスト。最新ビルドをリリースする時に最低限の動作を保証するためのテストなので、なるべく短い方がいい。(1~5分程度)

エンジン・ライブラリテスト

ライブラリやエンジンを社内開発している場合は、サンプル等が正常に動作しているかをテストする。
データテスト

モデル・テクスチャ・レベルデザインなどのデータファイルが正しくゲーム内で動作するかを個別にテスト。ゲーム内で動的に描画テストを行ったり、コンバートの時に静的チェックを行う。

 

上図では、最終的な製品に近い状態での手動テストの割合が高く、高コストなので、ピラミッドのバランスが非常に悪くなっています。 高コスト体質な上に人に依存するテストなので、昨今の人手不足によりスケールアップが困難になる恐れがあります。 

また、ゲーム開発では、データドリブンな仕組みを採用している場合が多いため、データのバグが非常に多い構造になっています。(場合によってはプログラムのバグよりも多いことがあります。) 

単体テストと言われると、ピンとこないかもしれませんが、一つ一つのデータの不具合や整合性のテストを、 最終的な製品のテストの前に検出できれば、手戻りコストを含めてどれだけの手間が減るかは想像に難くないと思います。  

「龍が如くスタジオ」では、今回ご紹介したオートテストとログ分析以外にも、データコンバート時のエラー検出の強化やスモークテストを増やすなどの改良を加えて、逆ピラミッドから以下のような正しいピラミッドになるように、日々改善を行っています。 

 

ゲーム開発のテストピラミッド(理想)

f:id:sgtech:20180827092211p:plain

 

ここまで読み進めていただいた方なら、もしかしたら理想のピラミッド図を見て、疑問に思われるかもしれません。 なぜ一番高コストであるプレイテストを自動化することから始めたのか? 

これは、「ゲームという特性上、単体テストでの結果が画像出力しかない場合が多く、画像の差分は閾値(しきいち)が安定しないので成否の判定が難しいこと」、「自動テストのエラーをエラーとして開発メンバーに受け入れてもらうこと」の二つの理由があります。

特に後者が重要で、エラーが出たらそれを修正してもらう必要がありますが、自動テストのエラーに対する信頼性が低いと、「このエラーは製品でも起きるの?」と言われて修正されないまま放置されてしまい、テスト自体の意味もなくなってしまいます。 まずは自動テストを通常のゲームに限りなく近い状態で実行することで信頼してもらい、そして自動テストのエラーは即時修正するというチーム文化を作ることが重要です。 

「龍が如くスタジオ」では、自動プレイテストをチームに受け入れてもらった上で、現在進行形でより低コストな自動テストを増やしているところです。 自動テストを一から導入することをお考えの方は、ランダムにプレイヤーが動く自動プレイテストを作ってみて、チームのメンバーにみてもらうところから始めてみてはいかがでしょうか。 

 

まとめ

このように、QAエンジニアリングは、ゲーム開発とQAにとってとても重要な技術で、 今後さらなる技術向上と成長が望まれている分野であることが、おわかりいただけたのではないかと思います。 

私は元々ゲームプログラマからキャリアをスタートしましたが、ゲームの開発やQAを開発者の立場で経験したことで、 何を自動化すればいいのか、どういったことが望まれているのかが具体的に分かるので、その経験は非常に役立っています。 そういった意味で、QAエンジニアは、ゲームプログラマやテスターの方にとって入りやすい職種だと思います。

また、QAエンジニアが開発現場にいることで、開発する側にとっても快適な環境を目指して日々改善しておりますので、ご興味がありましたら、セガで一緒に働いてみませんか? 

採用情報 | セガ企業情報サイト 

 

参考資料 

※この記事は、JaSST'18 TokyoとCEDEC 2018、セガの社内勉強会であるSDC(SEGA Developer's Conference)の講演内容をベースに作成しました。 

※本記事で使用しているゲーム画像は、すべて開発中のもので製品とは異なります。

英語版はこちら

 ©SEGA

CEDEC 2018 セガグループセッション紹介

皆さんこんにちは!
セガゲームス、開発サポート部の麓です。

毎月お送りしているSEGA Tech blogも読んでいただいている皆さんのおかげを持ちまして来月でまる2年。
これからもセガグループが持っているいろいろな技術の種を紹介していきたいと思っています。

そして今回で三回目となるCEDEC登壇者の紹介です。

来月にパシフィコ横浜で開催されるゲーム業界最大のカンファレンス
CEDEC 2018 会期:2018年8月22日(水)~8月24日(金)
に今年もセガグループから多くの登壇者が名前を連ねています!
それでは今回もセッションと登壇者紹介に加え、ここでしか見れない講演内容の見どころと、当日の資料からの抜粋を(セッションとラウンドテーブルに限り)紹介します。

セッション




モバイルタイトルにおける横断的な機械学習によるレベルデザイン支援システムの構築と運用

セッションの内容

セガゲームス開発統括部で実際に開発・運営中のタイトルに導入した、レベルデザイン&デバッグを自動化とAIにより支援するシステムの概要紹介と、そのシステム構築フロー、運営ワークフローを説明します。
3タイトル4事例を紹介しながら実際のシステム紹介に加え、導入する際に重要なこと、各タイトルでどのように運用されているか等も紹介します。
・事例1:「D×2 新・女神転生 リベレーション」におけるクエスト難易度調整支援
・事例2:「D×2 新・女神転生 リベレーション」におけるマップ設計支援
・事例3:「コトダマン」におけるデッキ調整・報酬設定支援
・事例4:新規タイトル事例(予定)
また現在検討中のユーザー動向を利用したより高度な支援システムの構想をお話しします。
株式会社セガゲームス 開発統括部 ディレクター/シニアプログラマ 松田 剛
8月22日(水) 11:20 〜 12:20

資料スナップショット

f:id:sgtech:20180710195642j:plain:h250 f:id:sgtech:20180710195638j:plain:w320

講演内容についてのコメント

機械学習の導入が各業界で進んでおりますがゲーム業界でもその流れが進んでおります。
本セッションでは実際にセガゲームスで使用されている機械学習の活用例とそのワークフローの
紹介を通じて、より面白いゲームを制作するための創意工夫の一環を知っていただけると思います。




「D×2 真・女神転生リベレーション」におけるアニメーション制作事例〜184体の魅力ある悪魔アニメーションを少人数+アウトソーシングで短期間で制作するヒント~

セッションの内容

「D×2 真・女神転生リベレーション」におけるアニメーション制作事例を通し大量のユニーク体格のキャラクターのアニメーションアセットを少人数・短期間でどのように外部の協力会社と共に制作したかの実例となります。アニメーションをアウトソーシングする際の会社選定の基準、ワークフロー、発注仕様、チェックバックやリグの考え方について事例を交えながら解説致します。また本作でのデザイン要件、Unityでのアニメーションについて苦労した点とその解決法についても解説したいと思います。また業務効率化に繋がったツールについてもいくつか紹介させて頂く予定です。アニメーション制作をアウトソーシングする際のヒントになればと思います。
株式会社セガゲームス 開発統括部アート&デザイン部TAセクション リードテクニカルアーティスト 亀川 祐作
8月22日(水) 16:30 〜 17:30

資料スナップショット

f:id:sgtech:20180720145736j:plain:w320 f:id:sgtech:20180720145732j:plain:w320

講演内容についてのコメント

弊社のモバイル向けゲーム開発では内部は少人数でアセットの量産部分を外部スタジオに依頼する事は日常的となっております。内製とはまた違う苦労があり
特にアニメーション制作を外部に出すという事は比較的難度が高いと考えております。自身も模索しつつやっている部分もありますので、本セッション内容が
最適解だとは考えておりませんが、何か一つでもヒントになれば幸いです。




D×2真・女神転生リベレーションでの新しいUIデザイン制作方法の試みと発見

セッションの内容

D×2真・女神転生リベレーション開発時にUIデザイン組織を担うこととなり、
組織の新しい方向性とUIデザインの表現幅を広げるため、新たにユーザーテスト法とアイトラッカーカメラを交えた調査をプロジェクトに導入いたしました。テストから見えてきたアプリゲームでのUIルールの研究結果や、被験者に制作中のデザインをふれてもらいライブ中継することで、プロジェクト単位でデザイン表現をチャレンジする方法を本作品の表現の説明を踏まえつつ紹介致します。
株式会社セガゲームス 開発統括部アート&デザイン部 UIデザインチームリーダー 良知 将範
株式会社セガゲームス 株式会社セガゲームス 開発統括部 デザイナー 山崎 陽平
8月22日(水) 14:50 〜 15:50

資料スナップショット

f:id:sgtech:20180713093914j:plain:h250 f:id:sgtech:20180713093910j:plain:w320

講演内容についてのコメント

UIデザインの表現幅を広げるため、ユーザーテストと
アイトラッカーカメラを交えた調査をプロジェクトに導入いたしました。
テストから見えてきたアプリゲームでのUIルールの研究結果や、
プロジェクト単位でデザイン表現にチャレンジする方法を表現の説明を踏まえつつ紹介致します。



プロシージャルゲームコンテンツ制作ブートキャンプ Part 2 実践

セッションの内容

最近日本のゲーム業界でも導入が増えてきたプロシージャル法によるゲームコンテンツ制作。業界を代表するゲーム会社4社から、それぞれの製作現場で実践しているプロシージャル手法によるゲームコンテンツ制作実例を紹介します。
このセッションは2コマ連続のセッションの第2部で、プロシージャル法を使ったより実践的な中~上級の講演内容です。
株式会社セガゲームス 第一CSスタジオ リードアーティスト 伊地知 正治 他
8月23日(木) 11:20 〜 12:20

資料スナップショット

f:id:sgtech:20180723194455p:plain:w320 f:id:sgtech:20180723194452j:plain:w320

講演内容についてのコメント

GDC2017でSideFX社より発表されたVertexAnimationTextureという手法を実際に龍が如く極2という製品に使用したエフェクト制作の流れを説明させて頂きます。
この手法はテクスチャに座標や角度などのアニメーション情報を焼き込んでシェーダに計算させ物理破壊、ソフトボディ、流体などの表現を現状で最も高速に描画させるものです。またHoudiniならではのワークフローも効率的で再シミュレーションからデータ生成まで数秒でイテレーションをかける事が出来ます。他にもHoudiniを使用したエフェクト制作のTipsをご紹介致します。まさにHoudiniはエフェクトアーティストにとって福音ともなる技術ですので是非ご聴講下さい。

ラウンドテーブル


プロダクション分野のプラクティスの中で開発における生産性向上のためのツールにフォーカスして議論するラウンドテーブル

セッションの内容

プロダクション分野のプラクティス(手法・技法)の中で、生産性向上に繋がる取り組みについてのラウンドテーブルを行います。
※議論の範囲を限定するために、この回では開発工程でのツールに特化した話題のみ扱います。
「生産性の向上を支援するツール」、「生産性を可視化・計測するツール」、「効果のあった事例」、「効果は測定できていないが導入した例」、「ツールで解決したい課題」にまつわるトピックを参加者それぞれが持ちより、情報共有や発展性のある議論を目指します。
ラウンドテーブルを効率的に進めるため、以下のレギュレーションを設定します。
[トピックの分類]
・生産性の向上を支援するツール
・生産性を可視化・計測するツール
・効果のあった事例
・効果は測定できていないが導入した例
・ツールで解決したい課題
[レギュレーション]
1. トピック登録:
生産性向上のためのツールに関する議題をお持ち下さい。
セッション会場内にホワイトボードを用意しますので、そちらに議題をお書き下さい。
2. 優先入場
議題を事前に登録して頂ける方は優先入場可能とします。セッション開始時間前に入室する事ができます。
聴講のみ希望もしくはその都度発言の方は、セッション開始時間直前に入室可能となります。
3. 進行
提出して頂いた議題を基に、議論を進めます。
4. 議題・議事録の公開
提出して頂いた議題と、議事録は後日CEDEC Digital Libraryに公開予定です。
株式会社セガゲームス 開発技術部 ビルドエンジニア 粉川 貴至
株式会社セガゲームス 開発技術部 プログラマー 竹原 涼
8月23日(木) 13:30 〜 14:30

講演内容についてのコメント

過去のCEDECでも何度かプロダクション分野のラウンドテーブルを開催している粉川です。
(どういう話題が扱われるかイメージしづらい方は、CEDiLで過去のラウンドテーブルの議事録を確認してみてください。)
今回は「生産性向上のためのツール」と少し視点を変えたテーマになっていますが、
働き方改革⇒生産性向上⇒自動化・効率化⇒ツールによる解決や課題(⇒ビルドエンジニア・QAエンジニアの活動)
と話題が繋がっていくイメージでこのテーマを設定させて頂きました。
いつものように自動ビルド・自動テストや構成管理ツール周りの話題が集まるのか、
生産性という観点から今まで考えなかった切り口の話題が出るのか、
それは当日集まったみなさん次第です。
ご参加、お待ちしています!




若手テクニカルアーティストの育成とその役割について話すラウンドテーブル

セッションの内容

本ラウンドテーブルは、昨年度の「若手テクニカルアーティスト(以下、TA)の業務効率改善への貢献、育成について話すラウンドテーブル」についての議論に続くものです。
TAとはベテランのアーティスト、プログラマが行う業種であるものというもの認識がありました。しかし、その需要からTA業務を行う若手を育成する動きが見受けられます。
そこで、各社で育てられた若手のTA複数名をラウンドテーブルへと参加していただき、どのような業務を割り当てる事がTAとしての知見を深め、育成に繋がるかをラウンドテーブルと言う形で突き詰め共有し、業界への貢献へとつなげていきたいと考えています。
本ラウンドテーブルは次の2つの議題を主に話し合う予定です。
 ◆若手TAの活用事例
  :若手としてTA業務を行う者たちは、どんな成果を上げることが出来るのか、
   どのような業務を割り振ることが成長につながるのか等について議論を行う
 ◆若手TAの育成に向けての活動
  :実体験をもとにした育成への工夫や、その成果。
   育成に着手したいがそれを実行できない会社などの理由やその対策などを議論する。
開場後、ラウンドテーブル開始までに、「若手TAの活用事例」について先行して議題を1、2個募集します。話したい話題がある人はぜひご意見ください!
株式会社セガゲームス オンラインコンテンツ事業部 開発サポート部 エンジニア 清水 宣寿 他
8月23日(木) 10:00 〜 11:00

講演内容についてのコメント

昨年度のCEDECで「若手テクニカルアーティストの業務効率改善への貢献、育成について話すラウンドテーブル」で登壇させていただいた清水です。
昨年に引き続き、今年も若手テクニカルアーティスト(以下、TA)の育成についてのラウンドテーブルを開催できることになりました。
当日会場にお集まりいただいた参加者の皆さまと共に、若手TAの育成や活用事例などについて話し合いませんか?
一緒に「若手TAが担うべき役割とは何か?」について議論を交わし合いましょう。
皆様のご参加をお待ちしています。



【ラウンドテーブル】ワーママ・ワーパパたちの働き方改革を共有しよう!そして、何か新しい行動を興してみよう!

セッションの内容

※こちらのラウンドテーブルはタイムシフトパス以外のすべての受講パスで受講可能です※
2017ラウンドテーブル、「WM(ワーキングマザー)開発者の悩みとその解決策を共有しよう!-ワークライフバランス実現のためのTIPS」 参加後、セガで行ってきた、セガWMたちの動きに関して共有します。
セガでのその後1年の動きを説明後、前回同様、5~7人程度のグループに分かれて、皆さんの会社では、この1年でどのような動きがあったか、働きかけを行ったか、等、情報の共有をしていただきます。
(できれば、1グループに最低1人は男性に入っていただきたいと思っています。男性の皆さん、どうぞ、躊躇せず輪に入ってきて下さいね!大大大歓迎です!)
その後、グループごとに発表。
他社事例の情報を共有し、各自、自社へ持ち帰り。
それぞれの会社で、何か新しい1アクションを興していただきたいと思っています。
業界の、これからの働き方改革に繋げていきましょう!
勇気を共有できるようなラウンドテーブルにしたいです。
※ラウンドテーブル後は、希望者を募りランチ交流会の開催を検討中。(自費)
 CEDECでの出会いを、大切に繋げてきたいです。
 「夜の交流会には参加できないけど、ランチタイムなら!」
 という方は是非に!
株式会社セガゲームス IP&ゲーム事業部 開発統括部 企画開発運営部 茂呂 真由美
株式会社セガ・インタラクティブ 第二研究開発本部 デザイナー 鈴木 こずえ
8月23日(木) 11:20 〜 12:20

講演内容についてのコメント

貴方は、職場に何を望みますか?

会社が変わるのは時間がかかることかも知れません。
しかし、誰かが動かないと、変わることはありません。

弊社も、働き方改革については、まだ手探りな状況です。

職場環境改善のため、私たちにできることは何でしょう?
一緒に考え、協力し、それぞれ自社を成長させていきませんか?
後に続く、後輩たちのためにも。

昨年度スクエニさん主催のラウンドテーブル、「WM(ワーキングマザー)開発者の悩みとその解決策を共有しよう!-ワークライフバランス実現のためのTIPS」の続編として開催します。この流れを止めずに躍動させたいです。

ラウンドテーブルの結果をそれぞれの職場に持ち帰り、新しい行動を興す、最初の一歩の手助けになると嬉しいな、と思い、企画しました。

「ラウンドテーブル」ですので、テーブルについてディスカッションに参加していただきます。貴方の悩みや、貴社での動きなどを、是非教えて下さい!
「どうしても見学だけしたい」という方は、テーブルトークが聞こえる場所までご移動下さいね。(離れて見ていても、会話が何も聞こえないので…)

ラウンドテーブル後は、希望者を募りランチ交流会の開催を検討中。(自費)
CEDECでの出会いを、大切に繋げてきたいです。
「夜の交流会には参加できないけど、ランチタイムなら!」
という方は是非に☆
ランチは、雰囲気変えて、ざっくばらんに交流したいですね♪
貴方とお話しできることを、楽しみにしています。

パネル・ディスカッション、他




オンラインゲームのこれまでとこれから ~国内主要オンラインゲームのスタッフが送るパネルディスカッション~

セッションの内容

CEDECは今年で20周年を迎えます。
ゲーム業界もこれまで長くの年数を重ねてきましたが、ここ20年の歩みの中で忘れてはいけないジャンルがあります。
それが「MMORPG」に代表されるオンラインゲームです。
1997年にMMORPGの先駆けである『Ultima Online』がサービス開始となり、その後、国内でも様々なオンラインゲームが開発されました。
オンラインゲームといえば、これまでにない広大なステージ、とことんやり込める奥深さとコンテンツ量、そして何より、遠く離れた他のプレイヤーとのつながり。
これらの魅力的な要素を備え、多くのオンラインゲームがユーザーを虜にしました。
あれから20年が経ち、現在のゲーム業界はスマートフォンアプリが話題の中心になりつつありますが、その中でも、長年サービスを続け、まだまだユーザーの心を掴んで離さない多くのオンラインゲームがあります。
そのような魅力あふれるオンラインゲームの主要タイトルに関わるスタッフを一同に会し、これまでのオンラインゲームの開発・運営、これからのオンラインゲームの未来を、熱く語ろうではないか!というパネルディスカッションとなります。
●講演概要
◇各タイトル、登壇者の紹介
◇主要テーマによるディスカッション
・オンラインゲームの企画から立ち上げ
・オンラインゲームの開発・運営秘話 ~直面する課題と解決に向けて~
・オンラインゲームが業界にもたらしたもの
・オンラインゲームとユーザーとのつながり
◇皆さんから事前に募集したテーマに応じたディスカッション
・聞きたい疑問質問、話してほしいテーマなどを募集します!
◇さいごに
・これからのオンラインゲームの未来
株式会社セガゲームス オンライン研究開発部 『PSO2』シリーズプロデューサー 酒井 智史 他
8月22日(水) 13:30 〜 15:50(休憩含む)




ゲームグラフィックス20年の進化とこれから

セッションの内容

本セッションはTRY-Zの西川善司氏をモデレータ、ゲストに株式会社セガゲームスの厚孝氏、ソニー・インタラクティブエンタテインメントの山田裕司氏をお迎えしてゲームグラフィックスの20年を振り返り、その進化とこれからの期待を語るトークセッションです。20年とは世代を跨ぐ月日です。CEDECには幅広い年齢層の開発者が参加していますが、若い人にとってはレトロなゲームがむしろクールという価値感もでてきています。壮年の世代にとっては青春のハードかもしれません。各時代ごとに当時の制約を超える工夫や発明があり、限界を突破する進化を続けてきました。その進化の内容やきっかけを知ることは、今の開発にも生かせる大きな刺激となることでしょう。内容はグラフィックス寄りの話題を基本軸としていますが、映像表現、カメラ演出、アニメーションなど幅広く取り扱います。
株式会社セガゲームス コンシューマコンテンツ事業部 第1CSスタジオ アドバンスト・テクノロジー開発チーム チームマネージャー 厚 孝 他
8月23日(木) 13:30 〜 14:30




次世代QAとAI 〜ゲーム開発におけるAI活用に正しく向き合うために〜

セッションの内容

近年、AI分野の研究は大きく進捗しており、様々な業界で活用事例が増えてきました。こうした流れはゲームドメインにおいても起こっており、各社様々な試みが進んでいます。このパネルディスカッションは、ゲーム業界全体でどのようにAIと向き合うべきかを考えるきっかけになることを目的としております。

今回はAIの適応領域の中でも、特に開発・運用の品質管理に関わるユースケースにフォーカスし、話を展開していきたいと思っています。AIというと大きな期待値が先行してしまいがちですが、本セッションでは、モバイル・コンシューマ領域で実際にAI活用に取り組んでいるメンバーを集め、「現在の課題は何か」「AIに何ができて何ができないのか」「導入する際の障壁はなにか」といった現実的な目線で議論を広げていきます。
株式会社セガゲームス 第1CSスタジオ リードプログラマー 阪上 直樹 他
8月22日(水) 17:50 〜 18:50





ここまでで紹介したセッションのなかに聴講したい!と思ったものはありましたか?
弊社だけでなく、多くの高レベルな講演の集まるCEDECは、8月の22~24日はパシフィコ横浜 会議センター(神奈川県横浜市西区みなとみらい)で開催されます。
それでは皆さんCEDECでお会いましょう!

私達は将来CEDECに登壇してみたいと思っている、技術に興味のある方を求めています。
以下にアクセスして一緒に働いてみませんか?
採用情報 | セガ企業情報サイト




※複数社登壇の場合でもセガの社員のみ表記しています
©SEGA

ゲームサウンドクリエーターの役割

こんにちは。
セガゲームス開発技術部の塚越です。
主に戦国大戦や三国志大戦などのサウンド制作を担当して来ました。

これまでのこのブログの記事ではプログラマやテクニカルアーティストの方の記事が多かったため、そちらに興味の強い読者の方が多いかもしれません。
またゲームに必要不可欠なサウンドであってもあまりサウンドデザイナーと関わることがなく、何をやっているのか知らないという方も居ることでしょう。
そんな方達にぜひ知ってほしい、ゲームサウンドクリエーターの役割を簡単に解説していきます。

サウンドクリエーターの役割

サウンドクリエーターには実は色々な役割があります。
その中からいくつかの例を紹介していきます。

  • 世界観やビジュアルから音の方向性を考える
  • 音楽を作る
  • 効果音を作る
  • 音声を収録して編集する

この他にも色々な仕事があり、ゲーム内容や部署による違いなどもありますが、サウンドクリエーターがどんなことを考えてどのように仕事をしているのか、少しでも知っていただければと思います。

1.世界観やビジュアルから音の方向性を考える

いきなりですが少し想像して見てください。
音楽や効果音があるゲームの世界観や映像の質感にあっていない場合どう感じるでしょうか?
音ばかり気になってしまってそのゲームに没頭できなかったり、主人公に感情移入できなかったり、ということが起こりそうです。

音楽や効果音、ボイスでプレイヤーの感情が動かされるものであって欲しいものです。
そのためには世界観や映像の質感などをきちんと取り入れた音になっていなければいけません。

いきなり本番のデータを作り始めるのではなく、プロデューサーやディレクタ、ビジュアルデザイナーと相談をしながらどのようなサウンドスケープ(音の風景)にしていくのかを考えいくのか、まずはいわば音のコンセプトを考えていくことが重要となります。

ゲームのジャンルや取り扱っている題材などで何が重要な音になるのかが変わってきます。


方法は実に簡単です。
スマホなどで製作中のゲームをムービーで撮影します。
その後Apple Logic Pro XSteinberg Cubase ProなどのDAWアプリケーション(Digital Audio Workstation)で、そのムービーに試しに作った音を置いていきます。そうすることでどんな音が必要か、どんな音楽なら心が動くか、を探っていくことができます。
さらにそれをチームの皆んなで試聴してもらい意見を交わし、この提案と修正を繰り返して行きます。
またその中で、サウンド再生の仕組みを考えたり実験したりする際にはプログラマの助けが必要不可欠です。

少し時間がかかってしまいますが最初にこの作業ができるのとできないのとでは、仕上がりに差が出てくるのです。
このようなコンセンサスがないまま作り進めていけば、いびつでチグハグな音になってしまうのは想像に難くないですね。

2.ゲームのBGMを作るとは

最近のゲーム音楽はゲーム中とサウンドトラックで聴くのとでは違う場合があることにお気づきでしょうか?
実はゲーム中ではゲームのプレイによって状況が変化するのとともに音楽が追従し変化しているのです。
このような手法はインタラクティブミュージックと言ったり、アダプティブミュージックと言ったりしますが、言葉は違えどほぼ同じことを指しています。

BGMは聞く人にどういう気持ちになってほしいかをダイレクトに伝えることができる手段の一つです。
例えば『ファンタシースターオンライン2』を思い浮かべてみてください。
フィールドで敵が居ない時は静かな音楽ですが、敵と戦闘状態になると激しい音楽へと音楽的に自然に変化しますね。*1*2
この様にBGMは気持ちを切り替えていたり、場面転換を気づかせたりという役割を担っています。

これは昔のゲームであっても実は使われている手法で、制限時間が近くなると音楽が早くなったり、水で溺れそうになると違う音楽が流れたりしていました。
それが今ではとても音楽的で自然な流れで行われるようになったのです。

f:id:sgtech:20180624230527p:plain
インタラクティブミュージックの手法の例

このため、作る曲の量はとても増えましたし、プログラマさんとの連携もとても大切です。
ゲーム中のどのパラメータが変化したら音楽をどの様に変化させるかという設計図をしっかり作るところからがゲームのBGMづくりが始まっているということなのです。

3.効果音を作る

効果音を作るのには大まかに2つの手法があります。
1. 現実にある音を使う
2. シンセサイザーで作る

現実にある音を作るには、現実にある音を使うというわりと当たり前と思われる手法を使います。
効果音の素材集の様なものを使ったりもしますが、フィールドレコーディングやフォーリーレコーディングをしたものを集めて使うこともあります。*3*4
f:id:sgtech:20180624230523p:plain

現実にはない音を作るには、シンセサイザーを使って作るしかありません。

「プニョっ」とした音や、「ギュイーン」とした音など、想像でしかない音を効果音として形にします。
レーザー銃を想像してみてください。
実際本物のレーザーが「ビィーーーー」などと音はしませんが、ゲーム中では音がないと寂しいですよね。

ゲーム中の効果音には大切な音と、そこまで大切ではない音全然大切ではないけど雰囲気を作る音がありますので、バランスを取りながら作って行くことになります。
※大切ではないからと言っていい加減な音は作りませんよ。

実際に音を作っていくプロセスを説明しますと

  • 音のイメージを具体的に思い描く(頭の中で音を鳴らすイメージです)
  • その音の要素を分解しDAW上でシンセサイザーや実際の音を使い再構築していく

という手順で作っていきます。

現実音に忠実な簡単な音は誰が作っても同じ音(近い音)になりますが、想像上の音や演出の入った音はとてもクリエイティブで、作るのに時間がかかります。*5

ディレクターやエフェクトデザイナと相談しながら作っていくことが多く、密なコミュニケーションが求められます。

f:id:sgtech:20180624230520p:plain

DAWで効果音を作っている画面

4.音声の収録〜編集

近頃のゲームはスマホゲームでもよく喋りますよね。
この音声を収録したりゲームで使えるように編集したりするのも仕事です。

収録現場ではどの様な演技をして欲しいのかを声優さんに伝え、ゲームディレクターやシナリオライターが思い描いている演技に近づけるということもします。
それに加えてノイズが入ってしまっていないかなどを常にチェックしながら、台本も追って行くのでかなり気を使う仕事です。

ゲームの種類にもよりますが、5千〜数万のセリフを収録するのが最近では普通です。
こうなると何日もかかって収録することになりますので、演技のブレがないか、掛け合いがある部分に不自然さがないかなど確認することも多くなります。

また、ゲーム中でしっかりと聞こえる様にするために音量の調整をしたり、チェックを漏れたノイズを除去したりという編集作業があります。
ノイズが残ってしまうと、音量の調整でノイズが大きく聞こえてしまったり、不自然さが強調されてしまうため地味ですが大切な作業です。

近年ではiZotope RX6などのノイズ除去作業に優れたツールが出てきたため、少しくらいのノイズであれば演技重視でOKにしてしまうことも増えました。このソフトが出る以前のノイズ除去は波形を拡大してノイズ部分を特定し、全て手作業で修正するといった大変苦痛を伴う作業でした。
ですからなるべく収録現場でノイズを混入させずに収録するといったことが重要だったわけです。


f:id:sgtech:20180624230516p:plain

RXによる音声の修正

まとめ

ここまで紹介した仕事以外にも多数の役割がありますが、長くなってきましたので今回はこの辺で終わります。なんとなくサウンドデザイナーの仕事をご想像いただけたでしょうか。
サウンドデザイナーはこれら全ての仕事を少人数で行なっています。また、ディレクターやデザイナー、プログラマーとの関わりをより強く意識する部門でもあります。

またサウンドは色々な感情(燃える、ドキドキする、爽快になる、優しい気持ちになる、暗い闇を感じる、など)と密接に関わっています。
サウンドデザイナーは自然に、時には主張して色々な感情を刺激する様に設計しています。
次にゲームをプレイする時には音に少し注目(注耳)してみてください。

(C)SEGA

*1:参考1:CEDEC 2012 2012年8月20日 Phantasy Star Online 2におけるプロシージャルBGMシステム

*2:参考2:CEDEC 2015 2015年8月27日 それからのPSO2BGM:プロシージャルを利用したオーダーメイドな場面表現・サウンドツールとプログラムの連携による簡略化

*3:フィールドレコーディング:簡単に言えば外に音を録りに行くことです。山奥や工場など色々なところへ出かけ目的の音を録音します。

*4:フォーリー:足音やものが当たる音をなどを専門に取ることができるスタジオを使った録音です。靴の質感や地面の素材などによって変化する足音を録ることができます。

*5:本当に現実音に忠実に音を作ろうとするととても複雑にレイヤーを重ねて周りの状況の変化に応じた変化を再現する様な作り方もありますが、とても大変な作業です。

Anima2Dのセットアップを自動化しよう!編


f:id:sgtech:20180520233811p:plain

こんにちは。
セガゲームス 開発統括部 アート&デザイン部 TAセクション 廣田です。

おかげさまで、コトダマンはサービス開始1ヶ月で500万ダウンロードを越え、たくさんの方に楽しんでいただいております!
今回も引き続き、コトダマンを題材にAnima2Dの紹介をしていきたいと思います。

f:id:sgtech:20180520234033g:plain:w300

前回はAnima2Dでセットアップを行い、アニメーションを作るところまで紹介しました。
セットアップがとても大変だったと思いますが、他の2Dアニメーションツールで用意されている、
・Photoshpからのエクスポート
・Unityへのインポート

がありませんでした。
今回はこの面倒な部分の自動化と描画最適化を行っていきましょう。

■Photoshopからのエクスポート

まずはPhotoshopからパーツ画像と位置情報を出力するスクリプトを作成していきます。

Photoshopデータの作り方

スクリプトで処理するために、データに決まりを作っておきます。
全てのデータ構成に対応しようとすると処理が複雑になりますので、ある程度決めごとを作ります。
今回は下記のようなデータを想定して進めていきます。

  • 1パーツ=1レイヤー
  • グループでまとめられているものも1パーツとして扱う
  • レイヤー第一階層にあるものを出力対象にする
  • レイヤー名を画像ファイル名,Anima2Dのスプライト名として使う

f:id:sgtech:20180520233817j:plain

必要な処理を考えよう

いきなりスクリプトを書き始めずに、まずは必要な処理をリストアップしてから取り掛かります。

  • 各レイヤーを画像として書き出し。
  • Anima2Dでパーツを並べる時に必要な情報を出力。
    • 各パーツの画像位置, サイズ
    • レイヤー名(=画像名)
    • レイヤー順

便利な処理も追加しよう

  • 画像の縮小処理
    • ゲームで使うには、元のPSDサイズでは大きすぎると思います。
    • 大きさはゲーム中でキャラが表示される最大サイズに合わせて決めましょう。
  • レイヤー名のチェック
    • 全角文字のチェック(ゲームデータでは全角は使わないというお約束として)
    • スペースのチェック

仕様

上記をまとめて、このような仕様でスクリプトに実装してきます。

  • 事前にPSDのエラーチェックを行う
  • 画像を適正サイズに縮小
  • 1レイヤー=1パーツとしてpngファイルを出力
  • PSDファイルと同名のフォルダを作成してpngファイルを出力
  • PSDファイルと同名の位置情報ファイルを出力
  • 位置情報ファイルの出力形式:json形式

パーツの画像位置を取得する

エクスポートのキモの部分、パーツ位置を取得する部分について詳しく説明します。
PhotoshopとUnityで原点(0,0)の基準位置が違います。
Photoshop:左上
Unity:中央

f:id:sgtech:20180520233804j:plain

エクスポートする時にUnityの座標でエクスポートするようにしましょう。

f:id:sgtech:20180520233924j:plain

画像の中心を求める

  • Photoshop画像サイズの縦横半分の位置を中心にします。(例:512x512の半分の256,256)

各パーツの位置を求める

  • レイヤーの選択範囲を作成し、selection.boundsで選択範囲のバウンディング座標を取得できます。この座標を利用してパーツ位置を割り出します。こちらもバウンディングサイズの半分をパーツ位置とします。(例:329, 296)
  • そして、先ほど求めた画像の中心を引くことによって、Unity座標(=中心からどのくらい離れた位置にいるか)を求めることができます。(例:+73, -40)

f:id:sgtech:20180520233956j:plain

JSONファイルに情報を出力

求めたパーツ位置をUnityから読めるように、ファイルに記録しましょう。
Order in Layerを設定するためのレイヤーの順序も記録します。
ファイル形式はJSONを使用し、レイヤー数分、下記のようなフォーマットで情報を書き込んでいきます。

{
	"[レイヤー名1]":{"index":[レイヤー順序], "x":[パーツx座標], "y":[パーツy座標]},
	"[レイヤー名2]":{"index":[レイヤー順序], "x":[パーツx座標], "y":[パーツy座標]},
	"[レイヤー名3]":{"index":[レイヤー順序], "x":[パーツx座標], "y":[パーツy座標]},
	"[レイヤー名4]":{"index":[レイヤー順序], "x":[パーツx座標], "y":[パーツy座標]},
                  ・
                  ・
}

スクリプトの流れ

1. エラーチェック
 そもそもデータが仕様にあっていなければエクスポートする状況ではないので、チェック処理は最初に行います。

2. PSDを新ドキュメントに複製
 PSDに対してスクリプトで色々操作しますので、元のPSDを破壊しないように複製してから操作します。

3. 画像を縮小
 出力サイズに縮小します。

4. レイヤー位置を求める
 Photoshopに画像位置を問い合わせる

5. 画像をバウンディングサイズで切り抜く
 パーツレイヤーをそのまま出力すると余白が多いですので、パーツ画像のサイズに切り抜きます

6. JSONファイルに情報を出力

完成スクリプト

以上をまとめたのが、こちらのスクリプトになります。


ExportAnima2D.jsx
f:id:sgtech:20180520234002j:plain
▶クリックで展開



スクリプトの保存先(Windows PhotoshopCC2018の場合)

C:\Program Files\Adobe\Adobe Photoshop CC 2018\Presets\Scripts
(Photoshopを起動したままスクリプトを入れた方は、Photoshopを再起動するとメニューに出てきます)
f:id:sgtech:20180520233807j:plain

実行してみる

出力したいPSDファイルを開いて、実行します。
(スクリプト中でUndoを実行しているところがあるので、もし途中で止まってしまうようでしたらUndo回数を上げてください)
PSDと同名の下記ファイルが無事に出力されましたでしょうか?
f:id:sgtech:20180520234005j:plain

Textureアトラスの作成

フォルダ内にパーツ画像のpngファイルが出力されていますので、TexturePackerなどを使って1枚のテクスチャーにまとめます。
f:id:sgtech:20180520234049j:plain

f:id:sgtech:20180520234238g:plain:w300


■Unityへの取り込み

Photoshop情報を元にAnima2Dスプライトを並べていきます。

事前準備(MiniJSON)

PhotoshopからJSON形式で画像位置情報を出力しましたので、UnityでもJSONを扱えるようにしましょう。
今回はMiniJSONを使用します。

MiniJSONの入れ方

  • https://gist.github.com/darktable/1411710にアクセス
  • ページ右上のDownload ZIPを押してダウンロード&解凍
  • 出てきたMiniJSON.csをプロジェクト内のPluginsフォルダに入れる(無ければ作成)

必要な処理を考えよう

Unity側に関しては、難しい処理はありません。
Photoshopで出力したJSONを読み込みながら、スプライトとボーンの配置を行います。

  • Meshの配置(JSONから位置情報を読み込んで、Photoshopパーツ位置の再現)
  • ボーンのアサイン
  • OrderInLayerの設定(JSONから読み込み)


前回の記事を引き継いで、シーン構成は下記の構成を予定しています。
f:id:sgtech:20180520234100j:plain


仕様

  • 選択されているスプライトを処理の対象にする
  • 選択されているものと同じフォルダにあるJSONを参照
  • 選択されているスプライト名からJSON内の配置情報を見つける
  • スプライトをmesh階層に配置,位置設定
  • ボーンをbone階層に配置,位置設定
  • メッシュにボーンをアサイン

完成スクリプト

以上をまとめたのが、こちらのスクリプトになります。

スクリプトの保存先

UnityプロジェクトのEditorフォルダに入れてください(無ければ作成)。

実行してみる

Projectウインドウで配置したいスプライトを選択し、Window -> Anima2D -> ImportAnima2D を実行します。
mesh階層に選択したキャラパーツのメッシュが配置され、ボーンが自動的に割り当てられます。
この後は、前回の記事を参考に、ボーンの向きの設定・メッシュ割り・ウエイトの調整を行ってください。
ここまで自動でできるとずいぶん楽ですね。

f:id:sgtech:20180520234054j:plain
f:id:sgtech:20180520234057j:plain

f:id:sgtech:20180520234211g:plain:w350


■描画最適化

さて、セットアップは自動化されて一件落着なのですが、FrameDebugger(Window->Frame Debugger)で確認すると、パーツ数分DrawMeshが走っています。
今回はシンプルなキャラクターですが、パーツ数の多いキャラクターや、モバイル環境などではパフォーマンスに影響が出てきますので、まとめて描画できるものは1回で描画するようにしましょう。

f:id:sgtech:20180520233917j:plain
FrameDebuggerでの確認(最適化前)

SkinnedMeshCombinerとは

前回の記事で、Examplesの中に入っているSkinnedMeshCombinerのお話をしました。
SkinnedMeshCombinerは登録してあるSpriteMeshをまとめて、1メッシュにしてくれるスクリプトです。
ゲーム再生時に1つのメッシュにまとめられます。
(プロジェクトに入っていない方は、Anima2Dのアセットからインポートしましょう)
f:id:sgtech:20180520233820p:plain

SkinnedMeshCombinerの使い方

SkinnedMeshCombinerコンポーネントを追加し、Sizeに登録したいメッシュ数を入力後、レイヤーが下のパーツから順に登録していきます。(この辺はPhotoshopのレイヤー並びと逆順になるので、混乱しますね)
1番目に登録してあるものから、順番に重ねていき、最終結果としてまとめられるイメージです。

f:id:sgtech:20180520233914j:plain

ですが、これでめでたく1ドローで描画されてめでたしめでたし!という訳にはいきません。
再生すると、SpriteMeshAnimationで付けた、目パチ・口パクが動かなくなっています。
どうやらパターンチェンジまで1メッシュに統合されて、パターンチェンジできなくなってしまうようです。

コンバインしてはいけないもの

メッシュ自体を操作している場合は、コンバインすると操作できなくなりますので、対象から外します。

  • SpriteMeshAnimation(パターンチェンジ)
  • 表示非表示アニメ(こちらも1メッシュにされてしまうと、ActiveのON/OFFアニメが効かなくなります)

SortingGroupの設定

さて、コンバインしてはいけないものを分けたとして、また新しい問題が出てきます。
今までパーツの前後関係はOrderInLayerで設定していましたが、内部的に生成されたコンバインメッシュに対して設定する方法がありません。
そこで、コンバインするもの/しないものを階層で分け、SortingGroupを使ってそれぞれの前後関係を指定します。

描画最適化(SkinnedMeshCombiner + SortingGroup)のキャラセットアップ例

以上の状況をふまえ、キャラクターセットアップは画像のようになります。
基本的に

  • 体 (draw1階層)
  • 目パチ, 口パク=SpriteMeshAnimation (draw2階層)→コンバインしない
  • 目口より手前のもの (draw3階層)

で4DrawMeshに収まると思います。

キャラトップ階層にもSortingGroupを付けておくことで、ゲーム中に複数のAnima2Dキャラクターを出したときの、キャラ間の前後関係にも対応することができます。
(SortingGroupはコンポーネントが付いている同階層内で前後関係を並べてくれますので、draw階層とは別の番号を割り当てて制御することができます)

f:id:sgtech:20180520233953j:plain
(基本構造説明のため、今まで説明していた青いキャラとは違うキャラの階層構造の画像を使用しています)

結果

FrameDebuggerで確認すると、かなり描画数が減ったと思います。(体+目+口)
f:id:sgtech:20180520233910j:plain

FrameDebuggerでの確認(最適化後)

スクリプト化する

以上の手順をスクリプト化したいのですが、デフォルトの状態ではSkinnedMeshCombinerにアクセスできないパラメーターがありますので、SkinnedMeshCombiner.csのコードを書き換えます。

SkinnedMeshCombiner.cs
修正前

using UnityEngine;
using System.Collections.Generic;
using Anima2D;

public class SkinnedMeshCombiner : MonoBehaviour
{
	[SerializeField]
	SpriteMeshInstance[] m_SpriteMeshInstances;

	SpriteMeshInstance[] spriteMeshInstances {
		get {
			return m_SpriteMeshInstances;
		}
	}


修正後

using UnityEngine;
using System.Collections.Generic;
using Anima2D;

public class SkinnedMeshCombiner : MonoBehaviour
{
	[SerializeField]
	SpriteMeshInstance[] m_SpriteMeshInstances;

	public SpriteMeshInstance[] spriteMeshInstances {
		get {
			return m_SpriteMeshInstances;
		}
		set {
			m_SpriteMeshInstances = value;
		}
	}

10行目に「public」を追加
14行目に「set {~}」の部分を追加

スクリプトの流れ

SpriteMeshAnimationを別グループにまとめるように処理をします。
1.階層をOrderInLayerの順で並べ替え
2.下の階層からSpriteMeshAnimationが出てくるまでSkinnedMeshCombinerに登録し、drawグループを作成していく。
3.SpriteMeshAnimationが出てきたら新規drawグループを作成。SpriteMeshAnimationが無くなるまで上にたどる。
4.SpriteMeshAnimationが無くなったら、引き続きSkinnedMeshCombinerに登録してdrawグループを作成していく。
階層の一番上まで繰り返す。

完成スクリプト

スクリプトの保存先

UnityプロジェクトのEditorフォルダに入れてください。

実行してみる

Winodw -> Anima2D -> Create Drawgroupを実行してください。
SpriteMeshAnimationが付いているものを避け、drawグループが作成されます。


まとめ

以上、2回に渡ってAnima2Dを紹介してきましたが、いかがでしたでしょうか?
Unity内のアニメーションツールなので、足りない機能などがあれば今回のように追加したり、ShurikenやSpringBoneなどの他のUnityコンポーネントとも自由に組み合わせて使うことができます。
今回PhotoshopからのエクスポートとUnityへのインポートスクリプトを掲載しましたが、基本的な部分のみですので、みなさんの作業に合わせてコードを改造して使ってみてください。
他のツールに比べて、制作物に合わせたフローを構築しやすいと思います。

f:id:sgtech:20180520233847g:plain


 TAセクションではこのようにアーティストの制作に役立つ環境を提供できるよう力を注いでおります。やりたいことを遠回りせずに行える環境でお仕事したい方はぜひ下記の弊社グループ採用サイトをご確認ください。現在さまざまな職種でアーティストを多数募集しております!
採用情報 | セガ企業情報サイト


(C)SEGA

最近のアーケードゲーム開発

皆様、こんにちは。
セガ・インタラクティブ 第三研究開発本部 開発一部 プログラマの渡邉です。
新年度も始まり、心機一転といった感じでしょうか。本ブログも開始してから1年と8ヶ月程度と相成りました。
時が経つのは早いなと思いつつ、日々ゲーム開発に勤しんでいます。
私は近年アーケード(業務用)ゲーム開発を行っていますが、以前は主にコンシューマ(家庭用)ゲーム開発に携わっていました。
セガグループではコンシューマ、アーケード、PC、モバイル、ブラウザ等々と様々な機種でゲームを開発、リリースしています。
ここまでの技術ブログの記事を振り返ってみれば、様々な所属部門の記事があることがお分かり頂けると思います。
機種が違えば、開発する際の前提やお約束が変わってくるものです。そこで本記事では、自身の経験を元にコンシューマゲーム開発との比較も交えつつ、最近のアーケードゲーム開発について紹介させていただければと思います。なお、アーケードゲームは開発内容によって、紹介したものと環境が違うこともあることを予め申し上げておきます。あくまで一例ということをご理解いただければ幸いです。
過去記事では特定の職種向けのテクニックや事例の紹介が多かったかと思いますが、概括的なお題ということもあり、極力職種問わずの内容になっております。技術的な側面を期待されている方には退屈かもしれませんがご容赦ください。


目次


開発環境/ハードウェア

コンシューマゲーム開発では各プラットフォーマーが提供する開発キットを使用します。(周辺機器等の拡張を除くと)そのハードウェア構成は基本変動することはないので、ハードウェア性能は一定です。ハードウェア性能が決まっている分、素早くソフトウェア開発に移行出来ますが、その制約下で開発することになります。特にマルチプラットフォームタイトルは厳しい制約下でソフトウェア開発を強いられることになるでしょう。
アーケードゲーム開発ではハードウェア構成から検討することになります。その為、タイトルに合わせた最適なハードウェアを構築可能ですが、その分ハードウェア構成の選定には時間がかかりがちです。また、タイトルリリース後しばらくして採用した部品が製造中止になる可能性もあるため、注意が必要です。
なお、アーケード筐体は家庭用ゲーム機に比べ若干大き目なので、スペースの確保が大変です。マルチプレイになると尚更です。


f:id:sgtech:20180423190402j:plain
弊社アーケードゲーム「Wonderland Wars」の開発用筐体エリアです。ちょっとしたゲームセンターですね。

使用言語/ソフトウェア

こちらはコンシューマ・アーケードあまり変わりありません。
クライアントアプリケーションの使用言語は C++ あるいは C# が主です。
最近では Unity や Unreal Engine 等といったゲームエンジンでの開発タイトルが増えています。
敢えて違う点を挙げるとすれば、プラットフォーマーの制約下に縛られないアーケードゲーム開発のほうがオープンソースや外部ライブラリを採用し易いかもしれません。
また、サーバー等インフラも自前で管理する為、専用モバイルアプリケーションやWebサイトとの連動も比較的容易です。(担当者の作業が容易だとは言いませんが…)


f:id:sgtech:20180423190419j:plain
弊社では、アーケードゲームのIP(知的財産)を様々なデバイスに展開する「マルチデバイス×ワンサービス」戦略を掲げており、タイトルに連動したスマートフォンアプリやWebサイト等を同時に開発、提供しています。例えば「Wonderland Wars」では、Web上で戦績等を確認出来る「Wonder.NET」や、スマートフォン向けのサポートアプリケーション「Wonderland LIBRARY APP」の提供を行っております。

ゲームデザイン

アーケードゲームではコンシューマゲームとの差別化を図る為、「家庭での再現は難しい」ことを念頭に置いたデザインを心がけることが多いです。
ディスプレイからコントローラーまでタイトルに最適な構成を構築出来ることはゲームデザイナーにとって喜ばしいことではありますが、やりすぎると移植性に欠けるため、注意が必要です。
また、パッケージ売りのコンシューマゲームと、1プレイ幾らのアーケードゲームではマネタイズが大きく違うわけですが、アーケードゲームでは店舗の利益を考慮し、プレイ回数を稼ぐことが可能なゲームデザインが求められます。1プレイ時間は短く(数分~十数分程度)、それでいてライブで盛り上がるための体験を重視したデザインが好まれます。

エラー処理/データ分析

アーケードゲームでは直接硬貨を投入して遊んでいただいている為、エラー周りの例外処理には気を遣います。
例えば、停電等による電断や通信不良等が発生した場合でも極力不利益が生じないよう、大切なプレイヤーデータを随時バックアップしたり、ある程度の追跡および状況分析が出来るようプレイログ情報を専用サーバーにアップロード等しています。

開発規約/出荷基準

コンシューマゲーム開発では「一定時間以上、画面を静止してはならない」といった各プラットフォーマーが定めた規約(Technical Requirements Checklist 等)を遵守する必要があります。また、CERO や ESRB 等といったレーティング機構の審査もパスしなくてはなりません。
対してアーケードゲーム開発では、共通の規約・審査機構は無く、各メーカー独自で定めています。
弊社でも独自のガイドラインを用意し、デバッグサポートチームや品質保証部の元、厳格にチェック・パスしたタイトルをリリースしています。
また、アーケードゲームは風営法の適用対象なので、仕様作成の段階で法務部と擦り合わせを行う等、法令遵守を心がけています。


f:id:sgtech:20180423190415p:plain
「Wonderland Wars」のチェックリストの一部です。実に 500 超の中項目があり、それぞれに数十~百程度のチェック項目が並んでいます。

顧客層

コンシューマゲームの顧客層は、各プラットフォーマーのターゲット機保有者、ターゲット機で遊んで下さるユーザーです。
アーケードゲームの場合、店舗に足を運んで遊んで下さるユーザーに加え、店舗(オペレーター)も顧客層に含みます。(いわゆる B to B to C の取引形態ですね)
ユーザーに楽しんでいただけるゲーム内容にするのは勿論ですが、店舗がオペレーションしやすい機能を実装することも忘れてはいけません。その為、入力テストや、クレジットの確認、店舗大会用の設定等を可能とする「テストモード」を通常用意します。


f:id:sgtech:20180423190410j:plainf:id:sgtech:20180423190406j:plain
こちらは「Wonderland Wars」のテストモードの一部で、入力デバイスが正常に動作するかのテスト画面です。アーケードゲームでは毎日様々なユーザーにプレイいただくため、パーツの摩耗も激しいです。オペレーターが筐体の状態を確認する際の補助となるよう、このようなモードを用意しております。

まとめ

いかがでしたでしょうか。
簡単な解説ではありましたが、アーケードゲーム開発とコンシューマゲーム開発、同じゲーム開発でも違いが見て取れたのではないでしょうか。
本記事が皆様の気付きの一助となれば幸甚です。
もしアーケードゲーム開発にご興味を持たれましたらセガ・インタラクティブ採用サイトを、
逆にコンシューマゲーム開発のほうが面白そうだと思われた方はセガゲームス採用サイトを、
とにかくゲーム作りに関わりたいと思われた方はセガグループ採用サイトを是非ご確認ください。
我々セガグループは共にゲームを作り続けてくれる方々を歓迎します。
採用情報 | 株式会社セガ・インタラクティブ -【SEGA Interactive Co., Ltd.】
採用情報 | 株式会社セガゲームス -【SEGA Games Co., Ltd.】
採用情報 | セガ企業情報サイト

(C)SEGA

Powered by はてなブログ