View a markdown version of this page

定義 - ゲーム業界レンズ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

定義

AWS Well-Architected フレームワークは、運用上の優秀性、セキュリティ、信頼性、パフォーマンス効率、コスト最適化、持続可能性の 6 つの柱に基づいています。 AWS には、ゲームワークロードに合わせてstate-of-the-artアーキテクチャを設計できる複数のコアコンポーネントが用意されています。このセクションでは、キー定義の概要を示します。

このホワイトペーパーでは、ゲームアーキテクチャには、ゲームの構築と運用に必要なバックエンドの技術インフラストラクチャが含まれています。一部のゲームには、ソーシャル、マルチプレイヤー、またはその他のオンライン機能がなく、このホワイトペーパーで説明されているバックエンド技術インフラストラクチャの特定の側面を使用する必要がない場合があります。ゲームアーキテクチャをサポートするために頻繁にデプロイされるさまざまなタイプのワークロードの詳細については、「シナリオ」を参照してください。

AWS クラウド インフラストラクチャは、リージョンとアベイラビリティーゾーンを中心に構築されています。

  • リージョンは、複数のアベイラビリティーゾーンがある世界の物理的な場所です。

  • アベイラビリティーゾーンは 1 つ以上の個別のデータセンターで構成され、それぞれが冗長な電源、ネットワーク、および接続を備え、別々の施設に収容されています。

ゲームの特性によっては、プレイヤーのパフォーマンスを向上させるなどの理由で、ゲームアーキテクチャの特定のコンポーネントを複数のリージョンにデプロイしたり、プレイヤーのロケーションに応じてカスタマイズされたエクスペリエンスを提供したりできます。

ゲームにはさまざまなタイプがあり、ゲームのサポートに必要なバックエンドの技術インフラストラクチャは、開発中のゲームのタイプによって異なります。例えば、一般的なタイプのゲームには、ファーストパーソンシューティングゲーム (FPS)、ロールプレイングゲーム (RPG)、超マルチプレイヤーオンラインゲーム (MMOG)、バトルロワイヤル (BR)、スポーツゲーム、パズルゲームなどがあります。また、ターンベースや同時プレイなど、ゲームのアーキテクチャに影響を与えるさまざまなゲームインタラクションモードがあり、パフォーマンス特性も異なります。

ゲームは、デスクトップ、ウェブ、モバイル、コンソール、拡張現実 (AR)、バーチャルリアリティ (VR)、ゲームストリーミングソリューションなどの新しいインタラクションモードを含む 1 つ以上のゲームシステムでプレイするように開発されています。ゲームは通常、クロスシステムゲームプレイをサポートしています。つまり、プレイヤーはゲームの進行状況を保存し、他のシステムでゲームプレイを再開したり、他のシステムでプレイヤーとゲームプレイセッションを開始したりできます。

ビデオゲームの収益化により、ゲームパブリッシャーは、広告、デジタルおよび小売ベースのゲーム購入、マイクロトランザクションと呼ばれるダウンロード可能コンテンツ (DLC) のゲーム内購入、ゲームをプレイするために必要な有料サブスクリプションなどのさまざまな戦略を使用して収益を生成できます。ゲーム業界で最も一般的な主要業績評価指標 (KPIs) には、次のようなものがあります。

  • デイリーアクティブユーザー (DAU)

  • 毎月のアクティブユーザー数 (MAU)

  • 同時ユーザー (CCU)

  • セッション期間

  • インストールあたりのコスト (CPI)

  • プレイヤーのライフタイム値 (LTV)

  • ユーザーあたりの平均収益 (ARPU)

ゲームシステム

ビデオゲームは、クライアント入力コントロール、グラフィックス、クライアントソフトウェア (ゲームクライアントと呼ばれる)、ハードウェア、および場合によってはゲームプレイをサポートするシステム排他的な機能を提供するゲームシステムでプレイするように開発されています。

ゲームシステムは通常、次のカテゴリに分けられます。

  • コンソール: Sony PlayStation、Microsoft Xbox、Nintendo Switch などの一般的な例など、ゲームをプレイするために設計された専用のエンターテインメントシステム。コンソールは、ゲームシステムプロバイダーによって製造されたコンソールハードウェアに物理またはデジタルで分散されたゲームコンテンツをインストールすることで、ゲームをプレイする機能を提供します。この定義では、コンソールは手持ちまたは静止していて、ホームエンターテインメントのシナリオで使用することを意図しています。

  • パーソナルコンピュータ (PC): プレイヤーがカスタマイズできるクライアントマシンにインストールされたコンピュータソフトウェアを使用して再生されるゲーム。このため、PC ゲームは柔軟性と制御性を備えているため、プレイヤーの間で人気があります。

  • ウェブ: ウェブブラウザを使用して再生するように設計されたゲーム。通常は、オペレーティングシステムに関係なくプレイヤーがゲームにアクセスできるようにするという利点があります。

  • モバイル: 携帯電話、通常はスマートフォンオペレーティングシステムで再生するように開発されたゲーム。モバイルゲームは通常、デジタルアプリストアからダウンロードされ、電話にインストールされます。

前述のシステムに加えて、まだ比較的新しく成長しており、より主要なシステムと比較して市場シェアがはるかに小さい初期システムもあります。このカテゴリのゲームシステムの例には、AR、VR、ゲームストリーミングなどがあります。これはクラウドゲームとも呼ばれます。

ゲームストリーミングでは、クラウドでゲームプレイをレンダリングし、シンクライアント、通常はブラウザにストリーミングします。ゲームストリーミングを使用すると、プレイヤーは完全にリモートでホストされているゲームを、通常はゲームストリーミングサービスプロバイダーによってクラウドでプレイできます。ゲームストリーミングでは、プレイヤーは、クラウドゲームサービスプロバイダー (ゲームシステム) が提供するブラウザまたはシンクライアントを介してクラウドベースのゲームに接続します。

ゲームサーバー

ゲームサーバーは、ゲームのコンピューティングインフラストラクチャの最も重要な側面の 1 つです。専用ゲームサーバーとも呼ばれるゲームサーバーは、マルチプレイヤーゲームの開発時や、ゲームプレイイベントのサーバーによる権威ある処理が必要な場合に使用されます。ゲームサーバーはゲームアーキテクチャの中心にあり、コアロジックが実行される場所として機能します。これには、プレイヤーとゲームの状態の管理、接続されたゲームクライアントとゲームサーバー間のインタラクションの管理が含まれます。ゲームサーバーは通常、ゲームアーキテクチャで最もパフォーマンスの影響を受けやすい要素の 1 つです。ゲームサーバーは、プレイヤーのゲームクライアントからの入力を処理し、接続された他のプレイヤーにリアルタイムで適切に配布する責任があるためです。パフォーマンスの低いゲームサーバーは、ゲームエクスペリエンスの全体的なパフォーマンスに影響します。したがって、ゲームサーバーのパフォーマンスを最適化し、特にゲームの起動時またはゲームプレイのピーク時に十分な容量を提供する必要があります。

このドキュメントでは、ゲームサーバーまたはゲームサーバーインスタンスとは、1 つ以上のゲームサーバープロセスをホストする仮想マシンなどのコンピューティングを指します。ゲームサーバープロセスは、ゲームセッションをホストするゲームサーバービルドの単一のインスタンスを表します。これは、プレイヤーセッションを介してプレイヤーが接続できる実行中のゲームのインスタンスです。このため、ゲームセッションとそれをホストしているゲームサーバープロセスの間に暗黙的な 1 対 1 の関係があるため、ゲームサーバープロセスまたはゲームセッションを互換的に参照することがよくあります。では AWS、コンピューティングがゲームサーバーをホストするための複数のオプションがあり、リソースの伸縮自在なプロビジョニングを通じてスケーラブルなクラウドベースの容量にアクセスできます。

Amazon EC2 は、インスタンスと呼ばれるクラウドベースの仮想サーバーを提供し、Linux および Windows の複数のバージョンをサポートします。インスタンスを作成し、別のサーバーや仮想マシンのように直接管理できます。通常、効率を向上させ、コストを削減するために、複数のゲームサーバープロセスをインスタンスにデプロイします。Amazon EC2 は、コンピューティングインフラストラクチャを最も制御したい場合は、ゲームサーバーに適しています。

Amazon GameLift は、クラウドでの専用ゲームサーバーホスティング用のフルマネージドソリューションと、GameLift FlexMatch によるマッチメーキングなどの追加機能を提供します。GameLift は Amazon EC2 上に抽象化レイヤーを提供し、ゲームサーバー管理を簡単にし、ほとんどの で利用できる AWS リージョン ため、プレイヤーに近いゲームサーバーをホストしてレイテンシーを減らし、高可用性を実現し、スポットインスタンスを使用してコストを大幅に削減できます。GameLift は既存のゲームバックエンドに統合できますが、独自のゲームサーバー管理およびマッチメーキングソリューションを開発したくなく、ゲームの成長に合わせて拡張 AWS できる によって管理されるソリューションを希望するゲーム開発者にとって特に便利です。

Amazon Elastic Container Service (Amazon ECS) は、Docker ベースのコンテナの実行に使用できるフルマネージド型のコンテナオーケストレーションサービスです。Amazon Elastic Kubernetes Service (Amazon EKS) を使用して、Kubernetes を使用して構築された Docker ベースのコンテナを実行することもできます。Amazon ECS や Amazon EKS が提供するコンテナテクノロジーを使用すると、多くのゲームサーバープロセスやその他のゲームアプリケーションインスタンスを EC2 インスタンスに効率的にパッキングすることで、コンピューティング使用率を向上させることができます。

コンテナを使用すると、開発者が開発中にローカルマシンで使用しているのと同じ Docker イメージ操作ランタイムを使用してアプリケーションをホストすることで、開発者の生産性を向上させることもできます。コンテナを実行するためのサーバーレスコンピューティングソリューションであり AWS Fargate、Amazon EKS と Amazon ECS の両方と互換性がある を使用すると、運用オーバーヘッドをさらに削減できます。Fargate は、コンテナが実行される基盤となるインスタンスを運用する責任を負うことなく、コンテナでゲームサーバーを実行するユースケースに最適です。

AWS Outposts を使用してデータセンターまたはオンプレミス施設で AWS インフラストラクチャとサービスを実行できます。これにより、ゲームをオンプレミス環境で実行し AWS 、同じインフラストラクチャを使用してハイブリッドクラウド導入戦略をサポートできます。 AWS ローカルゾーンは の拡張機能として機能し AWS リージョン 、ゲームサーバーやその他のレイテンシーの影響を受けやすいワークロードをプレイヤーや開発チームにより厳密に実行できます。さらに、ゲームサーバーのグローバルネットワークレイテンシーを減らすために、 AWS Global Accelerator を使用してゲームサーバーへのプレイヤートラフィックのパフォーマンスを向上させることができます。

AWS Lambda はサーバーをプロビジョニングまたは管理せずにコードを実行するサーバーレスコンピューティングサービスであり、ターンベースのゲームや軽量コンピューティング要件、小さなコードベース、ステートレスマイクロサービスアーキテクチャを使用してゲームプレイ機能を設計できるゲームサーバーなどの非同期ゲームサーバーのユースケースに役立ちます。Lambda 関数は、長時間実行されるゲームサーバープロセスを実行するのではなく、リクエストごとにイベント駆動型で実行されることに注意してください。Lambda は、基盤となるアプリケーションが開発者がコードのホストから選択できるため、このホワイトペーパーのオプションを最もランタイムに抽象化できます。

ゲームサーバーホスティングのアプローチを選択するときは、運用オーバーヘッド、レガシーコードベース、パフォーマンス要件、スケールなど、さまざまな要件を考慮してください。EC2 インスタンスとコンテナは、従来のコードベースに適したオプションです。クラウドへの移行に必要な変更は最小限で済み、EC2 インスタンスを使用してコンピューティングインスタンスのリソースを専有できます。一方、コンテナを使用すると、管理と高い使用率の実現が容易になります。サーバーレス関数は最高レベルの抽象化を提供します。これを使用して、イベントに応答してのみ実行されるコードを定義できるため、コストを削減できます。

ゲームクライアント

ゲームクライアントは、プレイヤーがゲームのプレイに使用するソフトウェアとハードウェアデバイスを表します。ゲームクライアントは、プレイヤーの入力を処理のためにサーバーに送信されるメッセージに変換するためのソフトウェアを提供し、サーバーからの受信レスポンスを処理し、グラフィックなどの出力をプレイヤーにレンダリングします。リアルタイムのネットワークマルチプレイヤーゲームでは、ゲームクライアントは通常、ゲームプレイセッション中にゲームサーバーへの永続的なネットワーク接続を維持し、ネットワークレイテンシーを減らし、処理時間を最小限に抑えます。ただし、ゲームクライアントは REST を使用してゲームサーバーまたはバックエンドサービスとやり取りすることもできます。

メッセージング

通常、ゲームのメッセージには主に 3 つのカテゴリがあります。 

  • ゲームの招待やプッシュ通知など、特定のユーザーまたはユーザーのグループを対象としたプレイヤーエンゲージメントメッセージング

  • ゲーム内チャットなどのプレイヤー間のグループメッセージング

  • 2 つ以上のアプリケーションを統合するために使用される JSON メッセージなどのService-to-serviceメッセージング

これらのタイプのメッセージを送受信するための一般的な戦略は、パブリッシャーサブスクライブと非同期処理アーキテクチャパターンを使用することです。 は、ゲームでのメッセージングの実装に役立ついくつかのサービス AWS を提供します。

  • Amazon Simple Notification Service (SNS): パブ/サブアーキテクチャパターンを使用してパブリッシャーとサブスクライバーの間でメッセージを配信するためのマネージドサービス。パブリッシャーは、API を使用して Amazon SNS にメッセージを送信します。Amazon SNS は、サブスクライブしているアプリケーションにメッセージを非同期的に配信し、最も広く使用されているプッシュ通知サービスをサポートするモバイルクライアントまたはデスクトップに直接プッシュ通知を配信できます。Amazon SNS は、クライアントへのプッシュ通知やservice-to-serviceメッセージングのユースケースに使用できます。

  • Amazon Simple Queue Service (SQS): それぞれで使用されるプログラミング言語に関係なく、ゲームサーバーとゲームを簡単に統合できるフルマネージドキューサービス。多くのゲームタスクは、データベース内のリーダーボードやプレイタイム値の更新など、バックグラウンドで分離して処理できます。このアプローチは、ゲームのさまざまな部分を切り離し、バックエンド処理からプレイヤー向け機能を独立してスケーリングする効果的な方法です。

  • Amazon Managed Streaming for Apache Kafka (MSK): 一般的なオープンソースソリューションである Apache Kafka を使用してデータストリーミングとプロデューサーまたはコンシューマーアプリケーションの構築を簡素化するフルマネージドサービス。Kafka は通常、リアルタイムストリーミングデータの取り込みと処理に使用され、service-to-serviceメッセージングに使用できます。

  • Amazon ElastiCache (Redis OSS): チャットルームアプリケーションや高性能service-to-serviceメッセージングの開発に一般的に使用される Redis の一般的なパブ/サブ機能のサポートを含む、フルマネージドのインメモリデータストアを提供します。Redis はリストやセットなどの豊富なデータ型もサポートしているため、デベロッパーは Redis を使用して高性能キューイングを実行できます。

  • Amazon Pinpoint: E メール、SMS、音声、プッシュ通知を通じてユーザーエンゲージメントメッセージングを提供します。例えば、Amazon Pinpoint を使用してユーザーエンゲージメントメッセージをプレイヤーに配信し、ゲームに招待したり、多要素認証トークンのサポート、注文確認、パスワードリセット E メールなどのトランザクションユースケースに使用できます。

ライブゲームオペレーション (Live Ops)

ライブゲームオペレーション (Live Ops) は、ゲームをライブサービスとして扱い、起動したゲームに新機能、更新、プロモーション、ゲーム内イベント、改善を継続的に提供して、プレイヤーコミュニティのエクスペリエンスを向上させるゲーム管理とオペレーションのスタイルです。

従来、ゲームは サービスではなく製品として配信され、新しいコンテンツや機能は、起動された製品ではなく後続のリリースや続編に頻繁に組み込まれていました。ゲーム管理に対する Live Ops アプローチを使用すると、ゲーム運用チームは、実験、プロモーション、ゲーム内イベント、イノベーションを通じてゲームを起動し、エンゲージメントの高いプレイヤーコミュニティを維持し、プレイヤーを楽しませることができます。

このアプローチには、新しいプレイヤーエンゲージメント戦略を開拓し、定期的な収益ストリームを提供するという利点がありますが、運用上の専門知識がさらに必要です。例えば、Live Ops 戦略を成功させるには、開発者がクラウドサービスと統合するか、独自のバックエンド技術インフラストラクチャを運用する必要があります。また、プレイヤーエクスペリエンスに悪影響を及ぼす可能性のあるゲーム内またはプレイヤーコミュニティ内で発生する問題を特定して対応するための効果的な方法も必要です。