AWS の知識ゼロから始める AWS GameKit
Author : 鷲見 啓志
ゲーム開発者のみなさま!こんにちは、Game Solutions Architect の鷲見啓志 (@harsm1979)です。
みなさま AWS GameKit というソリューションを聞いたことがありますでしょうか ?「GameKit ってなに ?」というまだ知らない方のために簡単に説明しますと 2022 年の 3 月にサンフランシスコで開催された Game Developer Conference 2022 で発表された新しいソリューションで、ゲーム開発者がゲームエンジンから直接ゲームのバックエンド機能をデプロイし、カスタマイズすることを可能にするソリューションです。ゲーム開発者であればゲームをより面白くすることに注力し、バックエンドの構築にはあまり手間暇をかけたくないと思われる方も多いかもしれません。このソリューションはそんなゲーム開発者の要望を実現するソリューションとなっています。
GDCで発表された内容についてご興味がある方は こちら をご覧ください。
この GameKit の特徴として「カスタマイズ性の高さ」「ゲームエンジンからの使い勝手の良さ」「高速なプロトタイピング」といったことがあげれていますが、さらに一つあげるとすれば「AWS の知識がなくてもゲームバックエンドを簡単に構築できる」といった点があげられるとおもいます。今回はこの特徴にフォーカスし、AWS GameKit を使えば本当に AWS 知識なしでゲームバックエンドが構築できるのか ? 実際に試してみたいと思います。
すでに AWS 知識をバッチリお持ちの方はぜひ こちらの記事 も併せてご覧ください。
GameKit の紹介
今回触れる AWS GameKit について、簡単に紹介しましたが、ここではもう少し詳細に見ておきたいと思います。
AWS GameKit はゲーム開発者がゲームエンジンから直接ゲームのバックエンド機能をデプロイし、カスタマイズすることを可能にするソリューションです。AWS のサービスではなくソリューションのため、マネージメントコンソールで GameKit と打ってみても該当するものは見当たりません。では、どこから利用するのか ? というとゲームエンジンに提供されている AWS GameKit プラグインを通じて、ゲームエンジンから直接 AWS リソースを作成し・デプロイ・設定します。AWS GameKit から作成される AWS リソースは事前に設定した AWS アカウント内に作成され、そのリソースの管理はお客様に実施いただく、セルフマネージドなサービスとなっています。その反面カスタマイズ性が高く、作成されたリソースはお客様によって完全にカスタマイズすることが可能となっています。AWS GameKit を通じて作成される AWS リソースは AWS のベストプラクティスを集約した AWS Well-Architected Framework にそった設計となっています。
AWS GameKit の全体アーキテクチャは上の図のようになっています。ゲーム開発者から指示をうけた AWS GameKit はデプロイする機能毎に準備された CloudFormation テンプレートを起動し、デプロイする機能に必要なリソースを作成します。デプロイが完了すると開発者は準備されたライブラリから API を呼び出すようゲームを実装し、実際に利用を開始することができるようになります。
AWS GameKit が提供する機能は 2022 年 5 月現在以下の 4 つです。
アイデンティティと認証
各プレイヤーに固有の ID を作成し、プレイヤーがゲームにサインインできるようにします。プレイヤーのアイデンティティを照合し、プレイヤーセッションを管理します。
アチーブメント
プレイヤーが獲得したゲーム関連の報酬を作成し、追跡できます。
ゲーム状態のクラウド保存
プレイヤーのゲーム進行状況の同期コピーをクラウドに保存し、セッションをまたいでゲームプレイを再開できるようにします。
ユーザーゲームプレイデータ
インベントリ、統計、クロスプレイの維持といった、各プレイヤーのゲーム関連データを管理します。
* 2022 年 5 月 12 日現在、Unreal Engine 4 で構築された PC ゲーム (Win64, MacOS) とモバイルゲーム (iOS, Andorid) に対応しています。
今回試すこと
この記事は AWS GameKit の AWS 知識がなくてもゲームバックエンドを簡単に構築できるという特徴から「AWS 知識ゼロから始める AWS GameKit」というタイトルとなっていますので、本当に AWS 知識がなくてもバックエンド機能が構築できるのか検証してみたいと思います。
今回はゲーム開発者が AWS のマネジメントコンソールおよび CLI を使わずにバックエンドを構築できれば、「AWS 知識ゼロでも構築できる」としてみたいと思います。
それでは始めてみましょう !
準備 1: AWS アカウントと IAM ユーザーの作成
まずは AWS GameKit から AWS リソースを作る AWS アカウントとそれを操作するための IAM ポリシー・ユーザーの設定を行います。実はここだけは AWS の知識が必要になるのですが、ここはゲーム開発者が行う必要もないので、インフラ担当の人に準備してもらって、ゲーム開発者は AccessKeyID と SecretAccessKey の情報をインフラ担当に準備してもらうと良いでしょう。
インフラ担当の人向けにここでやるべきことをお伝えすると
- 新規アカウントを利用する場合は AWS アカウントを作成する
- 対象 AWS アカウントにて AWS GameKit で利用する権限をまとめた IAM ポリシーを作成する
- IAM ユーザーを準備し、2 で作成した IAM ポリシーを付与する。
- 3 で準備した IAM ユーザーの認証情報から AccessKeyID と SecretAccessKey をゲーム開発者に渡す
ゲーム開発者は AWS 知識ゼロという前提なので、この AccessKeyID と SecretAccessKey は絶対に漏れないように厳重に扱うことを伝えるのは忘れずにお願いします。
設定する IAM ポリシーについては こちら を参照ください。
準備 2 : GameKit の Install
つぎに AWS GameKit を UnrealEngine で利用できるようにしてみましょう。AWS GameKit プラグインを UnrealEngine にインストールしていきます。インストールするには Unreal Engine Marketplace で AWS GameKit プラグインを見つけるか、 AWS GameKit のウェブサイトから直接ダウンロードして、プロジェクト内に展開していきます。
直接ダウンロードした AwsGameKit フォルダをプロジェクトにプラグインとして登録します。プラグインとして登録する際には、プロジェクトのルートに /Plugins/Marketplace フォルダを作成した後、Marketplace フォルダ内にダウンロードして展開した AwsGameKit フォルダをコピーします。
この後、Windows 環境では VisualStudio のプロジェクトファイルを、MacOS 環境では XCode のプロジェクトファイルを作成します。詳細な手順は GitHub に記載されていますので、こちら をご参照ください。
これでインストールは完了です。正しくインストールされていれば、Unreal Editor を立ち上げて、設定 > プロジェクト設定 > AWS GameKit を選択すると、AWS GameKit の設定画面が立ち上がります。
クリックすると拡大します
それではこちらで環境設定を行います。以下の内容を入力してSubmitボタンを押すと環境設定が完了し、AWSアカウントにリソースをデプロイする準備が整います。
- GameTitle : ゲームタイトル
- Environment : 環境名 (Development, QA, Staging, Production と自身で設定した環境から選択)
- Region : AWS リソースを作成する AWS リージョン (日本国内なら Tokyo)
- Access key ID : 準備してもらった Access key ID
- Secret access key : 準備してもらった Secret access key
- store my credentials : チェックする
Submit ボタンを押すとこちらのようになります。もしうまくいかない場合はアウトプットログにログが出力されていますので、出力されたログの内容を確認してください。
クリックすると拡大します
実践 1 : GameKit からバックエンドのデプロイ
それでは現在 AWS GameKit で提供されている 4 つのバックエンド機能を AWS に作成・デプロイしていきます。
まずは「アイデンティティと認証 (Identity And Authentication)」から作成していきます。他の 3 つの機能はこの「アイデンティティと認証」機能が作成されていることが前提となるため、この機能から作成していきます。
実施することはログインメカニズムに何を選択するか ? とダッシュボードを有効化するか ? を選択して Create ボタンをクリックするだけです。AWS の知識は全く必要ありませんね。
クリックすると拡大します
では Create ボタンを押してみましょう。デプロイが始まります。ボタンを押して 3 分程度で作成とデプロイが完了します。
Deployment status が「Deployed」になりました。
クリックすると拡大します
それでは他の 3 つの機能も AWS リソースの作成のデプロイしてみましょう。
画面を見ていただくとわかりますが、設定がほとんど必要ありません。特に何も考えずに「Create」ボタンをぽちぽち押していくだけで大丈夫です。ここでも AWS の知識はもちろん必要ありませんし、マネージメントコンソールや CLI ツールも利用する必要はありません。
クリックすると拡大します
アチーブメントだけ Configure からアチーブメントデータの設定が必要となりますので、動作確認のため 1 つ以上アチーブメントデータを登録しておきましょう。こちらは AWS の知識は必要ありませんが、アチーブメント機能について理解した上で設定いただく必要があります。
アチーブメント機能の詳細については こちら をご覧ください。
クリックすると拡大します
デプロイが完了したらその機能を使い始めることができます。
では実際に準備されている Example を利用して動作確認してみましょう。
実践 2 : GameKit の機能をサンプルから触ってみる
まずはアイデンティティと認証の機能です。ここでゲームのユーザー ID とパスワードを作成しておかないと他の 3 つの機能が利用できないため、ユーザーを作成してみます。
Example は C++ と Blueprint で準備されています。C++ の場合はコンテンツブラウザから「AWS GameKit C++ クラス > AWS GameKit Editor > Public」の下に各機能のディレクトリがあり、ディレクトリ内に各機能の Example の C++ クラスが準備されています。Blueprint の場合はコンテンツブラウザから「AWS GameKit コンテンツ」の下に各機能のディレクトリがあり、ディレクトリないに Blueprint クラスが準備されています。
C++ クラスの場合は、C++ クラスをビューポートにドラッグ & ドロップして詳細ウィンドウから動作確認を行うことができます。Blueprint の場合は、Blueprint クラスをビューポートにドラッグ & ドロップしてプレイすることで画面上に入力ウィンドウが表示されます。
それでは今回は Blueprint で試してみます。
クリックすると拡大します
「Identity」ディレクトリ内の BP_AWSGameKitIdenityExample というクラスをビューポート内にドラッグ & ドロップし、プレイボタンを押すと上記の画面のような入力欄が出てきます。「Register」欄にユーザー名・メールアドレス・パスワードを入力し CallAPI ボタンを押すと、入力したメールアドレス宛に検証コードが送信されます。
「Confirm Email」欄にユーザー名と送られてきた検証コードを入力し、CallAPI ボタンをクリックするとユーザー情報が登録されます。
ユーザー情報が登録されればログインすることができるようになります。「Login」欄でユーザー名とパスワードを入力して CallAPI ボタンをクリックするとログインすることができます。また登録されたユーザー情報を確認するには「Get User」欄の CallAPI ボタンをクリックすると情報を取得することができます。すべて入力した後はこちらのような画面になっているはずです。
クリックすると拡大します
それでは他の機能を利用する準備ができましたので、他の機能も利用してみましょう。今回は紙面の都合でアチーブメント機能に絞ってご紹介してみようと思います。
「Achievement」ディレクトリ内の BP_AWSGameKitAchievementExample というクラスをビューポート内にドラッグ & ドロップし、プレイボタンを押すとこちらの画面のような入力欄が出てきます。
クリックすると拡大します
まずは「Login」欄にユーザー名とパスワードを入力し、ログインします。
「Achievement List」欄の List Achievements ボタンをクリックすると現在登録されているアチーブメントデータが表示されます。表示されたアチーブメントの ID をコピーし、「Get Achievement」で ID を貼り付けて CallAPI ボタンをクリックすると、ログイン中のユーザーの現在のアチーブメントの達成状況を確認することができます。
次に「Update Achievement」でアチーブメントの進捗を進め達成させてみます。ID を入力し、達成に必要なステップ数を Increment By に入力して Call API をクリックすると、Achievement 達成のポップアップが表示されます。
クリックすると拡大します
このようにアチーブメント機能についてはアチーブメントデータの登録が必要ですが、簡単に利用することができるようになっています。他のサービスについても同様に試してみてください。
全ての機能を試してみるとわかりますが、動作確認にはそれぞれの機能についての理解は必要となりますが、AWS に関する知識はなしで実際に使っていただけることがわかるかと思います。
というわけで AWS GameKit のインストールからリソースのデプロイ・動作確認まで、AWS のマネージメントコンソール・CLI ツールを一切触ることなく完了することができました。
AWS の知識はゼロでも AWS GameKit を使い始めることはできるといえそうです。
今後の開発
動作確認は終了しましたが、この後のゲーム開発はどのようにすすめていくのでしょうか ?
Example で利用されているソースコードは こちら で公開されており、誰でも確認することができます。そちらを参考にご自身のゲームに AWS GameKit SDK をつかってバックエンド機能をゲーム内に組み込んでいきます。
また作成された AWS リソースについては必要に応じてカスタマイズすることも可能となっています。お客様の要望にあわせて柔軟にカスタマイズできるのが AWS GameKit の売りの一つですが、カスタマイズするためにはやはり AWS の知識が必要となってきます。
そしてゲームが完成すれば、本番リリースとなりますが、AWS GameKit で作成された AWS リソースについて上限緩和など検討しないといけないことがでてきます。さすがにこのタイミングでは AWS についての知識が必要となってきます。
本番環境でのリリースに向けた準備作業は こちらのドキュメント にまとまっています。
また本番リリース後にはゲームの運用が始まると思います。ゲームの運用で利用する管理ツールは AWS GameKit では準備されていないため、ご自身で作成いただく必要があります。運用中のゲームの負荷状況・利用状況の確認には Amazon CloudWatch の利用も必要となってきます。
このように本番環境での運用に向けて本格的な利用を行うためには、AWS の知識が必要となってきます。
今回の結論
それでは今回のテーマ「AWS の知識ゼロから始める AWS GameKit」と題して AWS GameKit を見てきましたが、本当に AWS 知識がなくてもバックエンド機能が構築できるのか ?という問いに対しての検証結果としては
AWS GameKit を使えばAWS知識がゼロでもバックエンド機能の構築し利用を開始することができます。ただし、本番環境での本格的な運用に向けては AWS の知識が必要になってきます。
という答えとなります。
AWS の知識がない・少ない状態から AWS GameKit をお使いいただき、本番運用開始に備えて徐々に AWS 知識を備えていく、AWS を学ぶエントリーポイントとして非常に最適なソリューションです。実際に生成されるAWSリソースは Well-Architected に設計された非常に参考になる設計になっていますので、AWS を効率的にご活用いただく手助けになるかと思います。
また本番運用の必要のないプロトタイプの作成という用途であれば、AWS の知識がないままそのまま利用することも可能です。バックエンド機能を含んだゲームの高速なプロトタイピングを行うというワークロードには非常にマッチするソリューションとなっています。
AWS を触ってみたいけどよくわからない、サーバーインフラは苦手そんなゲーム開発者が AWS の利用を始める第一歩として、とてもマッチするソリューションだと思いますので、ぜひ一度 AWS GameKit をお試しいただければと思います。
ゲーム開発者向けのその他の記事はこちら
- 選択
- Amazon DynamoDB で作るサーバーレスなゲーム用アチーブメントマイクロサービス
- AWS の知識ゼロから始める AWS GameKit
- Amazon GameLift を使って「最短」でマルチプレイヤーゲームを作る
- Amazon DynamoDB で作るサーバーレスなゲーム用フレンドマイクロサービス
- Amazon GameSparks でインフラを意識せずにゲームのバックエンドサービスを開発しよう
- 魔法で作る Amazon DynamoDB の 簡単ゲームインベントリ
- レベル 1 から作るゲームのクエスト手帳
- サーバーレスなゲームのギルド検索
- 一緒に学び考える ! ゲームの AI/ML 活用
- 3 ステップで始める AI モデル開発 ! 始める前に知っておくべきコト !
- 実践 ! 機械学習でゲームの休眠ユーザーを予測してみよう
- Amazon GameLift Anywhere でサクッとマルチプレイゲームを開発しよう
- ゲーム分析を Amazon Aurora と Amazon Redshift の Zero-ETL 統合ではじめよう
- Amazon Redshift を活用したゲームの行動ログ分析
- Amazon QuickSight によるゲーム分析ダッシュボードの構築
- 品質管理に生成 AI は使えるのか !? テキストチェックを生成 AI にやらせてみた
- 生成 AI を用いたヘルプソリューションを作成する
- 世界に 1 つだけの AI アシスタント作成 ~オリジナルにカスタマイズ
- マルチモーダルな生成 AI 活用の入門編! - 画像認識と画像生成
- Amazon S3 と Amazon CloudFront を活用したグローバル向けゲームビルドバイナリ共有環境の構築
- Terraform を利用した Amazon EKS の構築
- Amazon Bedrock でゲームの BGM を作ってみました !
- Amazon EC2 ではじめる Unreal Engine Pixel Streaming 入門
- Agones on Amazon EKS で構築するマルチプレイゲームの専用ゲームサーバー
- AWS Summit Japan 2024 Game Industry Booth の舞台裏
筆者プロフィール
鷲見 啓志
アマゾン ウェブ サービス ジャパン合同会社
ゲームソリューションアーキテクト
ゲーム業界に特化したソリューションアーキテクトとして、西日本や関西のお客様を支援させていただいております。以前はモバイルゲームの開発・インフラ構築・データ分析やゲームプロデューサー・ディレクターなんかをしておりました。趣味は自転車、いつかは PBP (Paris Brest Paris) を完走してみたいなと思っています。
AWS を無料でお試しいただけます