Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Amazon Game Tech Night #19 GameLift Realtime Serverハンズオン資料

237 views

Published on

2020/01/28に開催されたAmazon Game Tech Night GameLift Realtime Server ハンズオンの配布資料です。

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Amazon Game Tech Night #19 GameLift Realtime Serverハンズオン資料

  1. 1. Amazon Game Tech Night #19 Amazon GameLift リアルタイムサーバーハンズオン Reou Ando | Solutions Architect | 2020.01.28
  2. 2. 自己紹介 名前 安藤 怜央(あんどう れおう) 所属 アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ソリューション アーキテクト 好きな AWS のサービス Amazon GameLift AWS CodePipeline
  3. 3. マルチプレイヤーゲームについて
  4. 4. マルチプレイヤーゲームとは 他のプレイヤーと⼀緒に同じゲーム環境で対戦・協⼒して遊ぶゲームモードのこと ローカル オンライン
  5. 5. オンラインマルチプレイヤーゲームのネットワーク構造 Peer to Peer (P2P) Client/Server 専⽤ゲームサーバー クライアント群
  6. 6. Backend 専⽤ゲームサーバー オンラインマルチプレイヤーゲームのネットワーク構造: Client/Server 型の場合 • プレイヤーをどのように接続させる? • 通信⽅式には何を選択する? • 開発のためにどんな専⾨的な知識が必要か? • 低レイテンシーをどう実現する? • スケーリングはどのように⾏う? • 可⽤性を⾼める⽅法は? • セキュリティはどう確保する? • コストはどれぐらいかかる? など…… クライアント群
  7. 7. Client/Server 型マルチプレイヤーゲームのアーキテクチャ例 Session Session Session Session Session Session 専⽤ゲームサーバー群 認証 チャット マッチ メイキング Amazon GameLift カバー領域
  8. 8. Amazon GameLift とは
  9. 9. Amazon GameLift とは クラウド内でセッションベースのマルチプレイヤー専⽤ゲームサーバーを デプロイ、操作、スケーリングするマネージド型サービス 数百万のプレイヤーに対応できるよう 専用ゲームサーバーをスケーリング・ホスティング AWS グローバルインフラストラクチャ上で稼働 DDoS 攻撃から保護するように設計 待機時間とレイテンシーを 最小に抑えたゲーム体験を実現 柔軟にカスタマイズできる マッチメイキング機能を提供
  10. 10. Amazon GameLift の概念 フリート エイリアス キュー FlexMatch カスタムゲーム サーバー リアルタイム サーバー Hosting ResourceServer Hosting
  11. 11. Amazon GameLift による専用ゲームサーバーのホスティング Amazon GameLift は 2 種類の⽅法でサーバーをホスティング可能 カスタムゲームサーバー リアルタイムサーバー
  12. 12. Amazon GameLift リアルタイムサーバーとは 数⾏のスクリプトでゲームサーバーを作成できる軽量サーバーソリューション カスタムゲームサーバーと⽐較して複雑な処理を必要としないゲームに最適 Node.js ベースの JavaScript で実装 TCP, UDP によるメッセージング処理を提供 ステートレスとしてもステートフルとしても稼働 カスタムゲームサーバーと同様の GameLift の機能を利用可能(一部を除く) カードゲーム、ターンベースの戦略ゲーム、 軽量のモバイルゲームなどに最適 Realtime Servers
  13. 13. リアルタイムサーバーの主要コンポーネント 主要コンポーネント 役割 RealTime サーバー RealTime スクリプトを実⾏するサーバーソフトウェア ゲームセッション プレイヤーの接続先となる RealTime サーバーのインスタンス Amazon GameLift サービス RealTime サーバーをホストするための リソースを管理するコアサービス ゲームクライアント デバイスで実⾏されているゲームのソフトウェア クライアントサービス (ゲームサービス) GameLift サービスとゲームクライアント間の 通信を仲介するサービス 認証認可などゲーム固有のロジックも処理
  14. 14. リアルタイムサーバーにおけるゲームのアーキテクチャ
  15. 15. リアルタイムサーバーにおけるゲームとの統合 ゲームクライアントとクライアントサービスで専⽤の SDK を組み込む リアルタイムサーバーはスクリプトを開発 リアルタイムサーバークライアントサービスゲームクライアント • AWS SDK を使って Amazon GameLift サービスとや りとり • ゲームクライアントに必要な情 報を引き渡す • RealTime スクリプトで コールバックや インターフェースを実装 • Amazon GameLift サービスと やりとり • RealTime Client SDK (C#) を組み込み クライアントサービスから 受け取った情報を⽤いて リアルタイムサーバーに 直接接続 AWS SDKRealTime Client SDK (C#) RealTime スクリプト
  16. 16. リアルタイムサーバーの開発 ゲームセッションのライフサイクル管理処理をスクリプトに記述 必要に応じてイベント駆動やメッセージ送信などのゲームロジックを追加 主なコールバック タイミング init サーバーの初期化時(実装必須) onMessage サーバーにメッセージが送信されたとき onHealthCheck ゲームセッションの状態を尋ねられたとき onStartGameSession 新しいゲームセッションが開始したとき onPlayerAccepted プレイヤーの接続が受け⼊れられたとき https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/realtime-script-ref.html
  17. 17. クライアントとリアルタイムサーバーのやりとり ゲームクライアント・サーバー間で SDK 経由のメッセージングを使⽤ メッセージはリアルタイムサーバーを介して送受信 ゲームクライアント ゲームクライアント 通信プロトコル メッセージの内容 • オペレーションコードとペイロードで構成 • アクションとオペレーションコードのマッピングを開 発者で定義して利⽤ リアルタイムサーバー • 送信するメッセージ毎にどちらかを指定 • 信頼性のある TCP 接続 • ⾼速な UDP チャネル
  18. 18. RealTime スクリプトのアップロード・更新 AWS CLI またはコンソール上でローカルか Amazon S3 内のファイルを指定 スクリプトを更新する場合にフリートのデプロイは不要 create-script create-script 初回 update-script 更新 更新 Local Amazon S3 Bucket Fleet デプロイ Amazon GameLift Amazon GameLift Amazon S3 Bucket Local Fleet 反映
  19. 19. Amazon GameLift による専用ゲームサーバーのホスティング Amazon GameLift は 2 種類の⽅法でサーバーをホスティング可能 ゲームのジャンルや仕様、スキルセットに合わせて選択 カスタムゲームサーバー • ゲームエンジンを使⽤して サーバーのビルドバイナリを開発 • パッケージ化したビルドをアップロードし フリートをデプロイ • 詳細なゲームロジックを備え 完全にカスタマイズさせた 本格的なゲームサーバーとして最適 リアルタイムサーバー • Node.js ベースの JavaScript で サーバーのスクリプトを記述 • 記述したスクリプトをアップロードし フリートをデプロイ • 複雑さを必要とせず 簡単で迅速にゲームを起動させたい 軽量のゲームサーバーとして最適
  20. 20. Amazon GameLift の概念 フリート エイリアス キュー FlexMatch カスタムゲーム サーバー リアルタイム サーバー Hosting ResourceServer Hosting
  21. 21. フリートとは EC2 インスタンス群形式のホスティングリソース カスタムゲームサーバーまたはリアルタイムサーバーを⽤いてデプロイ • リージョン • OS(Windows, Amazon Linux) • インスタンスタイプ • フリートタイプ(オンデマンド, スポット) • TLS 証明書の⽣成 • プロセス管理 • フリート容量 • EC2 ポート設定 • スケーリングポリシー(ターゲット追跡, ルールベース) 設計要素 Amazon GameLift Fleet
  22. 22. フリートメトリクス • インスタンスの数 • ゲームセッション, プレイヤーセッション • サーバープロセス • インスタンスのパフォーマンス 時間経過にともなうメトリクスの変化をリアルタイムに追跡
  23. 23. フリート容量のスケーリング インスタンスをスケーリングしてコスト削減とプレイヤー体験をバランシング ⼿動で設定するかフリートメトリクスに基づく2種類の Auto Scaling を使⽤ • フリートメトリクスを⽤いた 評価式を作成して詳細に制御 • 特別な状況に対処するため ターゲット追跡の補助として有効 ターゲット追跡 ルールベースのスケーリング • フリートが維持する バッファのサイズを指定 • 多くのゲームでシンプルで効果的に機能
  24. 24. Amazon GameLift の概念 フリート エイリアス キュー FlexMatch カスタムゲーム サーバー リアルタイム サーバー Hosting ResourceServer Hosting
  25. 25. エイリアスとは フリートもしくはエンドポイントのニックネーム 送信先を切り替える際にクライアント側の更新が不要になる • フリート ID をエイリアス ID に置き換え • 対象のフリートを直接指定するゲームに有効 • 2 種類のルーティング戦略 • シンプルエイリアス • ターミナルエイリアスAlias Fleet Client Fleet Client
  26. 26. エイリアスのルーティング戦略: シンプルエイリアス Fleet in Service New Fleet Alias Fleet in Service New Fleet Alias ClientClient
  27. 27. Fleet-1 Alias Fleet-1 Alias Client Please update your game version. Termination message Client エイリアスのルーティング戦略: ターミナルエイリアス
  28. 28. ご利用料金について • 従量課⾦制 • 稼働しているインスタンス(ゲームサーバー)の使⽤時間 • Auto Scaling とスポットインスタンスでコストを削減 • インスタンスからインターネットへのデータ転送量 • ゲームクライアントとゲームサーバー間の アウトバウンドデータ転送に対して課⾦ • AWS 無料利⽤枠 • Amazon GameLift 向け c5.large オンデマンドインスタンスの使⽤ 125 時間/⽉ EBS 汎⽤ (SSD) ストレージ 50 GB https://aws.amazon.com/jp/gamelift/pricing/
  29. 29. ハンズオンについて
  30. 30. 構築するアーキテクチャ①
  31. 31. 構築するアーキテクチャ②
  32. 32. 振り返り • マルチプレイヤーゲームの構築について理解 • Amazon GameLift の概要を理解 • Amazon GameLift を扱った開発を経験
  33. 33. Thank you!

×