Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Amazon Game Tech Night #17 AWS game tech最新アップデート

702 Aufrufe

Veröffentlicht am

2019/10/30に大阪で開催されたAmazon Game Tech Night#17 セッション1の資料です。

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

Amazon Game Tech Night #17 AWS game tech最新アップデート

  1. 1. Amazon Game Tech 最新アップデート Hideyo Yoshida | Solutions Architect Jun Shimoda | Japan Engineering Manager
  2. 2. 自己紹介 名前︓吉⽥ 英世 (@aquaviter) 所属︓アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ゲームエンターテイメント部 シニアソリューションアーキテクト / 部⻑ 経歴︓某ゲーム会社 MMORPG インフラエンジニア IoTプラットフォーム アーキテクト
  3. 3. Amazon Game Techとは︖ ゲーム開発者がゲームプレイヤーに 対して魅⼒的なエクスペリエンスを 設計・構築・販売するために、 包括的なテクノロジー、ツール、 サービスをAmazon全体で提供。
  4. 4. 最近のトレンド マルチプラットフォーム/グローバル展開の 相談増 ゲーム開発のクラウド化相談増
  5. 5. 本⽇のアジェンダ GameLiftリアルタイムサーバー Amazon Global Accelerator その他のゲーム向けソリューション AWS上でのゲーム開発(Dev on Cloud)
  6. 6. Amazon GameLift リアルタイムサーバー
  7. 7. マルチプレイヤーオンラインゲームの構成 Session Session Session Session Session Session Session Session Session マッチメイキングチャット認証 ゲームサーバー群 プレイヤーのマッチメイキング機能と マッチメイキング後に振り分けられる ゲームセッションが稼働する専⽤ ゲームサーバーの管理機能の2つを提供
  8. 8. マルチプレイヤーオンラインゲームの構成 Session Session Session Session Session Session Session Session Session マッチメイキングチャット認証 ゲームサーバー群 GameLiftのカバー範囲 プレイヤーのマッチメイキング機能と マッチメイキング後に振り分けられる ゲームセッションが稼働する専⽤ ゲームサーバーの管理機能の2つを提供
  9. 9. Amazon GameLift の構成 Game Session Placement Request
  10. 10. Amazon GameLift による専⽤ゲームサーバーの ホスティング Amazon GameLift は 2 種類の⽅法でサーバーをホスティング可能 カスタムゲームサーバー リアルタイムサーバー
  11. 11. Amazon GameLiftとは? インフラストラクチャの管理 • Auto-scaling • ⾼可⽤性 (マルチ-AZ) • リージョン間⾃動フェールオーバー • DDoSプロテクション セッションの管理 • Player & Game セッション • ワールドワイドのプレースメント • マッチメイキング (FlexMatch) Infrastructure$ Time Auto scaling - More exacting capacity Infrastructure$ Time Wasted $ Upfront expenditure – Scaling for peak Auto scaling with Amazon GameLift Traditional IT Provisioning
  12. 12. Amazon GameLiftのコンポーネント Builds FlexMatchFleets Aliases Clients Queues
  13. 13. フリート 実際にゲームのビルドが稼働するEC2 インスタンス群。 以下のようなパラメータによってどのように ビルドを動作させるかを指定。 • インスタンスタイプ • リージョン • スケーリングポリシー • キャパシティリミット • インスタンスあたりのプロセス数 Fleets
  14. 14. Amazon GameLift スポットフリート • 需要によるインスタンスキャパシティ によって料⾦が変動 • FleetIQによるスポットフリート管理 • LinuxもしくはWindowsインスタンス が利⽤可能 • インスタンス停⽌通知によって停⽌に よるリスクを最⼩化 スポットフリートを使⽤すると1時間あたりのサーバー料⾦を 下げることが可能
  15. 15. FleetIQ Spot (Linux) C4.large e.g. 2 game servers per instance Price: $0.014 hourly per game server Frequency of Interruption: Medium On Demand (Linux) C4.large e.g. 2 game servers per instance Price: $0.064 hourly per game server us-east-2 (Ohio) Spot (Linux) C4.xlarge e.g. 4 game servers per instance Price: $0.015 hourly per game server Frequency of Interruption: Low FleetIQは中断による割り込みが低く(※)、かつコストが⼀番安いフリートを選択し、 プレイヤーのセッションを割り当てる 1ゲームセッションあたり$0.004でかつ割り込み率が低いフリートを割り当て ※︓FleetIQ はスポット中断レートを追跡し、このデータを⽤いて中断頻度の低いインスタンスに⾃動的にゲームを配置します。
  16. 16. Node.jsベースのゲームサーバー Javascriptを使ってゲームサーバーの振る舞いを定義 定期実⾏するサーバーロジックを選択 ステートフル or ステートレス TCP/UDP対応 Amazon GameLiftのフリートとマッチメイキングとの インテグレーション 1プレイヤーにつき1ヶ⽉あたり数円のコスト Realtime Servers N ew !
  17. 17. • プレイヤー間で少量の データを交換 • 複雑度が低い処理 GameLift Realtime におすすめのジャンル Role Playing Card Games Mobile Match 3 Turn based strategy Real time strategy
  18. 18. Realtime Scripts 参考ユースケース 簡単なゲームサーバーロジック プレイヤーの確認 チート検出 ペアメッセージング スクリプトのハンドリング プロセスの開始とサーバーのブートストラッピング時 サーバーの初期化時 プレイヤー受け⼊れ時 プレイヤーの接続/切断時 メッセージの送信先 プレイヤー グループ サーバー
  19. 19. Realtime Scripts 依存するライブラリを含めたスクリプト をzipでかためてパッケージング AWSコンソールもしくはS3バケットに アップロード
  20. 20. Game client integration C#をサポート クライアントがコールのは同期 アクションと⾮同期コールバック
  21. 21. GameLift参考資料 AWS Blackbelt Online Seminar: Amazon GameLift スライド: https://www.slideshare.net/AmazonWebServicesJapan/20191002-aws-black-belt-online-seminar-amazon-gamelift 動画: https://youtu.be/3Cpi-MTNYpY QA: https://aws.amazon.com/jp/blogs/news/webinar-bb-amazon-gamelift-2019/ Amazon GameLiftドキュメント 開発者ガイド: https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/gamelift-intro.html APIリファレンス:https://docs.aws.amazon.com/gamelift/latest/apireference/index.html
  22. 22. AWS Global Accelerator for Game
  23. 23. AWS Global Accelerator Global Accelerator Game services running on AWS Client グローバルに展開されているゲームの可⽤性とパフォーマンスを 向上するネットワークサービス
  24. 24. AWS Global Accelerator の動き 1.2.3.4 2.3.4.5
  25. 25. 1.2.3.4 2.3.4.5 Global static anycast IPs 54.86.52.59 52.45.82.211 54.86.52.59 52.45.82.211 54.86.52.59 52.45.82.211 ~9% faster ~8% faster* ~4% faster ~25% faster AWS Global Accelerator の動き X ~20 sec. failover time ~27% faster *p90 First Byte Latency from 3rd party real-user measurements
  26. 26. Global Acceleratorのユースケース Non-HTTP Applications • Gaming (UDP) • Real-time video (RTP) • Voice over IP • VPN / private connectivity • DNS hosting (UDP) • IoT (MQTT) • File uploads (FTP) • Push notifications (Websockets) HTTP Applications • Blue/green deployment and A+B testing • Static IPs for IP whitelisting • Failover resilience for multi-region applications
  27. 27. 同⼀セッションにマッチした プレイヤー AWS Region Instance A, destination port 1 Instance A, destination port 2 Instance J, destination port 47 Use Case: Multiplayer real-time games without Global Accelerator
  28. 28. Global Accelerator Listener 10: UDP – Dest. port range 46-50 54.86.52.59 52.45.82.211 54.86.52.59, dest. port 1 54.86.52.59, dest. port 2 54.86.52.59, dest. port 47 … … AWS Region Amazon Global Network Use Case: Multiplayer real-time games with Global Accelerator Listener 1: UDP - Dest. port range 1-5 同⼀セッションにマッチした プレイヤー
  29. 29. その他のアップデート& ゲーム向けソリューション
  30. 30. LambdaのVPC環境での改善 https://aws.amazon.com/jp/blogs/news/announcing-improved-vpc-networking-for-aws-lambda-functions/ 14.8sec 933 msec 改善前 改善後 コールドスタート問題が解消、ElastiCacheやRDSなどVPCリソースへのアクセスが⾼速に︕
  31. 31. Amazon EC2 スポットインスタンスをプロビジョニングするための新しい配分戦略 – capacityOptimized (キャパシティ最適化) スポットインスタンスをどのスポットプールから 起動させるかを決定する「配分戦略」に、3つ⽬ のオプション capacityOptimized(「キャパシ ティ最適化」)が登場 リアルタイムのキャパシティデータに基づき、最 も可⽤性の⾼いスポットプールにスポットインス タンスを起動 これまでの2オプションとの⽐較 lowestPrice : 最低価格のプールから起動 diversified : すべてのプールに分散 (New) capacityOptimized : 最も可⽤性の⾼いスポットプール から起動 (したがって最も中断しにくい) EC2 Auto Scaling, Spot Fleet, EC2 Fleetで利⽤ 可能 EC2 Auto ScalingおよびSpot Fleet: マネジメントコンソール のデフォルトはcapacityOptimized. API/CLI/SDKのデフォル トは後⽅互換性維持のためlowestPrice EC2 Fleet: API/CLI/SDKのデフォルトは後⽅互換性維持のため lowestPrice https://aws.amazon.com/jp/about-aws/whats-new/2019/08/new-capacity-optimized-allocation-strategy-for-provisioning-amazon-ec2-spot-instances/ ブログ記事も合わせてご参照ください Introducing the capacity-optimized allocation strategy for Amazon EC2 Spot Instances | AWS Compute Blog ̶ https://aws.amazon.com/jp/blogs/compute/introducing-the-capacity- optimized-allocation-strategy-for-amazon-ec2-spot-instances/ 3種類の配分戦略の⽐較
  32. 32. Data Modeling a Gaming Application with Amazon DynamoDB https://aws.amazon.com/getting-started/projects/data-modeling-gaming-app-with-dynamodb/ アクセスパターンにフォーカス アプリケーションからの書き込み/読み込みデータをすべてドキュメント に起こしてみる リクエスト数を最適化する それぞれのアクセスパターンごとに単⼀のリクエストで処理できるように リレーショナルDBを偽装しない 正規化、データタイプ毎のテーブル作成、セカンダリインデックスの多⽤ はアンチパターン NoSQLデータベースの設計ベストプラクティスをもとにDynamoDBでゲームデータをモデリング Create user profile (Write) Update user profile (Write) Get user profile (Read) Create game (Write) Find open games (Read) Find open games by map (Read) View game (Read) View users in game (Read) Join game for a user (Write) Start game (Write)
  33. 33. ゲーム開発ソリューション
  34. 34. ⾃⼰紹介 34 シモダジュンヤ (Jun Shimoda) twitter @junyash アマゾンウェブサービスジャパン株式会社 Amazon Game Services & Studios Japan Engineering Manager 好きなAWSサービス:Amazon EC2 好きなUnity機能:C#が使える事! (実はC# 1.0からのC#使い、使えるとは⾔っていな い)
  35. 35. 開発パイプラインに関する開発現場の声 「ビルドパイプラインあるけど それでも結構時間も労⼒もかかる上に ノードマシンが故障したりして⼤変なんだよね…」 「CI/CDのパイプライン構築やメンテナンスって面倒…」 「ビルドパイプラインって1つ作れば良いから ドキュメントほとんど残してないんだよね…」
  36. 36. ゲーム開発パイプラインの課題 • プロジェクトの規模の拡⼤ • 複雑でメンテナンスも⼤変になる • 規模拡⼤に伴う複数拠点化や外部との連携へのニーズ ⼤規模化するプロジェクト • プロジェクトの⼤規模化によるコードのビルドやアセットのビルド時間増⼤と労⼒増 • プロジェクト毎に1つしかないパイプライン ビルドパイプラインに費やされる時間と労⼒ • 品質を⾼めるためのテストの時間が増⼤している • テストの⼈員を増やすにも限界がある テストの⼿間の増⼤
  37. 37. 開発パイプラインのクラウド化による利点 Cloud • 俊敏性 • スケーラビリティ • 可⽤性 (物理的なトラブルや メンテナンスからの開放) AWS Step Functions: • AWS CodePipeline: フルマネージド CI/CD • AWS CloudFormation: 容易にパイプラインをコピー • Amazon EC2: Spot Instance/GPU instance • AWS Device Farm: デバイステスト (iOS/Android) • Amazon WorkSpaces: セキュアなVDI 3rd Party tools • Perforce on AWS ⾼パフォーマンスVCS • IncrediBuild on Cloud 並列化ソリューション AWS Device Farm
  38. 38. ゲーム開発パイプラインのAWS化全体像 • クラウド上にスケール・並列化することで開発パイプラインに費やされる時間と労⼒を削減 既にいくつかの検証を進めています 1. Game development Pipelines on AWS 2. Perforce on AWS 3. DevKit on AWS 4. IncrediBuild on AWS
  39. 39. 1つのサンプルステージのトータルビルド時間 各パイプライン ハイスペックEC2インスタンス (単位:分) ソースコードのコンパイル Rebuild.bat -Target="ShaderCompileWorker Win64 Development“ -Target="UE4Editor Win64 Development" -WaitMutex -FromMsBuild 8 シェーダーコンパイル UE4Editor.exe "%~dp0MyProjectsParagon_AgoraParagon_Agora.uproject“ -run=DerivedDataCache -fill 53 ベイク (UE4 sample, Paragon:Agora) 58 パッケージング (UE4 sample, Paragon:Agora) 24 ⾃動テスト 4 トータルのビルド時間 147
  40. 40. Perforce Proxyと並列化オプション Perforce Proxyを利⽤しsync/submitを4GBのファイル群でテスト (1GBのUE4ソース群 + 3GBのUE4ア セット) sample assets). PerforceのP4Dから100GBのデータをP4Pへインターネット回線経由で転送を30⽇⾏った場合 ⽉間 3,000GB (3TB) この場合の⽉間データ転送コストは 3,000GB * $0.114 = $342 ※2019/9/4現在の東京リージョンでの価格 Threads Sync in same region (second) Sync Tokyo – Osaka (second) Commit in same region (second) Commit Tokyo – Osaka (second) 1 551 702 188 220 4 165 285 62 40 16 105 130 41 45 Sync command: • p4 -q sync -f //depot/... • p4 -q sync -f --parallel=threads=4 //depot/... • p4 -q sync -f --parallel=threads=16 //depot/... Commit command: • p4 -q submit -d test -f submitunchanged • p4 -q submit -d test -f submitunchanged --parallel=threads=4 • p4 -q submit -d test -f submitunchanged --parallel=threads=16
  41. 41. このソリューションの利点① パイプライン ⾃動化可能な柔軟で⾼速な開発パイプライン デプロイ 短時間でデプロイ可能になることで、将来のサービスモデルへ の移⾏に対応 ベイク ライトマップやシャドウマップのベイク時間も短縮でき ( Unreal Swarm/Lightmass)更に複数インスタンスですく数のス テージを同時にベイクも可能 パッケージング パッケージング(Unreal Engineのクック)プロセスも多コア⾼ パフォーマンス EC2インスタンスを利⽤して⾼速化
  42. 42. このソリューションの利点② 管理 ビルドプロセス全体の容易な管理と⾃動化。デプロイやテス ト、さらにはバックエンドへの接続まで⼀貫して管理可能。 俊敏性 必要な時に瞬時にインスタンスを⽴ち上げられる スケーラビリティ テスト等もスケーラブルなAWSで⼤量に展開可能。 QA ⾃動テストやプレイ内容をGインスタンス上で実⾏し、ビデオ データとして残す事も可能。 ⾼速なVCS VCSでのソースの共有も⾼速回線で繋ぎつつ、並列化させ、 さらにスタジオ毎にProxyを建てることで開発パイプラインと のも⾼速に同期 複数拠点化 このパイプラインをAmazon VPC上に構築しDirect Connect やSite to Site VPNを利⽤することで、開発拠点をクラウド上 に拡張。そこにAmazon WorkSpacesで外部からセキュアに接 続。
  43. 43. Pipelineを⾃由に組み合わせて呼び出せる柔軟性 • 各パイプラインをCloudFormationでのテンプレート化や、CodePipeline等から⾃由に組み合 わせて呼び出したり、複数並列で起動したりできる. • これまでのオンプレのパイプラインだと、プロジェクト毎に1つ、かつドキュメント化されて いなかったり…これをシンプルにし並列でビルドさせたりもろもろできるようになる。 • .
  44. 44. 1台で10時間 10時間のビルド 1時間の ビルド +9時間の開発時間 $1.58 x 10台 x 1時間 = $15.8 $1.58 x 1台 x 10時間 = $15.8 = g3.4xlarge 10台で1時間 g3.4xlarge ビルドを加速ためのScale UpとScale Out ビルドタスクの並列化 c5.xlarge • vCPU 4個 • メモリ 8GiB c5.24xlarge • vCPU 96個 • メモリ 375 GiB ⾼性能サーバ使⽤
  45. 45. Unity ビルドon EC2 Scale Up検証 Unityの検証サンプルプロジェクト: • バージョン:Unity 2018.4.6 • アセット数:約4000件(画像、ビデオ、⾳声) • Cs ファイル数:約2000件(プラグインも含めて) AWSの検証環境: windows server 2018 • c5.xlarge: vCPU 4個 / メモリ 8GiB • c5.4xlarge: vCPU 16個 / メモリ 32GiB c5.xlargeの約4倍 • c5.12xlarge: vCPU 48個 / メモリ 96GiB c5.xlargeの約12倍
  46. 46. アセットのビルド時間(windows) 757 738 732 0 100 200 300 400 500 600 700 800 900 1000 c5.xlarge c5.4xlarge c5.12xlarge ビルド時間(秒) 秒数
  47. 47. アセットバンドルビルド考察 47 マルチスレッドはサポートしていないため、コア数 やメモリを増やしても、アセットバンドルビルド⾃ 体は早くなりません(2019/9/25時点) 分散ビルドを検討する必要があります
  48. 48. ゲーム本体のビルド時間(windows) 832 287 206 92 42 36 0 100 200 300 400 500 600 700 800 900 c5.xlarge c5.4xlarge c5.12xlarge ビルド時間(秒) IL2CPP Mono
  49. 49. 49 C++ Compilerはマルチコアを利⽤することによって 本体のビルドを⾼速化できた IL2CPPビルド時間の考察(windows)
  50. 50. 告知
  51. 51. Amazon Game Tech Night 今後の開催予定 12/16 #18 re:Invent 2019 recap 2020/02 Well-Architected勉強会 https://gamingtechnight.connpass.com/
  52. 52. Amazon Game Developers Conference開催! bit.ly/AGDC2019登録はこちら→ ビジネスセッション テクニカルセッション ハンズオン「Go Global」 11/20(⽔) 10:00-17:45 @アマゾン⽬⿊オフィス WSによる最新のゲーム インフラストラクチャの構築や Twitch による新しいゲーム体験の実現、コミュニティー へのアプローチ、アメリカのAmazon プライムビデオ チームからゲームのIPの映画、テレビシリーズ化について など、エンジニアリングからビジネス、販売まで、世界に ゲームを展開する上で有益な幅広いセッション、ハンズオンを 弊社のみならず社外からもスピーカーを招いて紹介します。 海外からも多数スピーカーお招きし、韓国からはPUBG CorporationによるPLAYERUNKNOWN'S BATTLEGROUNDSの AWSで構築するバックエンドアーキテクチャーについて 講演いただきます。
  53. 53. Game Tech ライブストリーミングやオンデマンドコンテンツも配信予定︕

×