ゲームプラットフォームをAWSに任せることのメリット #reinvent

こちらのセッションでは、オンラインゲームを開発している会社が「自分たちを寝ているところから起こさないようにする」という目標のために、AWSを駆使していろいろ試行錯誤してきた経緯が述べられています。
2022.12.26

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

こんにちは。ゲームソリューション部の出村です。

AWS re:Invent 2022 のセッションである「How Creative Assembly delivers live games at scale with AWS」のレポートをお届けします。

セッション概要

Creative Assembly (CA), a SEGA studio, has been at the forefront of the strategy gaming genre for 22 years with its award-winning Total War franchise. To foster innovation and help with speedier iteration, CA decided to go all in on AWS, evolving its live services architecture to use over 62 AWS services including Amazon DynamoDB, Amazon EC2, Amazon Kinesis Data Streams, and AWS Lambda. In this session, learn how cloud can help game studios deliver AAA games to large global audiences, how evolving game architecture can simplify operations, and how cloud can help developers focus on delivering increasingly innovative game play.

スピーカー

  • Mark Easton, Principal Solution Architect, AWS
  • Seb Maynard, Technical Director, Creative Assembly

アジェンダ

ここでは、セガのゲームスタジオであるCreative Assembly (CA)が、AAAタイトルを世界中の多くのユーザーに提供するためにクラウドがどのように役立つか、進化したゲームアーキテクチャがどのように運用を簡素化するか、そしてクラウドによって開発者がいかに革新的なゲームプレイを提供することに集中できるかを解説しています。

詳細については、AWS re:Invent 2022 - How Creative Assembly delivers live games at scale with AWS (GAM202) - YouTubeで述べられているので、そちらをご覧ください。

内容

ゲーム業界の課題

ゲーム業界ではユーザーに素晴らしい体験を提供する必要があります。またゲーム開発者にはインフラが必要です。

ゲームはリリースするまで成功するか不明ですし、訪問するユーザの数もリリースしないと分かりません。そのため、ゲームのインフラは拡張性が重要となります。

拡張性を持たせることで、何百万人というユーザーがプレイできるような環境を用意できるようになります。そのようなユーザがプレイすると、データベースではテラバイト、ペタバイト単位のデータが蓄積されます。

ゲームはアップデートも行われます。ゲーム開発者はそのようなアップデートを非常に短時間に効率的にリリースできる環境を用意しなければなりません

一口にゲーム開発といっても様々な幅があります例えばインディーゲームのような一人で開発している人もいればトリプル AAA タイトルのような何百人の従業員がいるスタジオもありますですのでそれぞれのか求める環境というのは非常に異なります

例えばビルドパイプラインやバージョンコントロール、あとソフトウェアのビルドの方法もその規模によって異なってきます。

またそのゲームのワークフローは画像オーディオベーキングライティングなど様々なアセットを組み合わせたワークフローとなっています 。

そしてゲームがリリースされると そのゲームサーバーは世界中のユーザーがアクセスしに来るものとなります そしてそのゲームサーバーは老齢レイテンシーである必要がありますし非常に処理速度も高速なものが求められます

そしてそれらのゲームサーバーはユーザーの数に合わせてスケールアップしたりスケール電話できるようにしておく必要があります。というのもゲームというのはヒットベースの産業であるためそれらのユーザーのアクセスに合わせてサーバーの数が増えたり減らしたりできるようになっている必要があります

Creative Assemblyの最初の課題

最初にCreative Assemblyを紹介します。Creative Assemblyは35年間ゲームを作成していました。代表作としてはTotal War: WARHAMMER IIIなどがあります。会社の使命としては世界中の何百万人というプレイヤーにリッチなゲームを届けることです。

これから開発しようとしているゲームは、それまでのAAAタイトルである”Totall War”とは全く異なる、新しいチャレンジが多数あるゲームだということがわかってました。

私達はプラットフォームを構築する必要がありましたがSteamに依存しない方法で実装しました。これによりSteam以外のプラットフォームにも提供できるようになります。

どんなゲームになるか分かりませんでしたが課金システムを構築していました。私達が目標にしていたのは「それが何をするものであっても構わないが、私たちを寝ているところから起こさないようにすること」でした。そして、進化するゲームをサポートするためのサービスでした。

長い時間をかけてプロトタイプを作成して AWSに決定しました 。データセンターを管理するために必要なことは全てAWSがしてくれました。例えばハードディスクが故障したら教えてくれて、自動的に別のモノに交換してくれるといった具合です。

私たちが寝ているところを起こさないようなシステムにするためにErlang(プログラミング言語)を選びました。これにより何か問題が発生したとしても限定的にできるようになりました。

すべての動作をグラフ化しました。これにより問題を発見するのに役立つと考えたためです。

あとはS3とDynamoDBも利用しています。DynamoDBは独自のクセがありましたが、使い始めるとそれはとても素晴らしいものでした。そのため今ではあらゆるものに使っています。

そして Amazon がカバーしてない地域に対しても独自でサーバを用意しました。

スケールできるゲーム開発環境

オンラインユーザーが少ない時のことも考えて対処する一方で、サーバをスケールする方法があることも分かってきました。その手段のひとつが自動化でした。統合テストやエンドツーエンドテストなどを自分たちが起動を指示しなくても、自動的に実行されるようにしたいといったことです。

ただこれらは少数の開発者の場合と50人といった大勢の開発者の場合では、進め方が異なります。そのため最初からそれについて考えておく必要があります。これらがうまくいかないと最後の最後で失敗することになります。

そこで、私たちはプラットフォームを創ろうとしました。そのプラットフォームは三つの大きな目標を設定しました。 それは「CAP定理」「高速である」「安いものである」です。

プラットフォームを自動化しようとしました。最初はBashから始めましたが、CloudFromationを経由して、最終的にはTerraformとなりました。

オブザーバビリティ

次にオブザーバビリティについてです。 当初はGraphiteを使用していましたがスケールするのが難しいものでした。その後、いくつかのツールを使うなどした結果、現在はPrometheusとCloudWatchを使用しています。

今のゲーム開発環境

そして現在では、どのような処理を行っているでしょうか。まず多くの場所で Python が利用されています。そしてnode.jsで動くものも増えています。それは、コンテナ、ElasticBeanstalk、EC2などさまざまな環境で動作しています。

またErlangで動作していたものは、徐々にAWS Lambdaに置き換えています。Erlangはスケールするのが難しいためです。

このような対処を行う場合、クラウドベンダーに依存しない方法と一つのベンダーに全てを委ねる方法があります。そして私達は徹底的にすすめました。クラウドの利点は、複雑な処理をすべて委ねることができる点です。

まとめ

Creative Assemblyでは、自分たちの睡眠時間を確保するため、あらゆる手段を講じてその目標に向かって進めていました。

また、そのような目標に進むにあたりクラウドベンダーに依存して進める方法とそうではない方法の2つが考えられますが、CAでは、自分たちが本来しなくてよい作業をクラウドベンダーに任せる事を選び、その結果クラウドベンダーに全体的に依存する方針で進めています。

ネット上ではクラウドベンダーに依存する、しないといった話が上がることもありますが、クラウドベンダーに依存した際のメリットもこのようにある点は頭の片隅に置いておくとよいかと思います。