Amazon Web Services ブログ

Category: Game Development

サーバーレスでスケールするマルチプレイヤーゲームを構築する

本投稿は、Sr.Solutions Architect, Developer Acceleration の Tim Bruce による記事を翻訳したものです。 ゲーム開発は、要件が急速に変化するため非常に繰り返しの多いプロセスです。ゲーム開発者の多くは、可能な限り多くの時間を機能の構築のために費やしたいと思っており、サーバー設定、インフラストラクチャ管理、スケーリング技術の習得に時間を費やしたくないと考えています。 AWS のサーバーレスサービス を利用することで、4つの大きなメリットが得られます。1つ目は、運用オーバーヘッドを削減することで、企画からリリースまでのプロセスを短くします。2つ目は、運用に必要なハードウェアとソフトウェアを過剰にプロビジョニングしないため、コスト削減を実現できる可能性があります。3つ目は、サーバーレスはユーザーのアクティビティに応じてスケールします。最後は、サーバーレスサービスには組み込みの統合機能があるため、サービス統合に労力をかけることなくゲーム開発に集中できます。 AWSを利用するゲーム開発者は、これらのメリットを活用することで、チームがサーバーやソフトウェアのセットアップや保守といった差別化につながらないタスクに時間を費やすのではなく、ゲーム体験の向上やコンテンツ開発により多くの時間を費やすことができます。これにより、ゲーム体験とコンテンツがより良いものとなり、リリースまでの時間も短縮されます。 本ブログ記事では、「サーバーレスファースト」アーキテクチャを持つゲームについて紹介します。 Simple Trivia Service はウェブベースのゲームであり、貴社のゲームにも適用可能な複数のアーキテクチャパターンを持っています。

Read More
Amazon Game Tech

AWS Game Tech: 2020年の振り返り

2020年はこれまでの仕事のスタイルが変化し、これまで当たり前だったことが当たり前ではなくなったことで、ゲーム開発や運用の現場も大きな影響を受けました。そんな激動の日々の中、継続してプレイヤーに質の高いエンターテイメントを提供し続けているゲーム業界関係者の方々に敬意を表します。私たちAWS Game Techもゲーム業界の課題解決に貢献できるよう、これからもより一層努力努力してまいります。 さて、本記事ではAWS Game Techの2020年の活動を通した振り返りと、2020年にリリースされたサービスや機能の中からゲーム業界のお客様におすすめしたいものをいくつかご紹介します。   2020年を振り返る 2020年のソリューションアーキテクトの活動を振り返り、昨年に比べて印象に残った変化を挙げてみました。 マルチプレイゲームの増加 日本でも既存・新規IPによるマルチプレイゲームの開発が進み、これまでの3-Tierアプリケーションアーキテクチャに加え、マルチプレイをホストする専用ゲームサーバーをグローバルで展開するようなアーキテクチャをレビューさせていただく機会が多くなりました。Amazon GameLiftによってUnreal Engine 4のDecicated ServerやUnityのHeadless Dedicated Serverのビルドを複数リージョンでどのようにオーケストレーションするか、またゲームのマッチメイキング要件に応じてFlexMatchのマッチメイクルールをどのように記述するかなど、これまでよりさらにゲーム開発の中身に踏み込んだご支援が多くなっています。   コンテナ利用が増加 新規ゲームタイトルのバックエンドを中心にコンテナで実装するケースが増加しました。これまでEC2インスタンス上でそのまま稼働することが多かったPHPやGoなどのアプリケーションをコンテナ化し、Amazon ECSまたはAmazon EKSによってオーケストレーションを行い、データプレーン(コンテナが実際に稼働する部分)についてはインスタンス管理が不要なFargateを利用いただくケースも多くなってきています。現状はAPIまわりでの利用が多いですが、ステートフルな専用ゲームサーバーでも採用を検討するケースも除々に増えてきております。   ゲーム開発でのクラウド検討が進む 昨年から働き方改革やグローバルでの人材獲得を目的としてゲーム開発のクラウド化を検討する機会はありましたが、今年は各社のリモートワーク採用によってその検討が加速しました。オフィスのワークステーションを自宅からAWS Client VPNによってネットワーク接続したり、AWS上のGPUインスタンス上でワークステーションを実行し、リモート接続することで開発者の作業環境を整え、またPerforceなどのバージョンコントロール、EC2インスタンスによるビルドマシンをAWS上に構築し完全リモートに備えるケースも多くなりました。また、すでにビルドマシンがオフィスで稼働している場合、専用線やVPN接続によってAWSとネットワーク接続し、繁忙期のビルドマシン確保をオンデマンドで行うお客様も増えております。分散ビルドで代表的なIncrediBuildもライセンス面、機能面からAWSとの相性が非常に良い点が評価されています。(IncrediBuildのAWS利用についてはUsing IncrediBuild in AWS、ゲームの分散ビルド on AWSをご参照ください)   ゲームのワークロードで役立つサービス・新機能まとめ AWSは今年も数多くのサービス、機能追加を行いました。その中でもゲームのワークロードで有効だと思われるものをピックアップしてみました。   Amazon RDS Proxyがリリース ゲームではMySQLデータベースに対してコネクションプーリングを利用することも多いと思いますが、そのコネクションプーリングを行ってくれるサービス”RDS Proxy”がGAとなりました。EC2やコンテナなどのアプリケーションはもちろん、Lambdaなどイベント毎に都度コネクションを発生されるような場合にRDS側のリソース量をセーブすることが可能です。また、RDSインスタンスの障害時にもアプリケーションとのコネクションを維持しながらフェールオーバー完了を待つことが可能です。昨年末にLambdaのVPC上での実行においてコールドスタートの解消などが行われましたが、RDS ProxyによるRDS/Auroraへのコネクションプーリングが利用できるようになってさらにゲームのような大規模なワークロードでサーバレスを展開しやすくなりました。 詳細はこちらをご覧ください。   Application Load Balancer (ALB) がエンドツーエンド HTTP/2をサポートし、gRPCの負荷分散が可能に ロードバランサの1つであるALBはこれまでクライアントとの通信でHTTP/2をサポートしていましたが、その先のALBのターゲットとなるEC2インスタンスについてもHTTP/2をサポートしました。これによってゲームでも利用が多いgRPCプロトコルの負荷分散もサポートされることになりました。 詳しくはこちらをご覧ください。   AWS Global […]

Read More

Amazon DynamoDB の使用を開始するためのゲーム開発者ガイド

多くのゲームでデータベースが不可欠の部分であることは周知の事実です。けれども、ゲーム開発者としては、データベースのエンジニアリングではなく、優れたゲームの構築にすべての時間と専門知識を捧げたいでしょう。 わかります。私も、データストレージについて考えるのではなく、コリジョンボリュームの修正、フレームレートの引き上げ、あるいは完璧な制御システムの作成に気をかけたいです。では、それを簡単に行いましょう。この記事では、AWS の高速で柔軟な NoSQL サービスである Amazon DynamoDB を使用して、ゲームにデータベースを追加するのがいかに簡単であるかを示します。 DynamoDB は、キーをデータに関連付ける非リレーショナルデータベースです。データベース、特にゲームでの使用に詳しくない場合は、ゲームでのデータベースの基本的な使用法と、リレーショナルデータベースと非リレーショナルデータベース (ときに SQL と NoSQL と呼ばれる) の違いについて説明したこの記事「素晴らしいゲームのためのマネージドデータベース」をご覧ください。 Dynamo DB テーブルの作成 DynamoDB は、NoSQL データベースですが、SQL データベースから借用した用語テーブルを使用します。この場合のテーブルは、実際にはデータベースに格納されるアイテムの主要な機能を定義したものにすぎません。 DynamoDB には、テーブルを識別するためのテーブルのプライマリキーが常にあり、このキーはデータベースに保存されているすべてのアイテムに対して一意である必要があります。 便利なヒントは、プライマリキーが複数の値のハッシュになる可能性があることです。したがって、単一の一意の属性がない場合は、異なる属性を組み合わせて一意の値を作成できます。たとえば、名前とバージョン番号を持つアイテムです。「broadsword」という名前のアイテムは 10 個あり、「version 1」のアイテムは 100 個ありますが、「broadsword version 1」は 1 個しかありません。 DynamoDB には、オプションで、アイテムをすばやく並べ替えることができるソートキーもあります。たとえば、プレイヤーのソートキーはプレイヤークラスであるかもしれません。これにより、ゲーム内のすべてのファイタークラスのリストを取得するクエリが高速化されることでしょう。データベース内のアイテムを一意に識別するための代替方法でするセカンダリキーを持つこともできます。 このデモでは、プレイヤーキャラクターの属性を表す非常にシンプルなオブジェクトを作成します。オブジェクトには一意のプレイヤー ID、プレイヤーレベル、強さと知力の 2 つの統計が含まれます。プレイヤー ID がプライマリキーになり、このデモ用のソートキーやセカンダリキーはありません。 注意: 自分で練習したい場合は、ソートキーとして機能するプレイヤークラスを追加できます。 DynamoDB テーブルを作成する手順は次のとおりです。 AWS コンソールを開きます。 DynamoDB を検索して選択します。 DyanamoDB コンソールのホームページから [テーブルの作成] を選択します。 […]

Read More

Mistplay: Amazon S3 と Amazon Athena を使ったビジネス分析の改善

本記事は Mistplay のAI エンジニアであるSteven Wang氏によるゲスト投稿です。 Mistplay はモバイルゲーマー向けの世界トップクラスのロイヤルティプログラムです。数百万人のプレイヤーが Mistplay を使用して新しいゲームを発見し、ロイヤルティ報酬を獲得し、他のプレイヤーとつながっています。このプラットフォームにより、Playtika、Scopely、Peak などのモバイルゲームスタジオは、世界中のユーザーを獲得し、それらのユーザーと深く関わることができています。   Mistplay が AWS に移行した理由 Mistplay では十分な情報に基づいた意思決定を行い、計算されたリスクを取るにあたり、データに大きく依存しています。  Mistplay の Android アプリケーションは、ユーザーのインタラクションをキャプチャする大量のイベント情報を生成するため、チームにとって不可欠なデータソースとなっています。このデータは不可欠であり、ビジネス上の主要な疑問に答え、当社が可能な限り最高のユーザーエクスペリエンスを作る上で重要な役割を果たしています。 従来、Android アプリケーションは Firebase にイベントデータを送信するように設計されていました。そこから、デフォルトで利用可能な統合機能を使ってFirebase と BigQuery を統合し、 BigQuery でイベントデータを公開し、詳細に分析していました。 しかし当社のビジネスが成長するにつれ、既存のソリューションでは対処できないいくつかの課題に直面しました。たとえば、品質上・精度上の問題が増加し、処理データに影響を与えていることに気付きました。さらに、インフラストラクチャに対するコストが当社のビジネスと同じくらい急速に増加していました。料金モデルは理解しにくく、当社の使用パターンだと予想外に高額な請求が発生することがよくありました。 当社のデータが新しいホームを必要としていることは明らかでした。当社のイベント分析を AWS に移行することは自然な選択でした。当社では既に Amazon S3 と Amazon Athena を主要なデータレイクとして使用していたためです。  さらに、ツール類を1つのサービスセットで統合し、分析タスクを合理化し、AWS の下で既に実施されている既存のセキュリティ対策を活用したいと考えていました。最後に、AWS の明瞭な料金モデルのおかげで、予算作成が簡単に行えました。 本投稿では、Firebase と BigQuery から Amazon S3 および Amazon Athena に移行した方法と、分析機能、コスト構造、およびオペレーションがどのように改善されたかを説明します。   移行戦略 […]

Read More

AWSを使った Apocalypse Studio のクラウド移行

本ゲスト投稿では、Apocalypse Studio の創設者である Denis Dyack 氏にお話を伺います。Dyack 氏は、ゲーム開発に長く携わっており、「ケイン・ザ・バンパイア」、「エターナルダークネス 招かれた13人」、「メタルギアソリッド ザ・ツインスネークス」、「トゥー・ヒューマン」などのタイトルの開発に携わった経験があります。Dyack 氏はまた、コンピュータサイエンスの経歴を持ち、人工知能、ニューラルネットワーク、ユーザーインターフェイスの修士号を取得しています。 オンタリオ州ナイアガラに拠点を置く Apocalypse は、ゲームスタジオのスタートアップ企業です。クラウドファーストのアプローチを採用することで、ゲームのプレイ方法を変革することを目指しています。オンラインマルチプレイヤーエクスペリエンスを創造し、世界中のプレイヤーを繋げ、楽しませることを目指しています。 私はゲーム業界で 30 年以上にわたり、エターナルダークネス、メタルギアソリッド ザ・ツインスネークス、トゥー・ヒューマン など、従来のゲーム機向けタイトルに取り組んできました。その間、ゲーム業界と、ゲーム開発のために私たちが使用するテクノロジーは、劇的に変化しました。2018 年に Apocalypse Studio を創業したとき、当社は全く新しい、クラウドを見据えた視点が必要であることが分かっていました。 当社のスタジオと最初のタイトルである Deadhaus Sonata は、まさにクラウド上で構築されています。COVID-19 が広まりだした頃、当社は社内カスタムビルドサーバーを備えた従来のオフィススペースから、AWS で構築したクラウド上のスタジオに移行しました。それが非常にうまく行ったため、2020年7月中旬にオフィスを永久的に閉鎖しました。今では、従業員がリモートで無期限に快適に働けるようにサポートできるようになりました。   クラウドを理解する クラウドはゲームに多大な経済的影響を与えました。10年以上前に私は、クラウドの社会的・経済的価値はコモディティ化により従来のプレミアムビジネスモデルよりも高くなると提言してきました。 現在、free-to-play (F2P) オンラインゲームは、世界全体のゲーム収益の 86% を占めています。 クラウドファーストの企業になるために、当社は一から取り組む必要があり、自社のエンジンから始めました。当社はソーシャルメディアと深く統合された最高品質のゲームを作るため、クラウド向けのゲームを制作したいと考えていました。当社は、サポート、コスト、機能、長期的見通しについて、あらゆるエンジンを比較しました。当社の場合これらのカテゴリを組み合わせると、Amazon Lumberyard が、その他のすべてのエンジンを上回っていました。Amazon Lumberyard を選択したことで、当社のクラウド移行を推進し成功させるのに役立ったいくつかのメリットがありました。 Amazon Lumberyard を使うことが決定した後、当社はすぐに AWS Game Tech 内の複数のグループと関係を構築しました。これらのチームと、構築プロセス、手続き型生成、ビデオゲームの未来などについて熱心に議論しました。また、当時は現実離れしていると思われた、本番プロセス全体をクラウドに移行する可能性についても議論しました。   当社のクラウドへのジャーニーの推進 話を2020年3月まで進めます。当社はサンフランシスコで開催される Game Developers Conference (GDC) に向けて準備をしていました。当社は、丁度  Deadhaus Sonata のMemento […]

Read More

Perforce Helix Core を AWS 上に構築する (Part3)

イントロダクション 3回にわたるAWSでのPerforce構築シリーズもこれで最後になりました。 Part1ではAWS 上で Perforce Helix Core を構築することの利点と技術的ポイントを俯瞰しました。 前回のPart2では AWS CloudFormation を用いてPerforceサーバーを構築する方法を解説しました。 今回のPart3では、Part2の手順7、CloudFormationの設定において「Enable Replica」をYesにしてReplica Serverの構築を有効にした場合のReplica ServerのSetup手順を紹介します。 Part2の手順で、Master Serverのみの構築を希望した場合は、こちらの手順は必要ありません。 もちろん、もう一度前回の記事の手順を最初からやり直して、Replica構築を有効にして、本記事の手順を実行していただくこともできます。 さて、実際の Replica server の構築手順ですが、これはAWS特有というわけではなく、Perforceの通常の構築手順に従って手動でコマンドを実行して行くというものになります。 それでは実際に手順を見ていきましょう! 事前準備 こちらのPart2の手順を実行していることが前提になります。実行されていない方はまずは前回の記事の手順を実行し、その際に必ず「手順7」の「Enable Replica」をYesにして有効にします。 こちらを参考にして東京リージョンで任意の名前のS3バケットを用意しておいてください。S3バケットの名前は全世界で一意の名前にする必要があります。 例えば次のようなS3バケットの名称にすると他のバケット名との衝突を避けることができます。 (例) perforce-test-[自分の名前]-[日付] など Replica Serverをセットアップする Replicaの動作を定義するには、Perforceのコマンドである“p4 configure set”コマンドを使用して、Master serverのdb.configファイルに構成情報を入力する必要があります。Replicaを作るにはまず最初にMaster serverを設定します。Master serverの設定が、後でReplica serverに複製されます。 Mater Server側で設定を行う まずは、Master Serverにsshログインします。下記では適宜、自分のssh keyとEIPアドレスに置き換えてください。 $ ssh -i ~/.ssh/general-key.pem p4admin@18.180.250.162 前回Part2でp4adminユーザーをサーバー側に作成していない場合は作成します。作成済みの場合はスキップして次に進みます。下記のコマンドを実行するとviが起動しますので内容を確認して、「:wq」をタイプして保存します。 [p4admin@master ~]$ p4 […]

Read More

Perforce Helix Core を AWS 上に構築する (Part2)

イントロダクション 前回の記事では AWS 上で Perforce Helix Core を構築することの利点を説明し、実際の構成パターンと構築における注意点を解説しました。 本記事では、実際に Perforce Helix Core をAWS に構築する手順をご紹介します。手順といっても AWS CloudFormation テンプレートを用意しておりますので、大部分は自動化されています。AWS CloudFormation では、設定をjsonやyamlでファイルに記述するだけでAWS のリソースのプロビジョニングを自動化することができます。 今回作成するサーバー構成の全体像は下図のようになります。AWS Cloudと書かれた中にあるサーバ群を設定します。デフォルトは Perforce の Master Server だけを構築する設定になっていますが、手順の中で Read only の Replica server を設定することも可能です。今回はインターネットから直接アクセスできるPublic Subnetにサーバーを配置していますが、Private Subnetにサーバーを配置して、VPNや AWS Direct Connect を介してオフィスやデータセンタのみからアクセスできる閉域にすることも可能です。 本記事では、まずは Perforce の Master server を構築する手順を見ていきます。次の Part3 の記事で、Replica server の構築手順を紹介します。Replica server の設定では、いくつか手動でコマンドを実行していただく必要があります。 なお、今回構築する Perforce Server への接続には […]

Read More

Perforce Helix Core を AWS 上に構築する (Part1)

みなさんお元気ですか? 今年からゲーム開発のコンサルティングパートナーや ISV といったテクノロジーバートナーと AWS との連携強化を担当している AWS ソリューションアーキテクトの保里 善太です。 ところでみなさん、Perforce Helix Core はお使いですか? Perforce は高速な同期操作を特徴とする商用のバージョン管理システムであり、主にゲーム業界等の開発現場で多く利用されています(導入企業)。 多くの現場では Perforce はオンプレミスのマシンで稼働していますが、この記事では AWS 上で Perforce を構築することの利点を解説し、実際の構成案と構築方法を紹介します。構築にあたっては AWS CloudFormation テンプレートも用意しています。Perforce の導入にあたっては無料の Perforce Helix Core Studio Pack for AWS というプログラムも用意されてます。 3回に分けてシリーズ化してお送りします。   Perforce Helix Core とは? バージョン管理システム (VCS) の代表的なものとして、Git、Subversion (SVN)、CVS、Mercurial、そして Perforce などがありますが、それぞれには特徴的な性質があります。バージョン管理システムには、大きく分けてソースコード等を中央集権的にマスターサーバで管理する集中型 (Subversion、CVSなど) と各開発者のローカル PC にソースコードを保存し必要な時に共有する分散型 (Git、Mercurialなど) とに大きく分かれます。この中で Perforce Helix Core […]

Read More

[AWS Black Belt Online Seminar] Amazon GameLift 資料及び QA 公開

先日 (2019/10/09) 開催しました AWS Black Belt Online Seminar「 Amazon GameLift 」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20191009 AWS Black Belt Online Seminar Amazon GameLift AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. 接続までの模式図において、既に接続先のインスタンスが存在する場合は①〜⑤のステップは省略される場合もあるのでしょうか? A. 省略される場合もありますが、限定的になります。既にゲームセッションへの接続情報を取得しており、プレイヤーセッションの作成も完了している場合に限ります。接続情報を取得していない、もしくは取得していてもプレイヤーセッションを作成していない場合は、既にゲームセッションが存在していても、ゲームセッションの検索・情報の取得(searchGameSessions API や describeGameSessions API など)やプレイヤーセッションの作成(createPlayerSession API など)を Amazon GameLift サービスに依頼する必要があり、①〜⑤のステップを順に処理します。 Q. クライアントサービスは、例えばゲーム機のOSに入るイメージでしょうか。それともゲーム機(ゲームソフトウェア)からインターネットを介してアクセス可能なサーバ(例えばEC2など)を別途立てる形でしょうか? A. 後者になります。クライアントサービスは、ネットワーク越しにバックエンドのサーバーとして設置いただくコンポーネントとなります。ネットワークを介してアクセスできるサーバーであれば、仮想サーバ、コンテナ、サーバーレスといったコンピューティングの形式に依らずに配置できます。 Q. キューとエイリアスを併用する場合、エイリアスはゲームサーバとキューの間にFleet毎に配置する形となるのでしょうか? A. はい、詳細にはエイリアスは予め使用するフリートに紐づけておき、エイリアスとしてキューの送信先リストに追加する形になります。エイリアスはフリートの参照先を簡単に切り替えられることから、GameLift ではキューにおいてもエイリアスを使用することを推奨しています。 Q. フリートの切り戻しは可能でしょうか? A. 可能です。参照先を切り替える前のフリートを残していれば、エイリアスの変更などで参照先を新しいフリートから古いフリートに切り替えることで、元の状態に戻せます。また、切り替える前のフリートを削除してしまっても、そのフリートをデプロイしたときに使用したビルドが GameLift 上にあれば、再度デプロイを行うことで同じバージョンのフリートを準備できます。 — 今後の AWS […]

Read More
Amazon Game Tech

【開催報告】Game Tech Night #16 ~Lightning Talks~ / 次回は10/30大阪開催

こんにちは、ゲームソリューションアーキテクトの 畑史彦 です。 9月19日に第16回となる Game Tech Night を開催致しました。 Game Tech Night は、オンラインゲーム開発と運用に携わる開発者やインフラエンジニアを対象に、ゲームに関連する技術情報や AWS サービスの情報をお届けするイベントです。最近では概ね 1,2 ヶ月に1度くらいの頻度で定期開催しています。この第16回では特に特定のテーマを決めずに複数の LT を実施しました。

Read More