1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】Amazon GameLift Streamsを使ってみた

1
Last updated at Posted at 2026-08-11

概要

今回はAmazon Gamelift Streamsを用いて「Unreal Engineサンプルゲーム」をアップロードし、Webブラウザからプレイできる環境を構築してみようと思います。

構築に使用したサービス

PC環境:Windows 11
クラウドサービス:AWS ※アカウントを持っている前提
Webアプリ実行環境:EC2(Amazon Linux)
ゲームエンジン:Unreal Engine 5.8

Amazon Gamelift Streamsとは

「Amazon Gamelift Streams」(以下、Gamelift Streams)とは、映像や音声からバックエンドまでほとんどの処理を担当できるクラウドサービスです。

【メリット】
ブラウザを通してゲームをプレイすることができるため、高性能なゲーミングPCを用意する必要なく、高品質なゲームをプレイすることができます。

【デメリット】
インターネットと常に繋がっている必要があるため、帯域幅を要求されることや多少のラグが発生してしまうことがデメリットとなってしまいます。

Amazon GameLift Serversについて

似たようなサービスで「Amazon Gamelift Servers」というものがありますが、こちらはゲームのバックエンドの処理を肩代わりできるクラウドサービスとなります。例えばFPSゲームの場合、プレイヤー側でゲームの映像や音声の処理を行い、各プレイヤーの体力や被弾ダメージ等の計算はGamelift Serversで処理できます。その分、プレイヤー側はゲームを処理できる高性能なPCを準備する必要があります。

手順①:サンプルゲームの取得

I. 下記Unreal Engine公式サイトにアクセスし、「Epic Games Launcher」をインストール後、「Unreal Engine」をインストールします。バージョンはいくつかありますが、今回は現状最新の5.8を選びました。

II. Unreal Engineを起動後、左側メニューから『New Project』をクリックし、サンプルゲームを作成します。

スクリーンショット 2026-08-08 094610.jpg

III. サンプルゲーム一覧が表示されます、今回は「Vehicle(車)」を選択しました。『Project Location(保存先)』と『Project Name(フォルダ名)』を設定し、『Create』をクリックします。

スクリーンショット 2026-08-08 095038.jpg

IV. 下記のようにゲームを編集する画面が表示されれば、作成完了です。続けてゲームデータの「パッケージ化(実行ファイルの作成)」を行います。

image.png

V. 上側メニューから『Platforms』>『Package Project』を選択し、「PACKAGE FOR」が「windows」に設定されていることを確認し、『Package Project』をクリックします。

1.jpg

VI. 保存先を指定するとパッケージングが開始され、画面左下に「Packaging project for Windows..」とメッセージが表示されるので、完了するまで待ちます。(筆者の場合は約1時間かかりました)

image.png

VII. 「Packaging complete!」のメッセージが表示されれば、パッケージング完了です。保存先で指定したフォルダの中を確認すると、「<プロジェクト名>.exe」を含めたゲームデータが保存されています。

image.png

image.png

手順②:S3にアップロードする

GameLift StreamsはS3(クラウドストレージサービス)のデータを参照することで専用のアプリケーションを作成できるので、事前にS3へ対象のサンプルゲームをアップロードします。

注意:この後も含めてAWSサービスをいくつか作成しますが、全て同じリージョン(例:ap-northeast-1など)で作成してください。特に「Amazon GameLift Streams」は使えるリージョンが限られているので、事前に確認することをおすすめします。

I. 「Amazon S3」>「汎用バケット」を開き、『バケットを作成』をクリックします。

スクリーンショット 2026-08-06 221345.jpg

II. 『バケット名』を入力します。

スクリーンショット 2026-08-06 221102.jpg

III. 画面最下部までスクロールし、『バケットを作成』をクリックします。

スクリーンショット 2026-08-06 221851.jpg

IV. バケットが作成されたら、『アップロード』をクリックします。

スクリーンショット 2026-08-06 222343.jpg

V. 「手順①」で取得したデータを全て『ドラッグアンドドロップ』、または『フォルダを追加』からアップロードし、画面右下の『アップロード』をクリックします。

スクリーンショット 2026-08-06 223550.jpg

VI. 「アップロードに成功しました」のメッセージが表示されれば、S3へのアップロードが完了です。

スクリーンショット 2026-08-06 230322.jpg

手順③:GameLift Streamsに「アプリケーション」を作成する

I. 「Amazon GameLift Streams」>「アプリケーション」を開き、『アプリケーションを作成』をクリックします。

スクリーンショット 2026-08-08 220707.jpg

II. 「ランタイム設定」は今回はデフォルトで設定されている「Microsoft Windows Server 2022 Base」のままで大丈夫です。

image.png

III. 画面をスクロールして「全般設定」より、『簡単な説明(アプリケーション名)』『ベースパス』『実行可能な起動パス(exeファイル)』を入力・設定します。『ベースパス』と『実行可能な起動パス(exeファイル)』は右側にある『S3を参照』をクリックすることで指定することもできます。

スクリーンショット 2026-08-09 122648.jpg

IV. 設定が完了したら、『アプリケーションを作成』をクリックします。

スクリーンショット 2026-08-09 122754.jpg

V. 「アプリケーション設定が完了しました」のメッセージが表示されれば、「アプリケーション」の作成は完了です。続けて『ストリームグループを作成』をクリックします。

スクリーンショット 2026-08-09 123134.jpg

VI. 「ストリームグループを定義」が表示されるので、『簡単な説明(グループ名)』を入力し、画面右下の『次へ』をクリックします。

スクリーンショット 2026-08-09 123510.jpg

VII. 「ストリームクラス」を選択する必要がありますが、今回はそこまでスペックが高くなくてもいいので『gen4n_win2022』を設定し、『次へ』をクリックします。

スクリーンショット 2026-08-09 123844.jpg

VIII. 先ほど作成した「アプリケーション」を選択し、『次へ』をクリックします。

スクリーンショット 2026-08-09 124652.jpg

IX. 「場所と容量を設定」よりロケーションを選択しますが、今回はデフォルトで設定されているもの(東京)で問題ないため、このまま『次へ』をクリックします。

image.png

スクリーンショット 2026-08-09 125743.jpg

X. 内容を確認し、問題なければ『ストリームグループを作成』をクリックします。

スクリーンショット 2026-08-09 130520.jpg

XI. 「ストリームグループのアクティブ化が完了しました」のメッセージが表示されれば、ストリームグループの作成が完了です。

image.png

テストストリームを実行してみる

I. 「Amazon GameLift Streams」>「テストストリーム」を開き、先ほど作成した「ストリームグループ」を選択し、「ストリームグループを選択する」をクリックします。

スクリーンショット 2026-08-09 131849.jpg

II. テストプレイする「ストリームグループ」と「アプリケーション」等の設定が表示されるので、問題なければ画面右下の『テストストリーム』をクリックします。

スクリーンショット 2026-08-09 132321.jpg

III. アップロードしたゲームサンプルが表示されれば、テストストリーム成功です。

2.jpg

手順④:EC2インスタンスを作成する

GameLift Streamsにアップロードしたゲームを、インターネットから一般の人でもプレイできるようにWebアプリを準備します。まずはWebアプリを配置するEC2インスタンス(クラウド仮想サーバーサービス)を作成します。

I. 「Amazon EC2」>「インスタンス」を開き、『インスタンスを起動』をクリックします。

スクリーンショット 2026-08-11 154322.jpg

II. 『名前とタグ』を入力します。「アプリケーションおよびOSイメージ」と「インスタンスタイプ」はデフォルト設定のままにします。

スクリーンショット 2026-08-09 180937.jpg

image.png

III. SSH接続を行うため、『キーペア』を設定します。新規で作成する場合は「新しいキーペアの作成」を選択して作成します。SSHキーファイル(.pem等)はインスタンスにWebアプリデータをアップロードする際に利用します

image.png

新しいキーペアの作成方法

『キーペア名』を入力し、『キーペアのタイプ』『プライベートキーファイル形式』を選択後、『キーペアを作成』をクリックします。
「RSA」より「ED25519」の方が新しく(セキュリティが高い)、Windows標準のOpenSSHを利用する場合は「.pem」を設定するとよいらしいです。

スクリーンショット 2026-08-11 180435.jpg

IV. 「インスタンスを起動」をクリックし、インスタンスを作成します。

image.png

V. 「インスタンスの起動を正常に開始しました」のメッセージが表示されれば、インスタンスの作成が完了です。

スクリーンショット 2026-08-09 182333.jpg

VI. 作成したインスタンスを選択し、右上側メニューから『接続』をクリックします。

スクリーンショット 2026-08-11 155839.jpg

VII. デフォルトで「EC2 Instance Connect」が選択されているので、そのまま『接続』をクリックします。

スクリーンショット 2026-08-09 220252.jpg

VIII. ターミナルが表示されれば、インスタンスに接続完了です。コマンドを打ち込んで環境(Node.js)を準備します。

スクリーンショット 2026-08-09 221231.jpg

IX. 下記のコマンドを入力し、Node.jsをインストールします。最後のコマンドでバージョンが表示されれば、インストール完了です。

sudo yum update
sudo yum install nodejs npm
sudo node -v # 「v18.20.8」のようにバージョンが表示される
Node.jsとは

Node.jsとは:Javascriptファイルを実行するために必要なバックエンドサービスだと思ってます。今回の場合server.jsファイルを実行し、HTTPサーバーを構築するために使用します。

手順⑤:IAMロールの更新

EC2からGameLift Streamsなどの他のサービスにアクセスする場合、「IAMロール」を設定してアクセス権を付与する必要があります。

I. 作成したインスタンスを選択し、右上側メニューから「アクション」>「セキュリティ」>『IAMロールを変更』をクリックします。

5.jpg

II. 『新しいIAMロールを作成』をクリックします。

スクリーンショット 2026-08-11 120526.jpg

III. 「ロールを作成」の画面が表示されるので、右側の「ステートメントを編集」>「サービスを選択」に GameLiftと入力し、『GameLift Streams』をクリックします。
4.jpg

IV. 「アクセスレベル」が表示されるので、『All actions』を選択します。その後、「リソースを追加」>『追加』をクリックします。

スクリーンショット 2026-08-11 121638.jpg

V. 「リソースのタイプ」を『All Resources』に設定し、『リソースを追加』をクリックします。

スクリーンショット 2026-08-11 122412.jpg

VI. 『ロールを作成』をクリックします。

スクリーンショット 2026-08-11 122616.jpg

VII. 作成したロールが自動で選択されるので、そのまま『IAMロールの更新』をクリックします。

スクリーンショット 2026-08-11 123015.jpg

VIII. 「インスタンス(インスタンスID)に正常にアタッチしました」のメッセージが表示されれば、IAMロールの更新完了です。

スクリーンショット 2026-08-11 124136.jpg

IAMロールを更新しなかった場合

サーバー側に「Could not load credentials from any providers」とエラーメッセージが表示され、ブラウザからGameLift Streamsにアクセスできない状態となります。

image.png

手順⑥:セキュリティグループの更新

ユーザーがWebアプリにアクセスできるように、セキュリティグループから特定のポート(8000)を許可します。

I. 作成したインスタンスを選択し、「セキュリティ」>『セキュリティグループ』をクリックします。

スクリーンショット 2026-08-11 162022.jpg

II. 『インバンドルールを編集』をクリックします。

スクリーンショット 2026-08-11 163057.jpg

III. 左下の『ルールを追加』を選択し、「カスタムTCP:8000」を追加します。その後、『ルールを保存』をクリックします。

スクリーンショット 2026-08-11 163403.jpg

IV. 「セキュリティグループで正常に変更されました」のメッセージが表示されれば、更新完了です。

image.png

手順⑦:EC2にWebアプリ(GameLift Streams SDK)をアップロードする

EC2に配置するWebアプリを準備します。今回は「GameLift Streams SDK」に付属で付いているサンプルWebアプリを利用してみます。

I. 下記GameLift Streams公式サイトにアクセス後、「Web SDK bundle」をクリックし、「AmazonGameLiftStreamsWebSDK-v<最新バージョン>.zip」をダウンロードします。

スクリーンショット 2026-08-09 172950.jpg

II. ダウンロードしたzipフォルダを展開すると、下記画像のデータが入っており、「GameLiftStreamsSampleGamePublisherService」フォルダがサンプルWebアプリのデータになります。

image.png

Webアプリの画面を確認

「GameLiftStreamsSampleGamePublisherService」>「public」>「index.html」を開くと、「Stream Demo - Configuration」とタイトルが記載されたWebアプリが起動します。「Stream Group ID」「Application ID」「Placement Locations」を入力するため、利用する際は「手順③」で作成したストリームグループやアプリケーションのIDが必要になります。

image.png

III. 「コマンドプロンプト」を起動し、下記のコマンドを入力してEC2インスタンスにWebアプリをアップロードします。

cd <ダウンロードしたSDKフォルダのパス>
scp -r -i <SSH鍵のパス> GameLiftStreamsSampleGamePublisherService ec2ユーザ名@接続先IPアドレス:<保存先のパス>
# 例)scp -r -i C:\Users\mrt\.ssh\SshTestKey.pem GameLiftStreamsSampleGamePublisherService ec2-user@210.10.10.10:/home/ec2-user/

IV. EC2インスタンスのターミナルに戻り、lsコマンドで指定した保存先のパスに「GameLiftStreamsSampleGamePublisherService」が表示されれば、アップロード完了です。

スクリーンショット 2026-08-09 230917.jpg

手順⑧:WebアプリからGameLift Streamsにアクセス

I. EC2インスタンスのターミナルで下記のコマンドを入力し、Webアプリを起動します。

cd GameLiftStreamsSampleGamePublisherService
npm install
node server.js

II. ブラウザに「http://<パブリック IPv4 アドレス>:8000」を入力すると、「Stream Demo」とタイトルのついたWeb画面が表示されます。

スクリーンショット 2026-08-11 110303.jpg

III. 「Stream Group ID」「Application ID」「Placement Locations」を入力し、「Click To Start」をクリックします。

スクリーンショット 2026-08-11 110558.jpg

「Stream Group ID」と「Application ID」について

「Stream Group ID」はsg-から始まる識別子です。「Amazon GameLift Streams」>「ストリームグループ」>「自分が作成したストリームグループ」の「ストリームグループID」から確認およびコピーすることができます。

スクリーンショット 2026-08-11 112732.jpg

「Application ID」はa-から始まる識別子です。「Amazon GameLift Streams」>「アプリケーション」>「自分が作成したアプリケーション」のタイトルから確認できるので、選択してコピーしましょう。

スクリーンショット 2026-08-11 114347.jpg

IV. アップロードしたゲームがプレイできれば、接続完了です。

image.png

今後の展望

①EC2インスタンスとGameLift Streamsのリージョンが異なると、「CreateStreamSession -> StartStreamSession ERROR: Error: getaddrinfo ENOTFOUND gameliftstreams.us-east-1.api.aws」とエラーが発生してしまう

②Webアプリのhtmlとjavascriptがどのような仕組みで動いていたのかを調査

③AWS上での設定を全てGUIで行っていたので、AWS CLIを用いて設定をしてみる

参考Webサイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?