【Unite 2017 Tokyo フォローアップ】『Shadowverse開発事例』 ~美麗カードが動く!制作テクニックのすべて~


2017/05/09(火)に Unite 2017 Tokyoで、『Shadowverse開発事例』 ~美麗カードが動く!制作テクニックのすべて~ という講演を行いました。

先ずは、講演に参加いただいたみなさま、ありがとうございました。
少しでもShadowverseを知っていただける機会になっていただければ幸いです。

以下が講演のスライドになります。

プレミアムカードについて

こんにちは。
3DCGアーティストチーム サブマネージャーの島村です。

本講演では、Shadowverseにおける動くカード「プレミアムカード」を制作するための専用シェーダーについてのお話と、制作技法について紹介させていただきました。

こちらでは、講演内では伝えきれなかった、カードシェーダーの細かい部分について、Q&A方式で解説させていただきます。

Q: カードシェーダーは計算が複雑かと思いますが、処理負荷についてはどう対処していますか。
A: Unity標準で用意されているシェーダーバリアントの機能を使用して静的分岐をすることで、個々のプレミアムカードのGPU計算が多くならないようにチューニングしました。シェーダーバリアントで分岐するにはキーワードを指定する必要がありますが、CustomEditorでマテリアルインスペクターを拡張してキーワードの指定をしています。

Q: カードシェーダーの開発や保守はどのセクションのスタッフが担当していますか。
A: 開発段階では3DCGアーティストである私のほうでシェーダーの開発をしました。アーティスト側で開発を進めることで、絵作りをするために必要な機能の選定や、より作業のしやすい環境作りというものを優先しました。アーティスト側で開発している際もパフォーマンスを留意しながらシェーダー開発を進めていきましたが、リリース前のパフォーマンスチューニングの段階から、より詳しいエンジニアに引き継ぎ、それ以降の保守はエンジニアセクションに担当してもらっています。

Q: アーティストがシェーダーの機能を理解するまでにどれくらいの時間がかかりましたか。
A: 機能自体はとてもシンプルに設計されているので、1週間もあればシェーダーの機能を一通り理解できます。ただし、シンプルなだけに、マスクの描き方やテクスチャの動かし方にある程度のテクニックを必要とするため、そういった技術面での習熟にはある程度の時間を要します。

開発体制、最適化、効率化について

こんにちは。
Shadowverseでエンジニアリーダーをしている大道です。

お話させていただいたこと

  • 開発体制とフローについて
  • アセットバンドルを使った最適化について
  • カード開発の効率化について

講演後にご質問にもお答えさせていただきましたが、フォローアップとしてそれらをご紹介いたします。

Q: アセットバンドル化したテクスチャの共有について、エフェクト以外ではどのような使い方をしていますか?
A: プレミアムカードが参照する合成テクスチャについても共有して、すでにメモリ上に展開されていればロード処理は行わず参照を共有します

Q: アセットバンドルのDependenciesを使うことで参照の共有はできるとおもうのですが、何故そうしなかったのですか?
A: Dependenciesを使う選択肢はありましたが、参照情報が記載される分やはりアセットバンドルのサイズはほんのすこしだけ大きくなります。それすらも排除したかったという思いがありました。

補足になりますが、スマホ向けに出しているゲームとして問題になりやすいメモリ管理やアセット管理を自前で行い、細かいチューニングをしたくなった際も柔軟にゲーム側で対応できるというのも選択した理由の一つです。

更にUnity 5.0以降からBuildAssetBundleOptions.CollectDependenciesはObsolete(非推奨)になっていて、デフォルトで依存しているアセットを含めてビルドされるので、命名規則により管理する方法を選択しました。

Q: カードスキルの記述はマスター上ではどのようにされていますか?
A: 講演で紹介した6つのパラメータには全て複数の情報を設定できるようにしています。一つのカラムに正規表現を使ってメソッドチェーンのようにパラメータを登録できるようになっているので、現状のカードは全て実現できています。

カードスキル開発についての補足

スキル例4フォロワーカードでネフティスというカードの解説をさせていただきましたが、スキルの内容が他のカードよりも複雑だったこともあり、一部のパラメータの説明を省略しております。

最後に

今回講演を聞いていただいたみなさま本当にありがとうございました。
Shadowverseが今あるのは、
共に開発に携わってくれているメンバーと、何よりもShadowverseをプレイしてくれている方が居るおかげです。

今後も開発チーム一同、最高のコンテンツをお届けできるよう頑張ってまいります。