この記事だけで「AWS」を知る。クラウドサービスの基本と意外な使われ方、そして「導入がラク」が本当かをエンジニアと共同検証してみた

2024.08.16 [PR]
注目記事ゲームづくりの知識しくみをつくるゲームの舞台裏お役立ち情報ツール紹介注目・定番の〇〇
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

ゲーム業界であれば一度は聞いたことがある「アマゾン ウェブ サービス 」(以下、AWS)。アマゾンが提供するクラウドサービスプラットフォームであり、世界で最も利用されているモノであることは分かっていても、できることが多すぎるゆえに実態が把握しにくい(検索しても良く分からない!)という方も少なくないはず。

本記事ではクラウドサービスの基本的な概念とAWSのよくあるユースケースをお伝えするとともに、少し変わった実装としてUE5での使用を想定したPixel Streaming実装を行いながら「導入がいかにラクなのか?」を説明していきます。

TEXT / 神山 大輝

目次

「AmazonからPCを時間貸ししてもらう」。これがAWSの本質

AWSとは、誤解を恐れずに言えば“Amazonが持っているPCを時間貸ししてもらう”サービスです。Amazon Web Services社が世界各地に所有する拠点(データセンター)に置かれた大量のPCを、自分のプロジェクトで必要なときに必要なだけ借りることができるこれがAWSの本質です。

「クラウドコンピューティング」とは言いますが、AWSのデータセンターは雲の上ではなく東京と大阪にあります(全世界では200以上の拠点があります)。自分のPCではなく、あえてクラウド上にあるPCを借りたい理由には、主に3つの理由があります。

  1. スケーラビリティがあり、必要な時に必要なだけ借りられる。忙しい時に人手を増やせる
  2. ハードウェアの保守管理をAmazon側にお任せできる(機械は必ず壊れるため、自社保有よりリスクを下げることができる)
  3. ハードウェアのセキュリティ対策をAmazon側にお任せできる

クラウドサービスを使用するメリットを改めて整理していく

まずはゲーム会社の中にあるサーバールームを思い浮かべてください。冷房の効いた部屋にたくさんの黒いマシンが積んであり、大量のケーブルが刺さっています。

マシンの中ではゲームのプロジェクトが管理されており、チームメンバーが作ったアセットやプログラムファイルを自動的に統合してビルドしたり、社員だけがアクセスできる安全なデータの保管場所として使われたりしています。

このように、サーバーやネットワーク機器などのハードウェアと、動作用のOSや各種ソフトウェアを自社で保有していることを「オンプレミス」と呼びます。このオンプレミスが「クラウド」の対義語になります。

翻ってクラウド(cloud)とは、インターネットを通じて、物理的・地理的に離れたところにあるサーバーやストレージなどのハードウェアを借りたり、遠くにあるパソコンにインストールされたOSやアプリケーションを必要なだけ利用できたりする環境のことを指します。

近年のゲーム開発では、これらのインフラ系システムを自社内で保有するのではなく、誰かから借りて運用する手法が一般的(※)になっています。ここでの「誰か」とは、もちろんAmazon Web Services社のような会社を指しています。
※実際には多くのゲーム会社がオンプレミスとクラウドを併用しています。オンプレミスは「一度マシンを購入してしまえば、運用時にコストが掛からない(固定費計上できる)」、「オフィス内にマシン本体があるので、クラウドと違ってネットワークの速度がボトルネックになりにくい」などのメリットもあります

開発環境の構築やランキング・マルチプレイ利用など。ゲーム開発におけるAWSの活用方法

ゲーム業界におけるAWSのメジャーな使われ方はオンラインゲーム用のサーバーです。ランキングやマルチプレイ、あるいはソーシャルゲームのガチャなど、他プレイヤーとの交流があるゲームは何らかのかたちでインターネット通信を行なっています。その通信先が、AWSが提供する「Amazon Elastic Compute Cloud (以下、Amazon EC2もしくはEC2と表記)という仮想コンピュータ(※)になります。
※「Amazonから借りている(仮想化された)強いパソコン」として読み替えても成立する。EC2やS3、CloudFrontなど、すべてのサービスが横文字だから難しく見えるが、EC2は「いつでも好きなだけ使えるパソコンの計算能力」として捉えるとよい

EC2のスペックは、自分で好きなように選択することができます。CPUやGPU、メモリなどの性能が異なる複数のタイプが用意されていて、それぞれ料金も異なります。仮想コンピュータに立てたサーバーを「インスタンス」と呼びます。

オンラインゲームでよく使われるのは「コンピューティング最適化」のC6,C7あたり。それぞれCPUがIntelだったりAMDだったり、メモリの数字が違ったりする。

最適なものを選ぶのは難しそうに見えるが、インスタンスは気軽に立てて気軽に試せるので、トライアンドエラーで最適解を探ることも多い

Amazon EC2 インスタンスタイプ一覧

EC2インスタンスの中では、ゲームのサーバーサイドプログラムが常に実行されています。例えば、オンラインで撃ち合うシューティングゲームの場合は、以下の処理をサーバー側で行います。

        • プレイヤーの接続管理(接続されたプレイヤーが何者かを識別・認証)
        • ゲーム内の状態管理と計算(プレイヤーの動きやヒット判定の計算)
        • ヒット判定などの結果をプレイヤーのデバイスに送信
        • データベースとの連携(プレイヤーデータの保存と読み込み)
          ※上記はあくまでシンプル化した凡例であり、具体的なタイトルの仕組みを指し示しているわけではない

        ゲームの進行状況や設定、アイテム保持状況などは、S3という大容量のストレージに保存されます。S3から必要なデータを持ってきて、EC2側でゲーム処理を行うフローが一般的と言えるでしょう。この周辺にはログイン認証の仕組みやサーバーの割り振りの仕組み、プレイヤーを自動的に分散させる仕組みやセキュリティ関連サービスなどが提供されており、すべてAWS上で使用することが可能です。

        Amazon S3 | どこからでも簡単に、お好みの量のデータを取得できるオブジェクトストレージ

        『BLUE PROTOCOL(ブループロトコル)』では初動20万人を捌き切り、コストも約3割低減

        マルチプレイのオンラインゲームにおけるAWS活用事例として新しいのは、 バンダイナムコオンラインとバンダイナムコスタジオが共同開発したアクションRPG『BLUE PROTOCOL(ブループロトコル)』リリース直後から多くの人々の注目を集め、同時接続者数が20万人を超えることもあった同作では、AWSが独自開発したCPUである「AWS Graviton搭載のインスタンスでゲームの処理を行なっています。

        2024年7月に1周年を迎えた『BLUE PROTOCOL(ブループロトコル)』。2024年初頭時点で100万人以上がプレイしており、それぞれ快適にゲームを遊べるようにスケーラブルなAWSを活用

        スポットインスタンスという「足りないときだけ、余ったAWSのリソースを借りる」という仕組みをうまく取り入れることで、従来比32%減という大幅なコスト削減にも成功した

        『FINAL FANTASY VII EVER CRISIS』では便利機能「GameLift」を活用

        EC2、S3のほかにゲーム開発で知っておくべきサービスとして「GameLift」を紹介します。GameLiftは、マルチプレイヤーのオンラインゲームの「マッチメイキング」と、サーバーの割り当てを行うマネージドサービスのこと。

        対戦・協力系のオンラインゲームでは、たくさん集まったプレイヤーのマッチメイキング(対戦相手を決めるための処理)を行い、マッチング後は自動的にゲームサーバーが立ち上がり、そこで対戦が行われます。

        「何秒まで同条件で待つか」「何人でスタートして良いのか」などのマッチングロジックも変更できますし、待機中のプレイヤーが多ければ(何割サーバーが埋まれば)自動的にスケールアップします。この辺りのマルチプレイの処理は複雑で、全てを自前で用意するよりも、こういったサービスを利用する方が効率が良い場合が多いです。

        マルチプレイヤーオンラインゲームの構成図(Amazon Web Services Japan SlideShareより引用)

        『FINAL FANTASY VII EVER CRISIS』ではGameLiftが全面的に採用されています。開発のアプリボット社は当時マルチプレイの実装経験がなかったものの、GameLiftを用いることでエンジニアの負荷を大きく軽減。同作はリリース1週間で500万ダウンロードされていますが、スケーラビリティも担保されていたため、大量のプレイヤーを問題なく受け入れられたとのこと。

        『FINAL FANTASY VII EVER CRISIS』ローンチトレーラー。最大3人のマルチプレイに対応し、戦闘は時間経過ごとに蓄積するゲージを使用してスキルを使用していく。

        GameLiftを採用したことで開発がしやすくなっただけでなく、インフラコストが同社の他タイトルと比べて半分程度に収まったとのこと

        こういった使い方においてAWSは文句なしの世界トップシェアであり、ゲーム業界における採用事例も数多く存在します。また、オンラインゲームのサーバー用途以外にも、近年は開発環境そのものをクラウド側で構築する、つまりGitやPerforceなどをクラウドサーバー側で管理する手法も徐々に一般化しつつあります。

        現在のところ、開発環境の構築はオンプレミスで行い、マルチ実装はAWSのサービス群を使って開発するケースが多いように見受けられますが、グローバルプロジェクトや、リモート前提のチームの場合は開発環境のクラウド化がワークフローに好影響を与える事例も多くあります。

        AWS for Games Sizzle Reel。AWSをゲームに活用する事例は、公式サイトに大量に掲載されている。

        詳しくは「お客様導入事例 – AWS for Games」をチェック!

        UE5×Pixel Streaming 実装をもとに、AWS導入手順をざっくり解説

        最後に、“EC2を使って、ハイエンドゲームをモバイル環境でプレイしてみた”様子をお届けします。今回は一風変わった使い方として、EC2を使った「クラウドストリーミング」を試してみます。

        検証に用いたのは、200GBを超える巨大なデモファイルCity Sample推奨されているのはGeForce RTX 2080かAMD Radeon 6000 or higherとなっており、ある程度のスペックのPCがないと動かすのが難しいシーンです。

        クラウドストリーミングを使えば、iPhoneやAndroid、あるいは大昔のパソコンでも、インターネットさえ繋がれば理論上はサクサク動かすことができます。今回はMacbook AirとiPhone 15の実機で試してみました。

        iPhone 14でも撮影してみた。UE5のデモの中でも最も負荷の高い「City Sample」が、モバイル端末でもリアルタイムに動作している。

        端末側では描画とタッチ入力以外の処理はしておらず、基本的にはストリーミングで流れてくる画面を再生しているだけ。この処理を担っているのは、もちろんEC2だ

        先ほど「EC2はさまざまなスペックが選べる」という説明を行いましたが、もちろんハイエンドGPUを搭載したインスタンスも用意されています。サーバー側にGPUがあれば、EC2の上で直接ハイエンドな3Dゲームが実行できます。

        クラウド上で描画した画面データだけをインターネット経由でデバイスに送ることで、理論上はどんなデバイスでもハイエンドな3Dゲームを楽しむことができる。これがクラウドストリーミングの基本的な仕組みになる

        ユースケースは?=イベントや展示会で結構使える

        例えば東京ゲームショウのようなゲームの展示会では、3Dゲームを展示するためにスペックの高いデスクトップPCを何台も用意します。クラウドストリーミングを用いれば、ハイスペックのPCを用意する手間が省けます。インターネットに接続できる環境さえあれば、どんなPCでも、あるいはスマートフォンでも試遊ができるのです。

        もうひとつはイベントでの展示。たとえば自動車業界や建築業界では、リアルタイムに車体のカラーや建築物の内装などを変更して顧客にプレゼンをしたい需要があります。こういった業種において、GPUを搭載したハイエンドPCを日常的に使っているケースは稀です。クラウドストリーミングを使って画面の描画をEC2で行えば、オフィスにある事務用PCや顧客のスマートフォンでもハイエンドなグラフィックを見ることができます。

        Amazon EC2 実装手順を紹介。5ステップで完了

        wvigler氏

        UE5 クライアントエンジニアのwviglerです。日頃はUE5やUEFNでのゲーム開発をメインで行っていて、AWSに触るのは初めてです。

        さっそく、ドキュメントなどを見ながら実装していきます!

        まずはAWSアカウントを取得し、マネジメントコンソールにログインします。続いて、コンソール内の操作でEC2インスタンスを作成します。今回実行する「City Sample」はGPUが必須のため、インスタンスは「g5.4xlarge」を使用しました。

        続く画面ではセキュリティのためのキーペア(.pemファイル)を作成し、ファイアウォール系の設定も行っておきます。

        EC2のボリュームをどのくらいにするかはプロジェクトによりますが、今回は100GiBとしました。

        ここまでできたら「インスタンスを起動」をクリックして、インスタンスを立ち上げます。

        作られたばかりのEC2は空っぽの状態です。今回はPixel Streamingを使ってゲームをプレイするため、以下3つのインストールしていきます。

        • Node.js
        • Pixel Streaming Infrastructure(使用するUE5バージョンに適合したものを入手する)
        • NVIDIAドライバー

        ゲーム本体はAWS内のファイルストレージサービス「S3」を経由してアップロードします。その後、外部アクセスに関するいくつかの設定を行ったのち、アクセス用のIPアドレス(Public IPv4 address)を取得します。

        このIPアドレスをプレイヤーに渡せば準備完了です!

        これをブラウザに入力すれば、どこからでもCity Sampleが遊べるようになりました!

        今回の手順まとめ。なお、Linuxでビルドが行える場合は、Epic Gamesが公開する「Unreal Pixel Streaming – Linux」を使うことで前段の工程を大幅に簡略化できる

        実際にストリーミングされた環境でのプレイ動画。静止画では60FPS、移動時も50FPS以上が安定的に出ており、City Sampleの持つ高度なグラフィックスを損なうことなく、EC2経由でゲームを遊ぶことが可能となっていた。

        今回のデモは、あえて読み込みの負荷を大きくするために、City Sampleの各地に瞬間テレポートを行う内容となっている。ロード時間の少なさや、スムーズな動作を確認してほしい

        wvigler氏

        RTA的に頑張れば、30分ほどでプレイ開始まで行けそうでした。

        ビルドのアップロードやNVIDIA ドライバーのインストールなどを同時並行的に行ったり、その間にコンソール側で設定を行ったりすることで、時間はかなり短縮できそうです。

        (ちなみに、自分はファイアウォールやセキュリティグループ設定で少し戸惑いました……とにかくEC2はセキュリティが強い!!)

        ※Amazon EC2を用いたPixel Streaming活用の詳細な構築手順は、下記ドキュメントをご確認ください。
        EC2 & Pixel Streaming 構築手順(pdfファイル)


        本記事ではこれまでにクラウドサービスの利点とAWSの事例紹介を整理し、少し特殊な使い方として、GPUを搭載したインスタンスによるPixel Streamingの実装までを行いました。AWSはゲームサーバーやDevOps用途だけでなく、Pixel Streamingのような特殊な使い方やAI/ML系のリソースとしても使えるほか、GameLiftのようなマネージドサービスを含めて200以上のサービスが提供されています。

        後半に行くにつれて徐々に専門性が増してきましたが、本質は「足りないリソースをお借りする」という部分です。このリソースはPCそのものだったり、ストレージだったり、いろいろな見え方をしていますが、いずれも必要なときに従量課金制でお借りできるのがAWSの利点になります。

        詳細な情報やトライアルに関しては公式サイトをご確認いただくか、ぜひAWSへお問い合わせください!

        AWS 公式サイトお客様導入事例 - AWS for Games
        神山 大輝

        ゲームメーカーズ編集長およびNINE GATES STUDIO代表。ライター/編集者として数多くのWEBメディアに携わり、インタビュー作品メイキング解説、その他技術的な記事を手掛けてきた。ゲーム業界ではコンポーザー/サウンドデザイナーとしても活動中。

        ドラクエFFテイルズはもちろん、黄金の太陽やヴァルキリープロファイルなど往年のJ-RPG文化と、その文脈を受け継ぐ作品が好き。

        関連記事

        「ゲームマーケット2024秋」レポート【後編】ICチップ、お菓子を使った個性際立つ一般ブースのボードゲームやLARPなど
        2024.12.03
        「ゲームマーケット2024秋」レポート【前編】初の幕張メッセで年末の新作ボードゲームを先行プレイ
        2024.12.03
        サイバーエージェント、技術カンファレンス「CADC2024」の講演記事を公開。ゲーム開発における事例として、「Figma」やAIを使った取り組みを紹介
        2024.12.02
        【2024年12月版】注目のゲーム展示会・コンテスト・カンファレンス・勉強会情報まとめ
        2024.11.28
        C++の最新動向と展望をチェック。C++の日本語リファレンスサイト「cpprefjp」メンバーの講演を、ゲームエンジン開発者がレポート&補足してみた【CEDEC2024】
        2024.11.27
        『あんさんぶるスターズ!!Music』MVをさまざまな端末で違和感なく表示する手法、Happy Elements カカリアスタジオが解説記事を公開
        2024.11.27

        注目記事ランキング

        2024.11.28 - 2024.12.05
        VIEW MORE

        連載・特集ピックアップ

        イベントカレンダー

        VIEW MORE

        今日の用語

        レンダリング(Rendering)
        レンダリング コンピューターグラフィックスにおける、各種データ(3Dモデルなど)をプログラムを用いて計算し、画像として表示すること。レンダリングを行うプログラムをレンダラー(Renderer)と呼ぶ。
        VIEW MORE

        Xで最新情報をチェック!