AWS Black Belt Online Seminar Amazon GameLift アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト森祐孝 2017.10.04
森祐孝 ( もりゆうこう ) ソリューションアーキテクト経歴 メーカー系 SIer( ソフト開発 ) 電 マネー運営 ( サーバソフト開発 ) 独 系 SIer 情報通信キャリア向けのSIでPL PM コンソール系ゲーム会社 ( テクニカルディレクター ) ブラウザソーシャルゲーム スマートフォン向けソーシャルゲーム 担当 ソーシャルゲーム コンソールゲーム系のお客様 Amazon Lumberyard Amazon GameLift 紹介
AWS Black Belt Online Seminar へようこそ! 質問を投げることができます! Adobe Connect の Q&A ウィンドウから 質問を書き込んでください ( 書き込んだ質問は 主催者にしか えません ) 今後のロードマップに関するご質問はお答えできませんのでご了承ください Twitter へツイートする際はハッシュタグ #awsblackbelt をご利 ください 1Q&A ウィンドウ右下のフォームに質問を書き込んでください 2 吹き出しマークで送信してください
AWS Black Belt Online Seminar とは AWSJのTechメンバがAWSに関する様々な事を紹介するオンラインセミナーです 曜 12:00~13:00 主にAWSのソリューションや 業界カットでの使いどころなどを紹介 (例 IoT 融業界向け etc.) 曜 18:00~19:00 主にAWSサービスの紹介や アップデートの解説 (例 EC2 RDS Lambda etc.) 開催曜 と時間帯は変更となる場合がございます 最新の情報は下記をご確認下さい オンラインセミナーのスケジュール&申し込みサイト https://aws.amazon.com/jp/about-aws/events/webinars/
内容についての注意点 本資料では 2017 年 10 4 時点のサービス内容および価格についてご説明しています 最新の情報は AWS 公式ウェブサイト (http://aws.amazon.com) にてご確認ください 資料作成には 分注意しておりますが 資料内の価格と AWS 公式ウェブサイト記載の価格に相違があった場合 AWS 公式ウェブサイトの価格を優先とさせていただきます 価格は税抜表記となっています 本居住者のお客様が東京リージョンを使 する場合 別途消費税をご請求させていただきます AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
Agenda セッションゲームのためのGameLift GameLift 概要 GameLift ゲーム開発 GameLift FlexMatch GameLift 利 事例
ちょっと 考えてみてください
マルチプレイヤーゲームサーバを運 するのは難しい
Amazon GameLift を使うと数分で マルチプレイゲームのデプロイやスケールが完了します
典型的なゲームの 1 週間のトラフィック曲線 Infrastructure Cost Time
キャパシティが不 Infrastructure Cost 機会損失 $ ( ユーザの接続待ち ) インフラ投資額 Time
キャパシティ Infrastructure Cost 無駄なコスト $ インフラ投資額 Time
GameLift Autoscaling Autoscaling によって より正確なキャパシティを確保 Infrastructure Cost Time
Amazon GameLift セッションベースのマルチプレイヤーゲームサーバーをホスティングするためのマネージドサービス 必要に応じ プレーヤーの要求に合わせて 動的に拡 / 縮 します 世界中で低レイテンシのプレーヤー体験を提供 DDoS プロテクション ダウンタイムなしでライブアップデートをリリース 利 した分だけの料 カスタマイズ可能なマッチメイキング機能 DDoS 攻撃からゲームサーバーを保護する方法 https://aws.amazon.com/jp/blogs/gamedev/protect-multiplayer-game-servers-from-ddos-attacks-using-amazon-gamelift-2/
4 以上の経験のあるエンジニアがこれらの作業に 1000 時間以上費やす必要がありました 設計とアーキテクト 専 の UI ダッシュボードを構築 プロトタイプの作成 ローンチ作業 本番環境へのデプロイ 不快なスケーリングの仕組みをデバッグし修正 $ $ ローンチ後の 24/7 の対応 コストの最適化
わずか数分の作業で簡単に始められます 1 2 3 4 サーバアプリのアップロード Fleet を構成 スケールアップ ゲームをプレイ
GameLift 概要
GameLift 全体アーキテクチャ
Build Build サーバアプリをゲー ム開発者が 意 GameLift へ アップロード
Build パッケージ Build のパッケージ化 ゲームサーババイナリ install.bat(windows) or install.sh(linux) Build フォルダのルート直下に配置する必要がある インスタンスにコピーされた直後に 1 回実 依存するファイル 設定ファイルや依存するライブラリなど
Build のアップロード AWS CLI aws gamelift upload-build --operating-system [WINDOW_2012 or AMAZON_LINUX] --build-root [build path] --name [user-defined name of build] --build-version [user-defined build number] --region [region name]
Fleet Fleet デプロイされた 単 Build プレイヤーはこれ らに接続 1 つ以上の EC2 インスタンス
Fleet 概要 Developer Fleet Players EC2 Instance Game Server Processes EC2 Instance Game Server Processes Build
Session 1 Game Session Management Session 2 Session N Player slot 1 Active Player slot 1 Active Player slot 1 Reserved Player slot 2 Player slot 2 Active Player slot 2 Player slot 3 Active Player slot 3 Active Player slot 3 Players Player slot 4 Player slot 4 Active Player slot 4 Developer Infrastructure Management EC2 Instance EC2 Instance EC2 Instance ServerProcess ServerProcess ServerProcess Build
シンプルデベロッパー環境 :4 ステップ 1 2 3 4 サーバアプリのアップロード Fleet を構成 スケールアップ ゲームをプレイ GameLift はゲームセッションの検索 / マッチングを提供 (Game session の状態, ソート, players の状態, )
Fleet の設定 EC2インスタンスタイプ 実 ファイル名 パラメータ 同時プロセス数 開放するポートやプロトコル CIDR Auto-scalingポリシー
Fleet Creation 状態 : Downloading à Validating à Activating à Active Active: クライアントは Fleet に接続できる状態
GameLift でのゲーム開発
GameLift API Interaction Game Server (Deployed) Game Client APP AWS SDK GameLift Client API (HTTPs req/res) GameLift Service
GameLift Server SDK Game Server 上で実 C++ C# をサポート https://aws.amazon.com/gamelift/getting-started/ Windows Server Amazon Linux Dedicated Server をサポート Unreal Engine (plugin) と Unity3D をサポート https://aws.amazon.com/blogs/aws/launch-amazongamelift-now-supports-all-c-and-c-game-engines/ Lumberyard では Pre-built された状態でサポート
Server SDK Integration
GameLift Client SDK GameLift Client SDK GameLift Client SDKは AWS SDKに含まれている 10 以上の 語をサポート : C++, C#, Java, Python, GameLift Client API をバックエンドのゲームサービスに統合することも可能 ( 例マッチメイキング ) ゲームクライアント側に直接インテグレートすることも可能 Lumberyard では Pre-built された状態でサポート https://aws.amazon.com/jp/tools/
Client SDK Integration
Amazon Lumberyard AWSとTwitchを深く統合させた無料のAAAゲームエンジン 特徴 (https://aws.amazon.com/jp/lumberyard/) CryENGINEからフォークされたゲームエンジ ン CloudCanvasでAWS & Twitchとの融合 Double Helix Gamesからのシステム すべてのソースコードが含まれています 価格体系 無料 ネットワーク接続の無いゲームでも利 可能 オンプレサーバとの接続の可能
GameLift ゲームシーケンス
ゲームサーバーの起動 ゲームセッションを開始
プレイヤーセッションを追加 ゲームセッションの停 ゲームサーバのシャットダウン
継続的デプロイメント ALIAS Fleet Id へリンクされる ゲームクライアントは Alias ID を使 して Fleet に接続できます Build A Fleet A Alias Client Developer New Players
デプロイし Fleet をアップデート Build A Fleet A Alias Client Developer New Players Build B Fleet B
ALIAS 先を新しい Fleet に変更 Build A Fleet A Alias Client Developer New Players Build B Fleet B
Debug & Test GameLift Local ローカル開発マシン上の GameLift API のサブセットをエミュレートするクライアントサイドのデバッグツール ダウンロード : https://aws.amazon.com/gamelift/getting-started/ GameLift Server SDK パッケージに含まれる 実 法 java jar GameLiftLocal.jar GameLift Server SDK APIs をサポート 下記の Client APIs をサポート CreateGameSession, DescribeGameSessions, CreatePlayerSession, CreatePLayerSessions, DescribePlayerSessions
Debug & Test Fleet インスタンスへリモートアクセス GameLift Fleet で実 されているインスタンスへログイン可能 トラブルシューティングとデバッグに利 可能 サーバに直接ログインしデバッギングをすることが可能 RDP for Windows SSH for Linux https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/fleets-remote-access.html
Debug & Test Game Server Log ゲームサーバの Logs & Memory ダンプ等 Fleet 上のゲームサーバのデバッギング How-to Build と 緒に logs フォルダをアップロード ゲームサーバーがテキストログとダンプを "logs" フォルダに残すように実装する AWS management console から logs フォルダをダウンロード
GameLift Operation Web-based UI パフォーマンス計測 スケーリング イベント Game sessions Player sessions ALIASを使ったデプロイ APIでも操作可能
Visualization for Scaling Status
Monitoring for Game/Player Sessions
GameLift FlexMatch
GameLift FlexMatch カスタマイズ可能なマッチング プレイヤーグループ レイテンシーによるマッチ ルールを緩める事も可能 マッチの許可 否認 ベストなリージョン配置 追加料 はなし グループ マッチ キューイング プレイ
FlexMatch Match Making Functionality FlexMatch: カスタマイズ可能なマッチメーキングサービス https://aws.amazon.com/blogs/gamedev/matchmakingyour-way-amazon-gamelift-flexmatch-and-game-sessionqueues/ http://docs.aws.amazon.com/gamelift/latest/developerguide /gamelift-match.html ルールベース プレヤースキル, レイテンシー その他のカスタム条件を設定 マッチメイク結果を 動的にゲームセッションキューで管理
FlexMatch Metrics 成功 / 失敗レート プレイヤー需給 マッチメイクまでの時間 ルールの有効性
FlexMatch Metrics 成功 / 失敗レート プレイヤー需給 マッチメイクまでの時間 ルールの有効性
GameLift FlexMatch Client GameLift Server SDK インテグレート Fleet (Tokyo) Client Group Client Front Door GameLift FlexMatch Rule Set Queue Fleet (Seoul) Client AWS SDK インテグレート Fleet (Singapore)
GameLift FlexMatch Client Client Group Front Door 1. ゲームクライアントから Front Door ゲームサーバにマルチプレイヤーゲームをしたい旨を伝える Client Client
GameLift FlexMatch Front Door GameLift FlexMatch Rule Set 2. Front Door サーバが 1 名もしくは複数名 の StartMatchmaking リクエストを作成 StartMatchmaking Unique Ticket Id Unique Player Ids Which Rule Set to use Custom player data, e.g. skill
GameLift FlexMatch Front Door GameLift FlexMatch Rule Set 3. StartMatchmaking リクエストから MatchmakingTicket が返され Status が SEARCHING に MatchmakingTicket Ticket Id Status = SEARCHING
GameLift FlexMatch Front Door GameLift FlexMatch Rule Set 4. Front Door サーバが DescribeMatchmaking を介して状況確認 (Amazon CloudWatch Events や SNS トピックで通知することも可能 ) DescribeMatchmaking Ticket Ids
GameLift FlexMatch Front Door GameLift FlexMatch Rule Set 5. DescribeMatchmaking にて MatchmakingTicket リストが得られる Ticket Id Status = PLACING List of Player Info + MatchmakingTicket
GameLift FlexMatch GameLift FlexMatch 6. マッチが制作され プレイヤーがキューイングされると MatchmakingTicket 内のステータスが PLACING となる Rule Set Queue MatchmakingTicket Ticket Id Status = PLACING List of Player Info
GameLift FlexMatch Fleet (Tokyo) 7. キューイングされたマッチがベストなレイテンシーの GameLift Fleet に配置され ステータスが COMPLETED に Queue Ticket Id Status = COMPLETED List of Player Info Game Session Info + MatchmakingTicket
GameLift FlexMatch Client GameLift Server SDK インテグレート Fleet (Tokyo) Client Group Client Front Door GameLift FlexMatch Rule Set Queue Fleet (Seoul) Client AWS SDK インテグレート Fleet (Singapore)
FlexMatch ルールセット GameLift FlexMatch Rule Sets
FlexMatch ルールセット Front Door GameLift FlexMatch Rule Set StartMatchmaking Unique Ticket Id Unique Player Ids Which Rule Set to use Custom player data, e.g. skill
FlexMatch ルールセット Player attributes ( オプション ) Teams ( 必須 ) Rules ( オプション ) Expansions ( オプション )
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Front Door GameLift FlexMatch Rule Set StartMatchmaking Unique Ticket Id Unique Player Ids Which Rule Set to use Custom player data, e.g. skill
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Player attributes Teams Rules Expansions
FlexMatch ルールセット Player attributes Teams Rules Expansions
既存のマッチメイキングとの連携 1. ゲームクライアントからゲームセッションを要求し API Gateway+Lambda でマッチメイクを実行 2.GameLift から Fleet 情報を取得 3.Fleet に接続しゲームをプレイ https://aws.amazon.com/jp/blogs/gamedev/fitting-the-pattern-serverless-custom-matchmaking-with-amazon-gamelift/
VPC Peering のサポート RDS ElastiCache ゲームサーバから RDS や Amazon ElastiCache などのにデータを保存したい場合などセキュアに通信可能 http://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/gamelift-howitworks.html 注意 :CIDR ブロックが一致または重複する場合は作成できない GameLift 側の VPC の CIDR は DescribeVpcPeeringConnections() で確認
GameLift: getting started
料 体系 インスタンス料 (EBS 汎 (SSD) ボリューム 50GB が含まれる ) Linux 料 インスタンスごとに 1 秒単位で発 Windows 料 インスタンスごとに 1 時間単位で発 ネットワーク転送料 Amazon GameLift スタンダードオンデマンドインスタンスボリューム割引 量のインスタンスを利 する場合 ボリュームディスカウントも https://aws.amazon.com/gamelift/pricing/
Free Tier Test GameLift for Free c4.large.gamelift インスタンス125 時間 / EBS 汎 (SSD) ストレージ 50 GB AWS のすべてのサービスを合わせて 送信帯域幅 15 GB/ https://console.aws.amazon.com/gamelift/ AWS GameLift consoleからサンプルゲームをお試しできます 同時 8プレイヤーのサッカーゲーム
Case Study:Proletariat Inc.,(StreamLine) クライアント :Unreal Engine Amazon GameLift Server SDK for C++ を利 サーバ :Node.js と Unreal Engine ゲームサーバ AWS JavaScript SDK with Amazon GameLift Proletariat のチームにとって選択肢は 常にシンプルでした つまり 我々のクラウドインフラストラクチャを構築するのに数ヶ を費やすためにエンジニアチームを雇うか あるいは Amazon GameLift で数分でデプロイするか わずか 5 間で Amazon GameLift を使 し 信を持って TwitchCon 2016 に Streamline をリリース https://aws.amazon.com/jp/blogs/news/streamline-case-study-amazon-gamelift/
Case Study: 株式会社カプコンモンスターハンターエクスプロア ゲームサーバを GameLift を用いたアーキテクチャーへ https://aws.amazon.com/jp/solutions/case-studies/capcom/
まとめ GameLift はセッションベースのマルチプレイヤーゲームサーバーをホスティングするためのマネージドサービス FlexMatch を いてマッチメイキングをカスタマイズ 既存のマッチメイクがある場合はそれも利 可能 複雑なインフラ設計やキャパシティ管理を GameLift に任せて いゲーム開発に集中!
参考資料 ゲームのための AWS https://aws.amazon.com/jp/gaming/ ゲーム開発者のための Amazon https://aws.amazon.com/jp/gamedev/ Amazon GameLift https://aws.amazon.com/jp/gamelift/ Lumberyard & Amazon GameLift Blog https://aws.amazon.com/blogs/gamedev/ AWS でのマルチプレイヤーゲームサーバーのパフォーマンス最適化 AWS でスケーラブルなゲームパターンを実装する 法 (Gaming whitepaper) https://aws.amazon.com/jp/whitepapers/
Q&A
オンラインセミナー資料の配置場所 AWS クラウドサービス活 資料集 http://aws.amazon.com/jp/aws-jp-introduction/ AWS Solutions Architect ブログ 最新の情報 セミナー中の Q&A 等が掲載されています http://aws.typepad.com/sajp/
公式 Twitter/Facebook AWS の最新情報をお届けします @awscloud_jp 検索 もしくは http://on.fb.me/1vr8ywm 最新技術情報 イベント情報 お役 ち情報 お得なキャンペーン情報などを 々更新しています!
AWS の導 お問い合わせのご相談 AWS クラウド導 に関するご質問 お 積り 資料請求をご希望のお客様は以下のリンクよりお気軽にご相談ください https://aws.amazon.com/jp/contact-us/aws-sales/ AWS 問い合わせ で検索してください
AWS Well Architected 個別技術相談会のお知らせ Well Architected フレームワークに基づく数 個の質問項 を元に お客様が AWS 上で構築するシステムに潜むリスクやその回避 法をお伝えする個別相談会 https://pages.awscloud.com/well-architectedconsulting-2017q4-jp.html 参加無料 毎週 曜 曜開催 89
AWS Black Belt Online Seminar 10 の配信予定 10 10 ( ) 12:00 13:00 AWS におけるアプリ認証パターンのご紹介 10 11 ( ) 18:00 19:00 Amazon Kinesis 10 18 ( ) 18:00 19:00 AWS Glue 10 24 ( ) 12:00 13:00 エグゼクティブ向け AWS 紹介 10 25 ( ) 18:00 19:00 AWS Key Management Service 申し込みサイト https://aws.amazon.com/jp/about-aws/events/webinars/ ( もしくは AWS セミナー で検索 )
簡単なアンケートにご協 ください 画 に表 されるアンケートフォームに をお願いします 皆様のご意 は 今後の改善活動に活 させて頂きます コメント欄には 1 で 由な内容を書き込み下さい 例 ) - 本オンラインセミナーへのご意 - 今後オンラインセミナーで取り上げて欲しい題材 - 発表者への激励等々 Q&A 同様に書き込んだ内容は主催者にしか えません
ご参加ありがとうございました
Thank You https://games.amazon.com/