【レポート】バンダイナムコスタジオ・BLUE PROTOCOL開発者が語る「クラウドを使ったゲーム開発の効率化(ゲーム開発パイプラインのクラウド化)」 #AWSSummit

AWS Summit Online 9/8 に行われた標題のセッションをレポートします。実際に大規模オンラインRPG開発において行われた、ビルドパイプラインのクラウド化挑戦の事例紹介です。
2020.09.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今日 (9/8) から始まりました AWS Japan Summit Online 2020。オンデマンドセッション CUS-40 クラウドを使ったゲーム開発の効率化(ゲーム開発パイプラインのクラウド化) を拝聴しましたのでレポートします。

概要

ゲーム品質の高度化に伴う開発期間の長期化やゲームエンジンでのビルド時間増加の現状に、バンダイナムコスタジオのブループロトコルプロジェクトにおけるゲーム開発のビルド、ライトのベイクなどのクラウド化による開発効率化とスピード向上、コスト削減の実現と今後の展望をご説明します。

スピーカー

  • 大井 隆義
    • 株式会社バンダイナムコスタジオ
      技術スタジオ 技術スタジオ付
      エグゼクティブテクニカルディレクター
    • BLUE PROTOCOLテクニカルディレクター
  • 吉田 卓哉
    • 株式会社バンダイナムコスタジオ
      総務 IT サービス部
    • 社内開発支援ツールの構築・管理・運用

内容

  • アジェンダ
    • BLUE PROTOCOLとは
    • ゲーム開発でのビルドパイプライン解説
    • ビルドパイプラインをクラウド化した話
    • 成果・わかった事
    • AWS初心者のハマりどころ
  • BLUE PROTOCOLとは
    • オンラインRPG
    • クローズドベータを4月に実施、開発中

ゲーム開発でのビルドインパイプライン解説

  • Bake/Precompile = アセットをプラットフォームに合わせてパッケージング
    • マップ(レベル)単位で事前計算
    • 条件が増えれば増えるほどリソースが必要になる、かけ算でどんどん増える
    • ライティング&影
      • 広大なマップ、多くのライト
      • あらかじめテクスチャに焼き込む
    • ナビメッシュ
      • 背景オブジェクトはアーティストがいい感じに配置する
      • NPCが歩ける場所を事前に判定しておく

ビルドパイプラインのクラウド化

  • クラウドゲーム開発の知見は社内にまだ少ない
  • シフトしづらい事情
    • 社内LAN前提で構築されたゲーム開発環境
      • ユーザ認証基盤、ファイルサーバ、VCS、インフラ、セキュリティ
    • スピード・トラフィック
      • 大量・大容量アセット、分散ビルド環境、描画性能や操作レスポンス(4K 60fps)
      • 1つのPSD(フォトショップ画像)ファイルが1GB超え
    • 契約関連(NDA、EULA)
      • ゲームエンジン、ミドルウェア、1stパーティ製SDK
      • クラウド上で利用しても良いのか?
  • 出来るところからクラウド化してみる
    • できるところ -> ビルドパイプライン
  • 従来のビルドパイプライン構成
    • Jenkins
    • 社外からはアクセスNG
    • 150コアの並列分散ビルド
    • ビルドマシンの調達に時間がかかる、セットアップ・運用が大変、増えるJenkins・忙しいときに限って故障する
  • クラウド化したビルド構成
    • Jenkins on EC2
    • ビルド用インスタンス:c5.24xlarge (96core)
    • ベイク用:g4dn.16xlarge (64core + GPU)
    • ほぼ全てのコアが利用率100%

  • ポイント
    • Jenkinsが1台
    • ビルド実行中以外はインスタンスを停止したい
    • 複数Jenkinsマシン管理から脱却

Jenkinsのジョブ解説

  • ツール
    • Jenkins
    • AWS CLI
    • AWS Systems Manager
  • AWS CLIでインスタンス起動
  • AWS Systems Managerでスクリプトをリモート実行
    • aws ssm send-command
    • executionTimeoutを長くする(デフォルト1時間)
      • ハマった(後述)
  • ビルド状況を確認
    • aws ssm get-command-invocation
  • ビルド成功/失敗判定とインスタンス停止
  • ビルドの流れ
    • Jenkinsインスタンスがビルドインスタンスを立ち上げ、リビジョン番号を指定して実行開始
    • ビルド成果物はS3へ

クラウド化してわかったこと

  • ローカル + IncrediBuildと遜色ない速度
  • 大量のPCを用意するよりインスタンスの方が調達簡単
  • ランニングコストは約 1660 USD/月(東京リージョン)
  • 検証から導入までおよそ半年
    • 11月検証スタート、翌6月よりプロジェクトでの実運用開始
    • うち二ヶ月は事情により進捗なし
  • 良かったこと
    • 調達の待ち時間、ビルド性能、アクセスコントロール、ネット上のナレッジ、サポート
  • 悪かったこと
    • 従量課金制、コスト試算が大変、Visual Studioがクラウド上で使えない(ライセンスの関係)、キャッチアップが大変(サービスの追加更新が早い、うれしい悲鳴)

細かすぎて伝わらないAWS初心者のハマりどころ

細かいけど解決に地味に時間がかかった事項

  • AWSアカウント作成どうしよう?
    • 既存の包括契約を利用
  • クラウドビルドパイプラインの構成で悩む
    • AWSサービスの選択肢が多い
    • AWSのソリューションアーキテクトに相談
  • WindowsインスタンスにRDPできない
    • 会社のファイアウォールでDenyされてた
  • とつぜんRDP出来なくなった…
    • Winのパスワード更新期限過ぎていた
  • 金額の試算が難しい
    • 偉い人からはまず費用感を聞かれる
    • 1回のビルド時間とやりとりするデータ量、通信回数が分かればおおよそ試算可能
  • リージョンはどこがいい?
    • スピード重視(転送速度) -> 東京
    • 安さ重視 -> オレゴン
    • 新機能 -> Nバージニア
  • ビルド開始1時間でTimeOut
    • executionTimeoutを設定
  • インスタンスが停止しない事故を防ぎたい
    • AWS Lambda + CloudWatchで長時間稼働しているインスタンスを停止
  • EBSのIOPSは足りているか?
    • CloudWatchでスループットを監視
    • バーストバランスをチェック

将来の展望・次のアクション

  • パッケージする前にアセットのベリファイを
  • 完成したパッケージの自動テスト
  • クラウドでBotを大量投入
    • 大規模オンラインゲームの同時接続テスト
  • クラウドビルドパイプラインを社内のプロジェクトへ共有・展開
  • 在宅勤務に合わせたクラウド共存型の開発環境
    • オフィス・自宅・社外など、どこからでもアクセス可能に

まとめ

  • 社内LANに閉じていた開発を一部クラウドに移行することができた
  • クラウドのメリット
    • インスタンス追加の手軽さ
    • 物理Jenkins管理からの手離れ
    • アクセスコントロール

所管

非常に実践的なセッションでした。ちょうど本日(9/8)の基調講演で「映像業界もソフトウェア業界と似たパイプラインを持っている」という話がありましたが、まさにゲーム業界に対しても同じ事がいえるという好例ではないでしょうか。
同業界の方だけでなく、他業界の方にもためになるセッションだったと感じました。既に動画と資料は公開されていますので、是非ご覧ください。

AWS Summit Online は 9/30 まで開催です。是非ご参加ください!