「大規模ゲーム開発 ? Unityパフォーマンスチューニング」から学ぶ、エンジニアとしての本質的な素養とは

技術・デザイン

当社には、特定の分野に抜きん出た知識とスキルを持ち、第一人者として実績を上げているエンジニアを選出する「Developer Experts制度」があります。2023年3月、UnityのDevelopers Expertsに新たに選出されたのが、2015年に入社し、ゲーム事業を展開する子会社アプリボットに所属する向井です。担当タイトル「NieR Re[in]carnation(© 2021-2023 SQUARE ENIX CO., LTD. All Rights Reserved.Developed by Applibot,Inc.)」だけでなく、アプリボット内の横断組織での活動や、「Unity パフォーマンスチューニングバイブル」をはじめとするUnityコミュニティへのアウトプットを積極的に行う向井に、Unityエンジニアとしての想いを聞きました。

Profile

  • 向井 祐一郎
    2015年度新卒入社。株式会社アプリボットに所属。「NieR Re[in]carnation(? 2021-2023 SQUARE ENIX CO., LTD. All Rights Reserved.Developed by Applibot,Inc.)」のキャラクター制御などに関わりつつ、Lead Developer Experience(LDX)としてクライアントエンジニアの開発体験の向上に会社横断で取り組む。Unityをはじめとしたゲームに関する技術に触れることが好きで、会社有志の活動としてUniTipsやUnity パフォーマンスチューニングバイブルなどの執筆に関わる。個人でも毎週のUnityに関するニュースや記事をまとめた Unity Weeklyの運用を行う。

技術書執筆とコミュニティへの還元が、成長の循環につながっている

── これまでの経歴を教えてください。

2015年に新卒でサイバーエージェントへ入社し、株式会社アプリボットに配属されました。当初はサーバーサイドエンジニアとしてゲームの基盤開発に携わり、その後Unityエンジニアにジョブチェンジしました。最近の大型タイトルだと「NieR Re[in]carnation(© 2021-2023 SQUARE ENIX CO., LTD. All Rights Reserved.Developed by Applibot,Inc.)」のキャラクター制御を担当しました。

様々なゲームの開発に携わる中で、開発環境の効率化・共通基盤化の必要性を感じたことからLead Developer Experience(LDX)という組織を立ち上げ、プラットフォーム対応やCI/CDなど、非ゲーム領域の共通化やノウハウ展開にも取り組んでいます。

── 開発以外にも「技術書典」に出展した「UniTips」や「Unity パフォーマンスチューニングバイブル」など、Unityに関する執筆を積極的にしていますね。

一番のモチベーションは、Unityに関する情報発信を増やすことで、Unityというコミュニティに貢献したいという気持ちで続けています。

また、技術書をはじめとした執筆活動をする事は、自分自身のスキルアップにつながります。例えば「UniTips」や「Unityパフォーマンスチューニングバイブル」は、私が開発現場で体験した事をベースに執筆しています。その知見を読者に伝えるために、追加の調査や検証を経ることで、結果的に自分の知識も広がっていきました。

個人でも「Unity Weekly」も2021年から毎週更新していますが「継続してアウトプットする」という目標があると、インプットも自然と増えていきます。

仕事や開発経験で得た知識をアウトプットして、業界やコミュニティに貢献する活動は、結果的に自分の知見を深めることにも繋がり、とても良い循環になっています。

サイバーエージェントのUnity分野のDeveloper Experts (※注1) に任命されたこともあり、これまで以上に情報発信やコミュニティへの貢献を意識していきたいと思っています。

※注1:サイバーエージェントが注力技術領域として選定した各分野において、特に優れたエンジニアを任命する制度。企業成長への技術的な貢献、OSS活動などの情報発信、後進への伝承・育成が主な役割
 

ゲーム開発におけるパフォーマンスチューニングのリアル

── 開発現場においてどんな技術的課題が発生し、どのような知見が技術書という形でアウトプットしていくのでしょうか?

例えば「Unityパフォーマンスチューニングバイブル」は、文字通りUnityのTipsをまとめた技術書です。現場で起こりやすいパフォーマンス低下について、実践的なチューニングのTipsを紹介しています。ゲーム開発で発生しがちな課題とその最適化を、サイバーエージェントのゲーム・エンターテイメント事業部(SGE)に所属するエンジニア複数名で執筆しました。

私は「NieR Re[in]carnation(© 2021-2023 SQUARE ENIX CO., LTD. All Rights Reserved.Developed by Applibot,Inc.)」のキャラクター制御をはじめとして物理制御関連の業務に携わることが多く、そこで得た物理演算の最適化をテーマに執筆しました。「Unityパフォーマンスチューニングバイブル」でも物理演算の最適化に関する第6章を担当しています。またC#のチューニングに触れた第10章も担当しています。

── 物理演算の最適化とは?

Unityでは物理エンジンの設定次第で処理が重くなってしまう項目も多く、モバイルゲーム開発の際にはパフォーマンスのネックになりやすいです。

大量のオブジェクトを配置したい場合は、その形状や設定に注意が必要です。また物理シミュレーションに関する各種設定も、デフォルトの値だと負荷が高いものもあり、ゲームにあわせて適切な設定を行う必要があります。

そういった課題に対して「Unityパフォーマンスチューニングバイブル」の中で「パフォーマンス低下の原因と解決策」としてとりあげています。パフォーマンス低下は、要因に類似性が高いからこそ、ノウハウや着眼点さえあれば、効率的にパフォーマンス改善につなげやすい。そういった観点から少しでも読者の手助けになればと思いながら執筆しました。

── パフォーマンスチューニングは開発のどのフェーズで行なうべきでしょうか。

Unityエンジニアにとって、リリースした時点でサクサク快適に遊べるゲームを提供することは至上命題です。したがってリリース時までにパフォーマンスチューニングを終えていることが大前提となります。

せっかくリリースを楽しみにしていたゲームなのに、リリース直後にプレイしたら動きが重たかったり、カクついていてまともにプレイできなかった。こうなるとゲームをプレイしてくれるお客様が離れてしまいますよね?お客様に長くゲームを楽しんでもらうためにも、リリース直後にパフォーマンス低下が発生し、お客様が離れるような事態は何よりも避けなければなりません。

運用フェーズに入った後も、よりリッチな演出や機能が実装されるにつれ、リリース当初は出せていたパフォーマンスが劣化するケースもあります。特に、運用フェーズではアセット更新だけでもアプリのパフォーマンスを劣化させる可能性があります。そのためアセットに関してもルールを決めたり、バリデーションを仕込んでおかないと、アセットの更新だけでも重たくなってしまう危険性があります。
 

ゲーム開発が民主化された時代における、ゲームエンジニアを目指す道

── UnityUnreal Engineなど開発環境がすぐ入手でき、clusterのようなプラットフォーム環境があり、場合によってはノーコードでゲームを作ることもできる時代になりました。これからゲームエンジニアを目指す学生にとって、こういった環境をどう活かせば良いでしょうか?

UnityやUnreal Engine等のゲームエンジンに触るきっかけは「面白いゲームを作りたい」という、憧れや欲求や冒険心だと思います。最初は、APIやライブラリを組み合わせながら、サンプルの見様見真似でゲームを開発していくことになると思います。

その過程でぜひ注目してほしいのが「ゲームオブジェクトが3D空間上でどのように動くのか、というその原理や実装とどのように実装するとボトルネックが発生し動作が重くなり、どうすることで重くなった動作が軽くなるのか」です。それは、ゲーム開発における本質的な部分であり、その本質的な部分をどれだけ、正しく理解しているかが、エンジニアとして大事だと、個人的には思っています。

ゲームエンジンの高性能化に伴い、ゲーム開発の民主化が進み、どんな人でもリッチなゲームを開発できるようになりました。その一方で、開発ツールやライブラリに振り回されてしまう危険性もあります。

だからこそ、ツールやライブラリの動作を正しく理解し、導入のメリット・デメリットを正しく把握した上で適切に使いこなすことが重要になってきます。

「Unityパフォーマンスチューニングバイブル」でもそれぞれのTipsがなぜ最適化に貢献するのか、できる限りその背景を伝えるように意識していますし、自分が技術を学ぶ時も背景を正しく理解するように努めています。

── ゲームエンジニアを目指す学生に、将来のためのアドバイスをするとしたら何を伝えますか?

ゲーム開発は、やることがとても多いので、ただ「ゲームを作りたい」だけだと、どこから手を付けてどこまで作れば良いのかわからずに、途中で挫折してしまいがちです。

そこで、例えば「友達にプレイしてもらう」とか「ゲームとして公開してみる」など、何か目的を一つ見つけ、その目標に向かってゲームを1つ完成させてみる事をおすすめします。

「ゲームを1つ完成させる」を繰り返す事で、自分のできる事が広がっていくかと思います。また、ゲームを1本完成させるまでの過程で「ゲーム開発の中で、自分が得意な領域はここかも?」と思う箇所が出てくるかと思います。その感覚をヒントに、自分の技術を深堀りしていくと良いかもしれません。

自分はゲームを作るための技術やゲームエンジンの実装への興味が強いため、もし仮に、私が学生に戻ったとしたら、おそらくゲームエンジンを1から作ることに無限の時間を費やしていると思います。

この記事をシェア

オフィシャルブログを見る

記事ランキング

「10年以上蒔いた種が、ようやく花を咲かせてきた」主席エンジニアが語る、セキュリティ対策のあるべき姿

技術・デザイン

2022年より導入した「主席認定制度」において、10年以上当社のセキュリティ強化に真摯に向き合い続けている野渡が、主席エンジニアの1人に選出されました。

経営層、各開発責任者が絶大な信頼を寄せる野渡ですが、主席エンジニア就任時の思いを「10年以上にわたるチームの取り組みを、改めて評価してもらえたようで嬉しい」と語ります。長年セキュリティ領域に携わってきて感じる最近のセキュリティインシデントの傾向や、サイバーエージェントならではのセキュリティ対策のあるべき姿について話を聞きました。

なお、野渡が統括するシステムセキュリティ推進グループについて、詳しくは「『免疫』のようなセキュリティチームを作りたい~主席エンジニアたちが向き合う情報セキュリティ対策~」をご覧ください。

Page Top