Más contenido relacionado La actualidad más candente (20) Similar a 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~ (20) Más de Daisuke Masubuchi (20) 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~1. *本資料の内容 (添付文書、リンク先などを含む) は de:code 2020 における公開日時点のものであり、予告なく変更される場合があります。
#decode20 #
2020 年も最高のゲームをつくろう!
Game Stack でゲーム開発をしよう!
~ マルチプレイサーバー編 ~
A12
増渕大輔
マイクロソフトコーポレーション
10. 超単純・シンプルゲームサーバーの例
Minecraft のサーバーの例
• 専用サーバー(仮想マシン)である
• 1台だけのサーバーである
メリット
• 構築が簡単
ディメリット
• ユーザーをあまり収容できない
• 他のサーバーとデータ共有できない
• 小規模
Java Edition Bedrock Edition
ソース 任意 任意
ソース ポートの範囲 * *
ターゲット 任意 任意
ターゲット ポートの範囲 25565 19132
プロトコル TCP UDP
アクション 許可 許可
優先順位 100 100
名前 MinecraftJava_Port MinecraftBedrock_Port
https://docs.microsoft.com/ja-jp/gaming/azure/reference-
architectures/multiplayer-basic-game-server-hosting
13. PaaS vs IaaS
Service Fabric
マイクロサービス開発
Reliable Actor などの
モデルを利用したい
Azure
Functions
Durable Functions によ
る開発効率化
非同期マルチプレイヤー
多くのXboxタイトルでの実
績がある
日本のゲーム業界での
実績が少ない
HTTPを含む イベント
ベースの処理の記述
シンプルな処理に切り分ける
前提
App Service
Web Apps
Web/モバイル向けゲー
ムを短期間で作成
インフラ知識が最も不
要な運用
日本のゲームでの実績
は多い
超大規模のインフラの
場合は ASE のクォー
ター上限が合わない可
能性がある
PlayFab
マルチプレイヤー
高度に統合されたゲー
ム向けバックエンド
サービス
+
マルチプレイヤーサー
バーの利用
インフラの運用知識は
ほとんどいらない
EA契約は可能だが、
Azure CSP の利用は
未対応
AKS
(Kubernetes)
コンテナインスタンス
Kubernetes のデプロイ、
管理、運用を簡略化する
ACIを用いたバースト運
用への対応
Kubernetesの知識習得と
運用は必要
仮想マシン
仮想マシンスケールセット
ブラウンフィールドに
おけるゲームシステム
の移設
大規模MMO
10秒・10000コアの
展開
大規模MMO利用では
Dedicated Host 設定は
必須
19. サーバーレス化しやすい例 ①
1. プレイヤーをキューに追加する - プレイヤーが、セッションを希望すると、検索要求がキューに入ります
2. キューからプレイヤーを削除する - プレイヤーがキャンセルをするとキューのデータを削除します
3. プレイヤーにマッチ結果を提供する - ポーリング メカニズムによって呼び出される。ゲーム サーバーの接続情報またはタイムアウトエラーを応答
4. サーバーを追加する - 新しいサーバーが作成されると、データベースに関連するサーバーの情報 (IP:Port) を書き込む。
5. 高レベル マネージャー - 開始できるゲーム セッションを探し、それぞれに対するサーバーを検索します。
• *Azure のサーバーレスアーキテクチャーが、十分な数のゲームサーバーがないことが検出されたらゲームサーバーをスケールアウト
サーバーレスを使う理由
•イベントをトリガーにして起動
•負荷に応じて、ほぼ無限にスケールアウト
•セキュリティアップデートなどのメンテナンスが不要
•Durable Functions を使うことで、サーバーレスの処
理間で呼び出し簡単にを行うことができる
Reference Architecture
https://aka.ms/AA8dwhc
21. 非同期マルチプレイは Web アーキテクチャーでもOK
Azure 設計のポイント:Azure Database for MySQLを検討 Azure App Service での ASP.NET Core および
SQL Database アプリの作成
Web front end
Content Delivery
Network (CDN)
App Service
plan
Web App
Azure SQL
Database
Azure
Search
Logs Queue Static
content
Blob
App Service
plan
API App
Redis cache
Cosmos DB
WebJob
Storage Accounts Resource group
Internet
Azure Active
Directory
Azure DNS
Data storage
https://aka.ms/AA8dpfa https://aka.ms/AA8dpfh
22. 同期系の処理が必要なときはどうする??
• クライアント側でゲームを実行
• クライアントチート対策に懸念がある
Azure Solution の選択
•仮想マシン
- ゲーム開発者の自由度が大きい
•Azure Container Instances (ACI)
- コンテナベース
•Virtual Machine Scale Sets
- スケーリング管理
•Service Fabric
- Microsoftコンテナオーケストレーション
•Azure Kubernetes Service (AKS)
- マネージドKubernetes
•PlayFab マルチプレイヤー サーバー
- ゲームサーバー専用のオーケストレーション
29. マルチプレイサーバー編 のまとめ
Azure IaaS, PaaS, Serverless, Container, PlayFab Multiplayer などの特徴
を把握し、経験値や、要件、開発方針にあった技術を選びましょう
マルチプレイサーバの仕組みを理解したら、
PlayFab と Azure でマルチサーバーを Deploy してみよう
Microsoft Game Stack の世界はまだまだ広大だぞ!
31. © 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
© 2020 Microsoft Corporation. All rights reserved.
本情報の内容 (添付文書、リンク先などを含む) は、公開日時点のものであり、予告なく変更される場合があります。
本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。