Category: Amazon GameLift*


発表: Amazon GameLift がすべての C++ と C# ゲームエンジンをサポート

すべてのゲーム開発者の方にお知らせします。数週間前にサンフランシスコで行われた GDC 2017 は大人気でした。そのため、クールなゲームの学習と構築に刺激を受け、情熱を注ぐには今が最適なタイミングです。ここで、Amazon GameLift がすべての C++ と C# ゲームエンジンで利用可能になったことをお知らせします。これには、Amazon Lumberyard、Unreal Engine、Unity が含まれ、そのすべてでゲームセッションのマッチング機能が向上しています。Amazon GameLift に詳しくないお客様向けに、ゲーム開発者が楽しく革新的なオンラインゲーム体験を提供できるよう支援するために設計された、このマネージド型サービスについてご紹介します。

Amazon GameLift は、専用ゲームサーバーをホストするためのマネージド型の AWS のサービスで、ゲーム開発者が簡単にゲームのキャパシティーをスケールし、利用可能なゲームセッションでプレイヤーをマッチングできるようにします。Amazon GameLift を使用すると、サーバーのホスト、ゲームの可用性の追跡、分散サービス拒否 (DDoS) 攻撃からのゲームサーバーの防御が可能なほか、ゲームをオフラインにすることなくアップデートをデプロイできます。Amazon GameLift サービスは Amazon Game Studios の専用ゲームサーバーや外部のゲーム開発顧客に役立ち、指定された時間内に開始、終了するゲームループで、セッションベースのゲームをサポートするよう設計されています。最新の Amazon GameLift リリースではサービスの最新機能が強化されているほか、開発者向けにゲームの開発とデプロイの簡略化を支援する優れた新機能が追加されています。Amazon GameLift サービスのクールな機能のいくつかについて見てみましょう。

  • 複数エンジンのサポート: 当初、Amazon GameLift サービスは Amazon Lumberyard ゲームエンジンのみで使用できました。現在、このサービスは強化され、Unreal EngineUnity のような一般的なゲームエンジンをはじめ、カスタム C# と C++ ゲームエンジンと統合されます。
  • 新しいサーバー SDK 言語のサポート: より多くのお客様と開発者をサポートするため、このサービスでは C# と C++ で利用できる Amazon GameLift Server SDK が提供されます。これには、Amazon GameLift 用の Unreal Engine API と互換性のある、カスタマイズされたバージョンの C++ Server SDK である Unreal Engine プラグインが含まれています。
  • クライアント SDK 言語サポートの拡張: Amazon GameLift Client SDK は 多数の言語で提供されている AWS SDK にバンドルされました。これにより、ゲーム開発者は選択した言語で Amazon GameLift サービスが統合されたゲームクライアントを構築できます。
  • マッチメーキング: Amazon GameLift は世界中の利用可能なゲームサーバーを継続的にスキャンし、プレイヤーのリクエストにマッチングしてゲームに参加させます。低レイテンシーのゲームサーバーが利用できない場合は、プレイヤーの周囲にキャパシティーを自動的に追加するようサービスを設定できます。Amazon GameLift は新しいゲームが開始されるか新しいインスタンスが起動するまで待機中のプレイヤーのキューを維持してから、待機中のプレイヤーを最もレイテンシーが低いゲームに配置します。
  • プレイヤーデータの処理: ゲーム開発者はカスタムプレイヤー情報を保存し、ゲームサーバーに直接渡せるようになりました。これにより、ゲームサーバーまたは API を持つその他のゲームエンティティは、Amazon GameLift からプレイヤーデータを取得できます。
  • コンソールのサポート: Amazon GameLift は、XBox One および PS4 用に開発、作成されたゲームをサポートします。

Amazon GameLift はセッションベースのマルチプレイヤーゲームの作成に必要であった手間のかかるタスクを、ゼロからのインフラストラクチャの構築に関連する時間、コスト、リスクを減らしつつ、ゲームサーバーのデプロイ、スケーリング、維持のプロセスを簡略化することで実行します。Amazon GameLift を利用するゲームソリューションのリファレンスアーキテクチャを次に示します。

 

ゲームへの Amazon GameLift の統合
ゲームビルドへの Amazon GameLift の統合はいくつかの簡単なステップに分割できます。

  1. Amazon GameLift Server SDK を使用してゲームサーバープロジェクトを設定し、プロジェクトに通信コードを追加して、ゲームサーバーで Amazon GameLift のホスティングを準備します。
  2. ゲームデプロイの対象とした AWS リージョンに対してゲームサーバービルドをパッケージ化し、アップロードします。
  3. ゲームをホストするための複数のコンピューティングリソースを作成、構築します。
  4. AWS SDK と Amazon GameLift API を使用して Amazon GameLift によって維持されるゲームセッションに接続するようゲームクライアントを準備し、Amazon GameLift サービスへの呼び出しのゲームクライアント用のコードを追加して、プレイヤーのリージョンを識別します。
  5. Amazon GameLift でホストされたゲームセッションに接続し、ゲームセッションを作成中であることを確認して、Amazon GameLift の統合をテストします。

Unreal ゲームエンジンを使用して簡単なゲームサーバープロジェクトで Amazon GameLift Server SDK をセットアップして、これらのステップの実行を開始しましょう。Unreal Engine (UE) Epic の Unreal ゲームエンジンから開始します。分かりやすいように、オンラインマルチプレイヤー機能が組み込まれたサンプルの Shooter Game プロジェクトを作成し、コンピュータにローカルに保存します。

マルチプレイヤー Shooter Game のサンプルをダウンロードし、マシンでローカルに開いたので、C++ コードを操作して、Amazon GameLift サービスを UE オンラインサブシステムに追加し、オンラインゲームセッションを管理する必要があります。Shooter Game サンプルは Unreal Engine の Blueprints Visual Scripting システムを利用します。Blueprints システムは UE エディタのノードベースのインターフェイスに基づくゲームプレイスクリプティングシステムです。これにより、ゲーム設計者とコンテンツ作成者は UE エディタ内でゲームプレイ要素と機能を作成できます。私の目標は Amazon GameLift C++ SDK を使用して Amazon GameLift サービスをゲームに含め、ゲームコードを変更することなので、ゲームと結び付ける Visual Studio プロジェクトソリューションを作成し、Shooter Game のソースコードとバイナリをプロジェクトに関連付ける必要があります。これを達成するため、コンテキストメニューに移動して、[File] メニューオプションを選択します。メニューのドロップダウンで、[Generate Visual Studio Project Files] オプションを見つけて選択します。

プロジェクトが生成されたら、コンテキストメニューに戻って [File] を選択し、プロジェクトを開いてソースコードを表示するために [Open with Visual Studio] を選択します。

Amazon Game Lift サービスをゲームサービスとして Shooter Game に追加する準備として、またゲームセッションの管理のため、プロジェクトで OnlineSubSystem モジュールを有効にする必要があります。これを行うには、Visual Studio プロジェクトでゲームビルド設定ファイルを開きます。このゲームプロジェクトの名前は ShooterGame であるため、ビルドファイルの名前は ShooterGame.Build.cs になり、次に示すように Source/ShooterGame フォルダにあります。

ビルドファイルを開き、OnlineSubsystemNull モジュールの行のコメントを解除します。既にマルチプレイヤーオンラインシステムを利用しているサンプルを使用しているため、ビルドオプションは適切に設定され、コードは次のようになります。

public class ShooterGame : ModuleRules
{
	public ShooterGame(TargetInfo Target)
	{
		PrivateIncludePaths.AddRange(
			new string[] { 
				"ShooterGame/Classes/Player",
				"ShooterGame/Private",
				"ShooterGame/Private/UI",
				"ShooterGame/Private/UI/Menu",
				"ShooterGame/Private/UI/Style",
				"ShooterGame/Private/UI/Widgets",
            		}
		);
       PublicDependencyModuleNames.AddRange(
			new string[] {
				"Core",
				"CoreUObject",
				"Engine",
				"OnlineSubsystem",
				"OnlineSubsystemUtils",
				"AssetRegistry",
             			"AIModule",
				"GameplayTasks",
			}
		);
       PrivateDependencyModuleNames.AddRange(
			new string[] {
				"InputCore",
				"Slate",
				"SlateCore",
				"ShooterGameLoadingScreen",
				"Json"
			}
		);
		DynamicallyLoadedModuleNames.AddRange(
			new string[] {
				"OnlineSubsystemNull",
				"NetworkReplayStreaming",
				"NullNetworkReplayStreaming",
				"HttpNetworkReplayStreaming"
			}
		);
		PrivateIncludePathModuleNames.AddRange(
			new string[] {
				"NetworkReplayStreaming"
			}
		);
	}
}

これで Shooter Game プロジェクトを設定したので、Amazon GameLift SDK に再び注目しましょう。C++ SDK を Unreal Engine のプラグインとして利用したいので、このゲームエンジン用のバイナリを構築するコンパイルディレクティブを使用して SDK をコンパイルする必要があります。SDK ソースをダウンロードした状態で、オペレーティングシステムに基づいてソースから SDK をコンパイルできます。このプロジェクトには Windows マシンを使用しているため、次のステップを完了します。

  • コードのコンパイルから生成されたバイナリを保持する out ディレクトリを作成します。

mkdir out

  • 前に作成したディレクトリに移動します。

cd out

  • CMake を使用して、VS 2015 Win x64 のビルドシステムジェネレーターを指定し、UE コンパイルフラグを設定します。

cmake -DBUILD_FOR_UNREAL=1 -G “Visual Studio 14 2015 Win64” <ソースディレクトリ>

  • 選択したビルドシステム (このプロジェクトの場合は MS Build) を使用してバイナリを作成する C++ プロジェクトを構築します。

msbuild ALL_BUILD.vcxproj /p:Configuration=Release

ライブラリをコンパイルしたので、Amazon GameLift Unreal Engine プラグインを使用するために次のバイナリファイルが必要です。

Linux:

* out/prefix/lib/aws-cpp-sdk-gamelift-server.so

Windows:

* out\prefix\bin\aws-cpp-sdk-gamelift-server.dll

* out\prefix\lib\aws-cpp-sdk-gamelift-server.lib

次に示すように、私は Windows を使用しているため、コンパイルされた Amazon GameLift ライブラリ aws-cpp-sdk-gamelift-server.dll および aws-cpp-sdk-gamelift-server.lib はそれぞれ prefix\bin および prefix\lib フォルダにあります。

GameLiftSDK Unreal Engine プラグインフォルダにバイナリをコピーすると、Amazon GameLift プラグインフォルダが設定され、Unreal Engine ゲームプロジェクトに追加する準備が整います。これを踏まえて、Unreal Engine の ShooterGame プロジェクトに Amazon GameLift プラグインを追加します。Unreal Engine Editor を使用してプラグインを追加できますが、その代わりに、Visual Studio プロジェクトに留まり、ゲームディレクトリとプロジェクトファイルを更新してプラグインを追加します。

Windows エクスプローラーで、Plugins というフォルダを ShooterGame ディレクトリに追加し、準備した GameLiftServerSDK フォルダを、Unreal Engine のプラグインに関するドキュメントに示されているように、このディレクトリにコピーします。

ここで、ShooterGame.Build.cs ファイルを開きます。これはゲームの依存関係に関する情報を保持する C# ファイルです。

ファイル内で次のコードを追加します。

PublicDependencyModuleNames.AddRange(
            new string[] {
                "Core",
                "CoreUObject",
                "Engine",
                "InputCore",
                "GameLiftServerSDK"
            }
       );

これまでに行った変更とすべてが同期されていることを確認するため、Visual Studio を閉じ、UE Editor に戻って [Refresh Visual Studio Project] を選択します。

完了したら、[Open Visual Studio] を選択します。ShooterGame ディレクトリに追加した Plugins フォルダがプロジェクトに含まれていて、Solution Explorer で表示できます。

次に、ソリューション全体を再構築して、Amazon GameLift SDK バイナリをプロジェクトに統合します。

UE Editor に戻り、ツールバーの [Build] を選択して、Amazon GameLift プラグインの側面が ShooterGame に含まれていることを確認します。コンパイルが完了したら、[Settings] ツールバーを簡単に確認します。[Plugins] オプションには Amazon GameLift プラグインが追加されていて、プロジェクトで認識されていることがわかります。[Enabled] チェックボックスを選択します。これにより、UE Editor の再起動が求められます。[Restart Now] を選択し、Unreal Engine がゲームコードファイルを再構築できるようにします。

ビルドが完了すると、エディタが再起動し、ShooterGame がもう一度開かれます。

これで ShooterGame プロジェクトで Amazon GameLift SDK の使用に関する設定が完了しました。Unreal エディタを開いた状態で、[Open Visual Studio] メニューオプションに移動し、ShooterGame コードに戻ります。これにより、Visual Studio およびゲームコードが開きます。Visual Studio を開いた状態で、ShooterGameMode.cpp ファイルに移動し、コードを追加して Amazon GameLift SDK を初期化します。Shooter Game プロジェクト内で Amazon GameLift に正しくコードを追加するために実行する必要がある主要なことは、次のとおりです。

  1. フラグ WITH_GAMELIFT=1 を使用してプリプロセッサ条件内で Amazon GameLift コードを囲みます
  2. 対象のサーバー OS (Linux など) 用に、Unreal Engine で専用サーバーを構築します
  3. ビルドの対象がゲームサーバータイプであることを確認します (Type == TargetRules.TargetType.Server)

Unreal Engine プロジェクトで Amazon GameLift を追加するために必要なコードの例は、こちらのドキュメントに記載されています。さらに、Unreal Engine wiki で提供されている Windows および Linux 向けの専用サーバーガイドに従って、Unreal Engine の専用サーバーを構築する方法を参照できます。これらの資料を利用すると、Amazon GameLift をゲームプロジェクトに首尾よく統合できます。Unreal Engine ゲームエンジンへの Amazon GameLift SDK の組み込みについて簡単に説明しましたが、Amazon GameLift SDK を Unity など C# エンジンに追加するオプションもあることを忘れないでください。Amazon GameLift Server SDK をダウンロードし、.Net framework 3.5 ソリューションをコンパイルすることで、GameLiftServerSDKNet35.sln になります。GameLiftServerSDKNet35.sln ソリューションを使用すると、Amazon GameLift ライブラリを Unity3D プロジェクトに追加することができます。Amazon GameLift C# Server SDK プラグインのセットアップと使用の詳細については、Amazon GameLift SDK ドキュメント「Unity での C# サーバー SDK の使用」を参照してください。

要約
Amazon GameLift マネージド型サービスに追加された新しい側面の 1 つのみを説明しましたが、このサービスは開発者やゲームスタジオに対してさらに多くの機能を提供しています。Amazon GameLift は、DDoS 攻撃からゲームを防御しながら、インフラストラクチャの管理、キャパシティーのスケーリング、利用可能なゲームセッションへのプレイヤーのマッチングを簡単にして、分散型ゲームを構築できます。

Amazon GameLift サービスの詳細については、Amazon GameLift のドキュメントと Amazon GameLift 開発者ガイドを参照してください。また、Amazon GameDev チュートリアルページの Amazon GameLift チュートリアルを確認して、Amazon GameLift サービスを使用したゲーム開発を本格的に開始することができます。どうぞゲームをお楽しみください。

Tara

Streamlineのケーススタディ:Amazon GameLiftで加速リリース

Screenshot_ProletariatQuote_V2

Proletariatについて

ボストンに拠点を置くProletariatは、革新的なマルチプレイヤー体験の構築に焦点を当てたインディーゲーム企業です。5人のゲーム業界のベテランによって2012年に設立されました。彼らは、賞を獲得したWorld Zombinationの立案者です。World Zombinationは、プレイヤー同士が共に戦略を立て合ってゾンビや人間の大群を用いて街を破壊したり守ったりする巨大なオンラインゲームです。彼らの最新のマルチプレイヤーゲームであるStreamlineは、オーディエンスのインタラクティブなゲーム参加が特徴であり、ストリーミング配信者や視聴者が試合中にゲームプレイルールをリアルタイムに変更することができます。

課題

Proletariatは、3月のGDC 2016でStreamlineを公表し、ゲームストリーマーのプレミアムイベントである9月のTwitchCon 2016でベータ版を公開する予定であると告知していました。しかし、TwitchCon 2016のTwitch Prime一般公開に含めないかという話をAmazonが持ちかけたところ、ProletariatはStreamlineを誰でもプレイできるようにするために開発を加速することを決めました。彼らは興奮する一方で、自分たちの独自のゲームサーバソリューションが、管理に手間がかかり過ぎることと増加していくプレイヤー需要をサポートするために必要な機能が足りていないことを気にしていました。

Proletariatの独自のクラウドソリューションはAWS Elastic Container Service (ECS)を中心に構築されていました。AWS ECSは、AWS EC2インスタンス上のアプリケーションの管理を容易にしてくれるコンテナ管理のサービスです。サーバのヘルスチェックを実行したりプレイヤーを利用可能なゲームサーバに接続するなど、彼らは基本的なゲームサーバの機能を手動で操作していました。これらのプロセスによってプレイヤーの負荷が処理されますが、Streamlineが一般利用可能になってしまえば管理は手間がかかり過ぎるでしょう。また、彼らの独自のクラウドソリューションは、どのゲームサーバがアクティブなゲームセッションを保持しているかというこを特定することができませんでした。これは、サーバのキャパシティを手動で調整している間に誤ってアクティブなゲームセッションを縮小し、プレイヤーをStreamlineから切断してしましまう可能性があることを意味していました。単一のEC2インスタンス上で複数のゲームサーバプロセスを実行することができないので、テストをシンプルにすることも困難でした。各ゲームサーバはユニークな公開ポートを必要としますが、コンテナ内部からはその公開ポートを取得することができませんでした。

Proletariatは、ゲームサーバのホスティングにAWSの実績のあるインフラストラクチャを使い続けることを希望していましたが、必要な機能を構築するには数千時間はかかりそうでした。あっという間ににTwitchCon 2016の開催は近づき、ProletariatはAmazon GameLiftを紹介されました。Amazon GameLiftはAWSのマネージドサービスです。ゲームサーバのホスティングをシンプルにしサーバキャパシティを数分でスケールします。

「Proletariatのチームにとって選択肢は非常にシンプルでした。つまり、我々のクラウドインフラストラクチャを構築するのに数ヶ月を費やすためにエンジニアチームを雇うか、あるいはAmazon GameLiftで数分でデプロイするか、です。」とProletariat社CEOの Seth Sivakは言いました。

実装

Proletariatは、Amazon GameLift Server SDK for C++をダウンロードしUnreal Engineゲームサーバのビルドに統合し、ゲームサーバをAmazon GameLiftにアップロードしました。Unreal Engineゲームサーバを格納するために、5つのGameLiftインスタンスタイプのどれが自分たちのニーズに最も適しているかを判断する必要がありました。「リアルタイムゲームでは、ネットワークが最適化されたAmazon GameLiftインスタンスが必要でした。そのため、私達は一連のインスタンスにc4.xlarge.gameliftを選択しました。」とStreamlineのリードエンジニアである Cauê Waneck は言いました。「Amazon GameLiftは、各インスタンス上で4つのゲームサーバをサポートするように実行設定を構成することができます。これは、私達のゲームサーバがシングルスレッド構成であることを考えると完璧です。これにより、vCPUあたり1つのゲームサーバプロセスをうまく活用できるようになり、テストとイテレーションのプロセスが大幅にシンプルになります。」

独自に作成したNode.jsのマッチメイキングシステムとAmazon GameLift上のC++のゲームサーバ間のゲームセッションの新規作成を管理するために、ProletariatはAWS JapaScript SDK with Amazon GameLiftを使用しました。また、彼らはクイックマッチに利用可能なキャパシティを持つゲームサーバを見つけるために特殊なゲームセッションデータを使用しました。このデータは、サーバが新規プレイヤーを受け入れるべきかどうかを分類し、どのゲームセッションが利用可能なプレイヤースロットを持っているかを特定するのに役立ちました。「Amazon GameLiftは、大量のプレイヤーのマッチメイクを容易にし、待ち時間を減少させました。」とWaneckは言いました。「さらに、ゲームセッションをパーティーリーダーに関連付けるということが可能だったので、プレイヤーにカスタムゲームマッチの開催を可能にするというかたちでも役に立ちました。」

Proletariatは、アクティブなゲームを保持するインスタンスがスケールダウンされてプレイヤーをオフラインにしてしまうことを防ぐために、Amazon GameLift組み込みのゲームセッション保護の有効化も行いました。「Amazon GameLiftは保険のようなものです。サーバのスケーリング、とりわけ起動時のスケーリングにおいて安心を与えてくれます。」とWaneckは言いました。

AWS Command Line Interface (CLI) with Amazon GameLiftによって、彼らのビルドシステムにロジックを実装するときに新しいインスタンス群を起動してコマンドを再利用することが容易になりました。ゲームクライアントの更新をデプロイする際に、シンプルなコマンドを使用してAmazon GameLiftのエイリアスを利用し、プレイヤーを1つのインスタンス群から別のインスタンス群にダウンタイムなしで移動させました。また、CLIを使用して世界中のリージョンにゲームサーバをたった数分で起動しました。「Amazon GameLiftチームは私達を全面的にサポートしてくれました。私達が運用上の問題に取り組むのを助けるために24時間365日彼らがいてくれたのは嬉しいことです。」とWaneckは言いました。

わずか5日間で、ProletariatはAmazon GameLiftを使用し自信を持ってTwitchCon 2016にStreamlineをリリースしました。Amazon GameLiftによって数千時間の開発時間が節約され、代わりにStreamlineのコアである革新的なゲームプレイに磨きをかけることに専念しました。

詳細情報

Amazon GameLiftを用いた専用のゲームサーバのホスティングやスケーリングの方法の詳細をご覧ください。Streamlineについての詳細はplaystreamline.comをご覧ください。

(翻訳はSA 畑が担当しました。原文はこちら)

GameLiftがアジア(東京リージョン)とヨーロッパに拡大し、Auto-Scaling機能を追加しました。

Amazon GameLiftは、クラウドでセッションベースのマルチプレイヤーゲームサーバを簡単かつ費用対効果が高いデプロイ、運用、スケールが行えるフルマネージドサービスです。GameLiftは北米の2つのリージョンで一ヶ月前にローンチされ、本日、日本( ​​gamelift.ap-northeast-1.amazonaws.com )とヨーロッパ( gamelift.eu-west-1.amazonaws.com )のプレイヤーのために最適なゲームパフォーマンスを提供できるようになりました。

 

Amazon GameLiftの新しい高度なAuto Scaling機能を利用すると、動的にサーバーFleetのキャパシティを管理するためにGameLiftを設定できます。この機能を使用すると、プレイヤーが高速な接続を確保しがらコストを抑え、サーバのキャパシティをゲームの需要曲線に密接に従うことができます。FleetのためにAutoScaling機能を設定するには、単純にトリガーするタイミングとアクションの種類を定義するポリシーを設定します。例えば、Auto Scalingのルールを「15分以上のアイドル状態のインスタンスが20あれば、10までスケールダウンさせる」といったことができます。GameLift AWS Consoleは、スケーリングのポリシーを作成および適用するためのツールを提供し、またAWS CLIまたはGameLift SDKも使用することができます。Auto Scalingの状態はGameLift AWS Consoleのパフォーマンス・メトリックまたは、Fleetのイベントログで追跡することができます。GameLiftのAuto Scaling機能は、堅牢なAWS Auto Scaling serviceを使用しています。

 

GameLift Auto Scalingの詳細についてはGameDevのブログの記事をご覧ください。

こちらから始められます。

 

翻訳はSA 森が担当しました。翻訳元:GameLift Expands Game Server Availability to Europe and Asia and Adds Auto-Scaling

Lumberyard、Amazon GameLift、Twitch により AWS でゲームを提供

 

世界に通用するゲームの製作はとても難しく、時間と費用のかかるプロセスです。利用者の要求レベルは極めて高く、多様なデスクトップ、コンソール、モバイルのプラットフォームに対応する魅力的なソーシャルゲームが求められています。ゲームの開発と流通はリードタイムが長い傾向があるため、待ちわびた数十万から数百万規模のプレーヤーがサインインして試そうとする発表の日に、ゲームの成否が決まってしまうこともよくあります。

開発プロセスでは、水面下でこの課題に立ち向かわなければなりません。ゲーム製作者は、ストーリー創作、ゲーム設計、物理シミュレーション、ロジック設計、サウンド制作、グラフィック、視覚効果、アニメーションのスキルを持つ開発者のチームと組む必要があります。ゲームがネットワークベースであれば、チームには、スケーリング、オンラインストレージ、ネットワーク通信と管理、セキュリティの専門知識も必要です。

開発とクリエイティブ作業に 18 か月から 36 か月かかることもある中で、ゲームを製作するスタジオは、大きな財務リスクと評判に関するリスクを負うことになります。新しいゲームを製作するたびに、一か八かの賭けなのです。

新しい AWS ゲームサービス 今日は、クラウド接続型のクロスプラットフォームのゲームを制作するプロフェッショナルのゲーム開発者向けに設計された新しい AWS 製品をいくつかご紹介します。当社は、実績があり業界をリードする複数のエンジンと開発者ツールを基に、膨大な独自コードを追加し、パッケージ全体を当社の Twitch ビデオプラットフォームおよびコミュニティと連携させる一方で、関連する AWS のメッセージング、アイデンティティ、ストレージの各サービスへのアクセスも可能にしました。今日発表する内容は以下のとおりです。

Lumberyardプロフェッショナルな開発者向けに設計されたゲームエンジンと開発環境です。CryEngineDouble Helix、AWS の新しい技術と実績のある技術を組み合わせることで、Lumberyard はゲーム開発を簡素化し効率化します。ゲームエンジンとしては、クラウド接続型およびスタンドアロンの 3D ゲームの開発をサポートするとともに、アセット管理、キャラクター作成、AI、物理シミュレーション、音声などもサポートします。開発の観点では、Lumberyard IDE により、空白のキャンバスから屋内および屋外の環境を設計できます。プロフェッショナルなゲーム開発者は、組み込みのコンテンツワークフローとアセットパイプラインを活用し、後で編集して IDE で読み込めるように Photoshop、Maya、3ds Max でゲームのアセットを編集することができます。ゲームのプログラミングは、(AWS SDK for C++ へのアクセスを含め) C++ や Visual Studio を使用する従来の方法で行うか、Flow Graph ツールや新しい最先端の Cloud Canvas を使用してクラウド接続型のゲームプレー機能を作成することができます。

Amazon GameLift最先端のゲームの多くには、アクティブなセッション数に比例してスケールする必要があるサーバーまたはバックエンドコンポーネントが含まれています。Amazon GameLift は、Lumberyard を使用して開発するゲーム向けに、複数プレーヤーに対応したセッションベースのゲームサーバーをデプロイしスケールするのに役立ちます。ゲームサーバーのイメージを AWS にアップロードし、プレーヤーが接続してプレーするのに応じてスケールされる EC2 インスタンス群にそのイメージをデプロイするだけです。独自のサーバー群の構築、スケーリング、実行、モニタリングに投資する必要はありません。その代わりに、Daily Active User (DAU) ごとの少額の料金と、ユーザーが消費するコンピューティング容量、EBS ストレージ、帯域幅について通常の EC2 オンデマンド料金をお支払いいただきます。

Twitch との連携最近のゲームプレーヤーはネット上で仲間とつながりを持っています。自身がプレーしていないときは、Twitch 上で他のプレーヤーやゲーム愛好家とつながってやり取りすることを好みます。プロフェッショナルやアマチュアのプレーヤーが Twitch で自らの才能を見せつけ、多数の熱心なファンの基盤を築いています。このトレンドをさらに推し進めて、さらに深いつながりと強いコミュニティの確立を促すために、Lumberyard を使用して製作されたゲームでは、Twitch の 2 つの新しい連携機能を活用することができます。Twitch ChatPlay を使用すると、Twitch のチャットストリームでのキーワードに反応するゲームを制作できます。たとえば、視聴者はプレーヤーが最も望ましい行動をするように投票することができます。Twitch JoinIn を使用すると、配信者はチャットから視聴者のメンバーをゲームに招待することができます。

これらのサービスは、他の多くの AWS サービスと同様に、ゲームの独自でクリエイティブな側面に集中できるように設計されています。このとき、すばやい転換と容易な反復に重点を置くことにより、望ましいレベルのエンゲージメントと娯楽に達するまで、ゲームプレーに磨きを掛けることができます。

サポートサービス – 仕上げとして、Lumberyard 専用のフォーラムや一連のチュートリアル (テキストとビデオの両方) を含む幅広いサポートオプションを発表します。複数の階層で構成される有償の AWS サポートも提供されます。

Lumberyard での開発今日の発表の中心は Lumberyard です。前述のように、これはプロフェッショナルな開発者向けに設計されており、高品質なクロスプラットフォームのゲーム開発をサポートします。今回の発表では、以下の環境がサポートされます。

  • Windows – Vista、Windows 7、8、10。
  • コンソール – PlayStation 4、Xbox One。

モバイルデバイスおよび VR ヘッドセットのサポートは対応中であり、数か月以内に発表される予定です。

Lumberyard 開発環境は、Windows PC またはノートブックで動作します。高速なクアッドコアプロセッサ、8 GB 以上のメモリ、200 GB の空きディスク容量、2 GB 以上のメモリを搭載した Direct X 11 互換のハイエンドのビデオカードが必要です。また、Visual Studio 2013 Update 4 (以降) および Visual Studio 2013 の Visual C++ 再頒布可能パッケージも必要です。Lumberyard の Zip ファイルには、Lumberyard Editor のバイナリ、テンプレート、アセット、設定ファイルが含まれます。 また、Lumberyard ゲームエンジンのバイナリとソースコードも含まれます。このエンジンは、そのまま使用することも、参照目的でソースコードを調べることも、さらにゲームを差別化するためにカスタマイズすることもできます。この Zip ファイルには Lumberyard Launcher も含まれます。このプログラムによって、Lumberyard、サードパーティのランタイム、SDK、ツール、プラグインが正しくインストールされ設定されていることを確認できます。

Lumberyard Editor は、開発中のゲームと、ゲームのアセットの編集に使用できるツールのスイートをカプセル化します。

Lumberyard Editor には、編集ツールのスイート (それぞれ個別にブログ投稿のテーマとして取り上げるかもしれません) が含まれています。具体的には、Asset Browser、Layer Editor、LOD Generator、Texture Browser、Material Editor、Geppetto (キャラクターおよびアニメーションツール)、Mannequin Editor、Flow Graph (ビジュアルプログラミング)、AI Debugger、Track View Editor、Audio Controls Editor、Terrain Editor、Terrain Texture Layers Editor、Particle Editor、Time of Day Editor、Sun Trajectory Tool、Composition Editor、Database View、UI Editor です。これらのエディターはすべて、最上部のいずれかのツールバーからアクセスできます。

選択的なモジュラー形式でゲームに機能性を追加できるようにするため、Lumberyard では、Gems と呼ばれるコードパッケージングシステムを使用しています。使用したい Gems を有効にするだけで、その機能がビルドされ、完成したゲームのバイナリに自動的に含められます。Lumberyard に含まれる Gems は、AWS アクセス、ボイド (群れ行動を表現するもの)、クラウド、ゲーム効果、GameLift へのアクセス、稲妻、物理シミュレーション、雨、雪、竜巻、ユーザーインターフェイス、複数プレーヤー機能、森林アセットのコレクション (詳細で実写的な森を表現するもの) です。

Flow Graph と Cloud Canvas を使用したコーディング
従来、ゲームのロジックは専任の開発者によって製作され、多くの場合、C++ が使用されていましたが、編集/コンパイル/実行のサイクルでの一般的な応答時間がかかっていました。引き続きこの方法を選ぶこともできますが、Lumberyard を使用する場合は、他に Lua と Flow Graph という 2 つの選択肢があります。

Flow Graph は、最先端の親しみやすいビジュアルなスクリプト作成システムであり、コードの記述や変更を行うことなく複雑なゲームロジックを実装できます。事前構築済みの広範なノードのライブラリを使用して、ゲームプレーのセットアップ、サウンドの制御、効果の管理を行えます。

Flow Graph はノードとリンクから作成されます。単一のレベルに複数のグラフを格納でき、それらをすべて同時にアクティブにすることができます。ノードはゲームのエンティティまたはアクションを表します。リンクは、1 つのノードの出力を別のノードの入力として接続します。入力には型 (Boolean、Float、Int、String、Vector など) があります。出力ポートは、任意の型の入力ポートに接続できます。可能な場合には型の自動変換が実行されます。

ノードには 30 を超える個別の型があり、これにはさまざまな AWS サービスへのアクセスを提供するセット (Cloud Canvas と呼ばれます) が含まれます。これには、Amazon Simple Queue Service (SQS) へのアクセスを提供するノード 2 個、Amazon Simple Notification Service (SQS) へのアクセスを提供するノード 4 個、Amazon DynamoDB への読み取り/書き込みアクセスを提供するノード 7 個、AWS Lambda 関数を呼び出すノード 1 個、Amazon Cognito を使用してプレーヤーの認証情報を管理するノード 1 個が含まれます。AWS に対するゲーム呼び出しはすべて、Cloud Canvas で設定する AWS Identity and Access Management (IAM) ユーザーを介して行われます。

これは、DailyGiftLambda という名前の Lambda 関数を呼び出すノードです。

これは、”Daily Gift” 関数を実装するために Lambda および DynamoDB を使用する Flow Graph です。

いつものように、概要だけをご紹介しました。詳細については、Lumberyard ユーザーガイドの Cloud Canvas に関するドキュメントを参照してください。

Amazon GameLift でのデプロイ ゲームでスケーラブルなクラウドベースのランタイム環境が必要な場合は、ぜひ Amazon GameLift を検討してください。

これを使用すると、共有および接続され、定期的な同期を行うような、種類の異なる多数のゲームをホストすることができます。たとえば、一人称シューティング、サバイバルおよびサンドボックスゲーム、レースゲーム、スポーツゲーム、MOBA (複数プレーヤーに対応したオンラインバトルフィールドアリーナ) ゲームなどが挙げられます。

サーバー側のロジックを構築した後で、それを Amazon GameLift にアップロードすると、数分で Windows ベース AMI (Amazon マシンイメージ) に変換されます。AMI が準備できたら、Amazon GameLift 群 (または既存の群の新バージョン) を作成し、AMI でそれをポイントすると、バックエンドの準備が整います。

群、および各群で実行されるゲームセッションは、Amazon GameLift コンソールで確認できます。

Flow Graph コードでは、GameLift Gem を使用して Amazon GameLift セッションを作成し、セッションサービスを開始することができます。

詳細については、Amazon GameLift ドキュメントを参照してください。

Twitch との連携
最後になりましたが、このトピックが重要でないわけではありません。製作したゲームは、Twitch ChatPlay および Twitch JoinIn を介して Twitch と連携させることができます。

前述のように、指定された Twitch チャンネルに入力されたキーワードに反応するゲームを作成できます。たとえばこれは、redyellowbluegreenorangeviolet というキーワードをリッスンする Flow Graph です。

料金表と提供状況
Lumberyard および Amazon GameLift はすでに利用可能であり、今日からゲーム製作を始めることができます。

Lumberyard を使用して、接続されたゲームやスタンドアロンのゲームを無料で製作して実行できます。GameLift の使用により発生するあらゆる料金と併せて、Cloud Canvas で設定された IAM ユーザーを使用して AWS サービスに対して行われる呼び出し、または C++ 向け AWS SDK を使用して行われる呼び出しについて発生する AWS 料金をご負担いただきます。

Amazon GameLift は US East (Northern Virginia) および US West (Oregon) のリージョンで提供され、今後、その他の AWS リージョンでも提供を予定しています。AWS 無料利用枠の階層の一部として、1 年間にわたり、c3.large インスタンス 1 個で構成される群を 1 か月あたり最大 125 時間実行できます。 それ以降は、ご使用の EC2 インスタンスの通常のオンデマンド料金に加え、インスタンスあたり 50 GB/月の EBS ストレージの料金と、Daily Active User 1000 件ごとに USD 1.50/月をお支払いいただきます。